Course description

The course provides understanding of software development issues for large scale development through modelling and notation. Furthermore, the course provides understanding and practices on essentials of software Project Management including straight forward techniques for project scooping and control as well as tools and techniques for planning, scheduling and tracking.

Course Objectives:

At the end of the course candidates should be able to:

  1. Be able to describe the major elements of the Software Development process
  2. Be able to use a typical formal specification method
  3. Be able to contrast properties of formal and informal software specification techniques
  4. Be able to create simple program specifications of typical formal specification method
  5. Be able to apply the requirements and domain analysis methods of the Unified Modeling Language (UML).
  6. Be able to perform Use Case and Activity Diagram analysis for problems of limited size.
  7. Be able to effectively use available tools for program specification and design
  8. Be able to work effectively in a group to employ the above skills in the planning and implementation of a system of non-trivial size.

Course Contents:

  1. Introduction (Notes)(Reference):
  2. Software Processes (Notes)
  3. Requirements Engineering (Notes) (Assignment)
  4. System modeling
  5. Architectural Design
  6. Software testing
  7. Project Management
  8. Project Planning

Required Readings

  1. Bruegge B., & Dutoit A. H (2004) : Object Oriented Software Engineering Conquering Complex and Changing Systems, 2nd Edition, Prentice Hall
  2. Sommerville I. (2004): Software Engineering, 8th Edition, Adson – Wesley,
  3. Henry J. (2003) : Software Project Management, A Real World Guide to Success, International edition, Pearson

Recommended Readings

  1. Schmuller : SAMS Teach Yourself UML in 24 Hours, Sams Publishing,
  2. Sommerville : Software Engineering, Addison Wesley 5th Ed.
  3. O’connell, F.(2001) : How to run successful projects III, Addison Wesley
  4. Roger S. Pressman (2000) : Software Engineering A Practitioner's Approach European Adaptation, 5th Edition
  5. M. Looijen (2000) : Management of IS, Prentice Hall,Int.


What is software engineering

The application of a systematic, disciplined, quantifiable approach to the development, operation and maintenance of software.

Software process: Most projects follow recognized stages. The set of steps which lead to a software product is called a software process

 Recommended contents

  • Course overview
  • Software processes
  • Project management
  • Software Requirements
  • Requirement engineering
  • System models
  • Formal Specifications
  • Application Architecture
  • Object Oriented Design
  • User interface design
  • Verification and Validation/Testing
  • Rapid Software Development
  • Design overview
  • Testing overview
  • Design patterns
  • Development platforms
  • Version control
  • Managing People

 Recommended contents

  1.  Introduction to Software Engineering and Computer Ethics.
  2. Process Models and Software Products
  3. Requirements Analysis
  4. Structured design I, Modularity
  5. Structured design II: -Functional decomposition
  6. Structured design III: Data Flow Design
  7. Object-oriented design
  8. User interface design.
  9. Programming paradigms
  10. Object-oriented programming
  11. Verification    
  12. Issues of Software fault tolerance and exceptions
  13. Project management
  14. Course wrap-up and review