This free course, Approaches to software development, presents an engineering approach to the development of software systems – a software engineering approach. The course pays particular attention to issues of software quality, in terms of both product (what is built) and process (how we build it).
Overview
Syllabus
- Introduction
- Learning outcomes
- 1 Software and software engineering
- 1 Software and software engineering
- 1.1 What is a system?
- Definition
- Software systems
- Viewpoints
- System boundaries
- 1.2 The nature of software
- 1.3 Characteristics of a software system
- 1.4 Maintainability and other software problems
- Legacy systems
- Unsuccessful software systems
- 1.5 Divide and conquer?
- Problem and solution
- Modules and interfaces
- Abstraction
- Coupling and cohesion
- 1.6 Architecture
- Layers
- Components
- Services
- 1.7 Summary of Section 1
- 2 An introduction to software development
- 2 An introduction to software development
- 2.1 Software development as an engineering activity
- 2.2 The role of development processes
- Typical technical activities for the development of software
- An overall process model
- Agile development
- 2.3 Choosing an appropriate process
- Choosing the appropriate level of formality
- Dealing with risk
- 2.4 Traceability
- Project notebook
- 2.5 Summary of Section 2
- 3 Modelling in software development
- 3 Modelling in software development
- 3.1 Importance of modelling
- Agile modelling
- A standard notation
- 3.2 Models illustrate points of view
- 3.3 Introducing the Unified Process
- Views in the UP
- Agile UP
- 3.4 Activities and artefacts in the development process
- Domain modelling
- Requirements
- Analysis
- Design
- Implementation
- Testing
- Deployment
- 3.5 Summary of Section 3
- Conclusion
- References
- Acknowledgements