Module Identifier CSM2110  
Academic Year 2000/2001  
Co-ordinator Dr Myra Wilson  
Semester Semester 2  
Pre-Requisite CSM0120  
Co-Requisite CSM0320  
Course delivery Lecture   18 Hours  
Assessment Group project     100%  
  Resit assessment   There is no provision for supplementary examinations or external resits.    

General description
The construction of software on an industrial or commercial scale involves far more than writing programs. Specification, design and project management are essential elements of software development; this module introduces students to the best traditional practices in these areas and gives students the opportunity to experience these practices through a group project.

This module aims to introduce students to the basic principles of software engineering and to give them experience of developing a software system in a team. Specifically, it aims to:

Learning outcomes
On successful completion of this module students should:

1. Introduction - 1 Lecture
The approach and the obligations of the professional engineer. Software as an engineering artifact. Analogies between software and other branches of engineering.

2. The Software Life Cycle - 2 Lectures
Description of the phases of the software life cycle and the major deliverables and activities associated with each phase.

3. Project Management - 2 Lectures
Planning and cost estimation. Progress monitoring. Team structure and team management.

4. Quality Management - 3 Lectures
Validation, verification and testing. Quality plans. Walkthroughs, code inspections and other types of review. Role of the quality assurance group. Standards (international, national and local).

5. Configuration Management - 2 Lectures
Baselines. Change control procedures. Version control. Software tools to support configuration management: sccs and make.

6. Requirements Specification - 2 Lectures
The IEEE standard for requirements specifications. Validation of requirements by e.g., prototyping. Deficiencies in the traditional approach to requirements.

7. Design - 2 Lectures
Outline (architectural) design and detailed design. Use of abstraction, information hiding, functional and hierarchical decomposition at levels higher then the individual program. Contents of design documentation. (Note that other modules cover particular design methods.)

8. Implementation and Testing - 2 Lectures
Importance of suitable programming languages and a good support environment. Testing strategies. Testing tools: static and dynamic analysers, test harnesses and test data generators, simulators. Performance testing Regression testing. User documentation and training. Cutover. Post-implementation reviews.

9. Tools - 1 Lecture
How CASE tools can aid the software engineer. Upper and lower CASE. Meta CASE tools.

10. The Capability Maturity Model - 1 Lecture

Reading Lists
** Recommended Text
Ian Sommerville. (1996) Software Engineering. 5th. Addison Wesley ISBN 0-201-42765-6
** Consult For Futher Information
H. van Vliet. (1993) Software Engineering: Principles and Practice. John Wiley and Sons ISBN: 0471936111
Shari Lawrence Pfleeger. (1998) Software Engineering: Theory and practice. Prentice Hall ISBN: 013624842X
V. Berzins and Luqi. (1991) Software Engineering with Abstractions. Addison Wesley ISBN: 0201080044