lectures.alex.balgavy.eu

Lecture notes from university.
git clone git://git.alex.balgavy.eu/lectures.alex.balgavy.eu.git
Log | Files | Refs | Submodules

index.md (2721B)


      1 +++
      2 title = 'Introduction'
      3 +++
      4 # Introduction
      5 What is software architecture?
      6 - fundamental concepts/properties of system in its environment
      7 - embodied in its elements, relationships, and principles of its design/evolution
      8 - so: design + design decisions
      9 
     10 Why?
     11 - vehicle for stakeholder communication
     12 - way for manager to reason about cost and schedule
     13 - manifests earliest set of design decisions
     14 - transferable abstraction of system
     15 
     16 Characteristics of Software Architecture
     17 - Iteration on functional/quality requirements
     18 - Many stakeholders involved
     19 - Balancing of functional/quality requirements
     20 
     21 Architecturally significant requirements (ASRs):
     22 - architectures are driven by quality attribute requirements (e.g. system must be modular, shall meet users' performance expectations)
     23 - features/functionality shape architecture to lesser extent
     24 
     25 Business goals:
     26 - e.g. "we want to differentiate our product from competition and capture market share)
     27 - may directly affect architecture
     28 - often lead to quality attribute requirements
     29 
     30 ## Architecture representations & styles
     31 Structure: coherent set of architectural elements
     32 View: representation of structure (picture)
     33 
     34 Structures:
     35 - modules: module is unit of implementation with assigned areas of functionality
     36 - component-connector: elements with runtime behavior (components) and interactions (connectors)
     37 - allocation: relationship between software elements and environment
     38 
     39 Architectural style: description of component and connector types, pattern of their runtime control/data transfer
     40 
     41 Design patterns: recurring structures of communicating components that solve general design problem in a context (e.g. Model-View-Controller)
     42 
     43 ## Architecture assessment
     44 Assesses whether architecture meets quality goals.
     45 
     46 Software Architecture Analysis Method (SAAM)
     47 
     48 * develop scenarios for
     49     - activities system must support
     50     - changes anticipated
     51 * describe architectures
     52 * classify scenarios
     53     - direct: use requires no change
     54     - indirect: use requires change
     55 * evaluate indirect scenarios wrt changes and cost
     56 * reveal scenario interaction
     57 * overall evaluation
     58 
     59 ## Architecture influence cycle
     60 
     61 ![Architecture influence cycle](b785f7ab5a684a5cb9e6654d71fd00de.png)
     62 
     63 architecture affects:
     64 - structure of developing organisation
     65 - goals of developing organisation
     66 - requirements for next systems
     67 
     68 Building a system affects architect's experience
     69 
     70 ## Role of software architect
     71 Ineffective: police agent, documentalist, isolationist (no communication with stakeholders)
     72 Effective: key tech consultant, decision maker, coach of dev team, design coordination, implementing key parts
     73 
     74 A good architect (1) has experience, (2) has domain knowledge, (3) _communicates_.