Requirements. Requirement Analysis, Requirement Types , SWEBOK

Lecture



  • Life cycle tasks
  • Variety of requirements
  • Requirements analysis
  • What is Exit / Acceptance Criteria
  • Pitfalls and the concept of Consistency

Requirements is a specification (description) of what should be implemented.
Requirements describe what needs to be implemented, without detailing the technical side of the solution. What, not how.

Requirements for requirements:
• Correctness
• Unambiguity
• Completeness of requirements
• Consistency of requirements set
• Testability (testability)
• traceability
• Understanding

Requirements.  Requirement Analysis, Requirement Types , SWEBOK

Requirements.  Requirement Analysis, Requirement Types , SWEBOK

Requirements analysis is a part of the software development process, which includes the selection of software (software), their systematization, identification of interrelations, as well as documentation. In the English-speaking environment, they also talk about the discipline “requirements engineering” (English Requirements Engineering ). In the process of collecting requirements, it is important to take into account possible contradictions of the requirements of different stakeholders, such as customers, developers or users.

The completeness and quality of the requirements analysis plays a key role in the success of the entire project. Software requirements must be documented, executable, testable, with a level of detail sufficient for system design. Requirements can be functional and non-functional.

Requirements analysis includes three types of activities:

  • Collecting requirements - communicating with customers and users to determine what their requirements are; domain analysis.
  • Requirements Analysis - determining whether collected requirements are unclear, incomplete, ambiguous, or contradictory; solving these problems; identification of the relationship requirements.
  • Documenting Requirements — Requirements can be documented in various forms, such as a simple description, usage scenarios, user histories, or process specifications.

Requirements analysis can be a long and difficult process, during which many subtle psychological skills are involved. New systems change the environment and relationships between people, so it is important to identify all interested parties, take into account all their needs and ensure that they understand the implications of new systems. Analysts can use several methods to identify the following requirements from a client: conducting interviews, using focus groups, or creating lists of requirements. More modern methods include prototyping and use cases. Where necessary, the analyst will use a combination of these methods to identify the exact requirements of the stakeholders so that a system is created that satisfies business needs.

Phases

The process of analyzing information system requirements includes the following phases: [1]

  • Requirements development
    • Identify requirements
    • Requirements analysis
    • Requirements specification
    • Requirements Verification
  • Requirements Management

Identify and analyze requirements

Stakeholder Identification

A stakeholder is an individual or organization that has rights, shares, requirements or interests in relation to a system or its properties that meet their needs and expectations (ISO / IEC 15288: 2008, ISO / IEC 29148: 2011).

Stakeholder Survey

Stakeholder survey is a widely used technique in collecting requirements. These surveys can identify requirements that are not within the scope of the project or that contradict previously collected. However, each stakeholder will have their own requirements, expectations and vision of the system.

Sessions of joint development of requirements (СРТ)

Requirements often have complex intersecting functionality, not known to individual stakeholders. Such requirements are often overlooked or not fully determined during their interviews. Such requirements can be identified during CPT sessions. Such sessions are conducted under the supervision of a trained specialist. Stakeholders participate in discussions to identify requirements, analyze their details and reveal hidden intersecting relationships between requirements.

Requirements specification

Requirements Lists

The traditional way to document requirements is to create lists of requirements. In a complex system, such lists of requirements may take hundreds of pages.

The corresponding metaphor can be an extremely long shopping list in a store. Such lists are extremely ineffective in modern analysis, although they are still used today.

Benefits

  • Provides a checklist of requirements.
  • Provides a contract between customers and developers.
  • For a large system can provide a high level description.

disadvantages

  • Such lists can take hundreds of pages. In fact, it is impossible to read such documents in general and get a clear understanding of the system.
  • Such lists of requirements list individual requirements in the abstract, divorced from each other and from the context of use.
    • This abstraction makes it impossible to see how requirements communicate with each other or work together.
    • This abstraction prevents correct prioritization of requirements; while the list does make it easier to prioritize individual items, removing one item from context can make the entire usage scenario or business requirement useless.
    • This abstraction increases the likelihood of misinterpretation of requirements; since the more people will read them, the greater will be the number of (different) system interpretations.
    • This abstraction means that it is extremely difficult to make sure that you have all the necessary requirements.
  • These lists create a false sense of mutual understanding between stakeholders and developers.
  • These lists give stakeholders a false sense of security that developers must accomplish certain things. However, due to the nature of these lists, they inevitably overlook important requirements that will be revealed later in the process. Developers can use new requirements to revise terms and conditions in their favor.

Alternatives to requirement lists

Alternatives to large, predefined requirements lists can be user stories that define requirements in ordinary language.

Measurable targets

Best practices view the compiled list of requirements simply as clues and constantly ask “why?” Until true business goals are revealed. After that, stakeholders and developers can develop tests that measure what level of each goal has been achieved. Such goals change more slowly than a long list of certain, but immeasurable requirements. Once a small set of critical, measurable goals is established, rapid prototyping and short development steps can provide real value to stakeholders even before the project is completed.

Prototypes (prototypes)

In the mid-1980s, prototyping was considered as a solution to the problem of requirements analysis. Prototypes - system layouts. Layouts allow users to submit a system that has not yet been built. Prototypes help users imagine what the system will look like, and make it easier for users to make design decisions without waiting for the system to complete. The greatest improvements in understanding between users and developers were often seen with the introduction of prototypes. Early system reviews lead to fewer changes in the later stages of development and therefore significantly reduce costs.

However, over the next decade, prototyping, although it was recognized as an effective technique, did not solve the problem of requirements analysis:

  • Managers, as soon as they see the prototype, it is difficult to understand that the final project will not be developed for some time.
  • Designers often feel compelled to use a prototype in a real system because they are afraid of “wasting time” by starting over.
  • Prototypes mainly help with design solutions and user interface design. However, they cannot tell you what the initial requirements were.
  • Designers and end users may focus too much on user interface design and too little on the production of a system that serves the business process.
  • Prototypes are great for user interfaces, but of little use for complex data processing or asynchronous processes that may involve complex database updates and / or calculations.

Prototypes can be flat diagrams (often called wireframes) or work programs that use synthetic functionality. Frameworks can be represented by graphic documents. In cases where the finished software should have a graphic design, color is removed from the frame (that is, a gray color palette is used). This helps prevent misunderstandings about the final look of the program.

Usage scenarios

Use Case (Eng. Use Case ) - a technique for documenting potential requirements for creating a new system or modifying an existing one. Each option describes one or more ways the system interacts with the end user or another system to achieve a specific goal. Use cases usually avoid technical jargon, preferring instead the language of the end user or expert in the field. They are often created jointly by requirements collectors and stakeholders.

Use cases are the most important tool for modeling requirements in order to specify the functionality of the software being developed or the system as a whole. They may contain an additional textual description of all the ways users can work with the software or the system. Such a text description is called a script. As a rule, use cases answer the question “What should the system do for a specific actor (English Actor )?” Without answering the question “How should the system implement this?” In this case, the text of the script complements the graphical representation of use cases in the description form a sequence of steps or actions, following which the user can achieve the desired goal while interacting with the system. The completeness of the functional requirements for the developed system is achieved by the specification of all use cases with appropriate scenarios, reflecting all the wishes and needs of users to the developed system.

Software Requirement Specification

The software requirements specification (eng. Software Requirements Specification, SRS ) is a complete description of the behavior of the system to be created. It includes a number of usage scenarios that describe all types of user interaction with the software. Usage scenarios are also known as functional requirements. In addition to usage scenarios, the software specification also contains non-functional (or additional) requirements. Non-functional requirements — requirements that impose additional constraints on the system (such as performance requirements, quality standards, or design constraints).

Recommended approaches for specifying software requirements are described in IEEE 830–1998. This standard describes the possible structures, desired content, and quality specifications of software requirements.

Types of requirements

Requirements are systematized in several ways. The following are general classifications of requirements that relate to technical management.

Customer requirements

Clients are those who perform the basic functions of system design, with a special focus on the user of the system as a key client. User requirements will determine the main goal of the system and, at a minimum, answer the following questions:

  • Operating or deployment requirements: Where will the system be used?
  • Mission Profile or Scenario: How will the system achieve mission objectives?
  • Performance Requirements: What system parameters are critical to achieving a mission?
  • Usage scenarios: How should the various components of the system be used?
  • Performance Requirements: How effective should the system be to complete the mission?
  • Operational life cycle: How long will the system be used?
  • Environment: Which environment should the system effectively manage?

Functional requirements

Functional requirements explain what needs to be done. They identify the tasks or actions to be performed. Functional requirements determine the actions that the system must be able to perform, the input / output relationship in the system behavior.

Non-functional requirements

Non-functional requirements - requirements that define the criteria for the operation of the system as a whole, rather than individual scenarios of behavior. Non-functional requirements define system properties such as performance, maintainability, extensibility, reliability, environmental factors of operation.

Derivative Requirements

Requirements that are implied or converted from a high-level requirement. For example, a requirement for a longer range or high speed may result in a low weight requirement.

Known requirements classification models include FURPS and FURPS + developed by Hewlett-Packard.

Requirements analysis problems

Stakeholder Problems

Steve McConnell, in his book "Rapid Development" [2], describes in detail how users can prevent the collection of requirements:

  • users do not understand what they want, or users do not have a clear idea of ​​their requirements;
  • users disagree with previously recorded requirements;
  • users insist on new requirements after the cost and schedule have been set;
  • communication with users is slow;
  • Users often do not participate in or are unable to participate in requirements reviews;
  • users are not technically prepared;
  • users do not understand the software development process.

This can lead to situations where user requirements continue to change, even when a system or development of a new product has been launched.

Engineering / Developer Problems

Possible problems caused by engineers and developers during requirements analysis:

  • Technical staff and end users may have different opinions. Consequently, they may incorrectly believe that they are in mutual understanding until the finished product is shipped.
  • Engineers and developers can try to adjust the requirements to fit the existing system or model, instead of developing a system that meets the needs of the client.
  • Analysis can often be performed by engineers or programmers, rather than personnel with skills to work with people and knowledge of the problem area.

Problem solution

One of the solutions to the problem of communication was to hire specialists in business or systems analysis.

Techniques introduced in the 1990s — prototyping, unified modeling language (UML), usage scenarios, and flexible development methodology — are also designed to solve the problems described above.

Exit criteria

Exit criteria are criteria or requirements that must be fulfilled to accomplish a specific task or process, as used in some areas of business or science, such as software development. [one]

The term Exit-criteria is often used in "R & D" ("Research and Development"), but this can be applied to any area where Business Process Reengineering is (or can be) applied. The benefits of "business process reengineering" - including the use of terms, as this one can include: understanding goals clearly, using language (and data) carefully when it comes to (or measuring) methods for getting things done, and taking scientific an approach to assessing and improving the methods that are used.

For example, for a Fagan inspection, a low-level document must meet certain criteria, an exit- (as indicated in a high-level document) before the development process can be taken to the next stage.

In the field of telecommunications, when testing new software or hardware for release, a set of test specifications are created to test this new product to ensure that it meets the minimum acceptable operational performance. This test specification will approve the minimum criteria required for the testing process to be be considered complete, and the product is ready for release. IE: Exit from the testing phase of the program.

Acceptance Criteria

Are we building a product? And are we building the product right?

Eligibility criteria are important yet, in my experience, an aspect of the iterative planning process is often forgotten or underestimated. Acceptance criteria play a very important role because the projects were successful or not based on the ability of the team to satisfy its clients with documented and perceived acceptance criteria. When we clearly define acceptance criteria for the front, we avoid surprises at the end of the sprint, or release, and provide a higher level of customer satisfaction. In other words, we can answer these two important questions: Are we building the right product? And, do we build the right product?

What are the acceptance criteria?

Acceptance criteria are the conditions that a software product must satisfy in order to be accepted by the user, customer, or in the case of system level functionality, the consumer *** of the system.

Acceptance criteria are a set of statements, each with a clear fit / non-fit result, which define functional and non-functional requirements and are applied in Epic, Feature and History Level. The eligibility criteria represent our "Definition Done", and did I mean well done.

We are not talking about horsheoes here, and there is no partial recognition: either the acceptance criteria is met or not.

When are acceptance criteria defined?

The trap that I call on my teams to avoid writing acceptance criteria after development has begun. This leads to simply verifying that the functionality of the inline work, rather than verifying that the functionality meets the needs of users and expectations. If we write and revise the acceptance criteria prior to the start of implementation, we are more likely to capture the client’s intent , rather than the reality of development .

What makes good acceptance criteria?

Acceptance criteria determine when a work item is complete and works as expected. Acceptance criteria should be clearly stated, in simple language the client will use, without ambiguity as to the expected result. This distinguishes our success testers, as they will take our acceptance criteria and translate them into automated test cases to run as part of our continuous integration of the assembly.

What kind. Not like.

Another trap that I train my teams to avoid is “like a trap. Acceptance criteria should indicate intent, but not a solution (for example,“ The user can approve or reject the account ”and not” the user can click the checkbox to approve the score "). The criteria should be implementation independent, and discuss what is expected, not how the functionality will be implemented.

Formats acceptance criteria

Considering / If / Then format is a useful way to define eligibility criteria:

Given some preconditions When I do some actions Then I expect some result

When we write acceptance criteria in this format, it not only provides a consistent structure, but we also help determine when testers start and end testing for this particular work item.

It is sometimes difficult to build acceptance criteria using a given, when, then format. In particular, when working with user stories at the system level. In those cases, I found that using the checklist checker works well.

Another advantage to checking control charts is that they are also easy to individually mark as complete as we implement the functionality.

What are some of the problems or methods you found when writing eligibility criteria?


Comments

Александр
01-12-2020
Ужасный перевод, смысл и идея статьи не понятны.
Админ
01-12-2020
что именно непонятно? какой раздел или понятие?
Лиза
10-03-2021
Статью не возможно читать . Такое чувство , что просто взяли иностранную статью всунули в Гугл переводчик и даже не читая скинули сюда . Просто мозг кипит , набор слов
Админ
10-03-2021
предложите предложения-исправления
Игорь
17-05-2021
Не статья, а набор слов. "Лучшие методы рассматривают составленный список требований просто как подсказки и постоянно спрашивают «почему?», пока не будут выявлены истинные деловые цели" ... что это вообще значит?
Админ
09-06-2021
Лучшие практики используют составленный список требований просто как прототип и постоянно используют вопрос «почему?»., до тех пор, пока не будут обнаружены фактические бизнес-цели. Затем заинтересованные стороны и разработчики могут разработать тесты, чтобы измерить, какой уровень каждой цели был достигнут на данный момент.

To leave a comment
If you have any suggestion, idea, thanks or comment, feel free to write. We really value feedback and are glad to hear your opinion.
To reply

Quality Assurance

Terms: Quality Assurance