INF 3705study-notes VERIFIED.
INF 3705study-notes VERIFIED. MUST HAVE! Chapter 3 – Agile Software Development Rapid development and delivery is often the most critical requirement for software systems. 3.1 Agile Methods Agile methods universally rely on an incremental approach to software specification, development and delivery. They are best suited to application development where the system requirements usually change rapidly during the development process. They are intended to deliver working software quickly to customer, who can then propose new and changed requirement to be included in later iterations of the system. The best-known agile method is extreme programming. Others include, Scrum, Crystal, Adaptive Software Development, DSDM and Feature Driven Development. Agile methods have been very successful for some types of system development: - Product development where a software company is developing a small or medium-sized product - 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. 3.2 Plan-driven and agile development Agile approaches to software development consider design and implementation to be the central activities in the software process. By contrast, a plan-driven approach identifies separate stages in the software process with outputs associated with each stage. The outputs from one stage are used as a basis for planning the following process activity. In a plan-driven approach, iteration occurs within activities with formal documents used to communicate between stages of the process. For example, the requirements will evolve and, ultimately, a requirements specification will be produced. This is then an input to the design and implementation process. In an agile approach, iteration occurs across activities. Therefore, the requirements and the design are developed together, rather than separately. 3.3 Extreme Programming XP is the best known and most widely used of the agile methods. The approach was developed by pushing recognized good practice, such as iterative development, to ‘extreme’ levels. In extreme programming, requirements are expressed as scenarios (called user stories), which are implemented directly as a series of tasks. 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. Extreme programming involves a number of practices, summarized in 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. Downloaded by Zander van Bruggen () lOMoARcPSD| 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. 5. Maintaining simplicity is supported by constant refactoring that improves code quality and by using simple designs that do not unnecessarily anticipate future changes to the system. In an XP process, customers are intimately involved in specifying and prioritizing system requirements. 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. 3.3.1 Testing in XP One of the more important differences between incremental development and plan-driven development is in the way that the system is tested. With, incremental development, there is no system specification that can be used by an external testing team to develop system tests. As a consequence, some approaches to incremental development have a very informal testing process, in comparison with plan-driven testing. To avoid some of the problems of testing and system validation, XP emphasizes the importance of program testing. The key features of XP testing are: 1. Test-first development 2. Incremental test development from scenarios 3. User involvement in the test development and validation 4. The use of automated testing frameworks Test-first development is one of the most important innovations in XP. Instead of writing some code and then writing tests for that code, you write the tests before you write the code. This means that you can run the test as the code is being written and discover problems during development. 3.3.2 Pair programming Programmers work in pairs to develop the software. However, the same pairs do not always program together. Rather, pairs are created dynamically so that all team members work with each other during the development process. The use of pair programming has a number of advantages: - It supports the idea of collective ownership and responsibility of the system - It acts as an informal review process because each line of code is looked at by at least two people - It helps support refactoring, which is a process of software improvement.
Geschreven voor
- Instelling
- University of South Africa
- Vak
- INF3705 - Advanced Systems Development
Documentinformatie
- Geüpload op
- 16 november 2021
- Aantal pagina's
- 41
- Geschreven in
- 2021/2022
- Type
- Tentamen (uitwerkingen)
- Bevat
- Vragen en antwoorden
Onderwerpen
-
inf 3705
-
inf 3705study notes verified