This module develops the learners’ theoretical and practical understanding of the lifecycle of software development giving an overview of a project from beginning to end. The module uses applied methods for developing computer software in a practical context, focusing on software development in teams, testing, and documentation.
This module will ensure learners meet the following objectives:
- Introduce basic principles of software engineering.
- Identify and deploy appropriate practices for an Object-Orientated system.
- Enable learners to specify and design software.
- Ensure learners can verify, test and maintain software using best practice.
- Familiarise learners with standards for documentation and technical writing.
Software engineering principles and Process Models
- Goals of Software Engineering and various software disciplines.
- What is software? Software engineering and software engineering processes.
- Four steps of software engineering: specification, development, validation and evaluation.
- Waterfall approach and evolutionary development. System assembly from re-usable components.
- Agile software development
Software Requirements and Specifications
- What are SW requirements? How to specify the requirements? Guidelines on documenting requirements.
- Functional and non-functional requirements. User requirements. System requirements.
- Requirements capture and analysis. Feasibility study.
- Requirements validation and management.
System Modelling, Software Design and Implementation
- System modelling. Context models, behavioural models, data models and object models.
- What is architectural design? What is architecture specification? Guidelines on documenting the architecture.
- System structuring and modular decomposition. What are control models?
- Difference between domain-specific architectures and client-server architectures.
- User interface design. Human-computer interaction. UI main principles: user interaction, information presentation, user support. UI evaluation.
- Prototyping in SW process. Agile development and rapid prototyping techniques. User interface prototyping.
Software Verification and Testing
- What is software product quality? Quality measurement. software defects and software reliability.
- What is software verification? software inspections. Improvement of product quality.
- What is software testing? Unit testing, defect testing, integration testing and OO testing.
- Automatic static analysis. Testing workbenches. Clean room software development.
- Practical testing.
- Validation versus Verification.
Software maintenance, change and evolution
- Moral and ethical aspects related to development of software products. Legal aspects of software engineering. Copyrights. software patenting.
- Introduction to software change. Program evolution dynamics. Architectural evolution.
- What is software maintenance? Version and release management.
- What is software re-engineering? What is reverse engineering? Program structure improvement and modularisation.