Course Information
COMP3403 Implementation, Testing and Maintenance of Software Systems

COMP3403 Implementation, Testing and Maintenance of Software Systems

2017-18
Instructor(s):Mitcheson George
(Class A) No. of credit(s):6
Recommended Learning Hours:
Lecture: 35.0
Tutorial: 4.0
Pre-requisite(s):  
Co-requisite(s):COMP2396 or CSIS0396
Mutually exclusive with:  
Remarks:

Course Learning Outcomes

1. [Software Testing]
Understand and apply the principal approaches to software testing, together with their associated techniques. Plan, analyse, design, implement, execute and evaluate the testing of a software component or system intended to implement a given software specification. Apply test automation techniques and testing tools in support of test execution and evaluation. Apply appropriate international standards for test documentation
2. [Software Implementation]
Understand and apply implementation patterns, coding style and standards to produce quality code. Given a code segment, appraise and report on its quality and, if necessary, improve its implementation
3. [Software Systems Maintenance]
Describe the main categories of software maintenance. Explain the problems associated with software evolution and how rejuvenation techniques can be applied to address those problems. Refactor an implementation to improve its maintainability, with and without tool support.
Mapping from Course Learning Outcomes to Programme Learning Outcomes
 PLO aPLO bPLO cPLO dPLO ePLO fPLO gPLO hPLO iPLO j
CLO 1T,PT,P
CLO 2T,PT,P
CLO 3T,PT,P

T - Teach, P - Practice
For BEng(CompSc) Programme Learning Outcomes, please refer to here.

Syllabus

Calendar Entry:
This course examines the theory and practice of software implementation, testing and maintenance. Topics in implementation include: detailed design issues and implementation strategies; coding style and standards; the review process; quality metrics; pattern implementation and reuse. Testing covers strategies and techniques for unit and component testing; integration testing; system, performance and acceptance testing; test documentation and test management. Topics in maintenance include maintenance techniques, tools and metrics; software rejuvenation; and refactoring.

Detailed Description:

Software Testing Mapped to CLOs
Software test process, Testing maturity model and Test process improvement1
Functional testing techniques: Equivalence class partitioning, Boundary value analysis, Domain testing, State transition testing, Decision table testing, Pairwise testing, Error guessing, Random testing, Combined techniques. Integration testing, System testing, Regression testing. Structural testing techniques1
Coverage criteria and design of adequate test sets. Automated testing. Unit/component testing and unit test frameworks. OO testing in practice. Acceptance test frameworks. Performance testing, metrics and tools. Testing web-based systems. Test documentation and management1
Testing and software quality1
Software Implementation Mapped to CLOs
Code quality. Style and standards. Implementation strategies. Implementation quality metrics2
Design and implementation for testing. Intro to design by contract2
Software review process2
Software Maintenance Mapped to CLOs
Software evolution3
Corrective, adaptive, perfective and preventive maintenance. The maintenance process. Software rejuvenation and reengineering3
Refactoring3

Assessment:
Written Examination: 50%
Continuous Assessment: 50%

Teaching Plan

Please refer to the corresponding Moodle course.

Moodle Course(s)

COMP3403A