How to Apply Software Architecture and Patterns to Tutoring Systems Development?

We are presenting a tutorial at the 10th International Conference on Intelligent Tutoring Systems. Carnegie Mellon University, Pittsburgh, Pennsylvania. June 14, 2010. 10:15–12:30, Monday — Rangos 1

Abstract

This tutorial will discuss key software architecture concepts allowing researchers and practitioners to move from software development as a one-ofa-kind endeavor to software development as a system of modules that can be widely used in highly adaptable ways. Participants will understand how the use of software architecture models avoids difficulty by providing robust and flexible systems, applies well-established methodologies, improves user experience and, warrants that the final product satisfies all the requirements (functional and non functional). The attendees will better understand how to apply software patterns as part of their software development methodology. They will engage in exercises that apply software patterns at architectural and design levels to create an Intelligent Tutor System (ITS) with an associated widespread use of components. And, understand how software architecture can improve ITS development to a point where one could be sure that the product would work, as planned, in uncontrolled and non-standardized environments and be able to be incrementally improved to be adapted with new technologies. The attendee will become familiar with the standard vocabularies of patterns in order to apply it as a way of shared communication inside the team and outside with the experts and consultants. This will improve attendees’ abilities to express and transfer knowledge that can enrich the development and improvement of systems.

Slides

These are my slides for the tutorial, any comment is more than welcome.

Length

Half-day tutorial.

Themes and goals

  • Applying software architecture concepts. This tutorial will discuss key software architecture concepts allowing researchers and practitioners to move from software development as a one-of-a-kind endeavor to software development as a system of modules that can be widely used in highly adaptable ways. Participants will understand how the use of software architecture models avoids difficulty by providing robust and flexible systems, applies well-established methodologies, improves user experience and, warrants that the final product satisfies all the requirements (functional and non functional).
  • Understanding patterns. The attendees will better understand how to apply software patterns as part of their software development methodology. They will engage in exercises that apply software patterns at architectural and design levels to create an Intelligent Tutor System (ITS) with an associated widespread use of components. And, understand how software architecture can improve ITS development to a point where one could be sure that the product would work, as planned, in uncontrolled and non-standardized environments and be able to be incrementally improved to be adapted with new technologies.
  • Standard Pattern vocabularies. The attendee will become familiar with the standard vocabularies of patterns in order to apply it as a way of shared communication inside the team and outside with the experts and consultants. This will improve attendees’ abilities to express and transfer knowledge that can enrich the development and improvement of systems.

Description of content to be covered.

The tutorial will cover the following topics:

1. Software architecture.
1.1. What is software architecture?
1.2. How to define software architecture?
1.3. Why is it helpful to have a software architecture for the development of ITS?

2. Architectures
2.1. Model-drive architecture
2.2. Reuse-drive architecture

3. Pattern concepts
3.1. What is a pattern?
3.2. Who define patterns?
3.3. How a pattern is implemented?
3.4. Why and how a pattern helps?
3.5. Applying Architectural patterns in ITS
3.6. Applying Design patterns in ITS

4. Design Patterns in real world ITS projects
4.1. Creation patterns
4.2. Behavior patterns
4.3. Structure patterns

5. Software dimensions of ITS using patterns
5.1. The product
5.2. The user
5.3. The environment

6. Final thought on ITS context

Intended audience.

This tutorial is intended for all researchers and practitioners involve in management, design or development of ITS software.

Expected background of the attendees.

Familiar with the following concepts will be helpful but not required:

  • Basic object-oriented paradigm concepts such as object, class, attributes, methods, encapsulation, instance, inheritance, interfaces, association, aggregation and composition.
  • An object-oriented programming language, e.g., Java, C++, etc.
  • Basic knowledge on UML notation, such as class diagrams

Format and activities planned.

  • 70% Lecture and worked examples
  • 30% Practical workshop to engage participants in hands on activities using patterns to implement a complete model for an ITS.

Expected outcomes.

Participants will:

1. Understand the principles on the software patterns application. How to use patterns on the architecture, the design, the coding and the management of the project.

2. Conceptualize, design and implement object creation of a system using creation patterns: Abstract Factory, Factory Method, Builder, Prototype, and Singleton.

3. Conceptualize, design and implement object structure of a system using structure patterns: Adapter, Bridge, Composite, Decorator, and Facade.

4. Conceptualize, design and implement object behavior of a system using behavior patterns: Chain of Responsibilities, Memento, Observer, Strategy, and Visitor.

5. Use patterns of patterns: combining concepts. Design and implementation to generate the architecture style of the organization: Blackboard, MVC, Layers, and Pipes & Filter. New horizon in the conceptualization of good software development practices.

6. Understand and use patterns in real life in study cases and to implement patterns in their own projects.