Software Architecture for DSD The “Uses” Relation.

Slides:



Advertisements
Similar presentations
Dr. Rogelio Dávila Pérez
Advertisements

Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Distributed Software Development Course Review. Outline Characteristics and risks of DSD Role of software engineering Process: coordinating work Requirements:
1 Layers Data from IBM-Rational and Craig Larman’s text integrated into these slides. These are great references… Slides from these sources have been modified.
Architecture III Uses and Process Structures 1. Outline Lecture: –Design for extension and contraction: the “uses” structure –Design for run-time separation.
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
The Role of Software Processes in DSD DSD Team. Outline Review: usefulness of software processes Fitting processes to development problems Choosing a.
Globally Distributed Development The Role of Software Processes in DSD DSD Team.
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.
The Architecture Design Process
Site Skin Structure Services Space plan Stuff Software Architecture and Software Architecture Patterns (1)
Introduction to Distributed Software Development DSD Team.
Creating Architectural Descriptions. Outline Standardizing architectural descriptions: The IEEE has published, “Recommended Practice for Architectural.
Architectural Design Principles. Outline  Architectural level of design The design of the system in terms of components and connectors and their arrangements.
Software Architecture in Practice
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
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.
Software Architecture. Agenda " Why architect? " What is architecture? " What does an architect do? " What principles guide the process of architecting?
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
What is Software Architecture?
Software Architecture in Practice (3rd Ed) Introduction
What is an Architecture?. An Example? Invoice OrderDelivery Customer.
CSI315 Web Applications and Technology Overview of Systems Development (342)
1/19 Component Design On-demand Learning Series Software Engineering of Web Application - Principles of Good Component Design Hunan University, Software.
1 N Degrees of Separation: Multi-Dimensional Separation of Concern (MDSOC) HyperJ: language and concepts of general concern combination.
An Introduction to Software Architecture
The Architecture Business Cycle. Software Architecture Definition The software architecture of a program or computing system is the structure or structures.
Features, Policies and Their Interactions Joanne M. Atlee Department of Computer Science University of Waterloo.
Architectural Design portions ©Ian Sommerville 1995 Establishing the overall structure of a software system.
©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.
What is Software Architecture? | Website for Students | VTU NOTES | QUESTION PAPERS | NEWS | RESULTS Chapter 2, Authors: Len Bass, Paul,
1 Introduction to Software Architectures Lecture - 3.
SOFTWARE SYSTEMS DEVELOPMENT 4: System Design. Simplified view on software product development process 2 Product Planning System Design Project Planning.
10 Software Architecture CSCU 411 Software Engineering.
Software Architecture and Design Dr. Aldo Dagnino ABB, Inc. US Corporate Research Center October 23 rd, 2003.
Architectural Design lecture 10. Topics covered Architectural design decisions System organisation Control styles Reference architectures.
Next-generation databases Active databases: when a particular event occurs and given conditions are satisfied then some actions are executed. An active.
Some Software Engineering Principles by D. L. Parnas Presented by Team 7: Amitkumar Dhameja Cincy Francis Rong Gu CS575 - Software Design, Team 7.
Lecture 7: Requirements Engineering
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
Design Concepts By Deepika Chaudhary.
CPSC 372 John D. McGregor Module 3 Session 1 Architecture.
John D. McGregor Class 4 – Initial decomposition
CPSC 871 John D. McGregor Module 3 Session 1 Architecture.
CSC480 Software Engineering Lecture 10 September 25, 2002.
Lecture 18: Object-Oriented Design
© 2006 Pearson Addison-Wesley. All rights reserved 2-1 Chapter 2 Principles of Programming & Software Engineering.
Architecture View Models A model is a complete, simplified description of a system from a particular perspective or viewpoint. There is no single view.
Slide 1 Lecture 14 Enterprise Systems Development ( CSC447 ) COMSATS Islamabad Muhammad Usman, Assistant Professor.
CS223: Software Engineering Lecture 13: Software Architecture.
Introduction to Distributed Software Development DSD Team.
1 Advanced Software Architecture Muhammad Bilal Bashir PhD Scholar (Computer Science) Mohammad Ali Jinnah University.
Wrap up. Structures and views Quality attribute scenarios Achieving quality attributes via tactics Architectural pattern and styles.
Achieving Critical System Qualities Through Software Architecture Dr. Stuart Faulk Computer and Information Science University of Oregon.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
The Role of Software Processes in DSD DSD Team. Outline Review: usefulness of software processes Fitting processes to development problems Choosing a.
Chapter 7: Modifiability
Architecting Web Services
Chapter 11: Usability © Len Bass, Paul Clements, Rick Kazman, distributed under Creative Commons Attribution License.
Architecting Web Services
Designing Software for Ease of Extension and Contraction
What is an Architecture?
Software Architecture
An Introduction to Software Architecture
What is an Architecture?
Presentation transcript:

Software Architecture for DSD The “Uses” Relation

Overview Design for extension and contraction The “uses” structure Role in incremental development © S. Faulk 20102

Code Structure and DSD Problems of coordination and control are affected by the way the code is structured (decomposed into parts and the relationships between the parts) – Problem of distributing work: want to be able to have different sites develop code concurrently without increasing communication overhead – Problem of incremental development: need to coordinate development so all the pieces are developed in the right order for each increment – Problem of run-time dependencies: timing dependencies at run time also require communication Focus on systematic approaches to architectural design © S. Faulk 20103

Working Definition “The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them.” From Software Architecture in Practice, Bass, Clements, Kazman © S. Faulk 20104

Implications of the Definition “The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships among them.” - Bass, Clements, Kazman Systems have more than one architecture – There is more than one useful decomposition into components and relationships – Each addresses different system properties or design goals It exists whether any thought goes into it or not! – Decisions are necessarily made if only implicitly – Important control issue is who makes them and when © S. Faulk 20105

Which structures should we use? Choice of structure depends the specific design goals Compare to architectural blueprints – Different blueprint for load-bearing structures, electrical, mechanical, plumbing Designing for particular software qualities also requires the right architectural model or “view” – Any model can present only a subset of system structures and properties – Different models allows us to answer different kinds of questions about system properties – Need a model that makes the properties of interest and the consequences of design choices visible to the designer, e.g. Module structure for development property like maintainability © S. Faulk 20106

Architectures of Interest Module structure – Specifies the design-time decomposition of the program into work assignments – Useful for: separating concerns, ease of change, work breakdown Uses structure – Specification of the inter-program dependencies – Useful for: sub-setting, incremental development Process structure – Decomposition of the run time structure (tasks, threads) – Useful for: controlling run-time dependencies, concurrent execution © Stuart Faulk 20097

Module Hierarchy (review) For large systems, the set of modules need to be organized such that – We can check that all of the functional requirements have been allocated to some module of the system – Developers can easily find the module that provides any given capability – When a change is required, it is easy to determine which modules must be changed The module hierarchy defined by the submodule- of relation provides this architectural view © S. Faulk 20108

Module Hierarchy © S. Faulk Problem Interface Encapsulated “Secrets” Interface Encapsulated Interface Encapsulated Interface Encapsulated Submodule-of relation Given a set of likely changes C1, C2, … Cn and following these rules, what happens: To each change? To each change? To things that change together? To things that change together? Change separately? Change separately?

Design for Extension and Contraction The “Uses” Relation © 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

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

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 (meet its requirements) – 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, e.g. garbage collection)

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

© Stuart Faulk Uses Hierarchy For incremental subsets – First subset using nothing else – Second only uses first or itself – Etc. Planning: if each is a module, then know the set of work assignments for each subset Key point: the “allowed to use” relation is something the architect designs (not just a view of an existing system) A GFE DCB H J I K

Face Recognition Uses Increment 0 © S. Faulk train recognize Phone App recognize (jpg) calls Which programs “use” others? uses

When do we “use” the DB? 19

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

Particular Project Concerns Incremental development – Need to think ahead about capabilities each increment will need – Necessary for project planning Distributed Development – Uses implies a dependency between components that may or may not be obvious – May require communication, imply changes – Should be made explicit © S. Faulk

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

Questions?