AGILE DEVELOPMENT Flashcards
Describe rapid software development
Specification, design and implementation are inter-leaved
System is developed as a series of versions with stakeholders involved in version evaluation
User interfaces are often developed using an IDE and graphical toolset
What is the main aim of the agile methods
The aim of agile methods is to reduce overheads in the
software process (e.g. by limiting documentation) and to
be able to respond quickly to changing requirements
without excessive rework.
What are the values of the Agile Software Development
Individuals and interactions over processes and tools
- Building a team more important than building
environment.
Working software over comprehensive documentation
-Produce no document unless need is immediate and significant.
Customer collaboration over contract negotiation
-Make detailed plans for the next few
weeks, very rough plans for the next few months, and extremely crude plans beyond that.
List some of the principles of Agile development
1.Early and Continuous Delivery of working Software
The less functional(rudimentary) the initial delivery, the higher the quality of the final delivery.
The more frequent the deliveries, the higher the final quality.
2.Welcome Changing Requirements
-Keep the software structure flexible, so requirement change impact is minimal.
3.Agile Processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.- pacing
4.Simplicity- the art of maximizing the work not done- Agile teams take the simplest path consistent with their goals
- Self- organizing teams- Work is not just assigned, the team determines the best way to fulfill them
- Constant reevaluation and adjustment
- Constant collaboration with customers , working with them ‘daily’. Also face to face communication is prioritized
In what situations are agile methods applied
Product development where a software company is
developing a small or medium-sized product for sale.
Custom system development within an organization, where there is a clear commitment from the customer to
become involved in the development process and where there are not a lot of external rules and regulations that affect the software.
Because of their focus on small, tightly-integrated teams, there are problems in scaling agile methods to large systems.
What are the problems with agile methods
It can be difficult to keep the interest of customers who are involved in the process.
Team members may be unsuited to the intense involvement that characterizes agile methods.
Prioritizing changes can be difficult where there are multiple stakeholders.
Maintaining simplicity requires extra work.
Contracts may be a problem as with other approaches to iterative development.
What are the possible issues that may arise in agile development in terms of Software maintenance
Problems may arise if original development team
cannot be maintained due to the minimization of formal documentation
What are some things to consider when choosing between agile and plan-driven processes
Is it important to have a very detailed specification and design before moving to implementation? If so, you probably need to use a plan-driven approach.
Is an incremental delivery strategy, where you deliver the software to customers and get rapid feedback from them, realistic? If so, consider using agile methods.
How large is the system that is being developed? Agile methods are most effective when the system can be developed with a small co-located team who can communicate informally. This may not be
possible for large systems that require larger development teams so a plan-driven approach may have to be used.
What type of system is being developed?
-Plan-driven approaches may be required for systems that require a lot of analysis before implementation (e.g. real-time system with complex timing requirements).
What are some things to consider when choosing between agile and plan-driven processes
Is the system subject to external regulation?
If a system has to be approved by an external regulator (e.g. the KAA approve software that is critical to the operation of an aircraft) then you will probably be required to produce detailed documentation as part
of the system safety case.
Are there cultural or organizational issues that may affect the system development?
-Traditional engineering organizations have a culture of plan-based development, as this is the norm in engineering.
How good are the designers and programmers in the
development team?
-It is sometimes argued that agile methods require higher skill levels than plan-based approaches in which programmers simply translate a detailed design into code
What is the expected system lifetime?
-Long-lifetime systems may require more design documentation to communicate the original intentions of the system developers to the support team.
What technologies are available to support system development?
-Agile methods rely on good tools to keep track of an evolving design
How is the development team organized?
-If the development team is distributed or if part of the development is being outsourced, then you may need to develop design documents to communicate across the development teams