Software Processes and Agile Development Flashcards
What is a software process?
A process identifies the activities that must be performed in order to achieve the desired outcome
A process organizes activities into stages or phases with gateways that defines the criteria when the process can move from one phase to another
A process defines roles that team members play while following a process
Software Process Components?
Activities (HOW)
Phases (WHEN)
Roles (WHO)
Artefacts (WHAT)
Plan Driven Processes?
Activities are planned in advance
Measured against the plan
Significant upfront engineering effort
Minimize changes
Agile Processes?
Planning is incremental and continually adapted as software is developed.
Change is embraced and mitigated with recurrent refactoring / rework.
Simplification of Reality?
Allows to better understand and analyze what is being modelled
Waterfall?
Each software activity is treated as a distinct phase of the process
Incremental?
The process is divided into iterations. Each iteration consists of all activities necessary for an executable deliverable
Integration and Configuration?
Activities center around assembly, configuration and customization of existing components.
Waterfall model was proposed as?
Winson Royce as a way to manage the development of large systems in 1970s
Waterfall model components?
Requirements Definition System and Software Design Implementation and Unit Testing Integration and System Testing Operation and Maintenance
Spiral Model?
Bohem 1988
Iterative process with Iterations that are designed to minimize risk
Uses evolutionary prototyping
RUP?
Rational Unified Process
Iterative development where each iteration includes all activities with different emphasis
Phases of RUP?
Inception,
Elaboration,
Construction,
Transition
Inception Phase?
Establish a business case and identify stakeholders and business requirements
Elaboration Phase?
Develop understanding, build requirement models, architecture and early system prototypes.
Construction Phase?
Emphasizes design, programming and testing activities
Transition Phase?
Taking the system from development to operation and developing user documentation
RUP Phases can be implemented based on which processes?
Plan Based: phases contain iterations of the same type
Agile: each iteration contain the each phases
Workflows in RUP?
Business Modelling Requirements Modelling Analysis and Design Implementation Testing Deployment Configuration and Change Management Project Management Environment
Integration and Configuration?
Using or customizing general purpose systems
List General Purpose systems?
Customer Relationships Management Systems (CRMs)
Human Resources Management Systems (HRMs)
Financial Management Solutions (FMS)
Supply Chain Management
Enterprise Resource Planning (ERP)
Vendors that provide the platform and consulting services?
Microsoft
SAP
PeopleSoft
Oracle
Software Specification Activities & Artifacts?
Requirements Analysis
- Identify, elicit, discover requirements
Require Specification
- Define, describe, document requirements
Requirements Validation
- Feasibility
- Consistency
- Completeness
General model of the design process?
Architectural Design
Interface Design
Detailed Design
Database Design
Software Validation Activities?
Component Testing
System Testing
User Testing
When selecting a process what goals should be achieved?
Time to market Cost Quality Predictability Visibility
Time to Market?
Increase development speed
Cost
Effective use of resources
Quality
Software development best practices
Predictability
Effective planning and risk management
Visibility
Communication, user satisfaction
4 Dimensions of good software?
Process
People
Product
Technology
Traditional Processes?
Develop a stable plan and follow it
- Focus on predictability
Minimize change
- Changes lead to replanning
- Changes in the plan can have unpredictable results
Minimize rework
- Decrease time to market by avoiding unnecessary rework
Agile Processes?
Plan is small increments and adapt the plan often
- Focus on visibility and time to market
Embrace change no matter when it comes
- Future changes are irrelevant if the future is not planned
Embrace Rework (Refactoring) - Rework is accepted as necessary cost of unpredictability
2 Different Types of Prototyping?
Throwaway
Evolutionary
Throwaway Prototyping?
Prototype is scrapped after it served its purpose
Used to test technologies, concepts, mitigate risks
Evolutionary Prototyping?
Engineered and re-factored continuously and transformed into final product
A process of iterative and incremental development
When it gets enough critical mass it becomes the product
Incremental Delivery?
System is developed iteratively
Several iterations make up a system increment
System increments are delivered and installed at the customer
Challenges of Incremental Delivery?
Customer may not be able to use a partially developed system
Required system infrastructure and design can be hard to determine
Processes need to be?
Measured,
Analyzed,
Improved
(Process improvement cycle)
Capability Maturity Model?
Initial Managed Defined Quantitatively Managed Optimizing
Motivation for Agile Development?
Fastest time to market
Unprecedented pace of technological change may force redevelopment despite best engineering efforts
Defining a reliable plan is hard and takes itself significant time and resources
Agile Methodologies?
SCRUM
TDD
Pair Programming
SCRUM?
Iterative and incremental project management methodology
Process is broken down into iterations whose input are requirements managed through a back-log
Estimation is performed in relative terms based on story points
Test-Driven Development?
Increased emphasis on unit-testing and testability with significant effects on modularization and abstraction
Agile Challenges?
Customer Involvement
Team Challenges
Product Challenges
Customer Involvement?
Reliant on customer being available and involved when that is rarely the case
Single product owner or customer representative is not feasible when different people have different expertise
Team Challenges?
Requires self-driven, senior developers for the same task
Without models, documentation and supporting artifacts the process relies on having the same people always involved.
Development team continuity is critical and cannot be guaranteed
Product Challenges?
Incompatible with many types of systems and expectations of delivery
For systems that are informal, fast paced, one-time development with no large planned maintenance or evolution
Does not scale to large systems
Decision Making Framework components?
Complex
Complicated
Chaotic
Simple
Roles in Scrum Team?
Product Owner
ScrumMaster
Development Team