Part A: Process & Requirements Flashcards
- Perspectives of software engineering (max 4 points)
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.
The 9 “P”s: 1. Programming 2. Principles of OO 3. Project 4. Process 5. Perfection 6. Product 7. Profit 8. Productivity 9. People 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
- XP Practices (max 4 points)
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 Practices
- 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 Practices
- Stories
- Weekly Cycle
- Quarterly Cycle
- Energized Work
- Slack
- Whole Team
- Sit Together
- Informative Workspace
- Pair Programming
- Incremental Design
- Test-First Programming
- Continuous Integration
- Ten-Minute Build
- XP Values (max 3 points)
Name the 5 values that underlie XP.
- Communication
- Respect
- Simplicity
- Courage
- Feedback
- Iterative and incremental development (max 3 points)
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”? Why are these concepts so important for the development of quality software?
Iteration – Perform repeatedly, i.e. adding new functionality in a repetitive or cyclic manner (repeated cycle).
Increment - Adding new functionality in small chunks. (smaller portions at a time)
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 delivered on time and be of higher quality
- The Waterfall Model (max 4 points)
Why is the waterfall model discredited as a software development approach? What advantages does it have?
- All requirements must be known prior to development, which greatly delays the project kickoff.
- Low flexibility level makes it difficult to make changes while developing, or even makes it completely impossible.
- There is a need for strict management and regular monitoring, so that the project will meet the deadline.
- The client does not have the opportunity to get acquainted with the system in advance, so he/she does not see the product until the moment of its completion.
- In chase it becomes clear in the process of development that the product does not meet the market requirement, where there will be no room for changes.
Advantages - Simple and easy to understand and use.
- Clearly defined stages.
- Well understood milestones
- Easy to arrange tasks.
- Process and results are well documented.
- Software process models (max 6 points)
Explain the difference between the “waterfall” model, the “spiral model” and the “V-model”.
Waterfall model – Requirements Analysis -> Design -> Development ->Testing ->Maintenance
Spiral model – Iterate in a spiral and do every step multiple times in smaller increments, gradually building up to a finished product.
V-model - Similar to waterfall, but evaluate each step with testing. Unit test, integration test, system test, acceptance test.
Both Spiral and V-model are improvements over Waterfall, as they avoid the “big bang release” at the end of Waterfall.
- DSDM Framework (max 5 points)
What does DSDM stand for? What are the principal phases of the DSDM framework?
DSDM = Dynamic Systems Development Method Four-Phase framework: 1. Feasibility and business study. 2. Functional model/prototype iteration. 3. Design and build iteration. 4. Implementation
- The V-model (max 5 points)
Describe how the V-model improves upon the Waterfall Model with particular reference to how it improves on the Waterfall model.
The V-model takes the waterfall model and introduces testing on every step of the way. For example, before moving on from the requirements specification, they are evaluated using acceptance testing, to make sure the requirements comply with what the client really wants.
The same idea is applied to every step of the way, with unit testing, integration testing, system testing, and acceptance testing.
This avoids the problems that come with the “big bang release” at the end of the waterfall model.
- RUP Framework (max 5 points)
What does RUP stand for? Name and briefly describe the four phases of RUP.
RUP = Rational Unified Process
Four phases of RUP:
1. Inception - The idea for the project is stated. The development team determines if the project is worth pursuing and what resources will be needed.
2. Elaboration - The project’s architecture and required resources are further evaluated. Developers consider possible applications of the software and costs associated with the development.
3. Construction - The project is developed and completed. The software is designed, written, and tested.
4. Transition - The software is released to the public. Final adjustments or updates are made based on feedback from end users.
- The Agile Manifesto (max 4 points)
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
- Good requirements (max 3 points)
What properties would you expect a good set of requirements to have?
- Correct
- Anambiguous
- Complete
- Consistent
- Ranked for importance and/or stability
- Verifiable
- Modifiable
- Traceable
- Requirements challenges (max 4 points)
What factors can make it difficult to obtain a useful set of requirements?
- Conflicting Requirements
- Customers don’t know what they want
- Unavailability of Stakeholders
- Changing Priorities
- Unsupportive Stakeholders
- Requirement priorities (max 3 points)
What labelling technique can be used to show how requirements are prioritized? Who should be setting these priorities?
MoSCoW -
1. Must: The requirement must be satisfied for the solution to be considered a success.
- Should: The requirement is important and should be included in the solution if possible, but it’s not mandatory to success.
- Could: It’s a desirable capability, but one that could be deferred or eliminated. Implement it only if time and resources permit.
- Won’t: This indicates a requirement that will not be implemented at this time but could be included in a future release.
- Use cases and scenarios (max 4 points)
Explain the difference between a “use case” and a “scenario”, making clear how scenarios can be identified. How can scenarios help testing?
A use case is a more general description of a system behaviour, and can have multiple paths and decision points.
A scenario is a particular run through a use case, taking only one of the paths.
So while a use case could be “purchase an item”, a scenario also specifies what item to buy, what payment methods to use, and all other specifics.
In testing, it is important to test all parts of the system, so just running through a use case once is not enough. Scenarios can be used to construct a set of paths through the use case such that every part is covered.
- Types of requirement (max 3 points)
What is the difference between a “functional” requirement and a “non-functional” or “quality” requirement? List at least 4 quality requirements.
A functional requirement describes what the system should do, it describes the functionality.
A nonfunctional requirement describes how the system should do it.
Examples of non functional requirements are:
● Performance / response time
● Security
● Usability
● Maintainability
● Availability / up-time
● Cost
● Documentation