CSC440 Chapter 3: Agile Software Development (Software Engineering, Sommerville, 10th Edition)

Ace your homework & exams now with Quizwiz!

- Helps develop common ownership of code and spreads knowledge across the team. - It serves as an informal review process as each line of code is looked at by more than 1 person. - It encourages refactoring as the whole team can benefit from improving the system code.

Benefits of Pair Programming

1) The product is broken down into a set of manageable and understandable chunks. 2) Unstable requirements do not hold up progress. 3) The whole team have visibility of everything and consequently team communication is improved. 4) Customers see on-time delivery of increments and gain feedback on how the product works. 5) Trust between customers and developers is established and a positive culture is created in which everyone expects the project to succeed.

Benefits of Scrum

- Re-organization of a class hierarchy to remove duplicate code. - Tidying up and renaming attributes and methods to make them easier to understand. - The replacement of inline code with calls to methods that have been included in a program library.

Examples of refactoring

A very influential agile method, developed in the late 1990s, that introduced a range of agile development techniques.

Extreme Programming

1) Test-first development 2) Incremental test development from scenarios 3) User involvement in test development and validation 4) Automated test harnesses are used to run all component tests each time that a new release is built.

Extreme Programming Testing Features

1) Flexible planning 2) Frequent system releases 3) Continuous integration 4) Test-driven development 5) Good team communications.

Important agile fundamentals to remember when scaling

Rapid development and delivery

Most important requirement for software systems

1) User stories for specification 2) Refactoring 3) Test-first development 4) Pair programming

Practical and influential XP practices

1) The informality of agile development is incompatible with the legal approach to contract definition that is commonly used in large companies. 2) Agile methods are most appropriate for new software development rather than software maintenance. Yet the majority of software costs in large companies come from maintaining their existing software systems. 3) Agile methods are designed for small co-located teams yet much software development now involves worldwide distributed teams.

Practical problems with Agile Methods

1) Incremental planning 2) Small releases 3) Simple design 4) Test-first development 5) Refactoring 6) Pair programming 7) Collective ownership 8) Continuous integration 9) Sustainable pace 10) On-site customer

Practices of Extreme Programming

1) Programmers prefer programming to testing and sometimes they take short cuts when writing tests. (debatable!) 2) Some tests can be very difficult to write incrementally. 3) It difficult to judge the completeness of a set of tests.

Problems with a test-first environment

The "to-do" items which the Scrum team must tackle.

Product Backlog

- New versions may be built several times per day; - Increments are delivered to customers every 2 weeks; - All tests must be run for every build and the build is only accepted if tests run successfully.

Why is it called Extreme Programming?

Concerned with how agile methods can be introduced across a large organization with many years of software development experience.

"Scaling out" agile methods

Concerned with using agile methods for developing large software systems that cannot be developed by a small team.

"Scaling up" agile methods

After Action Review (wrap-up)

AAR

Specification, design, implementation and testing are inter-leaved and the outputs from the development process are decided through a process of negotiation during the software development process.

Agile Development

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

Agile Manifesto Tenets

1) Lack of product documentation 2) Keeping customers involved 3) Development team continuity

Agile methods and software maintenance concerns

1) 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 few external rules and regulations that affect the software

Agile methods are useful for what two kinds of system development?

- Program specification, design and implementation are inter-leaved - The system is developed as a series of versions or increments with stakeholders involved in version specification and evaluation - Frequent delivery of new versions for evaluation - Extensive tool support (e.g. automated testing tools) used to support development. - Minimal documentation - focus on working code

Common characteristics of agile development

1) Customer involvement 2) Incremental delivery 3) People not process 4) Embrace change 5) Maintain simplicity

Five principles of Agile Methods

- Pair programming involves programmers working in pairs, developing code together.

Pair Programming

Based around separate development stages with the outputs to be produced at each of these stages planned in advance.

Plan-driven development

- How large is the system being developed? (Agile methods are most effective a relatively small co-located team who can communicate informally. ) - What type of system is being developed? (Systems that require a lot of analysis before implementation need a fairly detailed design to carry out this analysis.) - What is the expected system lifetime? (Long-lifetime systems require documentation to communicate the intentions of the system developers to the support team.) - Is the system subject to external regulation? (If a system is regulated you will probably be required to produce detailed documentation as part of the system safety case. )

Questions to be asked when considering using agile methods

- Constant code improvement - Programming team look for possible software improvements and make these improvements even where there is no immediate need for them.

Refactoring

A daily meeting of the Scrum team that reviews progress and prioritizes work to be done that day. Short, face-to-face meeting that includes the whole team.

Scrum

Agile method that focuses on managing iterative development rather than specific agile practices.

Scrum

Person responsible for ensuring that the Scrum process is followed and guides the team in the effective use of Scrum. He or she is responsible for interfacing with the rest of the company.

ScrumMaster

A development iteration. Sprints are usually 2-4 weeks long.

Sprint

False! Large systems need up-front design and some documentation and organizational practice may conflict with the informality of agile approaches.

T or F and Why?: Scaling agile methods for large systems is easy.

False! A "customer" can be an organization from within the company as well.

T or F: A "customer" must be from an external source outside the company.

- Writing tests before code clarifies the requirements to be implemented. - Tests are written as programs rather than data so that they can be executed automatically. The test includes a check that it has executed correctly.

Test-first development

1) The initial phase is an outline planning phase where you establish the general objectives for the project and design the software architecture. 2) This is followed by a series of sprint cycles, where each cycle develops an increment of the system. 3) The project closure phase wraps up the project, completes required documentation such as system help frames and user manuals and assesses the lessons learned from the project.

Three phases of Scrum

- User requirements are expressed as user stories or scenarios. - These are written on cards and the development team break them down into implementation tasks. These tasks are the basis of schedule and cost estimates. - The customer chooses the stories for inclusion in the next release based on their priorities and the schedule estimates.

User Stories

An estimate of how much product backlog effort that a team can cover in a single sprint.

Velocity

1) Incremental development is supported through small, frequent system releases. 2) Customer involvement means full-time customer engagement with the team. 3) People not process through pair programming, collective ownership and a process that avoids long working hours. 4) Change supported through regular system releases. 5) Maintaining simplicity through constant refactoring of code.

XP applied to the Agile Manifesto


Related study sets

company officer 6th edition chapter 6 customer service concept section

View Set

Business Midterm 101 TESU Chapter 7-9

View Set

NUR 238 PrepU Chapter 23: Nursing Care of the Newborn With Special Needs

View Set

Managerial accounting chapter 22

View Set

California Child Abuse Mandated Reporting

View Set

Skills Lesson: Using and Citing Evidence

View Set