Introduction:
Basic definitions and terminology. Phases of software process. Attributes of a good software.
Software process models:
The waterfall model, evolutionary development, agile development, formal systems development, reuse-based development. Incremental development, spiral development.
Software specification:
System and environment. Feasibility study. Requirements elicitation and analysis. Requirements specification. Functional and non-functional requirements, user requirements, system requirements. Requirements validation.
Design methods:
Context models. Behavioural models. Data models. Object models – object oriented design. Real-time software design.
Software design and implementation:
Architectural design. Abstract specification. Interface design. Component design. Data structure design. Algorithm design.
Programming and debugging
Software validation:
Unit testing. Module testing. Sub-system testing. System testing. Acceptance testing.
Other activities:
Software evolution. Software maintenance. Software cost estimation. Management planning. Project management, risk assessment.
Introduction to the UML:
What is the UML?. Loops and jumps. Functions revisited.
Coursework: Draw UML diagrams.
Basic behavioural modelling: Use case diagrams. Identifying use cases. Activity diagrams.
Coursework: Bank case machine case study (use case/activity diagrams).
Advanced behavioural modelling:
Sequence diagram. Communication diagrams. State machine diagrams.
Coursework: Restaurant case study (sequence/communication diagrams).
Structural modelling:
Basic class diagrams. Object diagrams. Advanced class diagrams. Coursework: Premier league case study (class/object diagrams).
User interface design:
What is usability?. UI design in 12 easy steps. Testing usability. Coursework: Critique of Word’s user interface design.
Software testing:
Principles of software testing. Verification. Validation.
Coursework: Black-box and white-box testing.