Lecture7-1

advertisement
Informatics 43
Introduction to Software Engineering
Lecture 7-1
May 12, 2015
Emily Navarro
Duplication of course material for any commercial purpose without the explicit written
permission of the professor is prohibited.
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 1
Today’s lecture
• Midterm answers
• More Software Process Models
• Quiz 4 study guide
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 2
Today’s lecture
• Midterm answers
• More Software Process Models
• Quiz 4 study guide
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 3
Today’s lecture
• Midterm answers
• More Software Process Models
• Quiz 4 study guide
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 4
Processes as a Remedy
• Software is engineered via a defined process
– Cover all steps from initial idea and requirements to delivery,
maintenance, and final retirement
– Make sure we do the right things/we do things right
– Make sure we do not forget to do anything
– Different processes for different kinds of software
• Not a silver bullet [Brooks “No Silver Bullet”]
– Software is still intrinsically difficult to deal with
– Processes help, but cannot guarantee anything
Remember: People + Processes + Tools  Product
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 5
Processes
• Elements
– Activities (“Phases”)
– Artifacts
• E.g., requirements document, design document, code, test cases…
• Can include process specifications
– Resources
• People (their time and their cost)
• Tools (their time and their cost)
• Relationships between the elements
– Precedence, requires, provides, refines to, …
• Constraints
– Time
– Cost
– Qualities (repeatable process?)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 6
Software Life Cycle Models
•
•
•
•
•
•
•
•
•
Build-and-fix
Waterfall
Rapid prototyping
Incremental
Spiral
Rational Unified Process (RUP)
Open Source Software (OSS)
Extreme Programming (XP)
Agile
A software life cycle model is a high-level process
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 7
Software Life Cycle Models
•
•
•
•
•
•
•
•
•
Build-and-fix
Waterfall
Rapid prototyping
Incremental
Spiral
Rational Unified Process (RUP)
Open Source Software (OSS)
Extreme Programming (XP)
Agile
Covered in Lecture 5-2
A software life cycle model is a high-level process
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 8
Spiral
Risk
analysis
Risk
analysis
Risk
analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 9
Each loop through the spiral…
• Identify a high-risk sub-problem or aspect
• Resolve the risk (as far as possible)
• Verify
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 10
Spiral
Risk
analysis
Risk
analysis
Risk
analysis
Risk
analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 11
Spiral
Risk
analysis
Risk
analysis
Risk
analysis
Risk
analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 12
Spiral
Risk
analysis
Risk
analysis
Risk
analysis
Risk
analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 13
Spiral
Risk
analysis
Risk
analysis
Risk
analysis
Risk
analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 14
Spiral
Risk
analysis
Risk
analysis
Risk
analysis
Risk
analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 15
Spiral
Risk
analysis
Risk
analysis
Risk
analysis
Risk
analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 16
Spiral
Risk
analysis
Risk
analysis
Risk
analysis
Risk
analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 17
Spiral
Risk
analysis
Risk
analysis
Risk
analysis
Risk
analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 18
Spiral
Risk
analysis
Risk
analysis
Risk
analysis
Risk
analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 19
Software Risks: Some of Boehm’s Top 10
Risk
Risk Management Techniques
Personnel shortfalls
Staff with top talent, job matching,
morale building
Unrealistic schedules and budgets
Detailed cost/schedule estimation, reuse,
incremental development
Developing the wrong software functions
User surveys, prototyping
Continuing stream of software changes
Information hiding, incremental
development
Shortfalls in externally furnished
components
Compatibility analysis
Shortfalls in externally performed tasks
Reference checking, competitive design
or prototyping
Adapted from Hans Schaefer’s “Software Risk Management: A Calculated Gamble”
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 20
Full Spiral
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 21
So…
• What is it good for? (strengths)
• What is it bad for? (weaknesses)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 22
So…
• What is it good for? (strengths)
– Large, expensive, complicated projects
– New projects with uncertain, complex requirements
• What is it bad for? (weaknesses)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 23
So…
• What is it good for? (strengths)
– Large, expensive, complicated projects
– New projects with uncertain, complex requirements
• What is it bad for? (weaknesses)
– Small projects
– Developers have to be competent at risk analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 24
Rational Unified Process
• Influential, best practices of its time (1990s, Object-Oriented
SE)
• More realistic depiction of
– The non-discrete nature of SE
– The need to have flexibility/adaptability in the process itself
– The interplay of
• Processes
• Time
• Various SE activities over time
– Much more…
• Workflows, Activities, Artifacts, Workers…
• Makes more sense if you are a project manager…
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 25
The RUP Model
Phases
Process Workflows
Inception
Elaboration
Construction
Business Modeling
In an iteration,
you walk
Transition all
through
workflows
Requirements
Analysis & Design
Implementation
Test
Deployment
Supporting Workflows
Configuration Mgmt
Management
Workflows
group
activities
logically
SDCL
Software Design and
Collaboration Laboratory
Environment
Preliminary
Iteration(s)
Iter.
#1
Iter.
#2
Iter.
#n
Iter. Iter.
#n+1 #n+2
Iter.
#m
Iter.
#m+1
Iterations
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 26
RUP Workflow: Architectural Analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 27
RUP Activity: Use Case Analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 28
The steps of use-case-analysis
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 29
So…
• What is it good for? (strengths)
• What is it bad for? (weaknesses)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 30
So…
• What is it good for? (strengths)
– Risk-driven, incremental
– Lots of tool support
– Provides a lot of guidance
• What is it bad for? (weaknesses)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 31
So…
• What is it good for? (strengths)
– Risk-driven, incremental
– Lots of tool support
– Provides a lot of guidance
• What is it bad for? (weaknesses)
– Complicated (need a process expert to implement it)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 32
Open-Source Software (OSS)
• Source code is freely available and (usually) re-distributable
• Many contributors working in a distributed manner
–
–
–
–
–
Coders
Bug finders
Documenters
Project leadership
Often volunteers
• Heavy reliance on software tools
– The web and email
– Version control and repositories, bug trackers
• Scales up amazingly well
• Where do they find the time?
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 33
OSS: Only Two Phases
• First, develop the initial version
– Usually one or a small number of developers
• Second, maintain (evolve!)
– Users become co-developers (co-maintainers!)
– Report and correct defects
• Corrective maintenance
– Enhance and add new functionality
• Perfective maintenance
– Port to a different environment
• Adaptive maintenance
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 34
OSS Success Stories
• Operating systems
– Linux
• Web browser
– Firefox
• Compiler
– gcc
• Web server
– Apache
• Database
– MySQL
• Healthcare
– Mirth
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 35
So…
• What is it good for? (strengths)
• What is it bad for? (weaknesses)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 36
So…
• What is it good for? (strengths)
– Software that benefits developers (oftentimes extends to the public
at large)
– Some of the greatest minds, motivated and working together to solve
hard problems can result in huge advances
• What is it bad for? (weaknesses)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 37
So…
• What is it good for? (strengths)
– Software that benefits developers (oftentimes extends to the public
at large)
– Some of the greatest minds, motivated and working together to solve
hard problems can result in huge advances
• What is it bad for? (weaknesses)
– Proprietary software
– Software with strict requirements and/or tight deadlines
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 38
Extreme Programming (XP)
• More “extreme” reaction to Waterfall, other heavyweights…
• Kent Beck (also Ron Jeffries)
– Software engineering consists of
• Listening, Testing, Coding, Designing
– Based on
• Values of Simplicity, Communication, Feedback, Courage
– Works by
• Simple practices, such as bringing/keeping the team together
• Just enough feedback to know where you are
• Just enough (and just in time) “heavier” activities
• More “programmer welfare” than other process models…
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 39
XP Practices and Principles (I)
• Whole team
– Customer on site, part of the team
• Planning game
– Once per iteration
• Small releases
• Customer tests
• Simple design
– “Simple is best”
– Refactoring encouraged
• Pair programming
• Test-driven development
• Design improvement
– Refactor whenever, wherever possible
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 40
XP Practices and Principles (II)
• Continuous integration
– Everyone works on the most recent version of the code
• Collective code ownership
– Anyone can change any part of code
– All team members work on all development activities
• Coding standards
– Promotes shared understanding
• Metaphor
– A “story” about the system
• Sustainable pace
– 40-hour work weeks
– short iterations
• Open space
– Especially for pair programming
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 41
XP Process Steps
• Determine the desired features (stories)
– Estimate time/cost (effort) per feature
– Client can help determine order of development
• Story prioritization
• Stories further refined into development tasks
• Implement/deliver each task
– Typically using…
• Test-driven development
• Pair programming
• Follow values and principles
– (See previous slides)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 42
XP Philosophies (I)
• Rapid, fine feedback
– Frequent testing
– On-site customer
– Pair programming
• Continuous process
– Continuous integration
– Merciless refactoring
– Small, frequent releases
From Glenn Vanderburg, Delphi Consultants
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 43
XP Philosophies (II)
• Shared understanding
–
–
–
–
–
Planning game
Simple design
System metaphor
Collective code ownership
Coding conventions
• Developer welfare
– Forty hour week
From Glenn Vanderburg, Delphi Consultants
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 44
XP in Action
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 45
Test-Driven Development
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 46
SimSE XP Demo
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 47
From XP to Agile
• Agile includes and evolved from
– Extreme Programming
– SCRUM, Crystal, others
• The Agile Manifesto (2001)
– “We have come to value…”
– Individuals and interactions
• Over processes and tools
– Working software
• Over comprehensive documentation
– Customer collaboration
• Over contract negotiation
– Responding to change
• Over following a plan
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 48
Some Agile Principles
• Satisfy the customer
– Through early and continuous delivery of valuable software
• Welcome change in requirements
– Even late in development
– Harness change for competitive advantage
• Deliver working software frequently
– In weeks or a couple of months
• Timeboxing
• Sprints
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 49
More Agile Principles
• Business people and developers work together daily
throughout the project
– Stand-up meetings
• Build projects around motivated individuals
– Give them the environment and support they need
• Best method of conveying information during development is
face-to-face conversation
– Informal communication
– Stand-up meetings
• Documentation is just a means to an end
– Do only the necessary amount
– Source code is the biggest part of the documentation
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 50
So…
• What is it good for? (strengths)
• What is it bad for? (weaknesses)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 51
So…
• What is it good for? (strengths)
–
–
–
–
Customer satisfaction
Adaptable to changing circumstances
Good for projects with unclear, changing requirements
Good for small teams
• What is it bad for? (weaknesses)
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 52
So…
• What is it good for? (strengths)
–
–
–
–
Customer satisfaction
Adaptable to changing circumstances
Good for projects with unclear, changing requirements
Good for small teams
• What is it bad for? (weaknesses)
–
–
–
–
SDCL
Lack of documentation
Unstable requirements
Bad for projects with large teams
Bad for projects in which customer involvement is not possible
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 53
A Comparison of Life Cycle Models
Model
Strengths
Weaknesses
Build-and-Fix
Fine for small programs that do not
require much maintenance
Totally unsatisfactorily for nontrivial
programs
Waterfall
Disciplined approach
Document driven
Delivered product may not meet client’s
needs
Rapid
Prototyping
Ensures that delivered product meets
client’s needs
A need to build twice
Cannot always be used
Incremental
Maximizes early return on investment
Requires open architecture
May degenerate into build-and-fix
XP
Customer involvement and frequent
releases promote customer satisfaction
Cannot be used for large teams
Requires large time commitment by
customer
Spiral
Incorporates features of all the above
models
Developers have to be competent at riskanalysis
RUP
Risk-driven, incremental, lots of
guidance
Complicated, requires a process expert
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 54
Some real life examples
• https://www.youtube.com/watch?v=szr0ezLyQHY
• https://www.youtube.com/watch?v=q1RqhRcPJZ0
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 55
Today’s lecture
• Midterm answers
• More Software Process Models
• Quiz 4 study guide
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 56
Quiz 4
• Textbook:
– Section 4.1
• Discussion:
– SimSE exercise
• Lecture:
– Know characteristics, strengths, and weaknesses of
•
•
•
•
•
SDCL
Spiral
Rational Unified Process (RUP)
Open Source Software (OSS)
Extreme Programming (XP)
Agile
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 57
Reminder
• Homework 2A due tonight, 11:55pm
– No late assignments accepted except for extenuating circumstances
as described in first lecture
– Don’t forget your github username at the top of your document
SDCL
Software Design and
Collaboration Laboratory
Department of Informatics, UC Irvine
sdcl.ics.uci.edu 58
Download