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