Software Reliability Complete Curriculum Software Design

Software Development in Large Projects (Softwaresystems 3)



"The architect should be equipped with knowledge
of many branches of study and varied kinds of learning,
for it is by his judgement that all work done by the other arts is put to test"
Marcus Vitruvius, De architectura libri decem, around 27 - 13 B.C.

1. Introduction
2. Requirement Specification
3. Software Design
4. Object-oriented Analysis and Design
5. Design Patterns
6. Implementation
7. Testing
8. Maintenance

"Those who cannot remember the past are condemned to repeat it."
George Santayana

Extended Contents

1. Introduction
motivation for software engineering, historical background, software crisis
examples of software-based accidents: Ariane 5, Berlin fire brigade
types of software incorrectness, fault tolerance, phases of software development process
process models: build and fix model, waterfall model, V-model, agile processes

2. Requirement Specification
introduction, goal of specification, properties of requirements
requirements elicitation: questionnaire, interview, review, workshop
use case modelling, Volere model, satisfaction and expectations
requirements management, change process, tools for requirements administration
informal specification languages, problems: reduction, generalisation, distortion
rules for requirements analysis
semi-formal specification languages: ER diagram, tables, workflow diagrams
formal specification languages: finite state automata, Petri nets, OCL
graphical user interface, principles of software ergonomy

3. Software Design
software high level design: principles of decomposition, abstraction, component interface
classical architectural models: block diagrams, data repository model, layer model, Client/Server model, distributed system, CORBA, cohesion and coupling types
software low level design: language-independent notations: structogram, pseudo-code

4. Object-oriented Analysis and Design
introduction, class, object, inheritance, polymorphism, delegation und Propagation, UML
OOA: static modelling: class diagrams, substantive method, example: library
OOA: dynamic modelling: sequence, collaboration deployment diagrams, example: cashpoint
OOD: architectural modelling: package, component diagrams, example: library
OOD: static modelling: enrichment of class diagrams
association, role, multiplicity, aggregation, composition, interface, assertion
OOD: dynamic modelling, example for refinement: cashpoint
synchronous and asynchronous messages, state diagrams

5. Design Patterns
class- and object-based patterns, creational, structural, behavioural purposes
singleton, abstract factory, adapter, bridge, proxy, decorator, compositum, template,
command, observer, strategy, chain of responsibilities

6. Implementation
overview on programming languages, historical development, language generations
error-prone constructs, coding rules, code generation from UML constructs
example: point of sale system, class diagram, sequence diagram
class generation, type adaptation for attributes and methods, implementation of associations

7. Testing
testing in different lifecycle phases, testing strategies, functional, structural testing
statement, branch, path coverage, regression testing, UML-based test case definition

8. Maintenance
Importance of maintenance phase, maintenance tasks and management
re-factoring: motivation and goal, code and design levels, techniques, indirection