Software architecture

razisweetoo 10,015 views 37 slides May 09, 2014
Slide 1
Slide 1 of 37
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37

About This Presentation

Software Architecture


Slide Content

Architectural Design Software Architecture Data Design Architectural Style Analyzing Alternative Architectural Designs Mapping Requirements into a Software Architecture Transform Mapping, and Transaction Mapping Refining the Architectural Design

Overview Architectural design represents the structure of the data and program components required to build a computer-based system. A number of architectural "styles" exist. Architectural design begins with data design and proceeds to the derivation of one or more representations of the architectural structure of the system. The resulting architectural model encompasses both the data architecture and the program structure. The architectural model is subjected to software quality review like all other design work products.

Software architecture ——a representation that enables a software engineer to Analyze the effectiveness of the design in meeting stated requirements Consider architectural alternatives Reduce the risk associated with the construction of the software Examine the system as a whole Why is Architecture Important?

Data Design Data Design at Application Level Data Design at Business Level Data Modeling, Data Structure, Database, and the Data Warehouse Subject oriented Integration Time Variance NonVolatility

Data Design Principles Systematic analysis principles applied to function and behavior should also be applied to data. All data structures and the operations to be performed on each should be identified. Data dictionary should be established and used to define both data and program design.

Low level design processes should be deferred until late in the design process. Representations of data structure should be known only to those modules that must make direct use of the data contained within in the data structure. A library of useful data structures and operations should be developed. A software design and its implementation language should support the specification and realization of abstract data types.

Architectural Styles Data centered - data store (e.g. file or database) lies at the center of this architecture and is accessed frequently by other components that modify data Data store (Repository or blackboard) Client software Client software Client software Client software Client software Client software

Data flow - input data is transformed by a series of computational or manipulative components into output data Filter Filter Filter Filter Filter Filter Filter Filter (a) Pipes and filters Pipes Filter Filter Filter Filter (b) Batch sequential

Call and return - program structure decomposes function into control hierarchy with main program invokes several subprograms Object-oriented - components of system encapsulate data and operations, communication between components is by message passing Layered - several layers are defined, each accomplishing operations that progressively become closer to the machine instruction set

Architecture Design Assessment Questions How is control managed within the architecture? Does a distinct control hierarchy exist? How do components transfer control within the system? How is control shared among components? What is the control topology? Is control synchronized or asynchronous?

How are data communicated between components? Is the flow of data continuous or sporadic? What is the mode of data transfer? Do data components exist? If so what is their role? How do functional components interact with data components? Are data components active or passive? How do data and control interact within the system?

Architecture Trade-off Analysis Method Collect scenarios Elicit requirements, constraints, and environmental description Describe architectural styles/patterns chosen to address scenarios and requirements (module view, process view, data flow view)

Evaluate quality attributes independently (e.g. reliability, performance, security, maintainability, flexibility, testability, portability, reusability, interoperability) Identify sensitivity points for architecture (any attributes significantly affected by variation in the architecture) Critique candidate architectures (from step 3) using the sensitivity analysis (conducted in step 5)

Architectural Complexity (similar to coupling) Sharing dependencies - represent dependence relationships among consumers who use the same resource or producers who produce for the same consumers Flow dependencies - represent dependence relationships between producers and consumers of resources Constrained dependencies - represent constraints on the relative flow among a set of components

Mapping Requirements to Software Architecture Establish type of information flow transform flow - overall data flow is sequential and flows along a small number of straight line paths transaction flow - a single data item triggers information flow along one of many paths

Transform Flow Action Path T Transaction Transaction center Transaction Flow Action Path

Flow boundaries indicated DFD is mapped into program structure Control hierarchy defined Resultant structure refined using design measures and heuristics Architectural description refined and elaborated

Program Architecture

Partitioning the Architecture “ horizontal ” and “ vertical ” partitioning are required

Horizontal Partitioning define separate branches of the module hierarchy for each major function use control modules to coordinate communication between functions function 1 function 3 function 2

Vertical Partitioning: Factoring design so that decision making and work are stratified decision making modules should reside at the top of the architecture workers decision-makers

Why Partitioned Architecture? results in software that is easier to test leads to software that is easier to maintain results in propagation of fewer side effects results in software that is easier to extend

Transform Mapping Review fundamental system model Review and refine data flow diagrams for the software Determine whether the DFD has transform or transaction characteristics

Isolate the transform center by specifying incoming and outgoing flow boundaries Perform first level factoring Perform second level factoring Refine the first iteration architecture using design heuristics for improved software quality

Transform Mapping

Factoring

First Level Factoring main program controller input controller processing controller output controller

Second Level Mapping

Transaction Mapping Review fundamental system model Review and refine data flow diagrams for the software Determine whether the DFD has transform or transaction characteristics

Identify the transaction center and flow characteristics along each action path Map the DFD to a program structure amenable to transaction processing Factor and refine the transaction structure and the structure of each action path Refine the first iteration architecture using design heuristics for improved software quality

Transaction Flow T incoming flow action path

Transaction Mapping Principles isolate the incoming flow path define each of the action paths by looking for the "spokes of the wheel" assess the flow on each action path define the dispatch and control structure map each action path flow individually

Transaction Mapping a b t g h d e f i k j l m n Data flow model x1 b a t x2 x3 x4 d e f g h x3.1 l m n i j k mapping program structure

Isolate Flow Paths fixture setting read command validate command determine type read record calculate output values format report produce error msg read fixture status determine setting format setting send control value command command invalid command error msg status combined status raw setting robot control start/stop assembly record record values report valid command

Map the Flow Model

Refining Architectural Design Processing narrative developed for each module Interface description provided for each module Local and global data structures are defined Design restrictions/limitations noted Design reviews conducted Refinement considered if required and justified

Refining the Structure Chart