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


      1 +++
      2 title = 'Software development process'
      3 +++
      4 ## Software development process
      5 
      6 main activities:
      7 * requirements engineering
      8     * specifies the main functionalities of the system
      9     * defines the qualities to be met
     10 * design
     11     * give shape to a system via models
     12     * not a clear-cut sequential process
     13 * implementation and testing
     14     * involves actual development of the system
     15     * component testing – test individual components independently
     16     * system testing – test the system as a whole (including emergent properties like overall performance)
     17     * acceptance testing – test with customer data to see if the system meets the customer's needs
     18 * evolution
     19     * software is inherently flexible and can change
     20 
     21 ### Waterfall development process
     22 
     23 ![Waterfall dev process image](waterfall-dev.png)
     24 
     25 exists in many variants, all with sequential flow. it's document-driven.
     26 
     27 issues: poor agility (when do you know how far you are in the project?), poor quality (cuts if you run out of time), high risk (finding issues in test phase)
     28 
     29 critical evaluation:
     30 * positive:
     31     * precise planning and management – standard-oriented
     32     * postpone implementation to after understanding objectives
     33     * good documentation
     34 * negative:
     35     * hard to get all requirements once and for all (users might not even know what they want)
     36     * rigid
     37     * no feedback from the customer
     38     * no parallelism, all phases are blocking (because sequential)
     39     * a single delivery date at the end
     40 
     41 ### Agile development process
     42 iterative development processes with:
     43 * frequent releases of the product
     44 * continuous interaction between dev team and customer
     45 * reduced product documentation
     46 * continuous and systematic assessment of produced value and risks
     47 
     48 agile in practice:
     49 * make a list
     50 * estimate
     51 * set priorities
     52 * start executing
     53 * update the plan at run time
     54 
     55 critical evaluation:
     56 * positive:
     57     * acceptance of change – less risky
     58     * frequent and short iterations
     59     * emphasis on working code
     60     * associates a test with every piece of functionality
     61     * continuous integration and delivery
     62 * negative:
     63     * feature-based development & ignorance of dependencies
     64     * no strong quality plan
     65     * less focus on architecture of system (in fact, dismisses everything that isn't shippable)
     66