3 lectures per week, 50 minutes each (3-0-3)
Designation: Required Course
Course Level: Undergraduate
Study of design concepts and notations. Architecture, middleware architectures, design patterns, frameworks, and components. Designing for qualities such as performance, security, reusability, reliability. Metrics and measurement. Basics of software evolution, re-engineering, and reverse engineering. Students participate in a group project on software design.
“Software Design: From Programming to Architecture” by Eric J. Braude, John Wiley & Sons, 2004, ISBN: 0 – 471- 42920 -1.
Upon completion of this course, students will have the ability to:
- Apply a wide variety of design patterns, frameworks, components, and architectures in designing a wide variety of software.
- Develop different design solutions taking into consideration design principles.
- Use software metrics to measure and assess the quality of the software.
- Restructure existing design in order to improve its quality.
- Work effectively as leader/member of a development team to deliver quality software design.
- Express and present a software design in a software design document (SDD).
- Employ appropriate methods and tools for developing design specifications.
- Introduction to Software Design
- Design Principals
- Software Architecture
- Middleware architecture & CORBA
- Design Patterns
- Software components
- Software Measurement and Software Metrics
- Software Evolution
- Reengineering and Reverse Engineering
- Jackson Structured Development