lectures.alex.balgavy.eu

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

software-development-process.wiki (2442B)


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