15-313 foundations of software engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •use...
TRANSCRIPT
![Page 1: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/1.jpg)
Foundations of Software Engineering
Part 2: Quick intro to process, teamwork, risk and scheduling
Christian Kästner
15-313 Software Engineering 1
![Page 2: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/2.jpg)
Learning Goals
• Recognize the Importance of process • Understand the difficulty of measuring progress • Identify what why software development has
project characteristics • Use milestones for planning and progress
measurement • Ability to divide work and planning and replan it • Model dependencies and schedule work with
network plans and Gantt diagrams • Identifying and managing risks
15-313 Software Engineering 2
![Page 3: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/3.jpg)
About You
15-313 Software Engineering 3
Open Source
yes
no
Saw project fail, know why
yes
no Frustrating team experience
multipletimes
no
once
![Page 4: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/4.jpg)
Process
15-313 Software Engineering 4
![Page 5: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/5.jpg)
How to develop software?
1. Discuss the software that needs to be written
2. Write some code
3. Test the code to identify the defects
4. Debug to find causes of defects
5. Fix the defects
6. If not done, return to step 1
15-313 Software Engineering 5
![Page 6: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/6.jpg)
What is a Software Process?
15-313 Software Engineering 6
![Page 7: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/7.jpg)
Software Process
“The set of activities and associated results that produce a software product”
15-313 Software Engineering 7
Sommerville, SE, ed. 8
![Page 8: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/8.jpg)
Example of Process Decisions
• Writing down all requirements • Require approval for all changes to requirements • Use version control for all changes • Track all reported bugs • Review requirements and code • Break down development into smaller tasks and schedule
and monitor them • Planning and conducting quality assurance • Have daily status meetings • Use Docker containers to push code between developers
and operation 15-313 Software Engineering 8
![Page 9: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/9.jpg)
15-313 Software Engineering 9
Percent of Effort
Time Project beginning
Project end
100%
0%
![Page 10: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/10.jpg)
15-313 Software Engineering 10
Percent of Effort
Time Project beginning
Project end
100%
0%
Trashing / Rework
Productive Coding
![Page 11: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/11.jpg)
15-313 Software Engineering 11
Percent of Effort
Time Project beginning
Project end
100%
0%
Trashing / Rework
Productive Coding
Process: Cost and Time estimates, Writing Requirements, Design, Change Management, Quality Assurance Plan,
Development and Integration Plan
![Page 12: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/12.jpg)
15-313 Software Engineering 12
Percent of Effort
Time Project beginning
Project end
100%
0%
Productive Coding
Trashing / Rework
Process
![Page 13: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/13.jpg)
Example process issues
• Change Control: Mid-project informal agreement to changes suggested by customer or manager. Project scope expands 25-50%
• Quality Assurance: Late detection of requirements and design issues. Test-debug-reimplement cycle limits development of new features. Release with known defects.
• Defect Tracking: Bug reports collected informally, forgotten • System Integration: Integration of independently developed
components at the very end of the project. Interfaces out of sync.
• Source Code Control: Accidentally overwritten changes, lost work.
• Scheduling: When project is behind, developers are asked weekly for new estimates.
15-313 Software Engineering 13
![Page 14: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/14.jpg)
Survival Mode
• Missed deadlines -> "solo development mode" to meet own deadlines
• Ignore integration work
• Stop interacting with testers, technical writers, managers, …
15-313 Software Engineering 14
![Page 15: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/15.jpg)
15-313 Software Engineering 15
Percent of Effort
Time Project beginning
Project end
100%
0%
Productive Coding
Process
Trashing / Rework
![Page 16: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/16.jpg)
Hypothesis
• Process increases flexibility and efficiency
• Upfront investment for later greater returns
15-313 Software Engineering 16
![Page 17: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/17.jpg)
15-313 Software Engineering 17
![Page 18: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/18.jpg)
Process models
• Ad-hoc
• Waterfall
• Spiral
• Agile
• …
• More later
15-313 Software Engineering 18
![Page 19: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/19.jpg)
15-313 Software Engineering 19
![Page 20: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/20.jpg)
Estimating Effort
15-313 Software Engineering 20
![Page 21: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/21.jpg)
Task: Estimate Time
• A: Java version of the Monopoly boardgame with Pittsburgh street names – (you)
• B: Bank smartphone app – (you with team of 4 developers, one
experienced with iPhone apps, one with background in security)
• Estimate in 8h days (20 work days in a month, 220 per year)
15-313 Software Engineering 21
![Page 22: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/22.jpg)
Revise Time Estimate
• C: Remember Scrabble experience. Is Monopoly similar/different/easier/more challenging/reusable? How much design did you do? Break down the task into ~5 smaller tasks and estimate them. Revise your overall estimate if necessary
15-313 Software Engineering 22
![Page 23: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/23.jpg)
15-313 Software Engineering 23
![Page 24: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/24.jpg)
Constructive Cost Model (Cocomo)
• Regression formula based on project history
• Requires experience with similar projects
• Encourages documentation of experience
15-313 Software Engineering 24
![Page 25: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/25.jpg)
15-313 Software Engineering 25
Cost Drivers
Ratings
Very Low Low Nominal High Very High Extra High
Product attributes
Required software reliability 0.75 0.88 1.00 1.15 1.40
Size of application database 0.94 1.00 1.08 1.16
Complexity of the product 0.70 0.85 1.00 1.15 1.30 1.65
Hardware attributes
Run-time performance constraints 1.00 1.11 1.30 1.66
Memory constraints 1.00 1.06 1.21 1.56
Volatility of the virtual machine environment 0.87 1.00 1.15 1.30
Required turnabout time 0.87 1.00 1.07 1.15
Personnel attributes
Analyst capability 1.46 1.19 1.00 0.86 0.71
Applications experience 1.29 1.13 1.00 0.91 0.82
Software engineer capability 1.42 1.17 1.00 0.86 0.70
Virtual machine experience 1.21 1.10 1.00 0.90
Programming language experience 1.14 1.07 1.00 0.95
Project attributes
Application of software engineering methods 1.24 1.10 1.00 0.91 0.82
Use of software tools 1.24 1.10 1.00 0.91 0.83
Required development schedule 1.23 1.08 1.00 1.04 1.10
http://en.wikipedia.org/wiki/Cocomo; Sommerville, SE, Chapter 26
Constructive Cost Model (Cocomo)
![Page 26: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/26.jpg)
Study: Variability and Reproducibility in Software Engineering
• Study by Simula Research Lab in Norway
• Created System Requirements Specification for a web information system (11 pages)
• Received bids from 35 companies, 14 with schedule
• Contracted 4 companies to build the same system
![Page 27: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/27.jpg)
Bids and time estimations
• No relationship between price and planned time or methods in bids
![Page 28: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/28.jpg)
Anda, Bente CD, Dag IK Sjøberg, and Audris Mockus. "Variability and reproducibility in software engineering: A study of four companies that developed the same system." IEEE Transactions on Software Engineering 35.3 (2009): 407-429.
![Page 29: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/29.jpg)
Development Process
![Page 30: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/30.jpg)
Risk and Uncertainty
15-313 Software Engineering 30
![Page 31: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/31.jpg)
Risk management
• Key task of a project manager • Identify and evaluate risks early • If necessary, plan mitigation strategies • Document results of risk analysis in project plan
• Project risks: scheduling and resources
– e.g., staff illness/turnover
• Product risks: Quality and functionality of the product – e.g. used component too slow
• Business risks: – e.g., competitor introduces similar product
31
![Page 32: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/32.jpg)
15-313 Software Engineering 32
![Page 33: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/33.jpg)
Sources of Uncertainty
• Unpredictable operating environment –Cybersecurity threats, device drivers
–Unanticipated usage scenarios
• Limited predictive power of models –Halting, abstract interpretation, testing
• Bounded rationality of humans –Designers, developers
–Customers, users
15-313 Software Engineering 33
![Page 34: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/34.jpg)
Innovative vs Routine Projects
• Most software projects are innovative –Google, Amazon, Ebay, Netflix
–Vehicles and robotics
– Language processing, Graphics
• Routine (now, not 10 years ago) – E-commerce websites?
–Many control systems?
–Routine gets automated -> innovation cycle
15-313 Software Engineering 34
![Page 35: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/35.jpg)
Case 1
15-313 Software Engineering 35
![Page 36: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/36.jpg)
Case 2
15-313 Software Engineering 36
![Page 37: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/37.jpg)
15-313 Software Engineering 37
![Page 38: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/38.jpg)
Discussion
• What are important risks in early and late phases of development?
• Analyze risks to rank them
• How can they be managed/mitigated?
15-313 Software Engineering 38
![Page 39: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/39.jpg)
Accepting and Coping with Risks
• Selectively innovate to increase value
• Improve capability and competitiveness
• Focus risk where it is needed
• Rely on precedent and convention (experience)
• Use iteration and feedback – prototypes, spiral development, sprints
15-313 Software Engineering 39
![Page 40: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/40.jpg)
Managing Risks
• Address risk early
• Prototyping, spiral development
• Identify mitigation strategies
15-313 Software Engineering 40
![Page 41: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/41.jpg)
Example: Bank Software
• Build on vendor and open-source components – OS, DB, app server, tooling, backups, information
management, … – Stick with reliable vendors and integrators
• Focus internal risk-taking on business differentiators – Web-site features, internal queries, decision algorithms
• Outsource to access expertise, lower costs, gain flexibility – Black-box testing – Overall system architecture – Internal engineering practices and tools
15-313 Software Engineering 41
![Page 42: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/42.jpg)
Risk analysis
42
• Estimate likelyhood and consequences
• Requires experienced project lead
• Rough estimations usually sufficient
– very low (<10%), low (<25%), ...
– catastrophic, severe, acceptable, neglegible
• Focus on top 10 risks
![Page 43: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/43.jpg)
Risk planning
43
• Risk avoidance
• Risk minimization
• Emergency plans
![Page 44: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/44.jpg)
Strategies to help manage risk
Risk Strategy
Organizational financial
problems
Prepare a briefing document for senior management showing how the
project is making a very important contribution to the goals of the
business and presenting reasons why cuts to the project budget would
not be cost-effective.
Recruitment problems Alert customer to potential difficulties and the possibility of delays;
investigate buying-in components.
Staff illness Reorganize team so that there is more overlap of work and people
therefore understand each other’s jobs.
Defective components Replace potentially defective components with bought-in components of
known reliability.
Requirements changes Derive traceability information to assess requirements change impact;
maximize information hiding in the design.
Organizational restructuring Prepare a briefing document for senior management showing how the
project is making a very important contribution to the goals of the
business.
Database performance Investigate the possibility of buying a higher-performance database.
Underestimated
development time
Investigate buying-in components; investigate use of a program
generator.
![Page 45: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/45.jpg)
Planning
15-313 Software Engineering 45
![Page 46: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/46.jpg)
(Software) Projects
• One-time endeavour; unique wrt – Goals – time, financial, personal, and
other constraints – differences to other endeavours – project-specific organization
• Defined, limited time (clear start and end)
• Clear goals • Constraints: budget, resources, ... • Requires management
– high risk – coordination of experts
• Software development always proceeds in projects
• New/unique goals, innovatice technology
• Intangable result, progress hard to measure
• Software projects tend to fail more often than industrial projects
46
![Page 47: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/47.jpg)
Measuring Progress?
• “I’m almost done with the app. The frontend is almost fully implemented. The backend is fully finished except for the one stupid bug that keeps crashing the server. I only need to find the one stupid bug, but that can probably be done in an afternoon. We should be ready to release next week.”
15-313 Software Engineering 47
![Page 48: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/48.jpg)
Measuring Progress?
• Developer judgment: x% done
• Lines of code?
• Functionality?
• Quality?
15-313 Software Engineering 48
![Page 49: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/49.jpg)
![Page 50: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/50.jpg)
Milestones and deliverables
• Making progress observable, especially for software
• Milestone: clear end point of a (sub)tasks – For project manager – Reports, prototypes, completed subprojects – "80% done" not a suitable mile stone
• Deliverable: Result for customer – Similar to mile stone, but for customers – Reports, prototypes, completed subsystems
50
![Page 51: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/51.jpg)
Case 3
• Define tasks and milestones for the Monopoly implementation
• Which tasks have dependencies?
15-313 Software Engineering 51
![Page 52: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/52.jpg)
15-313 Software Engineering 52 xkcd.com/518
![Page 53: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/53.jpg)
Project Planning
53
Identify constraints
Estimate project parameters
Define milestones
Create schedule
activities begin
Check progress
Reestimate project parameter
Refine schedule
renegotiate constraints
Technical review
Problem?
no
yes
Done? yes
no
Abort?
Budget, Personal, Deadlines
new feature
requests
![Page 54: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/54.jpg)
Project Manager Tasks
• Divide project into work packages with measurable outcomes (each 1-10 weeks)
• Estimate time and resources • Create order and determine parallelism • Plan buffers for anticipated and unanticipated
problems • Software available, such as, Microsoft Project,
GanttProject, Kplato, etc
• Requires experience for estimation
54
![Page 55: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/55.jpg)
Activity Network
55
Milestone
Work package
![Page 56: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/56.jpg)
Gantt Diagrams
56
![Page 57: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/57.jpg)
Replanning
• Inaccurate time predictions are normal -> Update schedule
Einführung in die Softwaretechnik 57
Task Planned Actual Difficulty/Risk Responsibility Completed
![Page 58: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/58.jpg)
Reasons for Missed Deadlines
• Insufficient staff (illnesses, staff turnover, ...) • Insufficient qualitication • Unanticipated difficulties • Unrealistic time estimations • Unanticipated dependencies • Changing requirements, additional
requirements • Especially in student projects
– Underestimated time for learning technologies – Uneven work distribution
58
![Page 59: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/59.jpg)
Recognize Scheduling Issues Early
• Monitoring and formal reporting necessary
– Establish who, when, what
–Compare planned/actual data
• Measurable milestones
• Outdated schedules no meaningful management mechanism
59
![Page 60: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/60.jpg)
Almost Done Problem
• Last 10% of work -> 40% of time (or 20/80)
• Make progress measureable
• Avoid depending entirely on developer estimations
60
time
% c
om
ple
ted
90
%
10
0%
reported progress
planned actual
![Page 61: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/61.jpg)
Milestone Trend Analysis
61
Actual time
Estimated completion time
![Page 62: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/62.jpg)
Milestone Trend Analysis
62
Actual time
Estimated completion time
•Quickly rising •estimations too optimistic
•Changing trends •unreliable early estimations
•Ziz-zag pattern •unreliable estimations
•Falling •overly large buffers
![Page 63: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/63.jpg)
Mitigation strategies
• Additional personal – especially experts for specific tasks
• Temporarily increasing hours of work (overtime, vacation freeze) – short-term solution only
• Improve tooling, methods, and processes • Buy, contract, off shore • Renegotiate / reduce functionality
– Set priorities, incremental deployment – Move deadline
• Avoid: less testing/quality assurance
63
![Page 64: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/64.jpg)
Team productivity
64
• Brook's law: Adding people to a late software project makes it later.
![Page 65: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/65.jpg)
Teamwork (Student Teams) (more on teams in real projects later in the course)
15-313 Software Engineering 65
![Page 66: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/66.jpg)
Expectations
• Meet initially and then regularly • Review team policy • Divide work and integrate • Establish a process • Set and document clear responsibilities and
expectations – Possible Roles: Coordinator, Scribe, Checker, Monitor – Rotate roles every assignment
• Every team member should understand the entire solution
15-313 Software Engineering 66
![Page 67: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/67.jpg)
Team Policies
• see document
• Make agreements explicit and transparent
• Most teams will encounter some problem
15-313 Software Engineering 67
![Page 68: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/68.jpg)
Dealing with problems
• Openly report even minor team issues in individual part of assignments
• In-class discussions and case studies
• Additional material throughout semester
• We will attend one team meeting
15-313 Software Engineering 68
![Page 69: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/69.jpg)
Planning and In-Team Communication
• Asana, Trello, Microsoft Project, …
• Github Wiki, Google docs, …
• Email, Slack, Facebook groups, …
15-313 Software Engineering 69
![Page 70: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/70.jpg)
Homework and Readings
15-313 Software Engineering 70
![Page 71: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/71.jpg)
Reading assignment
• Prepare a case discussion about Healthcare.gov – Read the TIME Magazine article “Code Red”
– Explore Wikipedia, Youtube, other resources
– Look at the webpage itself
• Think about what went wrong and why (both technical and nontechnical issues), how it could be fixed or prevented in future projects, …
15-313 Software Engineering 71
![Page 72: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/72.jpg)
Homework 1
• Team assignment
• Build grad school application system
• Process focus
– Estimate and track time
–Plan process and observe deviations
–Analyze risks
15-313 Software Engineering 72
![Page 73: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/73.jpg)
15-313 Software Engineering 73
![Page 74: 15-313 Foundations of Software Engineeringckaestne/15313/2017/20170831-team-and-time.pdf · •Use Docker containers to push code between developers ... 100% 0% . 10 15-313 Software](https://reader033.vdocuments.us/reader033/viewer/2022050103/5f4276dc92096a4d40359c65/html5/thumbnails/74.jpg)
Further Reading
• McConnell. Software Project Survival Guide. Microsoft Press 1998, Chapter 3
• Sommerville. Software Engineering. 8th Edition. Addison-Wesley 2007. Chapters 5 "Project Planning" and 26 "Software Cost Estimation"
15-313 Software Engineering 74