Summary: Lecture 13 Flashcards
Software Development Process Model
- Linear
- Iterative
- Concurrent
- Configurable or Adaptive
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
Requirement Elicitation
- Identify the project stakeholders
- Elaborate the full user requirements
- Draw the system boundary
- Understand the organisational context and culture
- Make hidden assumptions explicit
- Define other goals for the project.
Requirement Elicitation Techniques
- Questionnaires
- Observations
- Interviews
User Stories/Features
As an [actor]
I want to [action on or by the system]
so that [rationale]
As a first-time house buyer,
I want to enquire about available properties that match my preferences,
so that I can find somewhere to live.
As an estate agent,
I want to be notified about a new enquiry,
so that I can follow up with the new client.
Non-Functional:
As an buyer,
I want my search of properties to return in less than 5 seconds,
so that I don’t waste time.
Scenarios
Given [a fixture] And [another fixture] And [...] When [an action is performed on a feature] And [another action is performed on a feature] And [...] Then [a condition is holds] And [another condition holds] And [...]
Study Prioritisation - MOSCOW
- Must have
- Should have
- Could have
- Would be nice to have (or Won’t have this time)
Estimating Tasks Methods
- Delphi methods
- Market testing (priced to win, bidding)
- Empirical methods
- Algorithmic methods
Branching is useful for?
- Experimenting with implementation of new features
- Undertaking substantial reorganisation
- Supporting a specialised variant to an application
- Creation of a release
Software Development Life Cycle
- Planning: organising the project’s teams, creating a roadmap with target milestones, and defining high-level scope and objectives
- Analysis: defining requirements and getting them approved from the customer
- Design: Work on different aspects of design such as architecture, user interface, technical framework, and communications
- Development: Writing of the software program and documenting necessary software processes
- Testing: Involving various types of tests, including unit test, system integration, and user acceptance test
- Maintenance: Deploying the product and fixing bugs
Approaches to SDLC
- Predictive
- Planned and organised in advance
- Well-understood and well-defined requirements
- Low technical risk - Adaptive
- Flexible and modified in progress
- Uncertain requirements and needs
- High technical risk
Code Review Items
1) Application Source Code
2) Source Code Documentation
3) Test Code
4) Design Descriptions
5) Requirements Specifications
Why undertake code reviews?
- Detect defects in software
- Identify refactoring opportunities for poorly structured code
- Develop a shared understanding of code between developers
- Share good practice between team members
- Gain knowledge about legacy systems
When do code reviews take place?
- Periodically on a portion of the accepted code base.
- On a proposed change to a code base.
- Before a proposed change to a legacy system.
Defect Detection Rate
- Total Defects = U
m E methods
defects(m) + undetected defects - Defect Detection Rate(method) = |defects(m)| / |total defects|