COIS 3030H Lecture Notes - Lecture 1: Distributed Computing, Software Engineering, Maintainability
Document Summary
Production phase: requirements elicitation, requirement specification and analysis, architecture design, detailed design. Assembly phase: unit testing (make sure the code is free of bugs, component testing. Integration testing: system testing, system in use. I(cid:373)po(cid:396)ta(cid:374)(cid:272)e of (cid:862)good(cid:863) re(cid:395)ui(cid:396)e(cid:373)e(cid:374)ts: faults/omissions made at the requirement stage are expensive to fix later, stated requirements might be implemented, but the system is not one that the customer wants. Iterative software development (most frequently used: requirements elicitation, requirement specification and analysis, architecture design, detailed design. Identify and resolve risks: development and test, plan the next iteration, risk-d(cid:396)i(cid:448)e(cid:374) p(cid:396)o(cid:272)ess: it"s a p(cid:396)o(cid:272)ess that puts high e(cid:373)phasis o(cid:374) (cid:396)isk (cid:373)a(cid:374)age(cid:373)e(cid:374)t, benefits: risk reduction, functionality can be added incrementally, software produced early. Key challenges faced by software engineers: coping with increasing diversity, demands for reduced delivery times, developing trustworthy software. What are the cost of software engineering: roughly 60% of software costs are development cost, 40% are testing costs, for custom software, evolution costs often eceed development cost.