Software Engineering

Teaching Objectives

The objective of this course is to introduce students to a systematic methodology for the analysis and design of software systems. In particular, students will learn the principles of Object-Oriented Analysis and Design and how to model software systems using the universal UML (Unified Modeling Language).

Prerequisite Knowledge

Students are expected to have basic knowledge of:

  • Algorithms and Data Structures

  • Information Systems

  • Object-Oriented Programming

Course Content

Chapter 1. Introduction

  1. Definitions and objectives of Software Engineering

  2. Principles of Software Engineering

  3. Expected software quality attributes

  4. Software life cycle

  5. Software life-cycle models

Chapter 2. UML Modeling

  1. Introduction

    • Modeling

    • Model

    • Object-Oriented Modeling

    • UML applications

  2. General elements and mechanisms

  3. UML diagrams

  4. Packages

Chapter 3. UML Use Case Diagram: Functional View

  • Purpose and definition

  • Notation

Chapter 4. UML Class and Object Diagrams: Static View

  1. Class diagram

  2. Object diagram

Chapter 5. UML Diagrams: Dynamic View

  1. Interaction diagrams

    • Sequence diagram

    • Communication diagram

  2. Activity diagram

  3. State machine diagram

Chapter 6. Other UML Concepts and Diagrams

  1. Components, deployment, and composite structure diagrams

  2. Extension mechanisms

    • OCL (Object Constraint Language)

    • UML Profiles

Chapter 7. Introduction to Development Methods and Reverse Engineering

  • RUP (Rational Unified Process)

  • XP (Extreme Programming)

  • Reverse Engineering

Assessment

  • Final Examination: 60%

  • Continuous Assessment: 40%

References

  1. Bern Bruegge and Allen H. Dutoit, Object-Oriented Software Engineering – Using UML, Patterns, and Java, Third Edition, Pearson, 2010.

  2. G. Booch, J. Rumbaugh, I. Jacobson, The Unified Modeling Language (UML) Reference Guide, Addison-Wesley, 1999.

  3. G. Booch, J. Rumbaugh, I. Jacobson, The Unified Modeling Language (UML) User Guide, Addison-Wesley, 1999.

  4. G. Booch et al., Object-Oriented Analysis and Design with Applications, Addison-Wesley.

  5. Laurent Audibert, Cours UML 2.0, available online at Developpez.com.

  6. M. Blaha and J. Rumbaugh, Object-Oriented Modeling and Design with UML 2, 2nd Edition, Pearson Education.

  7. Pierre-Alain Muller, Object-Oriented Modeling with UML, Eyrolles.

  8. Shari Lawrence Pfleeger and Joanne M. Atlee, Software Engineering, Fourth Edition, Pearson, 2010.


This course introduces the fundamental concepts and methods of Linear Programming (LP), a key area of operations research and optimization. Students will learn how to formulate real-world problems as linear models, apply graphical and simplex methods to solve them, and interpret optimal solutions in practical contexts.