Department of Computer Science, Unit Catalogue 2009/10
CM10193: Systems engineering
|Assessment:||CW 40%, EX 60%|
|Supplementary Assessment:||CM10193 Mandatory Extra Work (where allowed by programme regulations)|
|Requisites:||While taking this unit you must take CM10227 and take CM10228|
To introduce students to the complexity of software systems engineering and the use of models and appropriate management processes in the understanding and control of the professional analysis and development of such systems in the face of change.
On completion of the unit the students will be able to:
1. Explain the relationship between science and engineering;
2. Describe a range of approaches to Systems Engineering, their advantages and disadvantages, and select between them;
3. Investigate and capture a software systems engineering problem;
4. Apply appropriate techniques for the creation of models at many levels;
5. Progressively refine problem definitions from high to low level;
6. Explain the issues and practical implications of verification and validation, and be able to devise a test plan from a specification;
7. Design, conduct and analyse experiments and transfer these skills for the analysis of the behaviour of software systems;
8. Understand the constraints on project development - resources, legal, ethical and professional.
Use of IT (T/F, A), Problem Solving (T/F, A), Working with Others (T/F, A), Communication (T/F, A).
- The concept of a system; socio-technical and computer technical systems.
- Software Process Models; Waterfall, Evolutionary, Iterative models (Incremental, Spiral). Introduction to agile methods (XP). Iteration in the software process.
- Project management; planning, scheduling and costing projects. Managing people. Capable groups and team management, communication and cohesion, capability maturity model. Management of external factors (e.g. Prince)
- Introduction to Quality management; product quality assurance and software process improvement
* Analysis and Specification
- System Specification; requirements gathering and domain analysis. Functional vs. non-functional requirements. The concept of a stakeholder. Interviews and surveys.
- Users and User Centred Design (UCD); Eason's taxonomy. Casual and formal Use Cases. Scenarios and tasks.
- Evidence and experimental method. Application to quality assurance. Relevant statistical techniques.
- Validation and Verification; test first development, and experimental design. Code reviews. Testing; testing plans, unit and system level testing, testing metrics. System integration and regression testing, configuration management and version control.
* Modelling and Design
- Architectural Design; High level structural design. Horizontal system designs (repository, client/server, layered systems). Vertical system designs (batch processing, transaction/event processing systems). Control flow (call hierarchy, polling, interrupts).
- Object Oriented (OO) Design; models, representations and abstractions. OO abstraction techniques (incl. CRC cards, scenarios, textual analysis). UML; class diagrams, state machine models, use cases and sequence diagrams.
- Software Re-use; Refactoring. Common OO Design patterns. Open source and licensing.
* Professionalism and ethics
- Codes of conduct; ACM/IEEE code of ethics, BCS code of conduct.
- UK IT legislative framework; Introduction to and overview of Data protection act (DPA), Freedom of information act (FIA), Computer Misuse Act (CMA), Regulation of Investigatory Powers Act (RIPA).