Gwybodaeth Modiwlau
Module Identifier
CS22120
Module Title
Software Engineering
Academic Year
2017/2018
Co-ordinator
Semester
Semester 2
Mutually Exclusive
Mutually Exclusive
Other Staff
Course Delivery
Delivery Type | Delivery length / details |
---|---|
Lecture | 20 x 1 Hour Lectures |
Tutorial | 10 x 1 Hour Tutorials |
Assessment
Assessment Type | Assessment length / details | Proportion |
---|---|---|
Semester Exam | 1.5 Hours Written Exam written examination. | 25% |
Semester Assessment | Assessed Coursework | 75% |
Supplementary Exam | 1.5 Hours | 25% |
Supplementary Assessment | There is no External or Suplementary Resit available for this part of the module - the mark for this component will be carried forward. | 75% |
Learning Outcomes
The major learning outcome of this module is that the student should:
1. be able to participate in an industrial scale project.
In addition, on successful completion of this module, students should be able to:
2. apply the elements of the software life cycles, contrast a range of life cycle models and choose appropriate models for a range of typical projects;
3. be able to apply software quality procedures and convince others of their value;
4. be able to use version and configuration management and convince others of their value;
5. produce the key deliverables in software life cycles.
6. evaluate ethical situations and make professional judgements on them.
Brief description
The aim of this module is to give the student a strong foundation in software engineering that will inform their software development practice, and prepare them to work in the software industry.
Students are introduced to the best traditional practices for the specification, design, implementation, testing and operation of large software systems, as well as given an understanding of more modern (agile) variants of those practices.
The practical work on the module is a group project, where a number of students work together to produce a defined product, following standards similar to those that might be experienced working in industry.
Students are introduced to the best traditional practices for the specification, design, implementation, testing and operation of large software systems, as well as given an understanding of more modern (agile) variants of those practices.
The practical work on the module is a group project, where a number of students work together to produce a defined product, following standards similar to those that might be experienced working in industry.
Content
1. Introduction to software engineering - 3 Lectures
Why software needs to be engineered. The approach and the obligations of the professional engineer. Software engineering failures and what we can learn from them.
2. The Software Life Cycle - 2 Lectures
Description of the phases of a range of software life cycles (including the Waterfall lifecycle, Prototyping, Agile development and the Spiral model) and the major deliverables and activities associated with each phase.
3. Project Management - 1 Lecture
Planning and cost estimation. Progress monitoring. Team structure and team management.
4. Quality Management - 2 Lectures
How do we make quality software. Quality plans. Walkthroughs, code inspections and other types of review. Role of the quality assurance group. Standards (international, national and local). Software process improvement.
5. Configuration Management - 2 Lectures
Baselines. Change control procedures. Version control. Software tools to support configuration management.
6. Requirements engineering and HCI - 2 Lectures
Obtaining and documenting system requirements. Validation of requirement by e.g., prototyping. Deficiencies in the traditional approach to requirements. Introduction to UML Use cases. An introduction to HCI.
7. Design - 3 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. State diagrams. Relevant UML notations: packages, sequence and activity diagrams, active objects.
8. Maintenance - 1 Lecture
Types of maintenance. Maintenance process. Refactoring.
9. Testing - 2 Lectures
Testing strategies. Testing tools: static and dynamic analysers, test harnesses and test data generators, simulators. Performance testing. Regression testing. User documentation and training.
10. Ethical issues - 2 Lectures
Difficult ethical issues. Examples of ethical dilemmas for software engineers. Evaluating ethical issues and developing decision skills for difficult situations.
11. 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.
Why software needs to be engineered. The approach and the obligations of the professional engineer. Software engineering failures and what we can learn from them.
2. The Software Life Cycle - 2 Lectures
Description of the phases of a range of software life cycles (including the Waterfall lifecycle, Prototyping, Agile development and the Spiral model) and the major deliverables and activities associated with each phase.
3. Project Management - 1 Lecture
Planning and cost estimation. Progress monitoring. Team structure and team management.
4. Quality Management - 2 Lectures
How do we make quality software. Quality plans. Walkthroughs, code inspections and other types of review. Role of the quality assurance group. Standards (international, national and local). Software process improvement.
5. Configuration Management - 2 Lectures
Baselines. Change control procedures. Version control. Software tools to support configuration management.
6. Requirements engineering and HCI - 2 Lectures
Obtaining and documenting system requirements. Validation of requirement by e.g., prototyping. Deficiencies in the traditional approach to requirements. Introduction to UML Use cases. An introduction to HCI.
7. Design - 3 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. State diagrams. Relevant UML notations: packages, sequence and activity diagrams, active objects.
8. Maintenance - 1 Lecture
Types of maintenance. Maintenance process. Refactoring.
9. Testing - 2 Lectures
Testing strategies. Testing tools: static and dynamic analysers, test harnesses and test data generators, simulators. Performance testing. Regression testing. User documentation and training.
10. Ethical issues - 2 Lectures
Difficult ethical issues. Examples of ethical dilemmas for software engineers. Evaluating ethical issues and developing decision skills for difficult situations.
11. 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.
Module Skills
Skills Type | Skills details |
---|---|
Application of Number | No. |
Communication | Written skills will be needed to complete supporting documents to accompany coursework. |
Improving own Learning and Performance | See 2 above. |
Information Technology | The whole module concerns this area. |
Personal Development and Career planning | Careful time management will be needed as so to enable students to complete coursework etc. |
Problem solving | This is inherent in both the group project and examined material. |
Research skills | The students will need to search for and use relevant technical information while completing coursework. |
Subject Specific Skills | Yes. See module title and content. |
Team work | Yes. Fundamental to module. |
Notes
This module is at CQFW Level 5