My research interests

Semantic-rich Collaborative Environment for Learning Software Patterns

The major concern of today’s software engineering education is to provide students with the skills required for solving different kinds of software problems both on their own and as members of a development team. In addition, it is essential that students learn how to exploit previous successful experiences and knowledge of other people in solving similar problems. This knowledge about successful solutions to recurring problems in software design is also known as software patterns. Software patterns are becoming increasingly important in software engineering.

Each software pattern is itself a piece of potentially complex knowledge that requires a degree of mastery to apply to a specific problem context. The existence of many different forms for representing patterns makes things even more complicated. There is yet no standardized way of representing software patterns. As a result different pattern collections (groups of related patterns) use different pattern forms for pattern representation, such as Coplien form, Gang of Four form and Alexandrian form. Students need to be familiar with all these forms in order to be able to use a specific pattern collection.

All the above mentioned imply that teaching and learning software patterns is not an easy task. It is rather a complex process that requires both educators and students to invest significant efforts in the learning process. This obviously indicates a need for a learning platform that would integrate various systems and tools required for provisioning high-quality education in the domain of software patterns. Aiming to provide such a learning platform, we have identified several requirements for securing high-quality learning of software patterns:

  • Enabling students to learn at the pace and in a place that best suits them. Students should be provided with content and a variety of learning activities that are directly related to the learning objectives and the students’ characteristics, knowledge, skills and experiences.
  • Software development tools that would enable students to experience patterns-based software development in the context of real-world problems. Students need to acquire working-knowledge of software patterns, so that they would be able to apply them when faced with real-world problems. Therefore, it is of a primary importance to provide students with tools that would enable them to do practical examples and experience how the theory they have learned can be applied in practice.
  • Collaborative tools such as discussion forums, chat, and tools for software artifacts exchange. Since software development is intrinsically a team oriented work, students should get used to collaborative style of work as well as learn what constitutes a successful team.
  • Access to the online repositories of software patterns and communities of practice. There is currently a plethora of software patterns published on the Web. Students should be provided with right-in-time access to the relevant online resources, that is, to the software patterns relevant for the problem at hand.
  • Tools for providing teachers with feedback about students learning activities and their usage of learning content. Having access to such information, teachers would be enabled to make more informed decisions regarding how to improve the learning content and/or the chosen teaching approach.

Even though the above mentioned kinds of tools do exist today, they are not used in an integrated way. Instead, current approaches to learning software patterns are based on individual use of these tools. The major problem with this ‘fragmented’ approach is in its lack of means for enabling exchange of data about the activities that students performed within individual learning tools and learning artifacts they have produced during those activities. Besides, with such an approach it is very hard to provide support for context-aware learning services and offer personalized learning experience to students.

We propose a new approach to a learning environment for software patterns that leverages existing Learning Management Systems (LMSs), domain specific tools for software modeling and relevant repositories of software patterns available online. All these elements connected together establish an integrated learning framework, called DEPTHS (DEsign Patterns Teaching Help System) that supports collaborative learning of software patterns. We propose the use of Learning Object Context Ontology (LOCO) framework [5] as an ontology base for the integration. This is a generic framework capable of formally representing diverse kinds of learning situations (i.e., learning contexts). Accordingly, the framework integrates a number of learning-related ontologies, such as user model ontology, a learning content ontology, and domain ontologies. In order to fully respond to the above mentioned requirements for high-quality education in the domain of software patterns, we leverage the LOCO framework in the following manner: we use a domain ontology for representing the domain of software patterns and the extended learning context ontology for capturing and representation of learning contexts of different kinds of systems and tools that DEPTHS integrates.

We believe that this approach can be beneficial for all participants in the learning process:

  • Teachers would spend less time developing online lessons. Instead of creating lessons for each design pattern from scratch, a teacher would (re)use the existing online resources. DEPTHS would secure the ease of locating relevant online resources for the course the teacher develops.
  • DEPTHS will improve students’ learning effectiveness and efficiency by recommending resources from online repositories that are related to the goal students are currently working on. In addition, it will help students find the most suitable peer(s) to collaborate within the given learning context.
  • The common ontological framework (LOCO) provides a sound platform for integration of knowledge about all learning related activities performed by any particular student and the content he/she has used or produced during those activities. This knowledge is currently scattered over different learning systems and tools for studying software patterns. This means that the overall quality of important educational aspects (e.g., adaptation and context-awareness) will be improved.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: