Software Architecture (SENG 422/SENG522)

Summer 2006

Instructor:

Dr. Issa Traore, P. Eng.

 
 
 

Phone: (250) 721-8697
E-mail: itraore@ece.uvic.ca

Office hours: Tuesday, Wednesday: 2:30- 4:00pm
Location: EOW 415

Time/Location:
ELL 162, 1:30-2:30pm, Tuesday, Wednesday, Friday.

Students are advised to read the faculty of Engineering document Standards for professional behavior (http://www.engr.uvic.ca/policy/professional-behaviour.html), which contains important information regarding conduct in courses, in labs and in the general use of facilities.

Course Description

This course introduces to the concepts, principles and standards underlying modern software architecting. Notions and practice of some of the most popular notations, techniques and tools involved in the different steps of software architecting are given. More specifically UML for the requirement specification phase, UML and CORBA-IDL for the design phase, and CORBA-IDL and Java/C++ for the implementation. The basic concepts, techniques and tools of software component-based development are introduced.
Lab works will consist of a mainstream project aimed at the design and implementation of an actual software system, using the techniques, tools and notations introduced in the course. This will be carried out through successive mini projects, each corresponding to specific steps in the course. The initial lab sessions will consist of analyzing the requirements of the corresponding system. Then during subsequent sessions, we will build step by step the system, by focusing mainly on the aspects concerned with software architecting. At the end of the course each student should come up with the implementation of a specific component.


Prerequisites:

-Notions of requirements and design specifications.
-Programming knowledge in Java and C++.

 

Textbook:

The main text for this course is:
Pattern-Oriented Software Architecture (Part I), A System of Patterns, by F. Buschmann, R. Meunier, H. Rohnert, P. Sommerlad, M. Stal, Wiley, 1996, 
ISBN: 0 471 95869 7
There is also an (important) course pack, which will be available at the Uvic book store.
Reading List

 

Further Reading:

1.The Unified Software Development Process, by Ivar Jacobson, Grady Booch, James  Rumbaugh, Addison-Wesley, 1998, ISBN: 0-201-57169-2.

2.The Rational Unified Process: An Introduction, Philippe Kruchten, Addison Wesley, 1998, ISBN: 0-201-60459-0

3.Applied Software Architecture, Christine Hofmeister, Robert Nord, Dilip Soni, Addison-Wesley 1999, ISBN: 0-201-32571-3.

4.Object-oriented Software Engineering, Bernd Bruegge, Allen H. Dutoit, Prentice Hall, 2000, ISBN: 0-13-489725-0

5.The Unified Modeling Language User Guide, Grady Booch, James Rumbaugh, Ivar Jacobson, Addison-Wesley 1999, ISBN: 0-201-57168-4

6.Metrics and Models in Software Quality Engineering, Stephen H. Kan, Addison-Wesley (2002), ISBN: 0201729156

7.CORBA 3 Fundamentals and Programming, 2nd Edition, Jon Siegel, Wiley 2000, ISBN: 0-471-29518-3, (899 pages).

Required Software:

Rational Rose, Orbacus (for CORBA Development)
Programming Languages:
- Java


- C++

Syllabus
Lectures:

 

Chapter 1: Introduction to Software Architecture

Introduce software architecture with primary emphasis on the IEEE Recommended Practice for Software Architecture description. Concepts covered include:

Chapter 2: Design Planning
Introduction to the processes of tradeoff and risk analysis that prelude and guide the design of a resilient software architecture. Identification of factors and quality attributes that characterize a system; identification of underlying design issues, and suitable design strategies.

Chapter 3: Architectural Views

Part 3.1: Use Case View

Notation and documentation of the Use Case View of Software Architecture.

Part 3.2: Logical View
Notation and Documentation of the Logical view of Software Architecture.

Part 3.3: Implementation, Process, and Deployment Views
Notation and Documentation of the Implementation, Process, and Deployment Views.

Chapter 4: Using Metrics to Manage Software Risks
Presentation of software metrics, and how they can be used to measure quality factors such as testability, maintainability, reusability and so on.

Chapter 5: Patterns
Presentation of commonly used architectural styles and patterns. Overview of design patterns. Introduction of the techniques and notations provided by the UML for modeling design and architectural patterns.

Chapter 6: CORBA-based Architecture

Part 6.1: Introduction to CORBA
Introduction to distributed systems and discussion of the issues surrounding distributed architectures; presentation of the CORBA standard as an example of Distributed Object Architecture (DOA). 

Part 6.2: CORBA-IDL
Presentation of CORBA Interface Definition Language (IDL).

Part 6.3: Designing CORBA Systems
Techniques used to derive a CORBA System from an OO design.

Part 6.4: Implementing CORBA Applications
Steps and methods used in implementing a CORBA object-based application. Discussion of issues surrounding distributed objects location in the network. Presentation of CORBA Naming and Trading services as medium for locating distributed CORBA objects.

Chapter 7: Component-based Development

Part 7.1: Introduction to Component-based Development
Introduction to component-based design (CBD); link with software architecture. Components, connectors and protocols design using the UML. Insight into standard component models. 

Part 7.2: CORBA Component Model (CCM)
Presentation of the CORBA Component Model (CCM); Extended IDL for CCM; CIDL code for CCM; Implementation issues and examples.

Chapter 8: Specialized Software Architectures

This chapter will consist of presentations on various issues surrounding or influencing software architecture. Selected topics among the following issues will be covered:
- Real-time architecture design
- Fault-tolerant architecture design
- User interface design
- Integration of legacy systems in a software architecture
- Embedded systems architecture design
- Secure software architecture design
- Version-control and configuration management (VCCM)
- Project management (PM) and software architecture
 

Lab:

Lab sessions are scheduled on Thursdays and Fridays from 2:30 to 5:30.
The course project is divided in 6 small components that will be performed during the different lab sessions; there are, in principle, 7 lab sessions. The project consists of the design and implementation of the software architecture of a Weather Mapping System (WMS). Implementation will take place both in Java and C++ (combination of both languages).
Each lab assignment consists of a theoretical part and a practical part, which are defined in specific lab assignment statements that are posted at least one or two weeks before the session.
Report and demo (if applicable) for each assignment is due for the following session.

Session 0: Tool Presentation
This session is an introductory session; there is no lab assignment for this session.

Introduction to working with an industrial strength software development environment, namely Rational Rose: how to write and maintain a UML specification; configuration management; architecture design; CORBA-IDL document generation; Java code generation from a UML model etc.
Presentation of the Project: Weather Mapping System.

Session 1: Use Case View
Design of the Use Case View. Risk Analysis.

Session 2: Logical View
Design of the Logical View of the Weather Mapping System (WMS).

Session 3: Integrating Patterns in the Architecture
Integration of selected architectural and design patterns in the logical view obtained previously.

Session 4: Implementation, Process, and Deployment Views
Design of the implementation, process, and deployment views for the Weather Mapping System.

Session 5: Component and Interprocess Communication Design
Generation from the previous architecture design of CORBA Interfaces and Components Definitions.

Sessions 6: Implementation of WMS
Implementation of the Weather Mapping System (Java & C++), with a particular emphasis on the interprocess communication mechanism and the software components identified.
 

Lab Reports:
Lab reports should include:

Schedule

The dates given are subject to change, so you are responsible for checking this page regularly.
Lectures:


Weeks
Units
Reading List (Coursepack)
1-5 May
Chap 1: Introduction to Software Architecture
Chap 2: Design Planning
Sections 1, 2, & 7
Sections 3-4
8-12 May
Chap 3: Architectural Views
3.1: Use Case View
3.2: Logical View
Sections 5 & 7
15-19 May
3.3: Implementation, Process, and Deployment Views Sections 5-8

May 22
 Victoria Day

22-26 May
Chap 4: Using Metrics to Manage Software Risks
Section 9
29-31 May, 1-2 June
Chap 5: Patterns
Textbook: Chapters 1-3
5-9 June, 12-16 June
Chap 6: CORBA-based Architecture
Part 6.1: Introduction to CORBA
Part 6.2: CORBA-IDL
Part 6.3: Designing CORBA Systems
Sections 10-11
19-23 June
Part 6.4: Implementing CORBA Applications
Sections 10-11
June 30
Midterm Preparation

July 1
Canada Day

July 3-4 
Reading break

July 5
Midterm Exam

3-7 July, 10-14 July 17-21 July
Chap 7: Component-based Development
Part 7.1: Introduction to Component-based Development
Part 7.2: CORBA Component Model (CCM)
Sections 10-11
July 20, 21
Project Demo (Place SENG Lab)

24-28 July
Chap 8: Specialized Software Architecture

28th July
Review-Final exam preparation

Lab:

Lab 0: 12 May
Lab 1: 19 May
Lab 2: 26 May
Lab 3: 2 June
Lab 4: 9 June
Lab 5: 23 June
Lab 6: 30 June (project start)

Lab 7: 7 July (dedicated to the project)
Lab 8: 14 July (dedicated to the project)

Lab 9: 21 July (project demo)
 

Exams:

Evaluation

Lab project should be performed in team of 2 students for SENG 422 and in team of 1 student for SENG 522.

 
Activity
Weight
Lab Assignment 1: Use Case View
(due 26 May )
5%
Lab Assignment 2:  Logical View
(due 2 June)
5%
Lab Assignment 3:  Implementation, Process, and Deployment Views
(due 9 June)
5%
Lab Assignment 4: Patterns
(due 23 June)
5%
Lab Assignment 5: Component and Interprocess Communication Design
(due July 7th)
5%
Project: Implementation of WMS
(report/demo due 21 July)
10%
Mid-Term Exam (July 5th, 2006)
20%
Final Exam  (THR 03 AUG  9:00 AM  DSB)
45%

Grading
The final grade obtained from the above marking scheme will be based on the following percentage-to-grade point conversion:
90<= A+ <= 100
85<= A  < 90
80<= A- < 85
75<= B+ < 80
70<= B < 75
65<= B- < 70
60<= C+ < 65
55<= C < 60
50<= D < 55
         E < 50 Fail, conditional supplemental exam
         N         Fail, did not write examination or otherwise complete
                     course requirements by the end of the term or session;
                     no supplemental examination.


Special Notice for SENG522 Students

Students registered in SENG522 will follow the same lectures as students in SENG422. The main difference between both courses will concern the evaluation method. There is no mid-term exam for SENG522; instead the students will make a presentation on specialized software architectures such as real-time systems software architectures. Each student will select a topic (see chapter 8), and prepare his presentation by following specific guidelines. The presentation will take place during chapter 8.
 

Lab Assignments, and final exam are the same for both courses, except a difference in teams composition:
-Assignment team: 1 student by team. 

The following evaluation scheme will be used for SENG522:

-(Lab) Assignments: 25% (with the same breakdown as for SENG422)

-Project: 15%

-Seminar: 10%

-Final Exam: 50%

What's New...

Announcements and course-related material will be posted here.

1. Lecture Notes and Slides:

Chapter 1: Introduction to Software Architecture
Chapter 2: Design Planning
Chapter 3: Architectural Views
-Part 3.1: Use Case View
-Part 3.2: Logical View
-Part 3.3: Implementation, Process, and Deployment Views
Chapter 4: Using Metrics to Manage Software Risks
Chapter 5: Patterns
Chapter 6: CORBA-based Architecture
-Part 6.1: Introduction to CORBA
-Part 6.2: CORBA-IDL


-Part 6.3: Designing CORBA Systems

-Part 6.4: Implementing CORBA Applications

                                Appendix: Example Java Implementation using Orbacus
Chapter 7: Component-based Development
-Part 7.1: Introduction to Component-based Development

-Part 7.2: CORBA Component Model (CCM)

    - Part 7.3: CORBA Event Service

Chapter 8: Seminars on Specialized Software Architectures
-Hardware-Software Co-design
-Real-Time Architecture

2. Lab Assignment and Documentation

Lab Manual

Lab Assignments

- Weather Mapping System: Requirements
-Lab 0: Tool Presentation
-Lab 1: Use Case View
  Lab1-Solutions
- Lab 2: Logical View
-Lab 2-Solutions
- Lab 3: Implementation, Process, and Deployment View
    Lab 3-Solutions
- Lab 4: Patterns
    Lab 4-Solutions
- Lab 5: Component and Interprocess Communication Design
    Lab 5- Solutions
-Project: Implementation of WMS
 

Lab Notes

3. Seminar (only for SENG522)

-Requirements and Guidelines

-Seminar Schedule

4. Exam Preparation

- Midterm Preparation Guidelines (only for SENG422)

The midterm will cover chapters 1-5 of the lecture notes; it will consist of the partial design of the architecture of 

a small software system; the questions will follow the format of the lab assignments. The midterm will last 45min, and is open book (e.g. lecture notes, assignments and solutions are allowed). Sample questions will be provided in class.

- Final Exam Review 

5. Project Demo: July 21, 2006 2:30-5:30pm; please book a time slot; a sign-up sheet will be posted in ELW A 233.

6. Final Grades

Notices:

-Reminder that labs start Thursday May 11th, 2006.
-GO4 Patterns Reference: http://unicoi.kennesaw.edu/~jbamford/csis4650/uml/GoF_Patterns/index.htm
-Tutorial on the CORBA Component Model (CCM) : http://www.cs.wustl.edu/~schmidt/OMG-CCM-Tutorial.ppt
-Catalog of OMG Specifications: http://www.omg.org/technology/documents/spec_catalog.htm
-Examples and documentation for ORBACUS is available in the ORBACUS User Manual.