Architecture III Uses and Process Structures 1. Outline Lecture: –Design for extension and contraction: the “uses” structure –Design for run-time separation.

Slides:



Advertisements
Similar presentations
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Advertisements

IT Requirements Capture Process. Motivation for this seminar Discovering system requirements is hard. Formally testing use case conformance is hard. We.
Background information Formal verification methods based on theorem proving techniques and model­checking –to prove the absence of errors (in the formal.
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
From Module Decomposition to Interface Specification Software Architecture Part 2.
Software Architecture for DSD
The Role of Software Engineering Brief overview of relationship of SE to managing DSD risks 1.
Architecture is More Than Just Meeting Requirements Ron Olaski SE510 Fall 2003.
An Architecture-Based Approach to Self-Adaptive Software Presenters Douglas Yu-cheng Su Ajit G. Sonawane.
The Architecture Design Process
SWE Introduction to Software Engineering
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Team 1 Lisa Anthony Luiza da Silva Erik Hayes Diana Tetelman.
Major Exam II Reschedule 5:30 – 7:30 pm in Tue Dec 5 th.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
1 Computer Systems & Architecture Lesson 1 1. The Architecture Business Cycle.
The Software Product Life Cycle. Views of the Software Product Life Cycle  Management  Software engineering  Engineering design  Architectural design.
EMBEDDED SOFTWARE Team victorious Team Victorious.
Software Architecture for DSD The “Uses” Relation.
What is Software Architecture?
Software Architecture in Practice (3rd Ed) Introduction
Chapter 7: Architecture Design Omar Meqdadi SE 273 Lecture 7 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
ECE 355: Software Engineering
Designing Software for Ease of Extension and Contraction Presented by William Greenwell February 27, 2002.
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
INT-Evry (Masters IT– Soft Eng)IntegrationTesting.1 (OO) Integration Testing What: Integration testing is a phase of software testing in which.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
[ §3 : 1 ] 2. Life-Cycle Perspective Overview 2.1 Motivation 2.2 Waterfall Model 2.3 Requirements in Context.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
Architecting Web Services Unit – II – PART - III.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 09. Review Introduction to architectural styles Distributed architectures – Client Server Architecture – Multi-tier.
Concurrency: Mutual Exclusion and Synchronization Chapter 5.
SOFTWARE DESIGN (SWD) Instructor: Dr. Hany H. Ammar
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Architectural Styles.
What is Software Architecture? | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS Chapter 2, Authors: Len Bass, Paul,
SOFTWARE DESIGN.
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
Architectural Design lecture 10. Topics covered Architectural design decisions System organisation Control styles Reference architectures.
Chapter 1 : The Linux System Part 1 Lecture 1 10/21/
David Weiss Software Product-Line Engineering: A Family-Based Software Development Process: Designing The Family David Weiss
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Instructor: Tasneem Darwish1 University of Palestine Faculty of Applied Engineering and Urban Planning Software Engineering Department Software Systems.
An Introduction to Software Engineering
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Software Requirements: A More Rigorous Look 1. Features and Use Cases at a High Level of Abstraction  Helps to better understand the main characteristics.
CSC480 Software Engineering Lecture 10 September 25, 2002.
Lecture 18: Object-Oriented Design
13-1 Chapter 13 Concurrency Topics Introduction Introduction to Subprogram-Level Concurrency Semaphores Monitors Message Passing Java Threads C# Threads.
Review of Parnas’ Criteria for Decomposing Systems into Modules Zheng Wang, Yuan Zhang Michigan State University 04/19/2002.
Finite State Machines (FSM) OR Finite State Automation (FSA) - are models of the behaviors of a system or a complex object, with a limited number of defined.
Software Requirements Specification Document (SRS)
Formal Verification. Background Information Formal verification methods based on theorem proving techniques and model­checking –To prove the absence of.
Reachability Testing of Concurrent Programs1 Reachability Testing of Concurrent Programs Richard Carver, GMU Yu Lei, UTA.
Slide 1 Chapter 8 Architectural Design. Slide 2 Topics covered l System structuring l Control models l Modular decomposition l Domain-specific architectures.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
Software Architecture
Chapter ? Quality Assessment
Distribution and components
What is an Architecture?
Software Architecture
An Introduction to Software Architecture
What is an Architecture?
Presented By: Darlene Banta
Chapter 11: Integration- and System Testing
Presentation transcript:

Architecture III Uses and Process Structures 1

Outline Lecture: –Design for extension and contraction: the “uses” structure –Design for run-time separation of concerns: the process structure Lab Exercise: wave-height implementation © S. Faulk

Purposes of System Subsets Often good reasons for extending or contracting software capabilities Extensions –Planned upgrades in new versions –Develop system as a set of increments, each adding capability Contractions –Build to schedule, e.g., time-to-market means its better to deliver reduced capability on time than full capability late –Provide lower cost, lower capability subset (e.g., a “basic” version) –Repurpose a subset of system for a related development 3 © S. Faulk 2010

Difficulties Where subsets and extensions are not planned for, likely difficult to do –Removing capabilities results in other components not working –Capabilities cannot be added without changing existing system modules (e.g., adding/changing services) –Extending or contracting requires redesign Problems follow from unplanned dependencies –Arise by default during development (e.g. when creating functional behavior for use cases) –Module developers are free to use the services of every other module –Little thought given to downstream implications © S. Faulk

Uncontrolled Dependencies Result of unplanned development is typically a network of dependencies (undirected graph) When will I have a working system? What happens if I need to deliver a subset? What do I want this to look like? A G F E D C B HI A requires (uses) B 5 © S. Faulk 2010

The “Uses” Relation Relationship is formalized as the “uses” relation Definition: Program A uses program B if a correct version of B must be present and working correctly for A to work correctly –Intuitively: Any system with A in it must also have B if A is to work correctly “uses” is defined over programs (e.g., services) but may be simplified as a relation between modules Often the same as “calls” but not always –A may call B but not use it (would work with a stub) –A may use B but not call it (B produces data or performs services A needs, garbage collection) 6 © S. Faulk 2010

As Architectural View The “uses” structure exists whether any thought is put into it or not The structure affects a range of important system and development qualities (hence design goals) –Ability to deliver increments –Ability to extend/contract capabilities to meet schedule –Portability (layers), abstract machines) –Testability (incremental build/test) Meeting these kinds of design goals requires purposeful design of the “uses” structure The “uses” as architectural structure –Components: services or modules (depending on granularity) –Relation: “allowed to use” –Interfaces: where A uses B, what B provides that A uses Specifically, the assumptions that A makes about B © S. Faulk

Uses Hierarchy “Ideal” design gives “loop- free” hierarchy with uses relation (acyclic tree) –Level 0 uses nothing else –Level N only allowed to use services on N-1 (or below) Defines constraints on –Build/test order –Increments & subsets –Layers Other design concerns may result in difference from the ideal A GFE DCB H J I K 8 © S. Faulk 2010

FWS Uses Relation On Modules Controller Message Generation Sensor Monitor Value Generator Data Banker Sensor Device Driver Transmitter Device Driver Message Format 9 © S. Faulk 2010

Tabular Representation Uses Used Map. render Map.shrinkTile.drawTile.mapC oord CM.shrinkCM.Regio nIterator CM.tile Map. render Map.shrink X Tile.draw Tile.mapCo ord X CM.shrink X CM.RegionI terator X CM.tile X © S. Faulk

Fit in Development Process/Plan Requirements –Defines expected evolution (versions of the system) –Defines required subsets Project planning –May identify additional requirements or constraints Specifies increments (trace to requirements) Specifies build/test order –Project plan should map subsets/increments to schedule Architectural design and specification –Decompose the system into modules, services –Design uses relation to support subsets & increments –Represent “uses” design decisions (e.g., in table) –Individual modules document what they use from other modules © S. Faulk

DSD Concerns Dependencies between components/tasks –Uses implies a dependency between components that may or may not be obvious –May require communication, imply changes –Should be made explicit Effect on incremental development –Need to think ahead about capabilities each increment will need –Necessary for project planning © S. Faulk

Importance of Uses (1) Uses determines the order in which modules should be implemented –Data Banker & Sensor Device Driver Before Sensor Monitor & Value Generator Controller Message Generation Sensor Monitor Value Generator Data Banker Sensor Device Driver Transmitter Device Driver Message Format Remember that Uses and Module Structures Are Different 13 © S. Faulk 2010

Importance of Uses (2) Uses determines the modules that are needed to build a family member –Especially for building subsets or increments of the system uses tells you what must be present and which should be built first –If message generation is included, then so must be Value Generator, Transmitter Device Driver, Message Format, Data Banker, Sensor Device Driver Controller Message Generation Sensor Monitor Value Generator Data Banker Sensor Device Driver Transmitter Device Driver Message Format 14 © S. Faulk 2010

Uses Design Heuristics General considerations to decide if A should be allowed to use B (above B in uses-hierarchy) –A can be made simpler if it uses B (and B would not be simpler using A) –There is a subset/increment that needs capabilities provided B but not A –B is part of a coherent virtual machine layer that A uses –Using B allows A to keep its secrets (e.g., modules A & C don’t need to share information about a data structure if they both use B) © S. Faulk

Summary Must design a system to address increments, subsets, layering Difficult when dependencies are unplanned Represented in the architecture as the “uses” relation –Makes dependencies explicit –Can design and plan for increments, etc. –Should be traceable to project plan © S. Faulk

Process Structure

Process Structure(s) Process: A sequence of events Processes may cooperate in a variety of ways –Sending messages –Synchronizing Sharing resources Producing and consuming (data) Event notification –Publish and subscribe –Observer pattern –… Different modes of cooperation may lead to different relations and therefore different structures 18© S. Faulk 2010

Process Structure Goals Timing requirements (performance): periodic and demand on outputs Portability: multi-processor platform Feasibility, understandability, maintainability –Ability to treat different run-time threads as relatively distinct –Easier to write, understand For DSD –Architectural view of run-time dependencies –Design to reduce run-time dependencies between code developed by different teams 19 © S. Faulk 2010

Components & Relations Components are processes (aka tasks, threads) Relations of interest: –Synchronizes-with: process A must synchronize execution with B –Excludes: process A shares an exclusive resource with B The scheduler uses these relations to generate a schedule © S. Faulk

FWS Process Structure Representation 21 Message GeneratorSensor Monitor Data Banker Read Write © S. Faulk 2010

FWS Sequence Diagram 22 Message GeneratorSensor MonitorData Banker Read Write © S. Faulk 2010

Process Structure Design General decomposition rule: if two tasks can run independently and concurrently, they should be implemented as distinct processes Time budgeting –Allocate timing budget to each function (demand/periodic) –May include Demand: Initiating event, deadline, latency execution time Periodic: period, frequency, latency, deadline, execution time Scheduling –Develop feasible (or optimal) schedule for total set of processes s.t. every process satisfies its timing constraints 23 © S. Faulk 2010

Intersection with Module Structure Threads run through module services –Locus of control in some module –Calls programs in other modules –Together must satisfy timing constraints, etc. Simplify intersection using consistent design pattern 24 © S. Faulk 2010

Evaluation Ability to produce feasible schedule Accurate outputs produced on time Processes can be written or reviewed (relatively) independently 25 © S. Faulk 2010

Summary The “uses” structure is critical to managing inter- module dependencies –Use to control ordering of incremental development –Use to understand how different teams or developers work depend on one another The process structure in critical to managing run time dependencies –Provides a way to think about and control timing dependencies –Separate threading supports concurrent development, testing © S. Faulk

Exercise: Wave Height Implementation

Implementation Your teams should collaborate to implement the wave height reporting feature for the FWS Need to agree on which teams will implement which modules Over the next couple of days, implement, integrate, and test Suggest trying something simple first like just passing data © S. Faulk

End © S. Faulk