Semester Offering: InterSem
Object-Oriented technology has evolved over the past twenty years into the preferred method for developing large complex systems. Characteristics such as abstraction and modularity allow system designers to comprehend and tackle the inherent complexity of these applications.
The Unified Process, an iterative, use case-driven, architecture-centric process together with the Unified Modeling Language, a language for specifying artifacts of software systems, provide the methodology necessary to successfully develop such systems.


This course presents the concepts and techniques necessary to effectively use system requirements captured in use cases to drive the development of a robust design model. Students learn to apply the UML notation throughout the project life-cycle to capture and communicate analysis and design decisions in the context of an iterative, use case-driven, architecture-centric process.


Software development experience.


I.       Best Practices of Software Engineering
1.   Six best practices
2.   Unified Process
II.      Concepts of Object-Orientation
1.   Basic Object-Oriented principles
2.   Basic Unified Modeling Language notation
III.      Requirements Overview
1.   Artifacts of Requirements Management
IV.     Architectural Analysis
1.   Architectural Layers
2.   Key Abstractions
3.   Analysis Mechanisms
V.     Use Case Analysis
1.   Use Case Realization
2.   Class identification
3.   Domain modeling
4.   Use Case behavior
VI.     Design Elements
1.   Subsystems and Interfaces
VII.    Design Mechanisms
1.   Persistent mechanisms
VIII.  Runtime Architecture
1.   Modeling Processes and Threads
IX.     Distribution
1.   Modeling the Deployment Model
X.      Use Case Design
1.   Refine Use Case Realizations
XI.     Subsystem Design
1.   Subsystem elements
2.   Subsystem dependencies
XII.    Class Design
1.   Implementation environments
2.   Non functional requirements


UML visual modeling tools: IBM Rational Rose and IBM Rational Software Architect Standard Edition.


P. Kruchten (2003), The Rational Unified Process: An Introduction, 3rd edition, Addison Wesley.
Booch, G. et al. (2007), Object-Oriented Analysis and Design with Applications, 3rd edition, Addison Wesley.


A. Hunt, et al. (1999), The Pragmatic Programmer: From Journeyman to Master, Addison Wesley.
E. Evans (2003), Domain-Driven Design: Tackling Complexity in the Heart of Software, Addison Wesley.
F. Buschmann, et al. (1996), Pattern Oriented Software Architecture: A System of Patterns, Wiley.
L. Bass, et al. (2003), Software Architecture in Practice, 2nd edition, Addison Wesley.
J. Rumbaugh, et al. (2004), The Unified Modeling Language Reference Manual, 2nd edition, Addison Wesley.
E. Gamma, et al. (1994), Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley.
M. Fowler (1999), Refactoring: Improving the Design of Existing Code, Addison Wesley.
J. Bloch (2008), Effective Java, 2nd edition, Prentice Hall.
T. Quatrani (2002), Visual Modeling with Rational Rose 2002 and UML, 3rd edition, Addison Wesley.
T. Quatrani et al. (2006), Visual Modeling with IBM Rational Software Architect and UML, Addison Wesley.


Assignment           30%,
Midterm exam       30%,
Final exam             40%