Project & Configuration Management (WK10&11) Flashcards
What are the three types of risk?
Project risks: risks that affect the project schedule/resources (eg. main software architect quits)
Product risks: affect the quality or performance of the software being developed (eg. failure of purchased component to perform)
Business risks: affect the organisation developing the product (eg. competitor releases product faster)
What are the four stages in the risk management process?
- risk identification
- risk analysis (assess likelihood and consequences)
- risk planning (minimising the risks)
- risk monitoring (risk assessment)
Risk identification: list some examples of common risks.
- Estimation risks: time required for development underestimate, size of software underestimated
- Organisational: organisational restructure changes managers, organisational financial problems force budget reductions
- People: can’t recruit staff with right skills, key staff are ill and unavailable at critical times, required training for staff is not available
- Requirements: changes proposed with would require major rework, customers fail to understand impact of req changes
- Technology: database used in the system cannot process as many transactions per second as planned, reusable software components contain defects that mean they can’t be used as planned
- tools: software tools cannot work together in an integrated way
Risk Analysis: what are the scales for probability and consequence?
Probability: very low, low(10-25%), moderate(25-50%), high(50-75%), very high (>75%)
Consequence: Catastrophic (threaten the project survival), serious (would cause major delays), tolerable (delays are within allowed contingency), insignificant.
Risk planning: what are the three types of risk mitigation strategies?
- Avoidance strategies: reducing the probability that the risk will arise to zero
- Minimisation strategies; reducing the impact of the risk on the project
- Contingency strategies: contingency plans for if the risk does happen
What are four important people management factors?
- consistency
- respect
- inclusion
- honesty
What are four factors affecting software pricing?
- market opportunity: may quote a low price because want to move into a new segment of the market (under pricing)
- requirements volatility: if requirements are likely to change, organisation may lower its price to win the contract. After contract is won, high prices can be charged for changes.
- Contractual terms: price may be lower if the customer is willing to allow the developer to keep ownership of the source code
- Financial health: if in financial difficulty, developers may lower the price to gain the contract
What are the two cost estimation techniques?
- Experience-based techniques: estimate is based on managers experience of past projects and the application domain
- Algorithmic cost modelling: formulaic approach using factors such as size, staff experience, etc.
What is set out and included in a project plan?
Project plan sets out: resources available to the project, the work breakdown, schedule for carrying out the work.
Sections included in a principal project plan may include: introduction, project organisation, risk analysis, hardware and software resource requirements, work breakdown, project schedule, monitoring and reporting mechanisms
Project scheduling: what is included in a project activity?
- a Duration (in calendar days or moths)
- an effort estimate (number of person-days/months to complete the work)
- a deadline
- a defined end point (might be a document, review meeting, successful test execution, etc)
What are milestones and deliverables?
Milestones: points in the schedule against which you can assess progress (eg. the handover of a system for testing)
Deliverables: work products that are delivered to the customer (eg. requirement document for the system)
What is configuration management?
Tracking and controlling changes in software systems. Why is it important?
- can quickly find issues
- knowing why changes are happening
- better understanding of paste changes to avoid fucking up new changes.
What is a configuration item and examples
Products of the software process that may have to be placed under configuration management. Things such as: specifications, designs, code, test data, user manuals, etc.
Configuration items have unique names (with version numbers for example)
What is defined in a configuration management plan?
- types of documents too be managed and a document naming scheme
- who takes responsibility for config. management.
- policies for change control and version management (when why how long)
- config. manag. tools (eg. Git, SVN)
What is involved in a change request form?
Change proposed, who requested the change, the reason the change was suggested, urgency of the change. Also records change evaluation impact analysis, change cost and recommendations.
Agile recommendations for change management?
- log changes to backlog/change tracker
- eliminate as many approvals as possible
- have a light change control form if needed
- keep stakeholders and operations involved
What is a version vs a variant vs a release?
Version: an instance of a system that is functionally distinct from other system instances
Variant: an instance of the system which is functionally identical but non-functionally distinct from other instances of a system (ie one for Mac and one for Windows)
Release: instance of a system which is distributed to users outside of the development team.
Centralised vs Distributed version control systems
Centralised: a single master repository that maintains all versions of the software (eg. SVN)
Distributed: multiple versions of the repository exist at the same time (eg. Git).
Scemantic versioning - what does Vxx.xx.xx mean?
major.minor.patch
Major: making incompatible API changes
Minor: when you add changes in a backwards compatible manner (new stuff added, no changing old things)
Patch: making backwards compatible bug fixes
What/why/who of a changelog!
What: a file containing a chronological list of notable changes for each version of a project
Why: to make it easier for users and contributors to see precisely what notable changes have been made
Who: everyone needs it - we need to know how it changes
What may be included in a system release?
- config files
- Data files
- an installation program
- documentation
- packaging
- changelog
What are some problems with releases?
- customer may not want a new release of a system
- cannot assume that all previous releases have been accepted. need to make sure all files required for a release are re-created when a new release is installed.
What are four factors influencing system release planning?
- Competition (competing products being released)
- marketing requirements (marketing department may have made commitments)
- platform changes (may need a new release when a new OS is released)
- technical quality of system (serious system faults may need a fault repair release)
What are the three build platforms?
- The development system: includes development tools such as compilers, code editors, etc.
- the build server: used to build executable versions of the system
- the target environment: the platform on which the system executes (eg. a phone)
What occurs in the software build process? And what is a build tool?
In the build process you: resolve dependencies, compile the project, execute tests, create an executable file.
A build tool supports implementing a build process. Examples of build tool include make (Unix), Rake (Ruby), and Ant/Maven/Gradle (Java)