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