Keywords Flashcards
Devil’s/iron triangle/triple constraints
Ensure that software is delivered
- On time
- Within budget
- In accordance with the requirements (scope)
(Quality could be added)
They are connected to each other: More requirements = more time needed = more budget needed
Agile manifesto
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Why is developing IT for government hard? (Elias Committee)
- National government is not ‘in control’ regarding ICT projects
- Politicians do not realize, but ICT is everywhere
o Almost all solutions require ICT, but they don’t plan for it - National government does not fulfill her ICT policy objectives
- The accountability and decision making structure is deficient
o Difficult who made what decision at what timepoint. There should be an additional oversight (ICT chamber), projects are killed by this oversight board - Government has insufficient insight in costs and benefits of ICT
o Very difficult and complex - ICT knowledge of the national government is lacking
o Some specialists, but they are typically rare or hired (consultancy firms). So the governments themselves don’t actually learn - ICT project management is weak
- ICT bid-for-tender procedures contain perverse incentives
o Most of the times the lowest cost wins the tender, which could make it less quality/ambitions. Then it has to be made bigger during the project - Management of contracts in ICT-projects is not professional
o The negotiation and checking of the other party complies to the contract isn’t done very well - National government lacks the necessary learning ability
o Not learning from mistakes. Can be done by installing an expertise center for ICT (the same as you have Rijkswaterstaat who is dedicated to the traffic/infrastructure)
There is no strong dialogue between the government and the (software) outside parties. Agile does try to enhance communication
Recommendations:
- 2. Demonstrate added value of project for end users and for society
o Not always clear (what’s in it for the stakeholders?)
- 3. Create support among all parties involved, including end-users, and test for organizational (does in fit the governance structure?), administrational (does it fit the administry?) and technical (does it connect to existing systems?) feasibility
- 10. Make use of a transparent bid-for-tender strategy in the business justification of a project, Project Initiation Document (PID): provides the foundation for the business project
o Make functional specification compulsory, or explain why not. Specific technical details are left to the provider
What are the characteristics of the Waterfall method?
Analysis - Design - Implement - Test - Adoption - Maintenance and Usage
- Hardly any company uses this anymore. Originated in the military to plan large logistics operations.
- Output of one phase flows in to the next phase.
- Managers like this because it is clear where you can draw the line/where it begins and ends. They can create results/milestones
- It has clear boundaries and deliverables
- Implement: Coding by a programmer
- Adoption: Testing is the last phase a developer will do. Then it will go into the organization who wants the software. Adoption is quite a long stage. Even if the software is good, it could not satisfy the needs of the client
What are the characteristics of the SDLC method?
System Analysis - Conceptual Design - Physical Design - Implementation and Conversion - Operation and Maintenance
- Iterative process
- There are a lot of libraries with software, you can probably pick some parts of those out for your own software, instead of starting from scratch
- Implement: Showing it to end-users, training them and conversion of data from old to new software
- 3 things in the middle (Feasability analysis, decision making, (re)planning): These have to be done in every step in the process
What are the characteristics of the Spiral model? (Boehm, 1998)
Analysis - Design - Implementation - Testing
- Sort of an Agile process. But these steps are normally longer (6 months)
- Iterative: timebox periods
o Set a time limit for a circle. So you will focus on the important things because you have to deliver something after 6 months e.g. Because most of the times the project will keep going on and on until time is up/deadline
- Risk management: drives decision making –> Risk considerations shape the (type of) process/model
- Various cycles: learn and improve
- Importance of validation and testing
- Concept of operation: Has to be validated by experts before being able to get to the next phase
What are the principles of Agile (Agile Manifesto)
Software development is a social process (focus on people)
- Satisfy customer
- Welcome change in requirements
- Deliver frequently
- Business and developers work together
- Facilitate motivated people to do their jobs
- Face-to-face communication
- Working software is the measure for progress
- Attention to technical excellence
• Make sure you can retain (technical) specialists by rewarding, providing interesting projects etc. - Simplicity
• Break things up in small parts that can be solved one by one - Self-organizing teams
• Help each other, no need for external managers, Agile specialist is part of the team - Teams evaluate, learn and adjust
• At the end of every sprint and in larger timeframes
What are the principles of Scrum?
- Split a project into brief manageable ‘sprints’ (2-4 weeks) –> facilitated by scrum master
- Utilize teams better
• They only focus on the sprint, after that they can go back to their department and do some studying for instance - Development and test
- Handle changes in requirements
- Product backlog: Large pool of things to be done, ordered by priority by the user
- Sprint backlog: What you want to do in this sprint. Teams normally know how much work to take into the sprint
- Iteration: Make the previous product better
- Testing: New thing integrated and is tested
- Daily stand-up: Should be very short (10-20 min)
- Potentially Shippable Product Increment: Improvement on the previous product. It is shippable because it is tested after every sprint
What are the principles of Extreme Programming (XP)?
Coding - Testing - Listening (what the customer really wants, but also observing the customer) - Designing
- Embrace Change: describe what the program should do in terms of user stories
- Pair programming: work together in pairs (better quality); no owner of code (If you write code, everyone else is able to finish it. Very clear variable names, comments etc. to make sure everyone understands it
- Test-First programming: first write test (define how the code should be working), then develop code, and then run test
- Continuous integration: code changes are tested when they are added to a larger code base
Work Breakdown Structure (WBS)
- Goal tree: when all leaves fulfilled, goal fulfilled
- For each goal, which activities need to be done.
- For each goal, when is it considered ‘ready’.
What are the principles of PRINCE2?
Generic project management methodolgy with 8 process groups and 45 separate subprocesses
- Starting up a project
- Planning
- Initiating a project
- Directing a project
- Controlling a stage
- Managing product delivery
- Managing stage boundaries
- Closing a project
What are the 6 crucial practices leaders should adopt if they want to capitalize on agile’s potential? (Rigby, Sutherland & Takeuchi, 2016)
- Learn how agile really works
- Understand where agile does or does not work
- Start small and let the word spread
- Allow “master” teams to customize their practices
- Practice agile at the top
- Destroy the barriers to agile behaviors
What is the main message of the article: No silver bullet? (Brooks, 1987)
- “The hardest single part of building a software system is deciding precisely what to build. No other part of the conceptual work is so difficult as establishing the detailed technical requirements. No other part of the work so cripples the resulting system if done wrong. No other part is more difficult to rectify later.”
- “But, as we look to the horizon of a decade hence, we see no silver bullet. There is no single development, in either technology or in management technique, that by itself promises even one order- of-magnitude improvement in productivity, in reliability, in simplicity.
Initial sketch
Communication between the developer, commissioner/sponsor and end user
A mock-up that is used as an early agreement
Use Case Diagram (UML)
Can help in the early stages to systematically record the (hidden) system requirements by writing down “use cases”: ways of using the system. It declares what and not how
- Primary actors
- Secondary actors
- Goals
- Context
- Precondition
- Success
- Failure
Purpose:
- Generate new requirements as the design takes shape
- Communicate with stakeholders
- Generate test cases
Functional requirements
Actions the system should perform (if I press this button, this should happen). Can be assigned to individual components of the system
Non-functional requirements
General properties the system should have (performance, security, reliability, usability, scalability, integrity etc.). Applies to the system as a whole
Design as a dialogue
- Principal (customer) and agent (developer)
- Developer knows the domain, but doesn’t know the customer needs
- Customer has needs, but doesn’t know what system they want
- Interpretation, negotiation, rapid prototyping, iterative, trying out real versions of the product, solving problems together
Requirements and design/configuration collaboration
Requirements are satisfied by components; components trigger new requirements; repeat until stable and feasible Requirement: Fast computer Component: Intel Core i7 Requirement: Cooling Component: Fan
Configuration: Problem closed, principles known, parts standard
Design: Problem open, principles unknown, parts to be developed
What are the 4 inherent properties/nature of software problems? (Brooks, 1987)
Complexity:
- Function of number of components/types of components/attributes/relations
- Function points are used for predicting effort, duration and errors
- Essence (inherent to the nature) and accidents (we have created –> bureaucracy etc.)
- Difficulty of communicating, enumerating and unreliability
Conformance:
- No universal standards/laws of nature
- Software has to conform to external expectations and norms, which differ between contexts
Changeability:
- Software can and must be changed, even after production (updates)
- New uses of existing software, software survives beyond the machine for which it is written
- There is always change, software should follow (VAT changes)
Invisibility:
- Software is abstract, not embedded in time and space
- Not one natural representation of structure, but several (data, process)
How can the nature of software problems be addressed? (Brooks, 1987)
- Remove accidental difficulties (make it easier for the developer)
- Address conceptual essence: buy vs build, requirements refinement, great designers
- Agile: remove accidenetal difficulties and address inherent complexity
How to address complexity? (Boehm, 1988)
Little by little
Iterative development
- Early results
- Feedback
- Learn and improve
Loosely coupled architecture
- Less dependencies
- Local decision making in clusters
Centralize
- From O(n2) to O(n) connections (less dependencies)
Standardization
- System of systems
- Interoperability
Re-use
- Buy vs build
- Libraries; task models; domain models
- Organizational learning
Brooks law
Adding manpower to a late software project makes it later
- New members need to learn, as software projects are complex. This takes existing resources away from development
- Draws communication overhead (number and variety of communication channels)
Requirements engineering
Has the task to align the needs and environment with the requirements specification
discipline to “capture, share, represent, analyze, negotiate, and prioritize requirements as a basis for design decisions and interventions” (Jarke et al, 2011)
Verification: Test if the system was built right (according to requirements) –> code walkthrough
Validation: Test if the right system was built (according to stakeholder needs and environment) –> experiments, inverviews, acceptance tests