Part I - Requirements Engineering Flashcards
Define software engineering
Responsible application of theories of software development, to provide cost effective construction of software systems, that provides value to users
What is software?
Anything in a computing system that is of value to stakeholders
Stakeholders include:
- users
- customer
- developers
- regulators
- etc
What are attributes that determine software quality?
Fitness for use
Correctness - does it contain faults
Reliability - how likely is it to fail
Performance - is it fast enough/how much space does it use
Maintainability - how easy is it to do maintenance in the future
Modifiability - how easy is it to change
Availability - how likely is it to be around when the user wants it
Reusability - how easy is it to reuse in different systems
Usability - how painful is it to use
What is quality assurance?
Making sure the process of developing software has good quality (fitness for purpose)
Making sure the product has good quality
ie making sure the client is satisfied with the result such that it is fit for their purpose and the product is made to a high standard
What are the stages of software development?
Requirements
Specification
Architecture
Detailed Design
Implementation
Testing
Deployment
Operation
Maintenance
Retirement
What is meant by the requirements stage?
Determine what the system should be (functional and non-functional requirements)
What is meant by the specification stage?
Describe the requirements precisely
What is meant by the architecture stage?
Make high-level decisions about design
What is meant by the detailed design stage?
Make low-level decisions about design
What is meant by the implmentation stage?
Create an executable system based on the requirements
What are the two examples of common software development processes?
Waterfall - idealised view of software development based on lifecycle (take in stages)
Agile - plan to react to change, takes iteration to the extreme
Describe the features of waterfall as a development process
Project is divided into sequential phases
Backtracking and change are discouraged
Focus on planning, scheduling ahead and following a budget
Fixed contract in the beginning on something that will be delivered in a set timeframe
Describe the features of agile as a development process
Flexible, iterative development
Short iterations called sprints are used for software development
Work is planned at the start of each sprint
Allows changing goals
What is requirements engineering?
An iterative process used to accurately determine the requirements of the product that is to be built
Follows an iterative process which includes 4 stages:
Elicitation
Analysis
Specification
Validationh
What are the two types of requirements?
Functional - things the product must do
e.g. the app should tell the time
Non-functional - qualities the product must have (Quality attributes)
e.g. the app should load in 3 seconds of the user’s request
What are quality attributes?
Non-functional requirements that a software product must have
Different to functional attributes which outline what the product should do
e.g.
Performance
Accuracy and Precision
Modifiability
Portability
Reliability
Availability
Security
Legal
etc
What are common problems that arise during requirements engineering?
Ambiguity - diverse interpretation of the same requirement
Change - clients make changes to what they require as the development is happening
Terminology - use of jargon can lead to different interpretations between clients and developers
Different perspectives - differences in how the stakeholders understand the requirement
What is the what vs how tension?
It is the idea that during requirements engineering, a requirement should describe what needs to be solved rather than how it needs to be solved ie should not describe the solution
Why is it important that a requirement does not describe the solution to a problem?
Closes doors to other, potentially better possibilities
What are the two domains of requirements engineering?
Application domain -> the world in which the problem exists (contains the domain properties and requirements)
Machine domain -> the world in which software solutions are developed (contains the computers and programs)
For good requirements engineering, these two domains must be separated. The problem that needs to be solved should come from application domain and the how should be implemented into the machine domain
When do you solve the problem?
There are various ways to define requirements
e.g. Just-in-time RE is a method in which it is only defined when needed and only at the detail required.
A good balance between a method like this and strategic, in advance RE is useful
Describe the elicitation stage of RE
The actions that are taken to understand the users and discover their needs
e.g. interviews, questionnaires, document analysis
Iterative process as participants will not think of everything up front (thinking will change during the project)
Describe the features of questionnaires as an elicitation activity
Good for answering specific questions
Can receive quantitative and qualitative data
Can reach many people easily (not a lot of resources required)
Design is crucial, response rate may be low, responses might not be what you want
Describe the features of interviews as an elicitation activity
Good for exploring issues
Mostly qualitative data
Interview can adjust questions as it occurs encouraging contact between developers and users
Time consuming, artifical environment, may intimidate interviewee
Describe the features of focus groups and workshops as an elicitation activity
Good for collecting multiple viewpoints
Mostly qualitative data
Highlights areas of consensus and conflict, encourages customer developer interaction
Possibility of dominant characters
Describe the features of naturalistic observation as an elicitation activity
Good for understanding context of user activity
Qualitative data
Observing actual work gives insight that other techniques cannot give
Very time consuming