Software Engineering with Objects and Components

Description: We study object oriented software engineering, placing the emphasis on analysis, high level design and issues of large scale projects and systems, such as quality and process control. We use the Unified Modelling Language, which is the successor to the notations of the object oriented development methods Booch, OMT and OOSE, supported by a CASE tool. The final part of the course deals with management, people and quality issues in software. The emphasis here is on finding relevant questions and exploring possible answers, considering practical advantages and disadvantages. No silver bullets will be provided.

Context: The CS3 course Programming Methodology is a prerequisite. The CS3 course Software System Design is highly relevant, but is not a formal prerequisite.

Syllabus

1: Object concepts (for those who did SSD, this is revision). Objects, classes, message passing, relationships between classes, generalisation and aggregation.

2: Elements of UML (interleaved with 3)

• Use case diagram

• Class diagram

• Behaviour diagrams: state diagram, activity diagram, sequence diagram, collaboration diagram.

• Implementation diagrams: component diagram, deployment diagram.

3: The development process (interleaved with 2)

• Use case analysis: problem domain objects: interfaces

• Design as an incremental, iterative process

• Verification, validation and testing of models: recognising faulty analysis and design

• Reusing where possible: design for reuse

• Design patterns

• Software architecture

4: People and quality issues

• Quality in software.

• Issues in project management and teamwork. How does an OO project differ? Management of reuse.

• Organisations’ approaches to software. Trends in employment.

Activities: Some of the course meetings will be lectures, others will be practical sessions working with design problems, in groups or individually, with the CASE tool or on paper.

Assessment: An examination paper accounts for 75% of the mark. The remaining 25% is accounted for by individual coursework, which may take the form of exercises or reports and may draw on the practical sessions.

references

** Fowler UML distilled (as I write, about the only book available on UML. Good, but aimed at people who already have OO development experience.)

** DeMarco & Lister Peopleware: productive projects and teams Dorset House (an excellent read, relevant to the final part of the course and highly recommended to anyone considering a career in software)