This unit covers the core software engineering disciplines concerned with managing and delivering quality software. Topics include processes, tools and techniques for system validation and verification, including major commercial tools used in industry. It shows how to detect, analyse and control defects in complex software systems. Inspection and testing methodologies, analysis of artefacts, robustness, quality assurance, and advanced software validation and verification methods are covered.
At the completion of this unit students will have -
A knowledge and understanding of:
- the role of validation and verification methods in the system life cycle; key issues in software testing, testing levels and testing techniques:
- specification-based: equivalence partitioning, boundary-value analysis, decision table testing, random testing
- code-based: control-flow testing;
- fault-based: error seeding, mutation testing;
- type of apps: Web based, Object-oriented, component testing, testing concurrent/distributed/real-time/embedded systems;
- selection and combination of techniques; test related measures;
- evaluation of software under test - fault density, testing coverage metrics.
Developed attitudes that enable them to:
- adhere to software quality engineering principles;
- recognise the importance of adhering to software engineering principles of validation and verification in the design and development of test methods;
- have an understanding of inspection and debugging approaches, configuration management, performance, and quality standards issues;
- apply validation and verification methods to ensure and improve quality of software systems;
- measure and evaluate a software system's quality, complexity and reliability using software metrics.
Developed the skills to:
- use industry-strength IDEs such as Eclipse, NetBeans and IntelliJ and unit testing with JUnit, code coverage tools such as Cobertura, and other similar products to help detect software system defects;
- conduct continuous integration (CI) at unit, integration and system testing level using a CI server such as Jenkins to automatically run regression test suites on the system under test;
- be able to analyse and control defects in complex systems.
In-semester assessment: 50%; Examination (2 hours): 50%
Minimum total expected workload equals 12 hours per week comprising:
(a.) Contact hours for on-campus students:
- Two hours of lectures
- One 1-hour tutorial
(b.) Additional requirements (all students):
- A minimum of 9 hours independent study per week for completing tutorial and project work, private study and revision.
((FIT5131 or FIT9017) and (FIT5132 or FIT9003 or FIT9019)) or equivalent
Advanced programming in Java; Object-oriented software engineering: UML notation, method and SE process;
Basic discrete mathematics: sets, relations, functions, graphs; Project management.