H16 SOFTWARE ENGINEERING

Prior Knowledge

Students should have a working knowledge of the IMIS Code of Professional Conduct and be able to understand and apply the ethical and legal concepts contained therein. Students should be exposed to both theoretical and practical programming sessions, using a suitable third or fourth generation language (or an OOP language).

Assessment

By a single 3 hour externally set examination paper.

Aims

1. To provide students with software engineering design and implementation principles.

2. To provide the ability to maintain quality standards within a professional environment.

Learning Outcomes

1. Describe the nature of software engineering.

2. Demonstrate the techniques for the management of software systems.

3. Demonstrate the philosophy and facilities of various programming languages.

4. Apply appropriate data structures.

5. Demonstrate the implementation of a software design.

6. Demonstrate the importance of testing.

7. Identify the need for software quality assurance (SQA)

8. Describe software maintenance and configuration management.

9. Recognise the role of automated tools.

Indicative Content by Learning Outcomes

1. Principles

Software engineering definitions; problems arising from scale; software life cycle models; software reliability, efficiency, security, usability and other such factors.

2. Management

Developer documentation; end user documentation needs; software training issues; roles of software

team members; software team management.

3. Languages

Philosophical differences between 3GL, 4GL and OOP language approaches; language library facilities;expert system applications.

4. Data

Stack, queue, list, table, tree structures; dynamic and static structures; matching of data types to applications; logical and physical representations; constraints imposed by language choice.

5. Implementation

Elemental program building blocks; coding in the high level language; coding styles; module characteristics; features of interfaces; embedded documentation; object characteristics.

6. Testing

Testing phases; testing strategies; inspections; reviews and walkthroughs; functional and structural tests; test plan construction; test data design; documentation of tests.

7. Quality

Software quality factors e.g. reliability, robustness, portability et cetera; application of ISO 9001; software metrics; SQA procedures; the requirement for adequate testing.

8. Maintenance

The need for maintenance; maintenance classifications e.g. perfective, corrective; maintaining legacy software; documenting maintenance; version control.

9. Automation

Automated testing (CAST); role of automated development tools; automatic conversions e.g. text to HTML: development environments.