Midterm Material - Agile Software Development Flashcards

1
Q

Why was agile introduced and when?

A

Agile was introduced in the 1990s with the aim of reducing the delivery time for software systems.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

How does agile reduce delivery time?

A

Agile reduces overhead in the software process by limiting documentation and by making it faster to respond and make changes to requirements.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

What are the four values from the Agile Manifesto?

A
  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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the 12 principles of agile methods?

A
  1. Customer satisfaction through early and continuous software development
  2. Welcome changing requirements, even late in delivery
  3. Frequent delivery of working software
  4. Collaboration between business stakeholders and developers daily through the project
  5. Support, trust, and motivate the people involved
  6. Enable face-to-face interactions
  7. Working software is the primary measure of progress
  8. Agile processes to support a consistent development pace
  9. Attention to technical detail and design enhances agility
  10. Simplicity - the art of maximizing the amount of work not done - is essential
  11. Self-organizing teams encourage great architectures, requirements, and design
  12. Regular reflections on how to become more effective
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What is “extreme programming”?

A

Extreme programming is an agile method with a focus on intense development but not as much of the project management. New versions may be built several times per day and increments are delivered to customers every 2 weeks.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are the stages of the extreme programming release cycle?

A

Select user stories for the release, break down stories into tasks, plan the release, develop, integrate, and test the software, release the software, evaluate the system.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What is the drawback of extreme programming?

A

It has a technical focus and is not easy to integrate with management practice at most organizations. Thus, extreme programming is not widely used but some practices from it are adopted.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is a user story?

A

A user story is a representation of a user requirement for a particular part of the software. They are written on cards and broken down into implementation tasks.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What is refactoring and why is it important?

A

Refactoring is the process of making constant improvements to code throughout the development process. It is important because it helps to make changes easier when they need to be implemented.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

How is refactoring done?

A

The programming team looks for any improvements that can be made within the code and implement them even if there is no immediate reason for it. In doing this, the code becomes much more understandable

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

What is test-first development?

A

Tests are created along with the rest of the software, not after it has been completed. Tests are made for every change that is made to the software product.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is the drawback of test first development?

A

Since the test cases and test automation are created alongside the software they must pass the same quality control tests as the rest of the software even though they won’t be released.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is test automation and why is it useful?

A

Test automation is when the tests are written as executable components before the task is implemented. This is useful because it means whenever we finish implementing a particular piece of the software we have many test cases ready to go.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is pair programming?

A

Programmers literally working in pairs at the same machine to develop the software.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Why is pair programming useful?

A

Helps with spreading knowledge quickly across the team, serves as an informal review since more than one person is looking at the code, and encourages refactoring since all of the team members will benefit

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

How are pairs created in pair programming?

A

They are created dynamically so every programmer works with every other programmer at some point

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

What is scrum?

A

Scrum is an agile methodology with a focus on project management.

18
Q

What type of environment must a scrum master foster?

A

An environment where a product owner orders the work for a problem into a product backlog, the scrum team turns a selection of the work into an increment of value for the sprint, and the scrum team and stakeholders inspect the results and adjust for next sprint.

19
Q

What is a scrum team?

A

A self-organizing group of developers usually 3-9 people

20
Q

What is a potentially shippable product increment?

A

The software increment delivered from a sprint that should be up to quality to be immediately shipped.

21
Q

What is the product backlog?

A

A list of to-do items for the project that the scrum team must complete. The priority of each item is decided by the product owner

22
Q

What is a scrum meeting?

A

A daily meeting where the scrum team reviews what has been done and prioritizes work to be done that day.

23
Q

What is a scrum master?

A

A project manager for a scrum team. Their job is to ensure that the scrum process is being followed and to act as a liaison between the scrum team and the rest of the company

24
Q

What is a sprint?

A

A single development iteration used in scrum. Usually around 2-4 weeks

25
Q

What is velocity?

A

The amount of work that is done within a period of time. Could be based on story points or person hours

26
Q

What are the activities and the inputs/outputs of a sprint cycle?

A

Activities: review work to be done, select items, plan the sprint, do the sprint, scrum meeting, review the sprint
Inputs/outputs: Product backlog, sprint backlog, potentially shippable software

27
Q

How do you calculate sprint velocity?

A

Take the average number of story points completed per sprint

28
Q

How are the number of story points per user story decided?

A

Based on previous experience, they are assigned a number of story points based on the complexity of the task. The scale they are based on may be linear but most common is Fibonacci

29
Q

What is planning poker?

A

A “game” to assign story points. Each member of the team is given cards with various numbers and symbols. They vote on how many story points a user story should get using the number cards. They can also use the question mark card if they need more information to do a certain user story or it can be given infinity which means it is too complex to implement

30
Q

What are the advantages of scrum methodology?

A
  1. Larger projects are broken down into more manageable chunks
  2. The approach ensures efficient use of client time and money
  3. The development team and client work closer together and receive more feedback
  4. It allows for increased flexibility
31
Q

What is kanban?

A

An agile software development practice based on visual project management to track tasks and reduce inefficiencies

32
Q

How does kanban differ from scrum?

A

Scrum is a discrete process whereas kanban is a continuous process. What this means is that scrum work is organized into sprints of defined length where work is selected and added to a sprint backlog to complete. In kanban, user stories are continually being moved from the backlog, to in progress, to complete, until the project is finished.

33
Q

Why is it difficult to scale up agile methods?

A

Agile works best with small, co-located teams so when the teams get much larger and spread out it is difficult to maintain the level of communication agile requires.

34
Q

Why can the informality of agile be a bad thing?

A

Because many companies are strictly regulated and organized. They do their business using unambiguous contracts. This contract style is not available in agile as there is not guarantee at the start of the project what exact work will be done.

35
Q

What are the practical problems with agile?

A

Many large companies have employees spread out all over the world so it may be difficult to get co-located teams. Additionally, since agile work is done in sprints, it is difficult to translate this to the maintenance phase which occurs over a period of years with unpredictable workload

36
Q

What are some system issues to consider when deciding on agile or plan-driven process?

A
  1. Consider the size of the system: large systems are better suited for plan-based as they require more documentation and organization. Small systems are good for agile as agile requires small teams.
  2. Consider the type of system being developed: Complicated systems that require a lot of analysis are better for plan-driven models while less complex systems are better for agile.
  3. Consider the expected system lifetime: longer system lifetimes are better for plan-driven models because the lasting documentation will help when team members inevitably leave the project.
  4. Consider whether or not the system is externally regulated: if the system is regulated by an outside body like a government, there may be requirements for documentation and testing that must be followed during development
37
Q

What are some people issues to consider when deciding on agile or plan-driven process?

A
  1. Consider how good the developers on the team are: it takes more skill to translate requirements into code when there is not detailed documentation to go off of. So, more skilled teams can use agile easier
  2. Consider how the team is organized: if the team is no co-located, more documentation may be required to communicate intentions
  3. Consider the support technologies required: Since there is not as much design documentation in agile, more support software is needed to visualize the process and perform program analysis. With plan-driven models, more support software is needed for the planning phase where documentation and diagrams must be produced.
38
Q

What are some organizational issues to consider when deciding on agile or plan-driven process?

A
  1. Consider if heavy documentation is a common organizational practice: If the organization is already in the habit of producing detailed documentation they may want to stick with a plan-driven approach
  2. Consider if customer representatives will be available: If there is no one to provide feedback on the product and make clarifications, the iterative nature of agile will not work well. Instead, documentation should be planned and produced at the very beginning so there are no ambiguities
39
Q

What is the difference between the product backlog and the sprint backlog?

A

A product backlog is the list of all user stories that need to be completed for the project as a whole along with their priority ranking and number of story points. A sprint backlog is a subset of tasks from the product backlog that have been selected to be completed during the current sprint.

40
Q

What are some drawbacks of test-first development?

A

It can be time consuming. Instead of focusing just on development you must also focus on making the test cases and automation. If changes are made later on, the changes must be made both in the code and the tests. More time is spent evaluating the tests as they need to go through the same checks as the rest of the code.

41
Q

Why is scrum preferred in organizations over extreme programming?

A

Extreme programming gets development done fast but it is messy as there is no project management being done like there is with scrum.