University of Information Technology

Software Construction and Evolution

Course Description

This course focuses on design engineering, architectural design patterns that are used in the software development process and open source development. The software evolution techniques, the configuration management and software cost estimation are discussed. Basic principles of software change, detecting bad smells, applying software refactoring, Software maintenance and Software reengineering are also explained. Moreover, the course will practice the use of software configuration management tools.

This course intends to make students to

  • explain design engineering and design patterns
  • study the software evolution techniques and configuration management
  • learn about the techniques of software size and cost estimation
  • apply software configuration management tool

Intended Learning Outcomes (ILO)

Upon the successful completion of this course, students should be able to:

  • Manage and assess complexity in software construction.
  • Use specific techniques to anticipate change in software construction.
  • Apply appropriate refactoring techniques to resolve design problems in code.
  • Understand software reengineering process activities such as reverse engineering, reengineering.
  • Apply the ways of configuration management and demonstrate the configuration management tools.

Text and References Books


  1. Software Engineering “A Practitioner’s Approach”, Roger S.Pressman
  2. Software Engineering, Ian Sommerville

Assessment System

Evaluation Marks Percentage
Class Participation 10 Marks 10%
Tutorial 10 Marks 10%
Presentation/Discussion/Assignments 10 Marks 10%
Project 10 Marks 10%
Final Examination 60 Marks 60%