Program of Study Haramaya University
College of Computing and
Informatics, Software Engineering
Department
BSc. in Software Engineering
Courses code SENG 3091
Courses Title Software Design and Architecture
Degree Program B.Sc. in Software Engineering
Module name Software Design
Module number 09
Year /semester III / II
Pre-requisites Object Oriented Software Engineering
Status of the course Compulsory
Course Description:
36
An in-depth look at software design. Continuation of the study of design patterns,
frameworks, and architectures. Survey of current middleware architectures. Design of
distributed systems using middleware. Component based design. Measurement theory
and appropriate use of metrics in design. Designing for qualities such as performance,
safety, security, reusability, reliability,
etc. Measuring internal qualities and complexity of software. Evaluation and evolution of
designs. Basics of software evolution, reengineering, and reverse engineering.
Course Objectives:
Upon completion of this course, students will have the ability to:
Design and implement software using several different middleware technologies
Apply a variety of frameworks, and architectural styles in designing a wide variety of
software
Use sound quality metrics as objectives for designs, and then measure and assess
designs to ensure the objectives have been met
Modify designs using sound change control approaches
Use reverse engineering techniques to recapture the design of software
Course Schedule, topics, activities, and readings
Week Topic
Introduction to Software design
- Design, Architecture, Development, Deployment, Maintenance, Operation, Keeping
option open, Device independence, Junk Mail, Physical addressing,
1&2
- Design Specifications
- General and domain specific design principles
Object oriented design concepts
- Design Consideration (Abstraction, Modularity, Information Hiding, Complexity,
System Structure, Object-Oriented Metrics, abstract types, interfaces,
polymorphism, delegation vs sub classing, generics)
- Classical Design Methods
Functional decomposition, Data Flow Design, Design based on Data structures.
- Object-Oriented Analysis and Design Methods
The Booch Method
FUSION
RPU Revisited
2, 3 & 4
Architecture styles and Design
- Overview of Software Architecture
- Architectural Styles
(client and server architecture, pipe and filter architecture, event-based architecture,
layered architecture, data-flow architecture)
- Architectural Design
Software Subsystem Architectural Design
(Designing Object-oriented Software Architectures, Designing Client/Server
5, 6 , 7 Software Architectures, Designing Service-Oriented Architectures, Designing
&8
Component-Based Software Architectures, Designing Concurrent and Real-Time
Software Architectures, Designing Software Product Line Architectures, Software
Quality Attributes)
Middleware architectures and Design Pattern
9, 10 & - COM,
11
- CORBA, and .Net
- Other Middleware Technologies
- Design Patterns
(Structural design pattern, Behavioral design pattern, Functional design pattern)
Extensive case studies of real designs
12-15
- Basics of software metrics;
- Measuring software qualities
- Reengineering and reverse engineering techniques.
- Sample Lab Assignment
- Building a significant project using one or more well- known middleware
architecture
Teaching and learning methods
37
Assessment & Evaluation Methods
Course policy:
Texts and references:
1. Software Modeling and Design, Hassan Gomaa
2. Software Engineering: Principles and Practices, Hans Van Vlient
3. Clean Architecture: A Craftsman’s Guide to Software Structure and Design