
Note: These notes are a mixture of lecture material, textbook material and private research. All credit to the University of Melbourne.
Interviews
Communication Principles
- Listen to the client
- Prepare
- Use a facilitator
- Prioritise face-to-face communication
- Take notes
- Collaborate
- Stay focused
- Always move on
- Don’t treat it as a contest
Types
- Structured
- Unstructured
- Semi-structured
General protocol
- Identify
- understand organisations
- clarify sought data
- Plan
- learn about domain/terminology
- Conduct
- ask questions and record answers
- follow up answers
- Analyse Results
- get feedback
Pros | Cons |
---|---|
Answers trigger new questions | Subjective |
Captures perceptions and feelings | Hard to consolidate viewpoints |
Results dependent on interviewer |
Guidelines
- Identify set of stakeholders
- Establish rapport
- Focus on work/problems
- Keep open ended questions for end
- Follow up interesting answers
- Ask ‘why’ of established solutions
- Never say ‘usually’
- Encourage stories
- Find inconsistencies
- Don’t feat silence
Requirements Engineering
Repeatable process of gathering and refining requirements.
Waterfall Process
- Communication
- Gather requirements
- Planning
- Estimation
- Scheduling
- Tracking
- Modelling
- Analysis
- Design
- Construction
- Code
- Design
- Deployment
- Delivery
- Support
- Feedback
V-Model
- Requirements ↔ Acceptance
- Architectural ↔ System
- Component ↔ Integration
- Code ↔ Unit
Scope Creep refers to changes or continuous/uncontrolled growth in a project’s scope at any point after the project begins. Can occur when the scope is not properly defined or controlled.
Classic Requirements Engineering Process
- Inception
- Elicitation
- Specification/Modelling
- Negotiation
- Validation
- Requirements Management
Agile Inception
Helps to reach alignment and set expectations.
- Team gets ready to start a project
- 1-2 day meeting
- Involves dev team and clients
Identify:
- Vision/Goals
- Non-goals (out of scope)
- Risks
- Roles/Personas
- Activities/Workflows
- Stories
- Estimations
- Priorities
- Retrospective
Cultural Differences
Geert Hofstede factors:
- Power distance
- Individualism
- Masculinity
- Uncertainty avoidance
- Long Term Orientation
- Indulgence
Goal Modelling
How to keep “big picture” in software projects.
Why are we doing what we are doing?
Creates a shared understanding for everyone, and can be communicated with stakeholders.
Models
A model is an abstraction from the real world.
Benefits of a model:
- doesn’t over-elaborate
- supports discussion between stakeholders
- brings you closer to the final product
Lists
An intermediate step to organise data.
Created:
- Through a workshop with stakeholders
- By analysing data
Lists to create:
- Who - the stakeholders involved in the system
- Do - functional requirements of system
- Be - constraints/quality requirements on functionalities
- Feel - emotional/social considerations/concerns regarding features
Goal Model
Introduces the domain problem. Figure out the goal of the sought system.
Mapping the list to a goal model:
- Who → roles
- Do → functional goals
- Be → quality goals
- Feel → emotional goals and concerns/risks
Hierarchy:
- Top-down - general → specific, “how the super-goal will be achieved”
- Bottom-up - specific → general, “why the sub-goal is done”
Functional goals are linked to roles. If no explicit roles are listed, they inherit from above.
Quality and emotional goals are linked to functional goals.
Elicitation Techniques
Background Study
Study existing documents on:
- The organisation - e.g. org charts, business plans
- The domain - e.g. articles, regulations, reports
- The system-as-is - e.g. work procedures, business rules, user manuals
Questionnaires
Allows elicitation of subjective information. Can be a complement to interviews.
Style of questions:
- Multiple choice
- Likert scale (1-5, strongly agree-strongly disagree)
Pros | Cons |
---|---|
Low Cost | Biased information |
Remote respondents | No direct interaction |
Large Pool | Hard to provide context |
Questionnaires should be validated to mitigate problems. Some methods:
- Statistical significance of target audience
- No bias in formulation/presentation of Q/A
- No ambiguity in Q/A
Some implicitly redundant questions can help.
Repertory Grids
Useful to learn about certain concepts. One card per concept.
- Attributes
- Values (ranges) for attributes
Card Sorting
Useful to understand implicit classification. One concept per card. Partition the cards into subsets.
Focus Groups
Interviews with more than one participant.
Pros | Cons |
---|---|
Saves Time | Risky if there are alpha individuals |
Larger pool of opinions | Personal agendas may silence opinions |
Harder to analyse recordings |
Observation and Ethnographic Studies
Observing someone doing their job to help understand the problem.
Appropriate for complex organisations or cultural contexts.
Can be passive or active observation.
Pros | Cons |
---|---|
Elicit tacit knowledge | Very Expensive |
Takes a long time | |
Needs trust | |
Hawthorne effect |
The Hawthorne effect (observer effect) is where the subject of studies behaviour is altered due to the awareness of the study.
Processing the Data
Identify:
- Themes - e.g. types of goals
- Topics - e.g. instances
Storyboards
Loose form narrative of:
- System-as-is
- System-to-be
Tell the story as a series of quick, easy-to-understand snapshots.
- Passive - e.g. create story for understanding, validation
- Active - e.g. joint effort with client for exploration
Covers:
- Roles
- What happens to roles
- Why things happen
- “What if” scenarios
- Positive/negative consequences
Scenarios
Structured storyboard form. Used to understand how things are and how they should be.
Used to:
- Ask specific questions
- Understand underlying motivations and goals
- Represent desired behaviour
Pros | Cons |
---|---|
Concrete/Easy to understand | Partial, not comprehensive |
Brings stakeholders to same page | Hard to integrate all views |
Over-specification of interactions | |
Don’t detail motivation of interactions |
Product backlog and User Stories
Limitations of Classic Models
- Heavyweight development process
- Too slow
- Too much documentation
- Hard to adapt to change
- Hard to freeze requirements
- Projects run over-time, over-budget
Agile
Alternative to document-driven, heavyweight software development processes. Against process for the sake of process.
- Planning vs Immutable Plans
- Modelling vs 100s of unused pages
Manifesto
Individuals and interactions over proccesses and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
Principles
- Satisfy customer through early and continuous delivery of working software
- Welcome changing requirements
- Deliver working software frequently
- Business people/developers work together daily
- Utilise motivated individuals
- Face-to-face conversation
- Primary measure of progress is working software
- Sustainable development
- Technical excellence and good design
- Simplicity
- Self-organising teams
- Reflect on how to become more effective
Scrum
One of many different agile processes.
- Hard to understand problem from beginning
- Requirements are volatile
- Not realistic to stick to a plan
- Be quick to adapt
- Unexpected requirements
- New technologies
- New market conditions
Product Owner
- Defends clients interests
- Writes user stories
- Defines when user story is done
- Prioritises user stories
- Adds user stories to sprint backlog
- Stays away from technical aspects
Scrum Master
- Ensures integrity of scrum process
- Facilitates team events
- Steers team towards improvement
- Manages sprint bakclog and determines completion of tasks
- Promotoes self-organisation of team
Development Team
- Self-organised
- Analyse, design, develop, test
- Tackle complete iterations
Scrum Meetings
- Sprint planning
- 1 hr per week
- Define sprint backlog
- Correct story size
- Sprint duration, velocity, priorities, item size
- Scrum master
- Facilitator
- Product owner
- Clarify requirements
- Define acceptance criteria
- Resolve dependencies
- Dev team
- Determine effort involved
- Daily scrum/stand-up
- < 15mins
- Members commmit to each
- What did i do yesterday?
- What am i going to do today?
- Any impediments in the way?
- Sprint review meeting
- 30 mins
- Demo a product improvement, live not a report
- Assess items that are completed
- Incomplete items back to product backlog
- Product owner rethinks priorities
- Sprint retrospective
- 1 hr
- What is not working?
- What are we doing well?
- What should we start doing?
- Everyone votes on decisions for next sprint
Product Backlog
Requirements document for scrum. Shows what will be delivered in the order that it will be delivered. Continuously evolving docuement with initially only the well understood requirements. It can change dynamically to keep the product useful or adapt to market/new technologies. Product owner orders the product backlog and calculates priorities/dependencies.
Priorities
Used to order importance in product/sprint backlog.
MoSCoW:
- Must
- Should
- Could
- Won’t
Cumulative voting - resources are distributed across features
Priority = Urgency * Value
Urgency - time constraints, dependencies
Business value - importance to many customers, impact on brand/rep, competitive advantage
User Stories
As a role, I want to do something, so that I get some benefit.
Can also add given, when and then.
Number → Story → Weight
Weight:
- for comparison purposes
- can use Fibonacci numbers, t-shirt sizes
- hard to estimate without experience
- each team member should know how much weight they can pull
- velocity will change as teams adjust to each other
Acceptance Criteria:
- defined with user stories
- Given some precondition, when I do something then expected result
User story taxonomies:
- Product has features
- Feature has epics
- Epic has stories
User stories eventually decomposed into tasks.
In practice, user stories are conversation holders to be had between product owner and dev team.
User Acceptance Testing
Client determines whether they accpet the software. Whether it is:
- fit for purpose
- adheres to quality requirements
- meets contractual agreements
Just before the product is deployed. Black-box type of testing. Only performed when product has gone through all other testing (unit, integration, system)
Can be demo-based (product owner runs) or user-driven (client runs it)
Example template
Description - Preconditions - Steps to execute - Expected Results - Pass - Fail
- Comments
UAT Session:
- Before - ensure no bugs, give client test cases
- Client, QA team, Dev team
- Bugs - fix, leave in, leave in for future fix
- describe known bugs beforehand
- Result - go, no-go
- Use realistic data
- Don’t argue/agree with client
Quality Requirements
Non-functional requirements
Constraints on the software-to-be.
Not always clear seperation between:
- functional and non-functional requirements
- non-functional categories (often involve multiple categories)
Taxonomies
Help to identify hidden requirements and confilicts between requirements.
Taxonomies aren’t exhaustive but give a good indication of main classes.
- Van Lamsweerde’s
- ISO/IEC
Van Lamsweerde
- Safety - rule out effects that might result in accidents, degradations
- Security - prescribe protection against undesirable environment
behaviours
- confidentiality
- integrity
- availability
- Reliability - operate as expected over long periods
- Performance - operational conditions e.g. time/space, frequency, throughput
- Interface - phenomena shared by software-to-be and environment
- Useability - input/output formats to fit expectations/abilities of users
- Interoperability - effective cooperation with environment components
- Accuracy - state of information reflects physical environment
- Compliance - conform to laws, regulations, standards
- Architectural - distributions constraints - geographic, data, devices
- Development - way it should be developed - costs, schedules, maintainability, portability
ISO/IEC 25010:2011
- Product Quality model - static properties of software, dynamic properties of system
- Quality in use model - outcome of using product in particular context, human- computer system
Product Quality Model
- Functional suitability
- suitability
- accuracy
- interoperability
- security
- compliance
- Reliability
- maturity
- fault tolerance
- recoverability
- compliance
- Operability
- appropriateness
- recognisability
- ease of use
- learnability
- attractiveness
- technical accessibility
- compliance
- Performance Efficiency
- time behaviour
- resource utilisation
- compliance
- Security
- confidentiality
- integrity
- non-repudiation
- accountability
- authenticity
- compliance
- Compatibility
- replaceability
- co-existence
- interoperability
- compliance
- Maintainability
- modularity
- reusability
- analysability
- changeability
- modification stability
- testability
- compliance
- Transferability
- portability
- adaptability
- installability
- compliance
Quality in use
- Effectiveness - accuracy/completeness of user achieving goals
- Efficiency - resources expended in achieving goals
- Satisfaction
- likability
- pleasure
- comfort
- trust
- Safety
- economic damage
- healthy and safety
- environmental
- Usability
- learnability
- flexibility
- accessibility
- context conformity
Brainstorming
Team effort to propose creative ideas to solve a problem.
Guidelines:
- Do not judge, no bad ideas
- More ideas the better
- Wild ideas can bring new perspectives
- Ideas can be combined into new ones
Choose best ideas to prototype.
Obstacles:
- Ideas blocked by other ideas
- Fear of judgement
- Extroverts/Introverts may be incompatible
- Group behaviour adjustment
Tips/tricks:
- write ideas down
- change perspective
- write on walls
- numbered lists
- role play
- reframe prolbem
- non-stop writing
Mind Maps
- Visually organise info
- Central concept, hierarchical, relationships
- Start in cenre of page
- Use symbols, colours
- Branch out from centre
Technical Natural Language
Specifying requirements (elicited)
- system-to-be
- aids discussion betwen clients and dev team
- range of formalities
Natural Language
First obvious choice
Pros | Cons |
---|---|
No limitation in expressiveness | Prone to errors/flaws |
No communication barrier | Inherently ambiguous |
No special training |
Guidelines:
- identify audience first
- say what you are going to do
- motivate first, summarise after
- define concepts before using them
- one requirement per sentence
- keep sentences short
- avoid jargon/acronyms
- ‘shall’ = mandatory, ‘should’ = desirable
- use exmaples
- use bulleted lists for conditions of related items
- use diagrams
- use figures
- use tables
- avoid complex combinations of conditions
Errors in requirements
- Ommission
- missing objective, unstated software reponse to input
- very hard to detect
- Contradiction
- conflicting viewppints
- Inadequacy
- Ambiguity
- Unmeasurability
Flaws in requirements
- Noise - doesn’t convey information on problem
- Overspecification - thinking in terms of solution instead of problem
- Unfeasibility
- Unintelligibility
- Poor structuring
- Forward reference - references to not yet defined features
- Remorse - stating a feature too late
- Poor modifiability
- Opacity - rationale, authoring or dependencies are invisible
Quality factors
- Completeness
- include quality goals
- requirements to prevent undesirable effects
- output for all possible inputs
- sufficient detail for development
- Consistency
- Adequacy
- Unambiguity
- Measureability
- Pertinence - problem space nnot soltion space
- Feasibility
- Comprehensibility
- Good structuring
- Modifiability
- Traceability
Digital Prototypes
Shows key interface elements to be created. Show navigation to ensure expectations are met. Created early in development project as they are easy to change. Next natural step after a paper prototype. Allows client to use and “have a play”.
- Enables client to interact with system
- Client must understand they are only the skeleton, proof of concept
- Can give it a “sketched” look to prevent this risk
Conversation starter:
- Dev team - clarify functionality, navigation, business model, UI design
- Client - content position, interactive elemtns, functions, priorities
Uses:
- ideation
- usability testing
High vs low fidelity - depends what you want to get out of them
Low fidelity (e.g. paper prototype):
- major navigation/content elements
- don’t show colour, images, fonts
High fidelity (e.g. digital prototype):
- closer to UI design
- include click through navigation
- realistic data/images
Tips:
- keeps simple
- use a grid to ensure alignment
- add meaningful annotations
- encourage feedback
User Journeys
Scenario depicting how a user/customer interacts with a product being designed. Can be narrative or visual and are based on client research. Told from the perspective of the client, and considers the complete user experience (e.g. building trust, loyalty, not just based on transactions)
Uses:
- Understanding users behaviour e.g. pain points
- Demonstrate how the system could be used
Business goals:
- Change focus of organisations
- Break down silos (departments in company)
- Give ownership of problems to specific teams
- Target specific customers
- Understand quantitative data
Key elements of user journey:
- Persona (1 user journey per persona)
- Goals
- Motivations
- Pain points
- Character
- Tasks to achieve
- Scenario
- Stages (steps)
- Actions
- Thoughts
- Emotional Experience
- Opportunities
- Internal Ownership
Inconsistent Requirements
In Real World (as opposed to SWEN)
- range of goals
- range of support
- politics
Inconsistencies:
- multiple viewpoints/concerns
- must be detected
- identify hidden requirements
Types of inconsistencies:
- Terminology clashes - same concept different names
- Designation clash - same name different concpets
- Structure clash - same concept different structures
- Strong conflict - inconsistent logic when conisdered together
- Weak conflict - not always inconsistent, unless a boundary condition happens
Handling inconsistencies:
- Terminology, designation, structure
- Glossary of terms
- Precise and clear definitions
- Include accepted synonyms
- Strong/weak conflicts - look at the causes
- Inherent requirements incompatibilites
- Conflicting viewpoints
Why are there viewpoints?
- Large projects - partial expertise/uses of system
- Many stakeholders. Each is certain that
- their problem is hardest
- they are right
- their problem is most critical to solve
- everyone else can wait
Dealing with conflicting viewpoints
- Identify stakeholders
- Determine ‘win’ conditions
- Identify risks and uncertainties of win conditions
- Negotiate with everyone to seek win-win conidtions
For negotiations
- Identify non-conflicintg
- Identify conflicting
- Present conflicts to decision makers
Democractic decisions
- Vote to resolve
- Sticky dots on requirements
Hints
- Not a competition/fight
- Everyone should feel they have won
- Think out of the box
- Listen and empathise
- Not personal, focus on problem
- Commit to decisions and move on
Validation and Traceability
Requirements Validation
Requirements quality assurance.
Aim at finding errors/flaws e.g. incorrectness, incompleteness, ambiguity
Cost of errors increment with time so best to identify early.
Process:
- identify defects
- report
- analyse cause
- fix
Techniques
- query requirements DB
- animation-based validation
- formal verification - formal language, logic
- inspection and reviews
Inspection and Reviews
- widest applicability and scope
- applicable to any spec format
- textual
- diagrams
- formal
- get a person to look at doc and find problems
- potentially time consuming
Inspection Process
- varying degrees of formality
- internal vs external
- formal process
- inspection planning
- team size
- timeframe
- meetings
- reviewing
- looks for defects
- free mode - no instructions
- checklist based
- process based - split between inspectors
- defect evaluation
- collected and discussed - eliminate false positives
- identify causes of defects
- problems in process
- recommend actions
- documentation consolidation
- inspection planning
Types of Checklists
- Defect-based
- incompletenes
- inconsistent
- Quality-based
- non-functional requirements
- security, performance
- Domain-based
- Language-based
- formal/semi formal specs
- types, decision tables
Guidelines
- Identify objective facts, not opinions
- Constructive criticism
- Inspection team different from spec team
- Focus on critical aspects of system
- Focus on aspects presenting more errors and dependent parts
Requirements Traceability
System-to-be will have to evolve:
- new technologies
- new policies
- changes in business model
Need to prepare for change from the beginning. Traceability allows propagation of changes along all artefacts of the life cycle.
Traceability diagram:
- forward/backward
- horizontal/vertical
Traceability links:
- Dependency
- A affects B, B depends on A
- Change in A might require changing B
- Variant
- A source (master), B target (variant)
- B has all features of A plus more
- Revision
- B (next version) overrides A
- Use
- A used by B
- Changing A makes B incomplete
Maintaining traceability:
- Cross References
- Unique identifiers
- Indexing/tagging
- No semantics
- Traceability matrix
- Columns and rows are the items
- One type of relation
- Prone to errors if too large
- Feature diagram
- Decomposition of features as a tree
- Traceability database
- Stores all traceability info
Formal Methods
Rigorous mathematically based notation and language.
Concerned with reducing the number of faults in a system.
Mainly applicable for critical systems engineering. Cost-effective as there are high system failure costs.
Elements of formal methods:
- Specification Languages - mathematical basis for a formal method
- Program Refinement and Derivation
- Formal Verification
- Logical Inference
Formal methods reduce cost of validation, but increase cost of specification.
Users of formal methods:
- aviation
- rail
- medical devices
- nuclear power
- defence
Approaches to Formal Specification
Algebraic
- system described in terms of operations and their relationships
- define data types, functions and equations relating the functions
Model-based
- system modelled using math constructs e.g. sets, sequences
- operations defined by how they modify the system state
Can have Sequential or Concurrent languages
Sequential | Concurrent | |
---|---|---|
Algebraic | OBJ | Lotos |
Larch | ||
Model-based | VDM | Petri Nets |
Z | CSP | |
B |
Formal Specification
Investing more effort in the early phases of software development.
Forces detailed analysis of requirements → less errors.
Incompleteness and inconsistencies can be uncovered → savings as less rework.
They are precise and unambiguous. Remove areas of doubt.
Statecharts
An evolution of formal methods. Shows a good level of abstraction.
Questions
- Biased information (07 elicitation)
- Some implicitly redundant questions can help.
- Obersvation - Elicit tacit knowledge
- Passive vs active observation
- Hard to freeze requirements
- Scrum master “micromanages at times”
- Self-organised dev team, do they pick their team or just their tasks?
- All agile have those 4 meetings, or just scrum?
- 30 min sprint review meeting really enough to do QA?
- Cumulative voting in agile priorities
- Group behaviour adjustment
- Technical language - errors in requirements
- Democratic decisions - should we get involved?
- Animation based valiation
- Storyboard, Scenario, User Journey