Module Identifier CSM1710  
Module Title THE SOFTWARE DEVELOPMENT LIFE CYCLE  
Academic Year 2000/2001  
Co-ordinator Mr Christopher Loftus  
Semester A  
Pre-Requisite CSM1020 , CSM1310  
Course delivery Contact Hours   34 Hours plus around 45 hours of self study and practical work  
Assessment Exam   3 Hours   100%  

General description
The objectives of the lecture course are first to introduce students to the best traditional practices for the specification, design, implementation, testing and operation of large software systems; and second to provide a framework for the more detailed material on design which is taught in other courses.

Aims
This module aims to introduce students to the best current industrial practice for the development and implementation of large software systems.

Learning outcomes
On successful completion of this module students should:

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

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

Project Management
Planning and cost estimation. Progress monitoring. Team structure and team management.

Quality Management
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).

Configuration Management
Baselines. Change control procedures. Version control. Software tools to support configuration management.

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

Design
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.

Implementation and Testing
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.

Tools
How CASE tools can aid the software engineer. Upper and lower CASE. Meta CASE tools.

The Capability Maturity Model

Reading Lists
Books
** Should Be Purchased
Ian Sommerville. (1996) Software Engineering. 5th. Addison Wesley