Software Modeling and Design
BBL 502E
Introduction
⚫Instructor:
Dr. Abdulkerim Çapar
⚫Course Duration:
14 Weeks
⚫Class Meeting Time:
Wednesday 09:30-12:30 AM
⚫Course Web Site:
Ninova
All announcements will be made only on the course web site.
Students are expected to check this page regularly.
2 İTÜ, YZV445E AI Projects, A. Çapar © 2024 Introduction
Course Evaluation Criteria
⚫For Software Modeling and Design Course, all sections will be graded on
the same curve.
Assessment Percentage
Midterm 40
Final 60
⚫The passing grade may vary from semester to semester depending on the
class average. Generally, the passing grade is 50.
3 İTÜ, YZV445E AI Projects, A. Çapar © 2024 Introduction
Course Description
Requirement and problem domain analysis. Object oriented design. Using the UML to
express software artifacts. GRASP and GoF software design patterns. Metrics to
evaluate the design quality of software
4 Introduction
Course Objectives
⚫Writing use cases to model requirements
⚫Analysis of the problem domain
⚫Designing a software system using the object oriented approach
⚫Teaching some of the important software design patterns
5 İTÜ, YZV445E AI Projects, A. Çapar © 2024 Introduction
Course Plan
Weeks Topics
1 Introduction, Basic information on OOP
2 The Unified Process
3 Use Cases
4 Modeling of the problem domain, analysis
5 UML class and interaction diagrams
6 Phases of the software design
7 GRASP design patterns (4 patterns)
8 Example designs using GRASP patterns
9 Coding and unit tests
10 GRASP design patterns (cont. 5 patterns)
11 GoF design patterns (5 patterns)
12 GoF design patterns (cont. 5 patterns)
13 Example designs using GoF patterns
14 Basic metrics for software evaluation
6 İTÜ, BLU 596E, A. Çapar © 2024 Introduction
Textbooks
⚫Craig Larman, Applying UML and Patterns, An
Introduction to OOA/D and Iterative Development, 3/e,
2005.
⚫Eric Freeman, Elisabeth Robson, Head First Design
Patterns: Building Extensible and Maintainable Object-
Oriented Software, O’REILLY, 2nd ed. 2020. You may
also use the 1st edition (2004) of this book.
⚫Gamma E., Helm R., Johnson R., Vlissides J., Design
Patterns: Elements of Reusable ObjectOriented
Software, Reading MA, Addison-Wesley, 1995.
7 Introduction
Main Challenges
⚫Complexity:
⚫Software systems of this type are developed to solve problems in complex real-world systems. For
example, banking systems, air or railway traffic control systems, cellular phone switching systems, e-
commerce systems, etc.
⚫Software inherits the complexity of the problem domain.
⚫Today, software products are often more complex than other engineering artifacts such as buildings,
bridges, or vehicles.
⚫Many Components:
⚫Large software systems include many components, and teams with many members develop them.
⚫Communication (interaction) and cohesion (harmony) between components are essential.
⚫A component can be an object (a class), a group of classes such as a service in SOA, a microservice, a
package in Java, or another program.
⚫Changes:
⚫Software systems tend to have a long life span. Requirements change.
⚫They must be extensible (adding new functionalities according to new needs).
⚫They must be flexible to adapt to changing requirements.
⚫They must be reusable (reducing the cost).
8 Introduction
Main Challenges
Example:
⚫Assume that you design a software system for an e-commerce company.
⚫The company has many different, changing discount policies.
⚫For example,
⚫At the end of the season, there may be 30% or 50% discounts depending on the item.
⚫In some weeks, on Mondays, it may be 10%, and on Thursdays, 5% off all sales.
⚫It may be 150 TL off if the sale total exceeds 1000 TL.
⚫For customers with a loyalty card, there may be other discounts.
⚫The company may change these policies or create new sales promotions.
⚫Problems:
⚫How can our software system adapt to these changes without a significant effort?
⚫We want to sell our system to other companies that may have different policies.
⚫How can we reuse components of our existing software system to reduce the cost?
9 Introduction
The goal of a software development project
⚫To deliver a software system that
⚫meets the quality needs of different stakeholders (user, developer, customer …)
⚫ Functionality
⚫ Performance (speed, accuracy, etc.)
⚫ Efficiency (processor, memory, network, etc.)
⚫ Reliability (error-free)
⚫ Security (access control, data protection)
⚫ Maintainability (modify, extend, reuse)
⚫…
⚫is on time,
⚫is within budget.
⚫Once the system is operational, the challenges of being on time, on budget, and having the
expected quality do not disappear.
⚫The system must be maintained and developed to meet changing needs and environments.
⚫Just writing a code that runs somehow is not sufficient!
⚫You must consider the quality needs of the system's stakeholders.
10 Introduction
Expectations (requirements) and the Software Architect
Source: D. Falessi, G. Cantone, R. Kazman, and P. Kruchten,
“Decision-making techniques for software architecture design,”
ACM Computing Surveys, vol. 43, pp. 1-28, Oct. 2011.
11 Introduction
The goal of the course
⚫Besides meeting the functional requirements
of the stakeholders, our objective is to learn
⚫how to deal with complexity,
⚫handle changes,
⚫build extensible, flexible, reusable,
reliable software systems,
⚫and as a consequence, reduce the
(maintenance) cost.
⚫For this reason, this course presents
⚫object-oriented design principles and
[Link] [Link]
⚫software design patterns.
12 Introduction
Steps of software development
⚫Specification (Requirements)
⚫Understanding what the user wants. Writing use cases.
⚫Domain analysis (*)
⚫Understanding the system (the problem). What should the system do?
⚫Design (*)
⚫Designing the system as collaborating objects.
⚫Assignment of responsibilities to classes.
⚫Implementation
⚫Coding (Programming)
⚫Evaluation
⚫Testing, measurement, performance analysis, quality assessment
⚫Evolution
⚫Management, improvement, refactoring
This course focuses on the design level, i.e., the assignment of responsibilities to objects.
13 Introduction