SDEV265 - System Software Analysis & Prj - Chapter 3: Agile Software Development
(True or False) Agile development methods aim to cut down on process bureaucracy by avoiding work that has dubious long-term value and eliminating documentation that will probably never be used.
True
(True or False) Agile development methods allow the development team to focus on the software itself rather than on its design and documentation.
True
(True or False) Agile development methods are best suited to application development where the system requirements usually change rapidly during the development process.
True
(True or False) Agile development methods are intended to deliver working software quickly to customers, who can then propose new and changed requirements to be included in later iterations of the system.
True
(True or False) Agile methods were developed for use by small programming teams that could work together in the same room and communicate informally. They were originally used by for the development of small and medium-sized systems and software products.
True
(True or False) All agile methods suggest that software should be developed and delivered incrementally. These methods are based on different agile processes but they share a set of principles, based on the agile manifesto, and so they have much in common.
True
(True or False) Change management and testing procedures are examples of company procedures that may not be compatible with agile methods.
True
(True or False) In Extreme Programming (XP) testing is automated and is central to the development process, and development cannot proceed until all tests have been successfully executed.
True
(True or False) In XP, requirements are expressed as scenarios (called user stories), which are implemented directly as a series of tasks by a pair of programmers. Programmers work in pairs and develop tests for each task before writing the code.
True
(True or False) In many agile methods requirements are informally and incrementally collected and therefore do not create a coherent requirements document. This make subsequent system maintenance more difficult and expensive.
True
(True or False) In test-first development, the task implementers have to thoroughly understand the specification so that they can write tests for the system. This means that ambiguities and omissions in the specification have to be clarified before implementation begins.
True
(True or False) In the process of system maintenance, the most important document is the system requirements document, which tells the software engineer what the system is supposed to do.
True
(True or False) Managers in any software business need to know what is going on and whether or not a project is likely to meet its objectives and the deliver the software on time within the proposed budget. Plan-driven and agile methods use different methods for managers to do just that.
True
(True or False) Plan-driven approaches involve a significant overhead in planning, designing, and documenting the system. This overhead is justified when the work of multiple development teams has to be coordinated, when the system is a critical system, and when many different people will be involved in maintaining the software over its lifetime.
True
(True or False) Test automation is essential for test-first development. Tests are written as executable components before the task is implemented. These testing components should be stand-alone, should simulate the submission of input to be tested, and should check that the result meets the output specification.
True
(True or False) Test-first development requires there to be a clear relationship between system requirements and the code implementing the corresponding requirements.
True
(True or False) The decision on whether to use an agile or a plan-driven approach to development should depend on the type of software being developed, the capabilities of the development team, and the culture of the company developing the system. In practice, a mix of agile and plan-based techniques may be used.
True
(True or False) The plan-driven development approach applied to small and medium-sized business systems causes so much overhead that it dominates the software development process. More time is spent on how the system should be developed than on program development and testing. This major flaw resulted in the development of agile methods in the 1990s.
True
(True or False) The results of pair programming has mixed results. Sometimes two people would produce half as much as two individuals working alone the amount of code two individuals would make independently. But regardless it still reduces the overall risks to a project when team members leave.
True
(True or False) To decide on the balance between a plan-based and an agile approach, you have to answer a range of technical, human and organizational questions. These relate to the system being developed, the development team, and the organizations that are developing and procuring the system.
True
(True or False) To scale agile methods, some plan-based practices have to be integrated with agile practice. These include up-front requirements, multiple customer representatives, more documentation, common tooling across project teams, and the alignment of releases across teams.
True
Product architects
a key characteristic of multi-team Scrum where each team chooses a product architect, and these architects collaborate to design and evolve the overall system architecture
Role replication
a key characteristic of multi-team Scrum where each team has a Product Owner for its work component and ScrumMaster; there may be a chief Product Owner and ScrumMaster for the entire project
Release alignment
a key characteristic of multi-team Scrum where the dates of product releases from each team are aligned so that a demonstrable and complete system is produced
Scrum of Scrums (SoS)
a key characteristic of multi-team Scrum where there is a daily Scrum of Scrums where representatives from each team meet to discuss progress, identify problems, and plan the work to be done that day; individual team Scrums may be staggered in time so that representatives from other teams can attend if necessary
Brownfield systems
a large project characteristic that include and interact with a number of existing systems; most system requirements are concerned with this interaction and so don't really lend themselves to flexibility and incremental development
Diverse stakeholders
a large project characteristic that involves a diverse set of stakeholders with different perspectives and objectives; practically impossible to involve all different types of stakeholders
Prolonged procurement
a large project characteristic that involves a long procurement and development time which makes it difficult to maintain coherent teams who about the system over that period
Systems of systems
a large project characteristic that involves collections of separate, communicating systems, where separate teams develop each system; usually teams work in different places or even different time zones
Regulatory constraints
a large project characteristic that involves development processes often constrainted by external rules and regulations limiting the way that they can be developed, require certain types of system documentation to be produced, etc.
System configuration
a large project characteristic that involves several systems are integrated to create a system; a significant fraction of the development is concerned with this characteristic rather than original code development
Test-first development
a philosophy in which instead of writing code and then writing tests for that code, you write the tests before you write the code
Agile Scaling Model (ASM)
a scaling agile framework developed by IBM for the large-scale use of agile methods
User story
a scenario of use that might be experienced by a system user; concept created to be able to integrate requirements elicitation with development User stories in agile development are implemented in a future release of the software.
Disciplined Agile Delivery
a stage of ASM that involves adapting these practices to a disciplined organizational setting and recognizing that teams cannot simply focus on development but must also take into account other stages of the software engineering process, such as requirements and architectural design
Agility at scale
a stage of ASM that involves the complexity that is inherent in large projects is recognized; involves taking account of factors such as distributed development, complex legacy environments, and regulatory compliance requirements
Core agile development
a stage of ASM that involves value-driven life-cycle self-organizing teams that focus on construction
Automated test framework
a system that makes it easy to write executable tests and submit a set of tests for execution; e.g. Junit for java programs
Formal documentation
a type documentation that is supposed to describe the system and so make it easier for people changing the system to understand; in practice, it's rarely updated and therefore doesn't accurately reflect the program code
What is the name of the Extreme Programming (XP) principle/practice where all developers are expected to refactor the code continuously as sonn as potential code improvements are found? a. Refactoring b. Test first development c. Continuous integration d. Small releases
a.
What is the name of the Extreme Programming (XP) principle/practice where all developers take responsibility for all of the code? a. Collective ownership b. Continuous integration c. Pair programming d. Test first development
a.
What is the name of the Extreme Programming (XP) principle/practice where the minimal useful set of functionality that provides business value is developed first? a. Small releases b. Simple design c. Continuous integration d. Incremental planning
a.
Extreme Programming (XP)
an agile approach that pushed recognized good practice, such as iterative development, to "extreme" levels; several new versions of a system may be developed by different programmers, integrated, and tested in a day
Scrum
an agile method that to an extent it follows the principles from the agile manifesto; focuses on providing a framework for agile project organization and does not mandate the use of specific development practices such as pair programming and test-first development
What is the name of the Extreme Programming (XP) principle/practice where developers work in pairs, checking each other's work and providing the support to always do a good job? a. Simple design b. Pair programming c. Incremental planning d. Sustainable pace
b.
What is the name of the Extreme Programming (XP) principle/practice where 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? a. Pair programming b. Incremental planning c. Small releases d. Sustainable pace
b.
What is the name of the Extreme Programming (XP) principle/practice where a full-time representative of the end-user of the system (customer) is available and responsible for bringing system requirements to the team for implementation? a. Refactoring b. Sustainable pace c. On-site customer d. Continuous integration
c.
What is the name of the Extreme Programming (XP) principle/practice where an automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented? a. Pair programming b. On-site customer c. Test first development d. Incremental planning
c.
What is the name of the Extreme Programming (XP) principle/practice where large amounts of overtime are not considered acceptable, as the net effect is often to reduce code quality and medium-term productivity? a. Test first development b. Continuous integration c. Sustainable pace d. Incremental planning
c.
What is the name of the Extreme Programming (XP) principle/practice where as soon as a task and integrated into the whole system all unit tests in the system must pass? a. Sustainable pace b. Incremental planning c. Refactoring d. Continuous integration
d.
What is the name of the Extreme Programming (XP) principle/practice where enough design is carried out to meet the current requirements and no more? a. Refactoring b. Test first development c. Sustainable pace d. Simple design
d.
Development team (Scrum)
scrum terminology that means a self-organizing group of software developers who are responsible for developing software and other essential project documents; should consist of no more than seven people
Potentially shippable product increment (Scrum)
scrum terminology that means a software increment that is delivered from a sprint
Sprint
scrum terminology that refers to a development iteration that is usually 2 to 4 weeks long
Product backlog (Scrum)
scrum terminology that refers to a document that acts as a list of "to do" items that the Scrum team must tackle; may feature definitions for the software, software requirements, user stories, or descriptions of supplementary tasks that are needed, such as architecture definition or user documentation
Daily Scrum
scrum terminology that refers to a short, face-to-face daily meeting of the Scrum team that reviews progress and prioritizes work to be done that day
Velocity (Scrum)
scrum terminology that refers to an estimate of how much product backlog effort a team can cover in a single sprint; helps estimate what can be covered in a sprint and provides a basis for measuring improving performance
Product owner (Scrum)
scrum terminology that refers to an individual (or possibly a small group) whose job is to identify product features or requirements, prioritize these for development, and continuously review the product backlog to ensure that the project continues to meet critical business needs
ScrumMaster
scrum terminology that refers to an individual who is responsible for ensuring that the Scrum process is followed and guides the team in the effective use of Scrum; also responsible for interfacing with the rest of the company and for ensuring that the Scrum team is not diverted by outside interference
Test coverage
the effectiveness of system tests in testing the code of an entire system
Change management
the process of controlling changes to a system, so that the impact of changes is predictable and costs are controlled; all changes have to be approved in advance before they are made, and this conflicts with the notion of refactoring
Name two types of system development that are successful with agile methods.
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 few external stakeholders and regulations that affect the software.
Name two problems that automated testing struggle with in ensuring test coverage is complete.
1. Programmers prefer programming to testing, and sometimes they take shortcuts when writing tests. 2. Some tests can be very difficult to write incrementally.
What are the four key characteristics of multi-team Scrum?
1. Role replication 2. Product architects 3. Release alignment 4. Scrum of Scrums
What are the six principal factors contributing to software complexity?
1. System of systems 2. Brownfield systems 3. Diverse stakeholders 4. Prolonged procurement 5. System configuration 6. Regulatory constraints
What are the four key features of automated testing in XP?
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
Name three problems with the agile approach when used for long-lifetime systems developed for an external client.
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 for 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.
Name ten Extreme programming practices/principles. (At least 8)
1. Collective ownership 2. Continuous integration 3. Incremental planning 4. On-site customer 5. Pair programming 6. Refactoring 7. Simple design 8. Small releases 9. Sustainable pace 10. Test first development
What are the four core principles of Extreme Programming (XP)?
1. Communication 2. Simplicity 3. Feedback 4. Courage
What are all the stages of the Agile Scaling Model (ASM) in order?
1. Core agile development 2. Disciplined agile delivery 3. Agility at scale
What are the five principles of agile methods?
1. Customer involvement 2. Embrace change 3. Incremental delivery 4. Maintain simplicity 5. People, not process (Let team develop their own ways of working without processes)
What are the four values of the Agile manifesto?
1. Individuals and interactions over processes and tools 2. Working software over comprehensive documentation 3. Customer collaboration over contract negotiation 4. Responding to change over following a plan
Name three pair programming advantages.
1. It supports the idea of collective ownership and responsibility for the system. (egoless programming, Weinberg 1971) 2. It acts as an informal review process because each line of code is looked at by at least two people. (cheaper and easier to organize but probably less effective) 3. It encourages refactoring to improve the software structure.
Name three types of problems that agile development may cause for software maintenance.
1. Lack of product documentation 2. Keeping customers involved 3. Development team continuity