Uploaded by Zenebe Tafese

1- Introduction to SDA (3)

advertisement
Lecture 1 - Introduction to
Software Design and Architecture
CPU College
Office of Postgraduate Studies
Department of Software Engineering
Dr. Mesfin Abebe Haile (2022)
Outline
 What is Architecture?
 What is Software Architecture?
 Software modeling
 OO Method and the UML
 Software Architecture design
 Method and Notation
 Evolution of SW modeling and Design Methods
7/29/2022
2
Introduction
 Architecture :
 A general term to describe buildings and other physical
structures.
 Three things are important:
 Durability: should last for a long time.
 Utility: should be useful for the people,
 Beauty : should look good and rise the users sprits.
7/29/2022
3
Introduction
7/29/2022
4
Introduction
7/29/2022
5
Introduction
7/29/2022
6
Introduction
 Architectures are not concerned with the creation of building
technologies and materials.
 Not better glass quality or strong concrete.
 Architectures are concerned with how building materials can be
put together in desirable ways.
 The design process that assembles the parts into a useful,
pleasing and cost-effective way is called architecture.
7/29/2022
7
Introduction
 When do you need an architect?
 It depends on what you are trying to build...
7/29/2022
8
Introduction
 Medium size:
7/29/2022
9
Introduction
 Large size:
 Definitely need an
architect for planning a
skyscraper.
7/29/2022
10
Introduction
 Design : need multiple views of the object.
7/29/2022
11
Introduction
 Design is at the center of software engineering.
7/29/2022
12
Introduction
 Always choose the tools and design strategy appropriate for the
size.
7/29/2022
13
Introduction
 How large?
 How much time to build it?
 How many people in the project?
 How much did it cost ?
 Hard to measure software size:
 Estimate the line of code (LOC)
 Measuring the deployment size (GB)
7/29/2022
14
Introduction
 Software Architecture:
 The fundamental structures of a software systems and the
relations among them.
 Respect to the technical view system quality is largely
determined by the SW architecture.
 Poor architecture cannot be fixed by the implementation
approach.
7/29/2022
15
Introduction
 Software Life-Cycle Cost:
 Requirement (67%)
 Specification (5%)
 Design (6%)
 Coding (5%)
 Unit Testing (2%)
 Integration (8%)
 Maintenance (2%)
7/29/2022
16
Introduction
 The relative cost of fixing software issue during different stages
of life cycle :






Requirements (1%)
Design (5%)
Code (10%)
Development Testing (20%)
Acceptance Testing (50%)
Operations (>150%)
7/29/2022
17
Introduction
Importance of Architecture:
7/29/2022
18
Introduction
 Software Architecture:
 As
the size and complexity of a SW increase, the design
decisions and the global structure becomes important than the
selection of specific algorithms and data structures.
 Who is a Software Architecture?
 Chief Software Architect, Microsoft
 William (Bill) H. Gates
7/29/2022
19
Introduction
 Software Design Vs Software Architecture
 Design refers a specific module of a system.
 Provides all the details that needs to build it.
 Any possible solutions
 Software Architecture:
 The fundamental structures of a software systems.
 High level design
 The optimal solution
7/29/2022
20
Introduction
 Software Architecture: where non-functional decisions are cast, and
functional requirements are partitioned.
 Software Design: where functional requirements are accomplished.
architecture
design
7/29/2022
21
Introduction
Software Modeling:
 In Model-based software design and develop:
 Modeling is an essential part of the software development
process.
 A better understanding can be obtained by considering it from
different perspectives.
 Requirement models, static models, and dynamics models etc.
 UML helps to develop, understand and communicate the different
views.
7/29/2022
22
Introduction
Software Modeling:
 Modeling is used in every works of life.
 Ancient Egypt, Rome, and Greece
 Modeling is used in Science and Engineering.
 To provide abstractions of a system
 To obtain a better understanding of the system
 The Object Modeling Group (OMG), “Modeling is the design
of SW applications before coding.
7/29/2022
23
Introduction
Object-Oriented Methods and the UML:
 Object Oriented quality concepts are crucial in SW analysis
and design.
 Modifiability, adaptation, and evolution.
 Object Oriented methods are based on the general concepts of:
 Information hiding, classes, and inheritance.
7/29/2022
24
Introduction
Object-Oriented Methods and the UML
 The UML was developed to provide a standard graphical
language and notation for OO models.
 UML is methodology – independent .
 Need to be used with OO analysis and design method.
 Modern OO analysis and design methods are model-based.
7/29/2022
25
Introduction
Object-Oriented Methods and the UML
 Almost all modern OO methods use the UML notation for
describing:
 Software requirements,
 Analysis and
 Design models.
7/29/2022
26
Introduction
Object-Oriented Methods and the UML
 Use case modeling:
 Functional requirement of the system (use case & actors)
 Static modeling:
 Provides structural view of the system (classes, objects and
their relationships)
 Dynamic Modeling:
Provides a behavioral view of the system.
7/29/2022
27
Introduction
Software Architecture Design
 Software Architecture:
 Separates the overall structure of the system, in terms of
components and their interconnections.
 Programming-in-the-large:
 Emphasis on components and their interconnections.
 Programming-in-the-small:
 The detail design of individual components.
7/29/2022
28
Introduction
Software Architecture Design
 Software Architecture :
 Can be described at different level of detail.
 It can describe the decomposition of software system into
subsystem.
 It can describe the decomposition of subsystem into modules
or components.
 But the emphasis is on the external view, that is the interfaces
it provides and required – and its interconnections with the
others.
7/29/2022
29
Introduction
Level of Architecture:
7/29/2022
30
Introduction
Architecture type:
7/29/2022
31
Introduction
Software Architecture Design
 Software Architecture :
 The SW quality attributes should be considered when
developing the SW architecture.
 Attributes address the nonfunctional requirements:
 Performance
 Security and
 Maintainability etc…
7/29/2022
32
Introduction
Method and Notation
 Software design notation:
 Means of describing a SW design either graphically or
textually, or both.
 Software design concept:
 Fundamental idea that can be applied to design a system.
(Information hiding)
 Software design strategy:
 An over all plan and direction for developing a design. (OO
decomposition)
7/29/2022
33
Introduction
Method and Notation
 Software structuring criteria:
 Heuristics or guidelines used to help a designer in structuring a
SW system into its components. (Object structuring criteria )
 Software design method:
 A systematic approach that describe the sequence of steps to
follow in order to create a design. (based on a set of design
concepts, design strategies)
7/29/2022
34
Introduction
Method and Notation
 Collaborative Object Modeling and Design Method (COMET),
uses the UML.
 It is based on the design concepts of information hiding,
classes, inheritance, and concurrent tasks.
 It use a design strategy of concurrent object design, which
structure SW system into active and passive objects. (analysis)
 Additional structuring criteria to determine the subsystems and
concurrent task (design)
7/29/2022
35
Introduction
COMET: a UML-based modeling and design method
 It is an iterative use case driven and OO SW development
method.
 Requirements (Functional )
 Analysis and (Objects)
 It has also Architectural and design patterns.
7/29/2022
36
Introduction
Model-Driven Architecture with UML
 A UML model can be either:
 Platform-independent model (PIM) or
 Platform –specific model (PSM).
 PIM is useful b/c the same PIM can be mapped to different
middleware platform such as:
 CORBA (Common Object Request Broker Architecture)
 .NET,
 J2EE,
 Web Services etc…
7/29/2022
37
Introduction
Multiple View of SW Architecture
 SW architecture can be considered from different perspectives.
(different views)
 Kruchten 1995, introduced the (4+1) modeling view.
 The use case view is the unifying view.




7/29/2022
Logical view: shows the parts that comprise the system
Process view: a concurrent process or task view
Development view: describe the system’s modules
Physical view: models the system’s execution environment.
38
Introduction
Evolution of SW modeling and Design Methods
 In 1960s, programs were little (no systematic analysis and design)
 Structured programming in the early seventies (top-down
design).
 In the mid to late 1970s, data flow-oriented and data
structured design.
 Parnas (1972) information hiding.
7/29/2022
39
Introduction
Evolution of SW modeling and Design Methods
 In 1960s, programs were little (no systematic analysis and
design)
 Late 1970s, the design of concurrent and real-time systems.
 Late 1980s, Jackson System Development (JSP).
 JSP was a precursor of object interaction modeling (OOD)
7/29/2022
40
Introduction
Survey of Concurrent, Distributed, and Real-Time Design Methods
 Concurrent Design Approach for Real-Time Systems
(CODARTS) method
 Information-hiding.
 Module structuring and concurrent task structuring.
 Octopus based on use case:
 Static modeling, object interactions, and state charts.
 ROOM is based on around actors .
7/29/2022
41
Introduction
Survey of Concurrent, Distributed, and Real-Time Design Methods
 In this course COMET is used to design concurrent, real-time
and distributed system. (UML 2.0)
 Object-oriented software architecture
 Client/server software architecture.
 Service-oriented architecture
 Component-based architecture
 Concurrent and real-time architecture
 Software product line architecture
7/29/2022
42
Question & Answer
7/29/2022
43
Thank You !!!
7/29/2022
44
Download