Module Identifier CS22120  
Module Title THE SOFTWARE DEVELOPMENT LIFE CYCLE  
Academic Year 2000/2001  
Co-ordinator Dr Mark Ratcliffe  
Semester Semester 2 (Taught over 2 semesters)  
Pre-Requisite Pass or exemption in Computer Science at Level 1  
Course delivery Lecture   18 lectures  
  Workshop   Up to 24 workshop sessions  
Assessment Exam   2 Hours   25%  
  Course work   Assessed coursework.   75%  
  Supplementary examination   No supplementary or re-sit examination available    

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. The practical work is a group project.

Long thin module. No lectures in Semester 2

The pastoral and general tutorial system for Year 2 honours students is administered through this module.

Syllabus
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 a range of software life cycles (including the Waterfall, Prototyping, RAD and Spiral models) 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'''', `rcs'''', `cvs'''', `make'''' and proprietary equivalents.

6.Requirements Engineering - 2 Lectures

The IEEE standard for requirements specifications. Validation of requirement by e.g., prototyping. Deficiencies in the traditional approach to requirements. Introduction to UML Use cases

7.Design - 5 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. Function-oriented and object-oriented design. State
diagrams. Relevant UML notations: packages, sequence and activity diagrams, active objects.

8.Implementation - 1 Lecture

UML package and interface concepts. Component and deployment diagrams.

9.Testing - 1 Lecture

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.

10.Tools - 1 Lecture

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

11.The capability maturity model - 1 Lecture

12.Tutorials

A weekly tutorial will be associated with this course. The tutorial will be used to organise group project activities and to discuss software engineering issues.

Aims
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 be able to:

Reading Lists
Books
** Should Be Purchased
Ian Sommerville. (1996) Software Engineering. 5th. Addison Wesley ISBN 0-201-42765-6
Roger S. Pressman. Software Engineering: A practitioner's approach. 4th. McGraw-Hill
One of these texts should be purchased. Advice will be given in lectures..