210 likes | 360 Views
CS 5150 Software Engineering Lecture 2. Software Processes 1. Project Teams. It’s okay if you don’t have a team yet Piazza activated Send email to Ben & Yue when you have (most of) a team Team name Names of team members Client info Project topic. Projects.
E N D
CS 5150Software EngineeringLecture 2 • Software Processes 1
Project Teams • It’s okay if you don’t have a team yet • Piazza activated • Send email to Ben & Yue when you have (most of) a team • Team name • Names of team members • Client info • Project topic
Projects • Project suggestions continuing to come in • If you have your own project idea send email to Ben & Yue
What is a Software Process? • More or less formal rules for organizing work on software • Trivial example: • Meeting with client • Meeting with team • Code code code • Test • Email finished program to client
Software Processes Matter • Cost • Risks • People
Software is Different • Best practices are still changing (relatively) rapidly • Non-specialists (e.g. most clients) have relatively poor insight into how software works
Risks • Most software projects have major problems • Does not work as expected (functionality) • Over budget (cost) • Late delivery (time) • Lots of code is wasted (perhaps 50% never used) • Does the wrong thing • Poor interface • No one cares
The Three-way Trade-off • The terrible triangle • Functionality (scope of project) • Cost (developer time & other resources) • Time (delivery date) • Force clients to make choices • (without being a jerk)
Client’s Risks • Understand risks from the client’s perspective • Late (cancelation of some related project?) • Over budget (middle manager gets fired?) • Insufficient functionality (competitor dominates market?) • Full of bugs (plane crashes?)
First Major Hurdle: Communication • Most failed software projects fail because the leaders didn’t plan the right software • Listen to the client! • The client is not always right • The client must be satisfied at the end of the day • Tight communication feedback loops • Expertise and a nose for exceptions
Minimizing Risks • Feasibility study • Stakeholder requirements and priorities versus design decisions • Milestones and releases • Acceptance and testing • Handover
A Popular Strategy: Short Cycles • Minimize risk with short development cycles • New pieces of working software every week or two (not months) • Many opportunities to change course • This is one of the fundamental pieces of the Agile development method
Visibility and Accountability • Managers and clients want to know the status of in-progress software • Must rely on reporting by developers • Developers • Often have trouble reporting progress • Are usually optimistic • Dislike reporting • Frequent releases and accepted processes
Teams • Most software is built by teams • Overall team efficiency is the critical metric • Effectively all software is built on other software • Indirect collaboration with other programmers • Practical limit on team size is fairly small • Collaboration between teams requires more planning
Observations about Big Projects • Big software represents thousands to millions of person-years of effort • Every project that is sufficiently successful will have significant developer turnover • ... and changes in requirements and priorities • No large project is every complete • Our projects • About 0.3 person-years (a single sprint)
Fundamental Assumptions • Good processes reduce risk • Good processes enhance visibility • Good processes increase probability of project success • Systematic testing is the key to all processes
Different Strokes for Different Folks • Safety critical systems => more reliability testing • Shrink-wrap software => more usability testing • Systems/frameworks => more robustness testing • Contract software => more emphasis on core requirements • No standard process • BUT there are common principles
Basic Components of All Processes • Feasibility and planning • Requirements and priorities • System and program design • Construction • Acceptance and release • Operation and maintenance
Testing is Part of Every Phase • Stakeholder review of plans • Usability prototyping • Design review • Automated testing • Code review • Manual testing • Acceptance testing
Heavy vs Light: the Main Process Axis • Heavy: Methodically (and slowly) work through the complete development cycle • Might have 100s of pages of design documents before the first line of code is written • Example: Modified Waterfall Model • Light: Incrementally work through (parts of) the development cycle quickly • Many web applications are run this way • Example: Agile Software Development
Heavy or Light? • Team size • Risk tolerance • Application space maturity