CS
757 Design and
Re-engineering of Object Oriented Programs
Real programs,
Starting with the basic principles of program design
Conceptualize large programs in terms of formal object oriented
structures
Indulge with badly designed programs that would mostly work
correctly.
Term project involving actual forward/reverse engineering of a
program
Exploring programming in both forward and reverse directions
Weekly programming assignments
Course Content
- Non-functional properties of design such as Modularity,
Reuse, Adaptability, Evolvability,
- Separation of concerns, Robustness, Fixity, Flexibility and
Openness;
- Their implications to object
oriented design.
- Design primitives such as
- Abstraction
- Inter-class relations,
- Inheritance and
- Part-whole hierarchies,
- Recursive structures
- Generic types and Templates
- Concurrency, Threads and Synchronization,
- Objects as state machines
- Exceptions.
- Use of design knowledge via Design patterns
- Refactoring patterns
- Topics in Reverse Engineering
and Re-engineering.
- Empirical and qualitative analysis of design quality:
- Coupling and cohesion, Design metrics,
- Access graphs and Concept lattices.
References
1. Design Patterns: Elements of Reusable Object-Oriented Software,
Addison-Wesley, 1994
2. Martin Fowler, Kent Beck, John Brant, William Opdyke, Don
Roberts, Refactoring: Improving theDesign of Existing Code,
Addison-Wesley, 1999.
3. Paolo Tonela, Alessandra Potrich, Reverse Engineering of Object
Oriented Code, Springer,2005.
4. Selected Research Papers
July 2019-Nov 2019
Course Slot: 11
Days: Tue, Fri, 3:30-4:55pm
Venue: SIC 301