0% found this document useful (0 votes)
9 views

CS 487 - Lect 2 - Software Processes

This document summarizes key points from a lecture on software processes and agile methods. It discusses traditional software process models like waterfall, iterative development, and reuse-oriented engineering. It then covers agile methods like extreme programming (XP) and scrum. The benefits of agile include rapid delivery and flexibility, while risks include lack of upfront planning. Scaling agile to larger projects requires techniques like continuous integration across teams.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views

CS 487 - Lect 2 - Software Processes

This document summarizes key points from a lecture on software processes and agile methods. It discusses traditional software process models like waterfall, iterative development, and reuse-oriented engineering. It then covers agile methods like extreme programming (XP) and scrum. The benefits of agile include rapid delivery and flexibility, while risks include lack of upfront planning. Scaling agile to larger projects requires techniques like continuous integration across teams.
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 23

I LL I NOIS I N S T I T U T E

OF T ECH NOLOGY
Transforming Lives. Inventing the Future.
www.iit.edu

SOFTWARE ENGINEERING
CS 487

Prof. Dennis Hood


Computer Science
Lecture 2
Software
Processes
Lesson Overview
• Software Processes and Agile Methods
• Reading
– Ch. 2-3
• Objectives
– Explore current software engineering approaches
– Discuss the step-by-step approach to engineering
software systems
– Examine the roles of people and technology in the
development and use of software systems
– Analyze Agile methods and related approaches
Participation – P1
• Identify a real-world “gate keeping” scenario
– Explain how the gate impedes flow and why
– Describe design elements which maximize flow
– Describe the “authority” which enforces
compliance
• Describe one benefit and one drawback of
allowing agility in the software development
process
• Explain the value of “surfacing” in an iterative
development process
Software
Processes
Software Process Models
• Software process
– A set of activities that leads to the production of a
software product
– e.g., analysis, design, build, verification
• Generic models
– Process frameworks meant to be tailored
• Waterfall
• Incremental Development
• Reuse-Oriented SW Engineering
Waterfall
• Cascading from one phase to the next
• Each phase ends with a “gate”
– Signoff is required before a phase can be
considered complete
– Increases the likelihood of true completion
– Makes it difficult to estimate completion time
• In practice, any engineering effort follows this
general approach, but also involves iteration
– Iterations facilitate learning
– It is difficult to estimate the required number of
iterations
Iterative Development
• Achieve a defined “sub-objective” with each
iteration
• The product is evolved methodically
• The focus is on answering questions and
resolving challenges
• Often used to bridge the project team-
customer gap
– Produce a prototype and solicit feedback
– Quickly and cheaply achieve critical understanding
Reuse-Oriented SW Engineering
• Focus is on reusing previously created system
elements
– Clearly faster
– Defects are limited to points of integration and
“inappropriately” applied components
• Tradeoffs may be necessary
– Existing components may not exactly match
requirements
• Requires disciplined management of reusable
components
– Documentation
– Testing
– Version control, etc.
Development Process Objectives
• Each of these models addresses the following
needs:
– Specification of requirements
• Identifying services to be provided and environmental
constraints
– Design and implementation
• Transforming specification into working system
– Verification and validation
• Showing that the system satisfies requirements and
meets customer expectations
– Evolution
• Growing the system over time to accommodate
environmental changes and new requirements
The Spiral Model
• Iterative, risk-driven approach developed by
Barry Boehm
• Four phases executed repeatedly
– Objective setting
– Risk assessment and reduction
– Development and validation
– Planning for the next iteration
The Rational Unified Process
• Hybrid model incorporating prototyping and
incremental delivery
– Based on UML and the Unified Software
Development Process
• Described from multiple perspectives
– Dynamic: phases of the model over time
– Static: process activities that are enacted
– Practice: suggests good practices to be used during
the process
• RUP phases:
– Inception, elaboration, construction, and transition
RUP Best Practices
• Develop software iteratively
• Manage requirements
• Use component-based architectures
• Visually model software
• Verify software quality
• Control changes to software
Change Happens
• An iterative approach is beneficial because
change is likely
– Technology evolves rapidly
– Competition drives customers to change
requirements
– Changes to economic conditions can affect
strategic approaches
• Minimizing time and scope also minimizes
opportunity for change
– Plan for relatively short, well-defined iterations
– Customers can utilize incrementally delivered
systems
Agile
Methods
Agile Methods
• Software development evolving to keep up
with the dynamic world it serves
– Speed up delivery to hit the moving target
– Involve users significantly and early
– Extreme flexibility
• Agile characteristics
– Interleaving of phases
– Documentation effort is minimized (focus on
essentials)
– Frequent delivery of versions
– Visual development tools to facilitate rapid,
interactive UI development
The Agile Approach
• Flow
– Get a basic idea, then jump into design and
implementation cycles
• Requirements gathering and V&V are pulled into design
and implementation
– Frequently “surface” the evolving product
– Growth is more organic than planned
• Pros and Cons
– The benefit is that progress drives discovery which
drives more progress
– The risk is the discovery is influenced by the
working prototype and presence of the customer
Extreme Programming
• Best practices pushed to the extreme
– Extremely rapid development and deployment
– Extremely small teams
– Extremely close user involvement
– Extremely tight iterations
• Requirements come as simple customer stories
(scenarios)
• Change is handled by frequently coding, testing
and releasing
• Simplicity is a goal to help manage the rapid
pace
XP Testing
• The lack of a system specification makes it
difficult to “hand off” testing to an
independent verification team
• Focus is on only bringing “clean” code into the
current version
– Develop the tests first, then the code
– In some ways developing the tests is very similar to
specifying functionality, designing the interface,
etc.
– Especially if the user writes the tests
– Rely on automation
Agile Project Management
• Project management has a generally
bureaucratic feel to it
• Agile methods require more flexibility and
speed than what is normally associated with
project management
• The Scrum approach is an example of PM
principles applied to short, tight iterations
– Short, fixed timeframes (2-4 weeks)
– Focus on prioritized, outstanding work
– Frequent communication and assessment
– Commitment to iterations
Scaling Agile Methods
• Agile methods seem naturally suited for small
development efforts
• That would be disappointingly limiting
• Scaling to larger development is possible with:
– Focus on up-front analysis and design
– Cross-team communication mechanisms
– Continuous integration including whole-system
builds every time anything is changed/added
– PMs with experience with Agile methods
– Organizations with a certain degree of flexibility

You might also like