software architecture for dsd the “uses” relation

24
Software Architecture for DSD The “Uses” Relation

Upload: betty-armstrong

Post on 24-Jan-2016

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Software Architecture for DSD The “Uses” Relation

Software Architecture for DSD

The “Uses” Relation

Page 2: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2010 2

Overview

• Design for extension and contraction• The “uses” structure• Role in incremental development

Page 3: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2010 3

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

Page 4: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2010 4

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

Page 5: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2010 5

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

Page 6: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2010 6

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

Page 7: Software Architecture for DSD The “Uses” Relation

© Stuart Faulk 2009 7

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

Page 8: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2010 8

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

Page 9: Software Architecture for DSD The “Uses” Relation

Module Hierarchy

© S. Faulk 2010 9

Problem

Interface

Encapsulated

“Secrets” “Secrets” “Secrets”

“Secrets” “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 things that change

together?• Change separately?

Page 10: Software Architecture for DSD The “Uses” Relation

Design for Extension and Contraction

The “Uses” Relation

© S. Faulk 2009 10

Page 11: Software Architecture for DSD The “Uses” Relation

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

Page 12: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2009 12

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

Page 13: Software Architecture for DSD The “Uses” Relation

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

GFE

D

CB

H I

A requires (uses) B

Page 14: Software Architecture for DSD The “Uses” Relation

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)

Page 15: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2009 15

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

Page 16: Software Architecture for DSD The “Uses” Relation

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

Page 17: Software Architecture for DSD The “Uses” Relation

© Stuart Faulk 2009 17

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

Page 18: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2010 18

Face Recognition UsesIncrement 0

train

recognize

Phone App

recognize (jpg)

calls

Which programs “use” others?

uses

Page 19: Software Architecture for DSD The “Uses” Relation

19

When do we “use” the DB?

Page 20: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2009 20

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

Page 21: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2009 21

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

Page 22: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2009 22

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)

Page 23: Software Architecture for DSD The “Uses” Relation

© S. Faulk 2009 23

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

Page 24: Software Architecture for DSD The “Uses” Relation

Questions?