software engineering chapter 3 Agile software development

Réussis tes devoirs et examens dès maintenant avec Quizwiz!

why agile mwthods

Because these businesses are operating in a changing environment, it is often practically impossible to derive a complete set of stable software requirements

Maintain simplicity and agile methodology

Focus on simplicity in both the software being developed and in the development process. Wherever possible, actively work to eliminate complexity from the system.

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.

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

7. 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. You may need to plan in advance what these are.

In practice, the principles underlying agile methods are sometimes difficult to realize

1. Although the idea of customer involvement in the development process is an attractive one, its success depends on having a customer who is willing and able to spend time with the development team and who can represent all system stakeholders. Frequently, the customer representatives are subject to other pressures and cannot take full part in the software development. 2. Individual team members may not have suitable personalities for the intense involvement that is typical of agile methods, and therefore not interact well with other team members. 3. Prioritizing changes can be extremely difficult, especially in systems for which there are many stakeholders. Typically, each stakeholder gives different priorities to different changes. 4. Maintaining simplicity requires extra work. Under pressure from delivery schedules, the team members may not have time to carry out desirable system simplifications

There are two questions that should be considered when considering agile methods and maintenance

1. Are systems that are developed using an agile approach maintainable, given the emphasis in the development process of minimizing formal documentation? 2. Can agile methods be used effectively for evolving a system in response to customer change requests?

Extreme programming involves a number of practices, summarized in Figure 3.4, which reflect the principles of agile methods

1. Incremental development is supported through small, frequent releases of the system. Requirements are based on simple customer stories or scenarios that are used as a basis for deciding what functionality should be included in a system increment. 2. Customer involvement is supported through the continuous engagement of the customer in the development team. The customer representative takes part in the development and is responsible for defining acceptance tests for the system. 3. People, not process, are supported through pair programming, collective ownership of the system code, and a sustainable development process that does not involve excessively long working hours. 4. Change is embraced through regular system releases to customers, test-first development, refactoring to avoid code degeneration, and continuous integration of new functionality.

Agile methods have been very successful for some types of system development:

1. Product development where a software company is developing a small or medium-sized product for sale. 2. 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

Testing in XP

1. Test-first development, 2. incremental test development from scenarios, 3. user involvement in the test development and validation, and 4. the use of automated testing frameworks.

rapid software development, they share some fundamental characteristics:

1. The processes of specification, design, and implementation are interleaved. 2. The system is developed in a series of versions 3. System user interfaces are often developed using an interactive development system that allows the interface design to be quickly created by drawing and placing icons on the interface

general probelm in incremental development

A general problem with incremental development is that it tends to degrade the software structure, so changes to the software become harder and harder to implement.

6. What technologies are available to support system development?

Agile methods often rely on good tools to keep track of an evolving design. If you are developing a system using an IDE that does not have good tools for program visualization and analysis, then more design documentation may be required.

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

agile practices

Agile practices, used in the maintenance process itself, are likely to be effective, whether or not an agile approach has been used for system development.

The principles of agile methods

CUSTOMER INVOLVEMENT incremental delivery people not process embrace changes maintain simplicity

Customer involvement in agile methodology

Customers should be closely involved throughout the development process. Their role is provide and prioritize new system requirements and to evaluate the iterations of the system

Embrace change and agile emthodology

Expect the system requirements to change and so design the system to accommodate these changes.

Extreme Programming

Extreme programming (XP) is perhaps the best known and most widely used of the agile methods

agile software manifesto

Individuals and interactions over processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan

9. 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. If you have a team with relatively low skill levels, you may need to use the best people to develop the design, with others responsible for programming.

5. What is the expected system lifetime?

Long-lifetime systems may require more design documentation to communicate the original intentions of the system

how programmers works in extreme programming

Programmers work in pairs and develop tests for each task before writing the code. All tests must be successfully executed when new code is integrated into the system

why rapid software

Rapid software development processes are designed to produce useful software quickly

Incremental planning in extreme programmming

Requirements are recorded on Story Cards and the Stories to be included in a release are determined by the time available and their relative priority. The developers break these Stories into development 'Tasks'

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.

4. What type of system is being developed?

Systems that require a lot of analysis before implementation (e.g., real-time system with complex timing requirements) usually need a fairly detailed design to carry out this analysis. A plandriven approach may be best in those circumstances.

Small releases in extreme programming

The minimal useful set of functionality that provides business value is developed first. Releases of the system are frequent and incrementally add functionality to the first release.

Agile methods

The philosophy behind agile methods is reflected in the agile manifesto that was agreed on by many of the leading developers of these method

People not process in agile methodology

The skills of the development team should be recognized and exploited. Team members should be left to develop their own ways of working without prescriptive processes

Incremental delivery and agile methodology

The software is developed in increments with the customer specifying the requirements to be included in each increment.

8. Are there cultural issues that may affect the system development?

Traditional engineering organizations have a culture of plan-based development, as this is the norm in engineering. This usually requires extensive design documentation, rather than the informal knowledge used in agile processes

fast moving development

agile approach should be used

test first development in extreme programming

an autmated unit test framework

design and implementation in agile methodology

are central activities in the software development

Simple design in extreme programming

enough desgin is carried out to meet the current requirement

most software projects include practices

from plan-driven and agile approaches

The need for rapid system development and processes

hat can handle changing requirements has been recognized for some time

agile development

incremental development related

a plan-driven approach

iteration occurs within activities with formal documents used to communicate between stages of the process

difference between agile and plan driven

phases in pkan driven are sequence in whcih one phase should be finished before the other phase begin

For some types of software, such as safety-critical control systems

plan driven approach should be used

requirement in extreme programming

requirements are expressed as scenarios (called user stories), which are implemented directly as a series of tasks


Ensembles d'études connexes

Public Health Pest Control Unit 4. Test Your Knowledge

View Set

A&P IL2 Structure & Function of Cerebellum

View Set

English Unit 15 Synonyms and Antonyms

View Set

Define the following terms: chromatin, chromosome, sister chromatids, centromere, and kinetochore.

View Set