Title: SOFTWARE ARCHITECTURE
1SOFTWARE ARCHITECTURE DESIGN
- MN3309 Session 13
- Prof. Mark Nissen
2Agenda
- Software Engineering
- Software Architecture
- Product Line Architecture
- Software Analysis Design (hidden)
- Structural Complexity (hidden)
- Summary
3Software Engineering Attainable Goal
- Hardware engineering quite mature
- Designs are stable predictable
- Well-understood principles, tools, methods
- Software engineering immature
- Interest in applying engr discipline to S/W
- Need principles, tools, methods
- Quickest, cheapest, highest-quality S/W
- Avoid mistakes in development
- Do no job more than once
- Satisfy key requirements?
4S/W Engineering LCC Effects
Deployment/Support
Development
Note size of S/W pie also shrinks
5Construction Analogy
6Principles
- Abstraction modularity
- Most important principles
- Managing complexity
- Enhancing test supportability
- Information hiding localization
- Enhancing modularity
- Loose coupling high cohesion
- Uniformity, completeness, confirmability
7Systems Engineering Linkages
- Software is system within system
- Systems engr addresses H/W S/W
- Allocate H/W S/W functions, specs
- Address H/W S/W concurrently
- Systems integration test
- EIA 632 - (from MIL-STD-499B)
- Integrated product development teams
- Concurrent engineering (mfg supt)
- 777, Deere, ATT cycle time examples
8Software Systems Engineering Relations
9Software Architecture
- Map function/structure
- High-level design
- Guides detailed system design
- Central to performance, maintenance system
flexibility - Highly reusable
10Essential Properties
- STSC (App. G)
- Partition S/W into components (allocation)
- Flow of data (DFDs)
- Flow of control
- Critical timing and throughput
- Interconnection layers, stds protocols
- Allocation of S/W to hardware
11Definition
- STSC (App. G - 1)
- Hardware software components
- Allocated algorithmic functions
- Interfaces
- Execution concept
12Another Definition
- ISAM2022
- a mapping of functionality onto hardware and
software components - a mapping of the software architecture onto the
hardware architecture - a representation of the human interaction with
these components
13Open Systems
- Open System Architecture adds interface
specifications - fully defined
- available to the public
- maintained according to a group consensus process
- Interchangeable components
14Multiple Views
15Dedicated Hardware
16Layered Architecture
17Layered Software
18Application Tiers
19Joint STARS System - Real Example
20Standardization Areas
(1) Security (2) Candidate application
evaluation (3) Client workstation environment
(4) Database structure and management (5) Data
interchange (6) Application building blocks
(7) GUI look and feel (8) Network
Infrastructure (9) Application system and
training (10) Office automation (11) Operating
systems (11) Templates and report formats
21Common Operating Environment - Real Example
22A TAFIM Compliant C2 Architectural Model(USAF)
ADA Programming Support Environment
Missile Warning
Space
Weather
- Rational Apex
- Rational Rose
Sensor Gateway
Air
Intelligence
Message Handling Services
User Interface Services
Data Management Services
System Services
Code Generator Tools
Command Control Architectural Infrastructure
TAFIM / TRM Compliant COTS SW
COTS HW
23Product-Line Architecture
- Product line
- Collection of individual products
- Common architecture asset base
- Common designs, tools, training
- Economies of scope
- Each product is a refinement
- Engineer only the deltas
- Domain vs. application engineering?
- PLA difficulties in DoD?
24Domain Engineering
- Related to systems apps engr
- Class-level problem solving design
- Associated with family of related systems within
domain (MIS, C3, RT) - Domain knowledge architecture
- Used to design implement apps
- Formalized engineering domain knowledge
- Vertical horizontal domains
- Product lines megaprogramming
25Vertical Horizontal Domains
26Concurrent Domain Application Engineering
27Example 1 - STARS
- USAF Space Command demo project
- Space C2 Architectural Infrastructure
- SCAI used product line design
- Megaprogramming reuse (Ch. 9)
- Parallel domain apps engr processes
- Performance improvements
- 50 reuse of software
- 175 SLOC/mo --gt 1700
- 3 defects/KSLOC --gt 0.3
- 140/KSLOC --gt 57
28Software Analysis Design
- Process Overview
- Design Requirements
- Design Criteria
- IPO Approach
- Data Dictionary
- Generic Design Steps
- Component Design Attributes
- S/W Design Specification
- Component Detail Design Descriptions
29Process Overview
- Analysis - of requirements
- Allocated to software
- Function, interface, and performance
- Design
- From logical architecture interfaces
- To pseudocode (PDL) test procedure
- Product
- Software design spec
- Use to develop code
30Design Requirements
- What needs to be accomplished?
- Goals
- Objectives
- Performance criteria
- Environmental conditions/constraints
- Interface requirements
- Timing requirements
- User capabilities
- Performance criteria
31Design Criteria
- Documentation quality
- Testability of requirements
- Hierarchical structure
- Modular (hi-cohesion low-coupling)
- Separate data, procedures, timing
- Representation supports communication
- Reusability
32IPO Approach
System
Inputs
Outputs
Processing
33Data Repository
- Database of design information
- Specifications
- Data definitions
- Dataflow diagrams
- Entity-Relationship diagrams
- Timing diagrams
- Objects/attributes/methods/relations
- Variable/file/document names/locations
- Risk analysis charts
- Project team assignments
34Generic Design Steps
- Function decomposition (O-O!)
- Interface definition
- Operational timeline development
- Data definition
- Real-time considerations
- Consolidation
- Test procedure development
35Component Design Attributes
- Identification type
- Purpose function
- Subordinates dependencies
- Interfaces
- Resources (H/W S/W)
- CPU time, memory, buffers, I/O, services
- Processing
- Data
36S/W Design Specification
- TOC (T 7.2)
- Introduction references
- Decomposition (by module)
- Component detail design descriptions
- Quality assurance testing
- Traceability of requirements
- Appendices
- Complete design in PDL (pseudocode)
- S/W parameter updates (size, requirements)
- Program listing (source object)
37Component Detail Design Descriptions
- Structure function
- Interfaces
- Program interrupts
- Timing sequencing
- Control features
- Storage allocations application data
- Detailed design description rationale
38Interface Definition
- External interfaces
- Internal interfaces
- Architectural considerations
- Applicable standards
39Operational Timeline
- User needs answer
- System provides answer
- User completes task
40Data Definition
- Entities
- Relationships
- Attributes
- Data types
- Data ranges
- Data sources
41Consolidation
- Pseudocode/Structured English
- Basic blocks
- Flow graph
42Test Procedure Preparation
- Requirements traceability
- Which components satisfy each rqmt?
- Requirements tests
- Which components to test each rqmt?
- Which component paths need testing?
- Data required
- What normal inputs are required?
- What abnormal inputs are required?
43Structural Complexity
- Measure of logical complexity
- Impacts debugging maintenance
- Also impacts test planning
- Basic blocks flow diagrams
- Cyclomatic complexity measure
- Calculation C E - N 1 S 1
- E number of edges
- N number of nodes
- S number of split nodes
44Summary
- Software engineering as attainable goal
- Architecture
- Map function/structure
- High-level design
- Product line
- Collection of similar products
- Common architecture asset base
- Important element of acquisition strat
- Some difficulties with DoD implementation