Introduction to Software Design and Architecture Adama Science and Technology University School of Electrical Engineering and Computing Department of Computer Science and Engineering
Outline 2 What is Architecture? What is Software Architecture? Software modeling OO Method and the UML Software Architecture design 3/11/2021
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. 3/11/2021 3
Introduction 3/11/2021 4
Introduction 3/11/2021 5
Introduction 3/11/2021 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. 3/11/2021 7
Introduction When do you need an architect? It depends on what you are trying to build... 3/11/2021 8
Introduction 9 Medium 3/11/2021
Introduction 10 Large Definitely need an architect for planning a skyscraper. 3/11/2021
Introduction Design : need multiple views of the object. 3/11/2021 11
Introduction Design is at the center of software engineering. 3/11/2021 12
Introduction Always choose the tools and design strategy appropriate for the size. 3/11/2021 13
Introduction 14 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) 3/11/2021
Introduction Software Architecture: The fundamental structures(overall structure) of a software systems and the relations among them. Respect to the technical view system quality is largely determined by the SW architecture. Software Design: is process through which requirements are translated into a representation of software. The process of converting the system specification into an executable system. Design is about how to build a system. Design is the creative process of describing and transforming a problem into a solution. Poor architecture cannot be fixed by the implementation approach. 3/11/2021 15
Introduction 16 Software Life-Cycle Cost: Requirement (67%) Specification (5%) Design (6%) Coding (5%) Unit Testing (2%) Integration (8%) Maintenance (2%) 3/11/2021
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%) 3/11/2021 17
Introduction Main phases of software development process are: Requirements Analysis (answers “WHAT?”) ◦ Specifying what the software must do Design (answers “HOW?”) ◦ Specifying different parts of the s/w, and how they will fit together Implementation (a.k.a. “CODING”) ◦ Writing the code Testing • Validating the product against requirements. Maintenance (Fixing or Enhancing ) ◦ Fixing the defects and adding new capabilities 3/11/2021 18
Introduction From a project management point of view, software design can be conducted in two main steps: 1.Preliminary Design Concerned with the transformation of requirements into data and software architecture. 2.Detail design Focuses on refining the architectural representation, and lead to detailed data structure and algorithmic representations of software. Three main design activities in the Design phase are: Data design, Architectural design and Procedural design. In addition, many modern applications have a distinct interface design activity. Interface design establishes the layout and interaction mechanisms for human-machine interaction. Data Design /Class design :Objective of Data Design is to transform the information domain into data structures. Eg: Entity Relationship diagrams, Data dictionary, abstract data types and Data structures. 3/11/2021 19
Introduction Architectural Design: identify the overall structure of the system, the principal components (sometimes called sub-systems or modules), their relationships and how they are distributed. Procedural Design: Objective is to transform structural components into a procedural/component description of the software. This step occurs after the data and program structures have been established, i.e. after architectural design. Management Aspect Technical Aspect Preliminary Design Data design/Object design Detail design Architectural design Procedural/Component design 3/11/2021 Interface design 20
General model of the design process 3/11/2021 21
Software Design Fundamentals Modularity: Software is divided into separately named an addressable components, called modules, that are integrated to satisfy problem requirements. Abstraction: is used in problem-solving, and is used to help separate the logical and physical aspects of the design process. Software Architecture: Identify sub-systems.Depicts the overall layout of the software. The overall structure of the software and the ways in which the structure provides conceptual integrity for a system. Consists of components, connectors, and the relationship between them. Control Hierarchy : different levels of workflows. Data Structure :Design data structures to hold problem data. Software Procedure/Objects: Inheritance and polymorphism. Information Hiding :Encapsulation Functional Independence: cohesion and decoupling. 3/11/2021 22
Design principles in Software Top-down approach: breaking a system into a set of smaller subsystems Object-oriented approach: identification of a set of objects and specification of their interactions UML diagrams are a design tool to illustrate the interactions between ◦ Classes ◦ Classes and external entities ◦ Object diagrams 3/11/2021 23
Static Vs Dynamic Models 24 Static models describe structural aspects: ◦ Class Diagrams ◦ Package Diagrams ◦ Deployment Diagrams Dynamic models describe behavioral aspects: ◦ Use Case Diagrams ◦ Sequence Diagrams ◦ Collaboration Diagrams ◦ State charts ◦ Data-Flow Diagrams 3/11/2021
Goals of Software Design Correctness: should meet the business needs. Robustness :should work at higher loads. Flexibility: Good enough to customize for client needs. Reusability: No duplication of code. Efficiency : s/w should be usable. Reliability: Consistent functional results. Usability: Ease of use the s/w. Scalability: Should be support higher loads. Configurability: Should function as per the data provided in configuration file. Extendibility: Support adding mire functionality. 3/11/2021 25
Black box/High level design representations Representation form View points Design characteristics Data-Flow Diagram Functional Information flow, dependency of operations on other operations, Entity–Relationship Diagram Data modeling relation with data stores State Transition Diagram Behavioral Static relationships between design State chart Behavioral entities Structure Diagram (Jackson) Functional, data modeling, State-machine model of an entity UML: Class Diagram behavioral UML: Use Case Diagram Constructional System-wide state model, including parallelism (orthogonally), Behavioral and functional hierarchy and abstraction Form of sequencing adopted (operations, data, actions) Interactions between classes and objects Interactions between a system and other ‘actors’ 3/11/2021 26
White box/Low level design representations Representation form View points Design characteristics Structure Chart Functional and Invocation hierarchy constructional between subprograms, decomposition into Class and Object Diagrams Constructional subprogram units Sequence Diagrams Behavioral Uses relationships between elements, interfaces and Pseudo code Functional dependencies Message-passing sequences, interaction protocols Algorithm form 3/11/2021 27
Design Methods Functional Decomposition 3/11/2021 28
Functional Decomposition(Cont..) Extremes: bottom-up and top-down Not used as such; design is not purely rational: ◦ clients do not know what they want ◦ changes influence earlier decisions ◦ people make errors ◦ projects do not start from scratch 3/11/2021 29
Data flow Design Nowadays version: two-step process: ◦ Structured Analysis (SA), resulting in a logical design, drawn as a set of data flow diagrams ◦ Structured Design (SD) transforming the logical design into a program structure drawn as a set of structure charts. 3/11/2021 30
Entities in a data flow diagram External entities: Processes: Data flows: Data stores: 3/11/2021 31
Top-level DFD: context diagram 3/11/2021 32
First level decomposition 3/11/2021 33
Second-level decomposition for “preliminary processing” 3/11/2021 34
Compound components in Structured Diagram Sequence Iteration Selection A A A B* BCD Bo Co Do 3/11/2021 35
Compound components in Structured Diagram(Cont..) Some rules for drawing Structure Diagrams: Asimple box denotes a component of a sequence action. Sequence is represented by unmarked boxes. Selection is represented by boxes marked with circles. Iteration is represented by an asterisked box. Sequencing is from left to right. The three forms may not be mixed in a sequence. The last selection part should always be condition less (the ELSE clause) 3/11/2021 36
Cont.. 37 3/11/2021
Cont.. 38 3/11/2021
UML 39 UML as a Standard The evolution of UML: UML 0.9 (Jacobson/1992 & Rumbaugh /1991) UML 1.0 proposal to the OMG in January 1997. UML 1.1 was submitted later that year. OMG maintains UML as a standard. First adoption was UML 1.3 Minor revision with UML 1.4 and 1.5 A major revision was made in 2003 with UML 2.0. 3/11/2021
UML(Cont..) 40 UML 2.0 diagram Structural UML diagrams Class diagrams Component diagram Composite structure diagram Deployment diagram Object diagram Package diagram Profile diagram 3/11/2021
UML(Cont..) 41 UML 2.0 diagram Behavioral UML diagrams Activity diagram Communication diagram Interaction overview diagram Sequence diagram State diagram Timing diagram Use case diagram 3/11/2021
Question & Answer 3/11/2021 42
Thank You !!! 3/11/2021 43
Reading Assignment 1. What is a Software Architecture and Design? 2. What are the differences between Software Design and Software Architecture? 3. List the common tasks of Software design? 4. What is the importance of Software design? 5. What are differences between Implementation and design? 6. What are advantages of the Structural design? 7. Design thinking….. 3/11/2021 44
Search
Read the Text Version
- 1 - 44
Pages: