Software Methodologies Chapter 4
Use cases
use cases are a kind of scenario that are included in the UML (unified modeling language) use cases identify the actors in an interaction and which describe the interaction itself. a set of use cases should describe all possible interactions with the system high-level graphical model supplemented by more detailed tabular description UML sequence diagrams may be used to add detail to use-cases by showing the sequence of event processing in the system
tabular specification
used to supplement natural language. particularly useful when you have to define a number of possible alternative courses of action.
types of requirements
user requirements, system requirements
requirements checking
validity: does the system provide the functions which best support the customer's needs? consistency: are there any requirements conflicts? completeness: are all functions required by the customer included? realism: can the requirements be implemented given available budget and technology? verifiability: can the requirements be checked?
ethnography
1. a social scientist spends a considerable time observing and analyzing how people actually work. 2. people do not have to explain or articulate their work 3. social and organizational factors of importance may be observed. 4. ethnographic studies have shown that work is usually richer and more complex than suggested by simple system models
structured specifications
1. an approach to writing requirements where the freedom of the requirements writer is limited and requirements are written in a standard way. 2. this works well for types of requirements (requirements for embedded control systems but is sometimes too rigid for writing business system requirements)
guidelines for writing requirements
1. invent a standard format and use it for all requirements 2. use language in a consistent way. use shall for mandatory requirements. 3. use text highlighting to identify key parts of the requirement. 4. avoid the use of computer jargon 5. include an explanation (rationale) of why a requirement is necessary.
requirements elicitation and analysis process activities
1. requirements discovery: interacting with stakeholders to discover their requirements. domain requirements are also discovered at this stage. 2. requirements classification and organization: groups related requirements and organizes them into coherent clusters. 3. prioritization and negotiation: prioritizing requirements and resolving requirement conflicts 4. requirements specification: requirements are undocumented and input into the next round of the spiral
scope of ethnography
1. requirements that are derived from the way that people actually work rather than the way in which process definitions suggest they ought to work 2. requirements that are derived from cooperation and awareness of other people's activities. awareness of what other people are doing leads to change in the way in which we do things. 3. ethnography is effective for understanding existing processes but cannot identify new features that should be added to a system.
requirements specification
1. the process of writing down the user and system requirements in a requirements document. 2. user requirements have to be understandable by end-users and customers who do have a technical background. 3. system requirements are more detailed requirements and may include more technical information. 4. the requirements may be part of a contract for the system development. it is therefore important that these are as complete as possible.
system requirements
a structure document setting out detailed descriptions of the system's functions, services and operational constraints. defines what should be implemented so may be part of a contract between client and contractor
scenarios
a structure form of user story; should include: 1. description of the starting situation 2. description of the normal flow of events 3. a description of what can go wrong 4. information about other concurrent activities 5. description of the state when the scenario finishes
System stakeholders
any person or organization who is affected by the system in some way and so who has a legitimate interest. stakeholder types: end-users, system managers, system owners, external stakeholders
problems with interviews
application specialists may use language to describe their work that isn't easy for the requirements engineer to understand. interviews are not good for understanding specific domain terminology. some domain knowledge is so familiar that people find it hard to articulate or think that it isn't worth articulating.
stories and scenarios
are real-life examples of how a system can be used. are a description of how a system may be used for a particular task. because they are based on a practical situation, stakeholders can relate to them and can comment on their situation with respect to the story
requirements elicitation and analysis
called requirements elicitation or requirements discover. involves technical staff working with customer to find out about the application domain, the services that the system should provide and the system's operational constraints. may involve end-users, manager, engineers involved in maintenance, domain experts, trade unions, etc. These are called stakeholders
readers of user requirements
client managers, system end-users, client engineers, contractor managers, system architects
focused ethnography
combines ethnography with prototyping. prototype development results in unanswered questions which focus the ethnographic analysis. the problem with ethnography is that it studies existing practices which may have some historical basis which is no longer relevant.
requirements completeness and consistency
complete: they should include descriptions of all facilities required. consistent: there should be no conflicts or contradictions in the descriptions of the system facilities. in practice, because of system and environmental complexity, it is impossible to produce a complete and consistent requirements document
requirements validation
concerned with demonstrating that the requirements define the system that the customer really wants. requirements error costs are high so validation is very important
non-functional requirements
constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, etc. Often apply to the system as a whole rather than individual features or services. 1. these define system properties and constraints (reliability, response time, and storage requirements). constraints are I/O device capability, system representations, ets. 2. process requirements may also be specified mandating a particular IDE, programming language, or development method. 3. non-functional requirements may be more critical than function requirements. if these are not met, the system may be useless
domain requirements
constraints on the system from the domain of operation
requirements change management
deciding if a requirements change should be accepted. problem analysis and change specification. change analysis and costing. change implementation.
form based specifications
definition of the function or entity, description of inputs and where they come from, description of output and where they go to, information about the information needed for the computation and other entities used, descriptions of the action to be taken, pre and post conditions, the side effects (if any) of the function
requirements management planning
establishes the level of requirements detail that is required.
interviewing
formal or informal interview with stakeholders are part of most RE processes. types of interview: 1. closed interview based on pre-determined list of questions 2. open interviews where various issues are explored with stakeholders
graphical notations
graphical models, supplemented by text annotations, are used to define functional requirements for they system. UML use case and sequence diagrams are commonly used.
requirements and design
in principle, requirements should state what the system should do and the design should describe how it does this. In practice, requirements and design are inseparable. 1. a system architecture may be designed to structure the requirements. 2. the system may inter-operate with other systems that generate design requirements. 3. the use of a specific architecture to satisfy non-functional requirements may be a domain requirement. this may be the consequence of a regulatory requirement.
requirements document variability
information in requirements document depends on type of system and the approach to development used. systems developed incrementally will, typically, have less detail in the requirements document. requirements documents standards have mostly been designed IEEE standard. these are mostly applicable to the requirements for large systems engineering projects
what is a requirement?
it may range from a high-level abstract statement if a service or of a system constraint to a detailed mathematical functional specification. this is inevitable as requirements may serve a dual function. may be the basis for a bid for a contract-therefore must be open to interpretation. may be the basis for the contract itself-therefore must be defined in detail. both these statements may be called requirements.
problems with natural language
lack of clarity (precision is difficult without making the document difficult to read), requirements confusion (functional and non-functional requirements tend to be mixed-up), requirements amalgamation (several different requirements may be expressed together)
agile methods and requirements
many agile methods argue that producing detailed system requirements is a waste of time as requirements change so quickly. the requirements document is therefore always out of date. agile methods usually use incremental requirements engineering and may express requirements as 'user stories.' this is practical for business systems but problematic for systems that require pre-delivery analysis (critical systems) or systems developed y several teams.
ways of writing a system requirements specification
natural language, structured natural language, design description languages, graphical notations, mathematical specifications
non-functional requirements implementation
non-functional requirements may affect the overall architecture of a system rather than the individual components. a single non-functional requirement, such as a security requirement, may generate a number of related functional requirements that define system services that are required. it may also generate requirements that restrict existing requirements
goals and requirements
non-functional requirements may be very difficult to state precisely and imprecise requirements may be difficult to verify. goal: a general intention of the user such as ease of use. verifiable non-functional requirement: a statement using some measure that can be objectively tested. goals are helpful to developers as they convey the intentions of the system users
interviews in practice
normally a mix of closed and open-ended interviewing. interviews are good for getting an overall understanding of what stakeholders do and how they might interact with the system. interviewers need to be open-minded without pre-conceived ideas of what the system should do. you need to prompt the user to talk about the system by suggesting requirements rather than simply asking them what they want.
requirements imprecision
problems may arise when functional requirements are not precisely stated. ambiguous requirements may be interpreted in different way by developers and users.
non-functional classifications
product requirements, organizational requirements, external requirements
requirements reviews
regular reviews should be held while the requirements definition is being formulated. both client and contractor staff should be involved in reviews. reviews may be formal (with completed documents) or informal. Good communications between developers, customers and users can resolve problems at an early stage
natural language specification
requirements are written as natural language sentences supplemented by diagrams and tables. used for writing requirements because it is expressive, intuitive and universal. This means that the requirements can be understood by users and customers
requirements engineering process generic activities
requirements elicitation, requirements analysis, requirements validation, requirements management. in practice, RE is an iterative activity in which these processes are interleaved
requirements management decisions
requirements identification: each requirement must be uniquely identified so that it can be cross-reference with other requirements. a chge management process: this is the set of activities that assess the impact and cost of changes. Traceability policies: these policies define the relationships between each requirement and between the requirements and the system design that should be recorded. Tool support: tools that may be used range from specialist requirements management systems to spreadsheets and simple database systems
requirements validation techniques
requirements reviews: systematic manual analysis of the requirements. prototyping: using an executable model of the system to check requirements test-case generation: developing tests for requirements to check testability
organizational requirements
requirements which are a consequence of organizational policies and procedures (process standards used, implementation requirements, etc.)
external requirements
requirements which arise from factors which are external to the system and its development process (interoperability requirements, legislative requirements, etc.)
product requirements
requirements which specify that the delivered product must behave in a particular way (execution speed, reliability, etc.)
index
several indexes to the document may be included. as well as a normal alphabetic index, there may be an index of diagrams, an index of functions, and so on.
metrics for specifying non-functional requirements
speed, size, ease of use, reliability, robustness, portability
requirements elicitation
staged include: requirements discovery, requirements classification and organization, requirements prioritization and negotiation, requirements specification
problems or requirements elicitations
stakeholders don't know what they really want. stakeholders express requirements in their own terms. different stakeholders may have conflicting requirements. organizational and political factors may influence the system requirements. the requirements change during the analysis process. new stakeholders may emerge and the business environment may change.
user requirements
statements in natural language plus diagrams of the services the system provides and its operational constraints, written for customers
functional requirements
statements of services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations. may state what the system should not do. 1. describe functionality or system services 2. depend on the type of software, expected users and the type of system where the software is used. 3. functional user requirements may be high-level statements of what the system should do. 4. functional system requirements should describe the system services in detail
readers of system requirements
system end-users, client engineers, system architects, software developers
changing requirements
the business and technical environment of the system always changes after installation. the people who pay for a system and the users of that system are rarely the same people. large systems usually have a diverse user community, with many users having different requirements and priorities that may be conflicting or contradictory
Requirements Engineering
the process of establishing the services that a customer requires from a system and the constraints under which it operates and is developed. the system requirements are the descriptions of system services and constraints that are generated during the requirements engineering process
requirements discovery
the process of gathering information about the required and existing systems and distilling the user and system requirement from this information. interaction is with system stakeholders from managers to external regulators. Systems normally have a range of stakeholders.
requirements management
the process of managing changing requirements during the requirements engineering process and system development. new requirements emerge as a system is being developed and after is has gone into use.
structured natural language
the requirements are written in natural language on a standard form or template. each field provides information about an aspect of the requirement.
natural language
the requirements are written using numbered sentences in natural language. each sentence should express one requirement.
the software requirements document
the software requirements document is the official statement of what is required of the system developers. should include both a definition of user requirements and a specification of the system requirements. it is NOT a design document. it should be a set of WHAT the system should do rather than HOW it should do it
mathematical specifications
these notations are based on mathematical concepts such as finite-state machines or sets. although these unambiguous specifications can reduce the ambiguity in a requirements document, most customers don't understand a formal specification. They cannot check that it represents what they want are reluctant to accept it as a system contract
appendices
these should provide detailed, specific information that is related to the application being developed
design description languages
this approach uses a language like a programming language, but with more abstract features to specify the requirements by defining an operational model of the system. this approach is now rarely used although it can be useful for interface specification
system architecture
this chapter should present a high-level overview of the anticipated system architecture, showing the distribution of functions across system modules. architectural components that are reused should be highlighted.
system models
this might include graphical system models showing the relationships between the system components and the system and its environment. examples of possible model systems are object models, data-flow models, or semantic data models
preface
this should define the expected readership of the document and describe its version history, including a rationale for the creation of a new version and a summary of the changes made in each version
glossary
this should define the technical terms used in the document. you should not make assumption about the experience or expertise of the reader.
system requirements specification
this should describe the functional and non-functional requirements in more detail. if necessary, further detail may also be added to the nonfunctional requirements. interfaces to other system may be defined.
system evolutions
this should describe the fundamental assumptions on which the system is based, and any anticipated changes due to hardware evolution, changing user needs, and so on. this section is useful for system designers as it may help them avoid design decisions that would constrain likely future changes to the system
introduction
this should describe the need for the system. it should briefly describe the system's functions and explain how it will work with other systems. it should also describe how the system fits into the overall business or strategic objectives of the organization commissioning the software.
review checks
verifiability: if the requirement realistically testable? comprehensibility:is the requirement properly understood? traceability: is the origin of the requirement clearly stated? adaptability: can the requirements be changed without a large impact on other requirements?
user requirements definition
you describe the services provided for the user. the non-functional system requirement should also be described in this section. this description may use natural language, diagrams, or other notations that are understandable to customers. product and process standards that must be followed should be specified