Software Development Processes Kun Niu Spring, 2011 April 7

advertisement
Software Development Processes
Kun Niu
Spring, 2011
April 7th
05-899D Human Aspects of Software
Development (HASD)
The Information Networking Institute
is a cooperative endeavor of:
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
College of Engineering
School of Computer Science
Tepper School of Business
Heinz College
1
Agenda





Definition
Software Development Lifecycle
Software Programming Process
Software Development Activity
Summary
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
2
Agenda
 Definition
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
3
Definition
• Software Development Lifecycle
- Also known as a software development process, is a structure
imposed on the development of a software product. (Agile, Waterfall,
etc.)[Wikipedia]
• Software Programming Process
- The process of designing, writing, testing, debugging / troubleshooting,
and maintaining the source code of computer programs (Test Driven
Development, Model Driven Development, etc.)
• Software Development Activity
- Detailed technique used in software programming process (Pair
programming, Rubber duck debugging, etc.)
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
4
Why do people do research in these fields?
•
•
•
Improve the probability of project success – Software
development lifecycle
Improve the productivity of the whole programming processes –
Software programming process
Improve the productivity of a specific phase of software
programming process – Software programming activity
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
5
Agenda
 Definition
 Software Development Lifecycle
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
6
Usage and Perceptions of Agile Software Development in
an Industrial Context: An Exploratory Study [Begel, 2007]
• Contribution
•
•
•
Try to understand how Agile Software Development methodologies
are used in large scale industry
Dominant agile practices and methodologies
Common benefits and problems associated with ASD
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
7
Exploratory Study Design
• A web-based survey

Email to 2,821 recipients out of 28,000
• Demographic (response)




18% for developers
18% for testers
10% for managers
Average 9.2 years of software development experience (0 - 35 y)
• Survey Design


Survey sections: Demographic, Agile development, Pair
programming
Card sort: free response for benefits and issues
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
8
Collocation Data
Collocated dynamics
Use Agile?
Yes
No
Not-collocated
Same country
Same city
Same campus
Same building
Same floor
Same hallway
Same office
Total
12
4
1
8
24
68
25
14
156
29
10
2
12
35
138
76
18
321
Many respondents using Agile of survey collocate in the same place
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
9
Methodologies used
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
10
Practices used
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
11
Team attitudes and morale factors
60% people agree Agile work well for them and their team.
Less than 40% people think Agile can work for large groups.
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
12
Benefits and problems
Problems
Benefits
Why not use?
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
13
Threats to validity
• Participants bias
• Unknown team size and group size
• Difficult to generalize because of different Microsoft’s
product context
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
14
Rapid Software Development
through Team Collocation [Stephanie, 2002]
• A field study conducted at a fortune 500 auto mobile
company
• Collocated software development team using Rapid
Software Development Center
• Six projects from different areas of the company
• Prototyping, iterative development using “timeboxing”
• Report by a combination of case study and empirical
evaluation
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
15
Room Layout
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
16
Measures
• Productivity Metrics

Function points normalized by certified Functional Points Foundation
Group Member
• Cycle Time

Number of months per 1000 functions
• User Satisfaction

Composite of factors like ease of use, system performance etc.
• Measures of Team Experiences

How often they will use rooms and hoteling space, conference room
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
17
Measure results(pilot teams)
Productivity Measures
Satisfaction Measures
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
18
Measure results (with subsequent team)
Productivity Measures
Satisfaction Measures
Entry versus Exit questionnaire data
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
19
Conclution
• Benefits

Improve productivity (timeboxing and facilities)
• Issues



Large projects
No accurate quality information
Don’t know if the increased productivity was due to Hawthorne
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
20
Agenda
 Definition
 Software Development Lifecycle
 Software Programming Process
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
21
Test Driven
Development
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
22
Evaluating the Efficacy of Test-Driven
Development: Industrial Case Studies
• Bhat, 2006 from Microsoft
• Two case studies, Windows and Messenger (A and B)
Process timelines and defect
density measurement
Project organizations
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
23
Case Study A
Product measures
Context Factors
Outcome measures
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
24
Case Study B
Product measures
Context Factors
Outcome measures
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
25
Result
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
26
Threats to validity
• High quality code resulted from a new process

Alleviated by the fact that all were professional programmers who
had their own tasks
• The projects may be easier and the comparison may
be in accurate

Alleviated by the projects in the same organization and the
complexity may be to the same degree
• Hard to generalize in different environment and
different contexts

The authors are trying to collect data from other TDD projects
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
27
A Survey of Evidence for Test Driven
Development in Academia
• Chetan, 2008
• Surveys the current state of TDD experiments
conducted at universities
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
28
Misconceptions about TDD
• You create a 100% regression test suite.

Not always cost-effective(UI)
• Unit tests form 100% of your design specification.

Design document is necessary
• You only need to unit test.

System integration test, performance test
• TDD does not scale.

Divide into small suites
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
29
Research
conducted by
someone else
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
30
TDD introduction & learning
• Introduction


Courses include
> Explaining automated unit test
> Describing TDD
> Providing document
> Supplying examples
Edward introduced at the beginning of the class, and used
throughout the entire experiment
> Reinforce may be a key
• Learning


Incremental instructional approach
Test driven learning – Learn by example
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
31
Conclusion
• TDD exposes students to analytical and
comprehension skills needed in software testing
• TDD tends to help students with the design of complex
projects, and increases student confidence.
• Test-driven development reveals valuable software
testing skills to fledgling programmers; the next step is
figuring out how and when to introduce it into a
curriculum.
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
32
Agenda




Definition
Software Development Lifecycle
Software Programming Process
Software Development Activity
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
33
The Social Dynamics of Pair Programming
• Jan 2007
• The paper presents a series of pair programming
interactions drawn from a long term ethnographic
study of two software development teams
• Term used in pair programming such as “driver” and
“navigator” may not be right
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
34
Pair programming history
• Beck’s book <<Extreme Programming Explained>>
There are two roles in each pair. One partner, the one with the
keyboard and the mouse, is thinking about the best way to implement
this method right here. The other partner is thinking more
strategically:
- Is this whole approach going to work?
- What are some other test cases that might not work yet?
- Is there some way to simplify the whole system so the current
problem just disappears?
• Few studies focuses on the nature of interactions
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
35
Research
• Four months ethnographic study
• Two software development teams
• Have a long history of pair programming
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
36
Findings
• Both software development teams differed greatly
from the driver and navigator roles described in the
academic and practitioner literature
• When the two programmers had equivalent expertise,
they engaged jointly in programmer activities.
• When the distribution of task-relevant expertise
differed, the programmer with more expertise
dominated the interaction.
• Keyboard control had a subtle, but consistent effect on
decision making.
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
37
Implication of the research
•
•
•
The pairs appeared to be most effective when both programmers
took on driver and navigator responsibilities
Programmers felt more engaged in their tasks when they either
had keyboard control or keyboard control was imminent
Expertise emerges as a particularly important factor influencing
pair interactions

•
Pairing less knowledgeable programmers with more knowledge
programmers did seem to be effective when the less knowledgeable
programmer was new to the team and code base
Programming partner rotation appeared to be effective in
ensuring increased dispersion of code knowledge across the
team, rotating late in the task may break up an effectively
functioning pair and introduce a new programmer in a
disadvantaged position
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
38
Pair Programming: What’s in it for Me?
• Begel, 2008
• Report on a longitudinal evaluation of pair
programming at Microsoft Corporation
• Understand how pair programming methodologies are
used, what kinds of problems and benefits they are
perceived to have, the types of partners people would
like to work, and a general consensus on PP‟s
usefulness in the software engineering professional
community
• A web-based survey of Microsoft developers
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
39
Contribution
1. Quantitative data on the adoption of pair programming
in a large software company.
2. The perceived benefits and problems of pair
programming.
3. The characteristics an engineer looks for in an ideal
pair programming partner and team.
4. The perception that pair programming produces higher
quality code at the expense
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
40
Previous study result
• Different universities have opposite results in PP
research
• Different industrial projects also have different result
• Conclusion from the author




Pair programming appears to be very different in academic than in
industry
In academia, pair programming is used for education and has
positive effects on student retention.
In industry, there is little research on pair programming, and what
little there is shows conflicting results.
No good qualitative assessment of how professional programmers
might explain these results.
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
41
Effect of Pair Programming on Work
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
42
PP benefits & problems
Benefits
The INI is a cooperative endeavor of:
Problems
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
43
Attributes of good programming
partners and teams
Attributes of Good Partners
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
Attributes of Good Teams
School of Computer Science
Heinz College
44
Agenda





Definition
Software Development Lifecycle
Software Programming Process
Software Development Activity
Summary
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
45
Session Summary
• Software development lifecycle
•
•
•
Tools tend to provide quantitative data to help manager’s judgment
How to generalize the result is still a problem (Can be solved?)
How to improve the accuracy of result?
• Software programming process


TDD is a widely researched field both in industry and in academic
How to make people accommodate it is still a problem
• Software development activity


Pair programming in XP is popular
Industry studies show difference real use and academic research
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
46
Questions & Comments
The INI is a cooperative endeavor of:
College of Engineering
Tepper School of Business
School of Computer Science
Heinz College
47
Download