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 (3570B)


      1 +++
      2 title = 'Requirements'
      3 +++
      4 # Requirements
      5 ## Types of requirements
      6 - Functional requirements
      7     - what the system must do, how to react to runtime events
      8     - satisfied by assigning appropriate seq of responsibilities throughout design
      9 - Quality attribute requirements
     10     - qualifications of functional requirements, e.g. how fast something must be done
     11     - satisfied by structures designed into architecture, and behaviors/interactions of elements in those structures
     12 - Constraints
     13     - design decisions where you have no freedom, e.g. using a certain programming language or reusing certain module
     14     - satisfied by dealing with it (in fancy language, "reconciling the design decision with other affected design decisions")
     15 
     16 Neither functions nor quality attributes stand on their own
     17 
     18 Two categories of quality attributes:
     19 - development time qualities
     20 - runtime qualities
     21 
     22 ## Architecturally significant requirements
     23 Architectures mostly driven by quality attribute requirements, features/functionality not as much
     24 Something like "the system must be modular" isn't enough; what's the reason? Has to be quantified and specific.
     25 
     26 Finding ASRs:
     27 - requirements documents (but often little info, architecture can't wait for requirements to be finished)
     28 - interviewing stakeholders (tells you what they want, but often they have no idea, and you might get random numbers from them)
     29 - understanding business goals (often lead to quality attribute requirements, may directly affect architecture)
     30 
     31 ## Business goals
     32 Business goals often lead to QA requirements, may directly affect architecture.
     33 Some may be satisfied without using the architecture (e.g. to reduce cost, stop heating the offices when everyone's working from home)
     34 
     35 There are some standard categories, e.g. meeting financial/personal objectives, meeting responsibility to employees/society/state/shareholders, managing market position, managing change in environmental factors
     36 
     37 Expressing business goals:
     38 
     39 > "For {system being developed}, {goal subject} desires that {goal object} achieve {goal} (in the context of {environment}) and will be satisfied if {goal measure}."
     40 
     41 ## Requirements and goals
     42 Goals are the "why", requirements are the "how".
     43 
     44 ![Goals and requirements](e93dae14295c4b9ea44923fadf19695c.png)
     45 
     46 ## Quality attribute scenarios
     47 Specifies quality-attribute-specific requirement.
     48 
     49 Six parts:
     50 1. stimulus: event arriving at system (input)
     51 2. Source of stimulus
     52 3. Response of system (output)
     53 4. Response measure - how you determine that response is satisfactory
     54 5. Environment - conditions when stimulus happens
     55 6. Artefact - which portions of system does requirement apply to
     56 
     57 ![Quality attribute scenario diagram](c38c9e7dc12745b580ec4a2b3bcb60fe.png)
     58 
     59 ## Capturing ASRs in utility tree
     60 Utility as root (expression of overall 'goodness' of system).
     61 Elaborated into QAs, decomposed into attribute refinements, expressed in ASRs (usually as QA scenarios)
     62 
     63 For example:
     64 
     65 ![ASR utility tree](9db20224d3104417a9bc0658af70d85e.png)
     66 
     67 Assess the ASRs in terms of business impact and architectural impact (high, medium, low):
     68 
     69 ![ASR assessment in tree](02efe4c6962a45acb18af0a8190c0eba.png)
     70 
     71 Checks based on utility tree:
     72 - have all QAs been refined and expressed in ASRs?
     73 - where are the risks? (H,H) ratings
     74 - are all concerns addressed?
     75 
     76 ## Usability
     77 How easy it is for user to accomplish tasks, what support system provides for user.
     78 
     79 Dimensions:
     80 - learning features
     81 - using it efficiently
     82 - minimizing impact of errors
     83 - adapting to user's needs
     84 - increasing confidence and satisfaction