Requirements Engineering for System Families

State-of-the-Art


Where are we?

Requirements engineering, as discussed in Software Development, is the first phase within the development of a software system. The following phases are based on the information gathered and documented within requirements engineering. The output of the requirements engineering phase is the requirements model and the specification document.

The picture on the left shows the requirements engineering part of the system family development. Requirements engineering is divided in two main parts. 

Domain analysis is part of the domain engineering activities and is focused on finding and organizing the relevant domain information. Here the family is evaluated according to business issues and domain relevant requirements are elaborated. The resulting information is used to decide wether or not it is worth continuing with the development of the familiy. 

All informations about the family and the domain are stored in the Family Requirements Model. This model is the data storage for all kinds of information from simple hand drawings, meeting protocols up to UML diagrams to support the explanation of specific requirements.

Based on this model and thus based on the family, new applications will be analysed to check their applicability to the family. Is it possible to build a new application based on the family? Are the requirements of the new application inside the scope of the family? How many of the needed features can be taken out of the existing family and what features would have to be developed? ... These are the questions within the first phase of the application development.

Requirements enginineering addresses two major issues within software development. For both parties, the software company with the developers of the system and the customers together with the users of the system, requirements engineering has a vital impact on the success of the software project and the future product.

  • The information elicited and fed into a data model is the one and only basis for the further development of the whole system. Developers have to rely totally on this information source for all their development tasks.

  • Out of the above mentioned data model the specification document is extracted. This document is the basis for the contract between the supplier (the software company) and the customer of the system. All future doubts about the developed system and its functionality have to be clarified using this document. It is the legal contract document.

Requirements Engineering Overview

Requirements Engineering, according to [Hofm 2000] and [Somm 1997], can be devided into three main activities, which will be processed iteratively. The table below shows a brief overview of the current methods and technologies.

 


Elicitation

What are we going to develop?



Modeling

What will our system look like?



Verification / Validation

Does the solution meet our needs?


  • Document Analysis
    Reading all available documents related to our domain and thus our problem.

  • Interviews
    Talking to customers and people who will use the system to find out their requirements. To get compareable results the interview can be based upon a set of questions (-> Questionaire, Survey).

  • Brainstorming
    Thinking about a specific problem and collecting all possible solution ideas without assessing them.

  • Observation
    Observe how people do their job and how their behaviour can be transfered into a software system.

  • RAD - Rapid Application Development / JAD - Joint Application Design

  • Prototyping

  • CREWS project
    Goal oriented and scenario based approach for eliciting and analysing requirements.

  • Repertory Grid

  • RUP - Rational Unified Process
    A use-case centered development method for single systems. Rational announced system family support for the next version of the RUP.

  • ODM - Organization Domain Modeling / Enterprise Modeling
    Understand how the organization is working, the product is developed for.

  • DFD - Data Flow Diagrams
    How is the data organized, that will be processed by the system

  • SADT - Structured Analysis and Design Technique

  • ERM - Entity Relationship Modeling

  • Petri Nets / Statecharts

  • Object Models as used in the UML
    - use-cases (scenarios)
    - class diagrams

  • SDL

  • KAOS - Goal Models

  • Viewpoint Models

  • Prototyping

  • Peer Reviews

  • Audits

  • Walkthrough

  • SFMEA - Software Failure Mode and Effects Analysis

  • Tracing of Requirements, Artifacts and Arguments

  • QFD - Quality Function Deployment

  • SCR

  • Win-Win approach

 
System Family related
  • FAST - Family-Oriented Abstraction, Specification and Translation
    A system family development methodology using a domain specific language as the key concept.

  • FeatuRSEB - Feature Oriented Reuse Driven Software Engineering Business
    A use-case centered development method for system families.

System Family related
  • FODA - Feature Oriented Domain Analysis
    Organizes the domain engineering output in terms of features of the system.

  • CARDS

  • FRAMES
    A way of modelling variable systems with an extended version of the UML and, as the core idea, a way to "put together" several pieces of text - the frames - (code or other documents).

  • Nokia's approach ... 
    ... captures prioritzed design decisions and design objectives and offers a way to select needed requirements.

System Family related
  • To be continued ...
Output

The output is a list of interrelated requirements, information about the domain and information about the project itself.

Output

Several models holding parts of the information of the elicitation phase. Each model represents a specific view.

Output

For each requirement a procedure has to be defined, how to verify that a future implementation will satisfy the requirement. In addition developers and/or customers need to define procedures to validate that the developed and delivered software system meets the initially defined requirements.

What has to be done now?

The inhomogeneous picture drawn by the above table reflects the imature state of requirements enginereering for system families. The patchwork of methods, technologies and research ideas needs to be put together to form a consistent picture.

With the given importance of requirements engineering the quality of the data gathered throughout this development phase is strongly influenced by its consistency. A consistent data pool out of many pieces of information can only be fromed with a predefined data model . Throughout requirements engineering data of different types is elicited. With a predefined data model the developer knows where to put each piece of information and how all pieces fit together. The data model has to be ...

  • ... set up to reflect all relations between the different model elements. This leads to a built-in traceability!
  • ... set up to be tailorable for the specific company and business needs.
  • ... easily understandable, exchangable and processable.
  • ... basis for the specification
  • ... standardizable.

With a data model the developer knows "what" has to be elicited but "how" to elicit the data is still unclear. In addition to the data model a requirements engineering method is needed to support the approriate usage of the data model. The method has to be ...

  • ... an extension, refinement and adaption of the requirements engineering part of existing system family development methods. As such this method can be fit easily into existing methodological environments.
  • ... integrateable into CASE tools, since serious software development without appropriate CASE tool support is impossible.

 

Usefull RE Links

 

Requirements Engineering Group of GI (Fachgruppe 2.1.6)   [GI-Group Overview]
Requirements Engineering Specialist Group of the British Computer Society

 

Glossary

For a better understanding we need to define some terms.

 

Requirement A requirement is a (1) condition or capability needed by a user to solve a problem ar achieve an objective; (2) condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification, or other formally imposed documents; (3) documented representation of a condition or capability as in (1) or (2). [IEEE-610.12 1990]
Stakeholder Are people with an interest in the product. [RobSJ 1999]