Part A: Process & Requirements Flashcards
In addition to the core perspective of “Programming”, name 6 other perspectives that shape the way software development teams work. For one of these perspectives describe briefly some aspects to be considered.
he 9 “P”s. Project, Process, Perfection, Product, Profit, Productivity, People, Principles of OO
People perspective: People are a key factor for all teams. People with different personalities and skills can strengthen each other, as well as the opposite. One example, if running a project in XP and using paired programming, some people might be very uncomfortable in working that way, whereas others perform better when working closely together
Name 8 practices from XP. For full marks specify whether a practice is XP1 (1st Edition of Beck’s book), XP2 (2nd Edition) or common to both
XP1:
- The Planning Game
- Small Releases
- 40-Hour Week
- On-Site Customer
- Pair Programming
- Collective Ownership
- Metaphor
- Small Design
- Refactoring
- Testing
- Continuous Integration
- Coding Standards
XP2:
- The Planning Game
- Small Releases
- 40-Hour Week
- On-Site Customer
- Pair Programming
- Collective Ownership
- Metaphor
- Small Design
- Refactoring
- Testing
- Continuous Integration
- Coding Standards
Both:
Pair Programming
Continuous Integration
Name the 5 values that underlie XP
Simplicity Communication Feedback Respect Courage
The modern view of software development is that it should be both “iterative and incremental”.
What is the difference between an “iteration” and an “increment”?
An increment is a fully functional small piece of the software that is developed. In developing incremental software, the software is given to the customer in small increments, instead of a “big-bang” where the complete software is delivered at one time.
An iteration is one step in the process of refining a product. The goal is not to create a functional element at each iteration, but to improve the product.
The modern view of software development is that it should be both “iterative and incremental”.
Why are these concepts so important for the development of quality software?
The incremental and iterative development process is integral to the field of Agile software development as it enables project managers to reap the benefits of both incremental and iterative approaches.
Incremental development ensures that developers can make changes early on in the process rather than waiting until the end when the allotted time has run out and the money has been spent.
Iterative development means improvements are made on an ongoing basis, so the end result is likely to be of higher quality
The Waterfall Model
Why is the waterfall model discredited as a software development approach?
The waterfall model is a rigid model of development. To make a good product in the end, a very thorough analysis needs to be made in the startup of the project, since it is hard to make changes to the requirements under the process. It follows a strict process, that is not always how the real world looks like. Things change, things happen. The waterfall model has the problem of possibly developing functionality that is never used or even really asked for.
The Waterfall Model
What advantages does it have?
If the project is very large and the requirements can be decided at an early stage, the waterfall model can fit. If the project plan is followed, you should know what to expect in the end. Hopefully not more, not less.
Explain the difference between the “waterfall” model, the “spiral model” and the “V-model”.
The waterfall model and the V-model are very similar to each other. It is document-driven and heavyweight. The V-model is putting more emphasis on describing how testing is related throughout the project. Acceptance testing, integration testing, unit testing is connected to different parts of the process.
The spiral model incorporates the idea of delivering in increments and tries to handle the most important tasks first. For each “run” in the spiral, two activities follow, identify a subproblem which has high risk and find the solution to this problem.
What does DSDM stand for?
Dynamic Systems Development Method
What are the principal phases of the DSDM framework?
Pre-project Feasibility Study Business Study Functional Model Iteration Design and build the Iteration Implementation Post-project
Describe how the V-model improves upon the Waterfall Model with particular reference to how it improves on the Waterfall model.
The V-model improves upon the Waterfall model by adding a lot of stuff, mostly tests I think :).
Avoid the Big Bang
BDD: Behaviour Driven Dev TDD: Test Driven Dev SUT: System Under Test Inspections during the life-time of the project. Going back and reiterating SUD: System Under Dev
Unit testing, test scripts
Integration testing, Integration Test Plan
System testing, System Test Plan
Acceptance Testing, Acceptance Test Plan
Implicit re-work
What does RUP stand for?
Rational Unified Process
Name and briefly describe the four phases of RUP.
Inception - The idea for the project is stated. The development team determines if the project is worth pursuing and what resources will be needed.
Elaboration - The project’s architecture and required resources are further evaluated. Developers consider possible applications of the software and costs associated with the development.
Construction - The project is developed and completed. The software is designed, written, and tested.
Transition - The software is released to the public. Final adjustments or updates are made based on feedback from end users.
List the 8 components of the Agile Manifesto, in their correct pairs and making clear which of each pair is “favoured”.
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
What properties would you expect a good set of requirements to have?
Unambiguous Testable Clear Correct Understandable Feasible Independent Atomic Necessary Implementation-free