Mathematics and Computing: Level 2 M253 Team working in distributed environments

Similar documents
Requirements Engineering

CIS 890: Safety Critical Systems

Requirements Engineering. Csaba Veres

Fundamentals: Software Engineering. Objectives. Last lectures. Unit 2: Light Introduction to Requirements Engineering

Requirements Engineering. Objectives. System requirements. Types of requirements. FAQS about requirements. Requirements problems

Requirement Analysis

BCS Certificate in Requirements Engineering Extended Syllabus Version 2.5 May 2017

Lecture 5: Requirements Specifications

Delimited. Interfaced. Readable. Modifiable. Verifiable. Prioritized* Endorsed

Requirements Specifications & Standards

Purpose and Structure of Requirements Specifications (following IEEE 830 Standard)

3Lesson 3: Web Project Management Fundamentals Objectives

Software Requirements Specification. <Project> for. Version 1.0 approved. Prepared by <author(s)> <Organization> <Date created>

Ch 4: Requirements Engineering. What are requirements?

Introduction to Software Engineering

Software Engineering - I

The Analysis and Proposed Modifications to ISO/IEC Software Engineering Software Quality Requirements and Evaluation Quality Requirements

Unit 1 Introduction to Software Engineering

Lecture 7 (3-April-2013)

Requirements Engineering: Specification & Validation. Software Requirements and Design CITS 4401 Lecture 18

Chapter 9. Software Testing

Software Requirements Specification. <Project> for. Version 1.0 approved. Prepared by <author> <organization> <date created>

HITSP Standards Harmonization Process -- A report on progress

Chapter 1: Principles of Programming and Software Engineering

Chapter 2 Overview of the Design Methodology

Chapter 1: Programming Principles

(c) Addison Wesley Chapter 3. ! Interviewing customers and domain experts. ! Questionnaires. ! Observation. ! Study of documents and software systems

SOFTWARE REQUIREMENT SPECIFICATION

Requirements Engineering

SE351a: Software Project & Process Management. 11 Oct., 2005 SE351a, ECE UWO, (c) Hamada Ghenniwa

The software lifecycle and its documents

<<Subsystem>> Software Architecture Document

Product. e ss. P roc. so get the right requirements. Garbage in garbage out,

VO Software Engineering

Why testing and analysis. Software Testing. A framework for software testing. Outline. Software Qualities. Dependability Properties

BCS THE CHARTERED INSTITUTE FOR IT. BCS HIGHER EDUCATION QUALIFICATIONS BCS Level 5 Diploma in IT. March 2017 PRINCIPLES OF USER INTERFACE DESIGN

CS3500: Object-Oriented Design Fall 2013

Software Engineering Prof.N.L.Sarda IIT Bombay. Lecture-11 Data Modelling- ER diagrams, Mapping to relational model (Part -II)

Software Development Chapter 1

Software Specification and Architecture 2IW80

Unit Wise Questions. Unit-1 Concepts

Software Requirements Specification (SRS) Software Requirements Specification for <Name of Project>

Sofware Requirements Engineeing

Lecture 4: Goals and Scenarios. System context. Usage facet. IT system facet. Core activities. Negotiation. Requirements artefacts

Data Migration Plan (40) Fingrid Oyj

Testing! Prof. Leon Osterweil! CS 520/620! Spring 2013!

Requirements engineering

Software Design Models, Tools & Processes. Lecture 2: Inception Phase Cecilia Mascolo

<Project Name> Vision

RE Process. Lawrence Chung Department of Computer Science The University of Texas at Dallas

Scenario-Based Analysis. Scenario-Based Analysis (example) Form analysis

Ontology Development. Qing He

The Core Humanitarian Standard and the Sphere Core Standards. Analysis and Comparison. SphereProject.org/CHS. Interim Guidance, February 2015

Requirements. Requirements. Types of Requirement. What Is a Requirement?

Rules of Writing Software Requirement Specifications

Generalized Document Data Model for Integrating Autonomous Applications

Senior Project: Calendar

CPU DB Data Visualization Senior Project Report

Guarantee of existence for online information as a precondition for hyperlinked e-portfolios

SOFTWARE ENGINEERING DECEMBER. Q2a. What are the key challenges being faced by software engineering?

INTRODUCING A MULTIVIEW SOFTWARE ARCHITECTURE PROCESS BY EXAMPLE Ahmad K heir 1, Hala Naja 1 and Mourad Oussalah 2

Nick Rozanski Andy Longshaw Eoin Woods. Sold! How to Describe, Explain and Justify your Architecture

3 Prototyping and Iterative Evaluations

Requirements Validation and Negotiation

Data Modeling - Conceive, Collaborate, Create. Introduction: The early conceptual beginnings of data modeling trace back to the origins

Requirement Specification Document Template

Requirements Engineering. Establishing what the customer requires from a software system. Requirements Engineering. What is a Requirement?

Issues surrounding model consistency and QVT

Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 6 Slide 1

BCS Certificate in Requirements Engineering Syllabus

Quality Assurance of a Data Model by Example

MSO Analysis & UML. Hans Philippi (based on the course slides of Wouter Swierstra) August 24, Analysis & UML 1 / 56

Intro to Software Requirements

Understanding Software Engineering

Business Processes for Managing Engineering Documents & Related Data

TERMINOLOGY MANAGEMENT DURING TRANSLATION PROJECTS: PROFESSIONAL TESTIMONY

SAMPLE REPORT. Business Continuity Gap Analysis Report. Prepared for XYZ Business by CSC Business Continuity Services Date: xx/xx/xxxx

Testing is a very big and important topic when it comes to software development. Testing has a number of aspects that need to be considered.

General website Privacy

Chapter 2 Example Modeling and Forecasting Scenario

Software Specification 2IX20

Questionnaire Specification Database for Blaise Surveys

Standard Glossary of Terms used in Software Testing. Version 3.2. Foundation Extension - Usability Terms

User-centered design and the requirement process

ECE-492 SENIOR ADVANCED DESIGN PROJECT

ISO/IEC/ IEEE INTERNATIONAL STANDARD. Systems and software engineering Architecture description

Quality Software Requirements By J. Chris Gibson

System Name Software Architecture Description

Framework for building information modelling (BIM) guidance

Up and Running Software The Development Process

Setting Usability Requirements For A Web Site Containing A Form Sarah Allen Miller and Caroline Jarrett

Foundation Level Syllabus Usability Tester Sample Exam

Object-Oriented Programming Using C++ (Introduction To Programming) PDF

Quality Software Requirements By J. Chris Gibson

Test requirements in networked systems

Living With Agility

The LUCID Design Framework (Logical User Centered Interaction Design)

Recommended Practice for Software Requirements Specifications (IEEE)

Requirements Gathering

Introduction to Software Testing

Transcription:

Mathematics and Computing: Level 2 M253 Team working in distributed environments SR M253 Resource Sheet Specifying requirements 1 Overview Having spent some time identifying the context and scope of our proposed system and describing its major features, we need to get down to a lower level of detail in terms of our requirements for the system what we expect our system to do. We are still concerned with issues of what we are going to deliver rather than how we are going to deliver it. In this Resource Sheet we introduce some of the more important ideas and terminology used when specifying system requirements. 2 Requirements analysis The term software crisis first came into public use in 1968 to describe a situation that was causing concern at that time, and which has remained with us in some form ever since. This was the recognition that, as software-based systems became larger and more complex, and were introduced in new application areas, many of those systems were being delivered late, over budget, and failing to satisfy customer's real needs. Much work has been done over the intervening years in an attempt to improve this situation. Examples are the development and application of software life cycle models, software project management techniques, and software cost estimation models. However, the most difficult problem remains that of ensuring software systems are developed which provide the features and facilities that the customers and the users actually expected. Requirements analysis is the name given to the process of attempting to produce a complete, unambiguous, consistent, precise, verifiable, and implementationindependent description of the proposed system, which is readable, modifiable and well-organised for reference and review. A challenging task indeed! 3 Why do we need software requirements? The hardest single part of building a software system is deciding precisely what to build. No other part of the conceptual work is as difficult as establishing the detailed technical requirements, including all the interfaces to people, to machines and to other software systems. No other part of the work so cripples the resulting system if done wrong. No other part is as difficult to rectify later. Brooks (1987) Copyright 2007 The Open University WEB 00263 9 2.1

In the Resource Sheet How to decompose a problem we briefly introduced some ideas from a paper by Dean Leffingwell (Leffingwell 2000) about user and stakeholder needs, system features and use cases. These were seen as ways of describing the system to be developed in fairly general terms. The needs are an expression of the issues associated with the problem domain, and give us a first approximation to what any satisfactory system would have to achieve. The features fall between the users' real needs and the detailed way in which the system fulfils those needs, and are a first step towards the solution of the problem. They lack fine-grained detail but give a clear, natural language, non-technical statement of what the system is going to do to meet the identified needs. The use cases are a vehicle for describing the ways in which users might interact with the system to accomplish one of the desired features, i.e. how the features are achieved in behavioural terms. Combining all these ways of describing the system produces what Leffingwell terms a vision document for the system. He goes on to point out that this document, although (hope)fully communicating the intent of the system, is not in a form, or at a level of detail, where we would want to put it into the hands of a team of developers and send them off to create the system for us. We need to be a lot more definitive about what we want the system to do, and we need to take on board the needs of a whole new group of stakeholders developers, testers, etc. So we need another layer of definition about what the system should do the software requirements. 4 What do we mean by requirements? Requirement is another everyday word that is overused and under-defined in the context of software engineering. Leffingwell uses a classic, but not very enlightening, definition of a software requirement, taken from an IEEE tutorial volume on requirements engineering. A software requirement is a software capability needed by the user to solve a problem that will achieve an objective, or, a software capability that must be met or possessed by a system or system component to satisfy a contract, standard, or other formally imposed documentation. Leffingwell (2000) p.6 Leffingwell suggests that we use this definition as an indication that we should develop our more specific set of requirements by refining or elaborating our list of features. Each requirement serves some feature. Most features will probably lead to several related requirements. Note that we do not introduce any new requirements that are not linked to already-identified features, but that as we write our requirements it may be that they suggest new or revised features and associated requirements. Like most things in life, the process is iterative; no matter how hard we try to think of everything up front, some things will not be immediately apparent. The generally agreed purpose of the requirements phase of the software development life cycle is to determine exactly what we want the system to do, but still to avoid the temptation to specify how it will be done, which is left to the later design phase. This attempt to separate the what from the how to separate the understanding and specification of the problem from the understanding of the solution is not as easy in practice as it sounds in theory, and the boundaries are often blurred. 5 Categories of requirements Most writers on software requirements suggest that there are three major categories into which requirements can be subdivided in order to describe different aspects of the proposed system. These are functional requirements, non-functional requirements and design constraints. To these we can add a fourth category, which is becoming increasingly important in modern interactive systems, namely user interface requirements. As with so many other areas of software development there is a blurring or overlapping of the boundaries between these categories, both in terms of their definition and their use. However, they can provide us with a reasonable initial framework for talking about and reasoning about a system. 2

5.1 Functional requirements These are intended to capture the behavioural aspects of the system what the system actually does. They describe what the inputs are, what the outputs are, what transforms are necessary in order to convert specified inputs to specified outputs in specified circumstances. They are generally our major area of interest in describing information systems. As a simple example we might consider that, in a system which is to provide us with online facilities for booking flights, the user should be able to search for available flights based on the date and time of flights, and range of ticket prices, and should be able to specify whether they only want direct flights or are prepared to take flights with intermediate changes of aircraft. In a library information system the user should be able to search for books based on title, author or ISBN. 5.2 Non-functional requirements These are intended to capture additional system attributes such as performance requirements, throughput, usability, security and reliability. They are aspects of the overall quality of the system, and they may well place restrictions on both the product being developed and the process by which it is developed. A simple example of a non-functional requirement might be a system security requirement that all data shall be protected from unauthorised access. It is easy to see that if we push this down to a lower level we could well find ourselves moving across into the area of functional requirements, since we may well demand that users can only access certain data areas on entry of a specified username and password, or that different data areas will be accessible to different groups of people depending on some internally checked authorisation status. In the process of defining and then decomposing fairly general non-functional requirements we may therefore generate new instances of more specific functional requirements. 5.3 Design constraints Instead of defining the way in which the system behaves, this category of requirements is needed to cover restrictions on the design of a system that need to be fulfilled in order to meet external technical, business or contractual obligations. A simple example might be a requirement that the system has to be written in JavaScript and to work in a correct and consistent manner with (specified versions) of the Microsoft Internet Explorer and the Netscape Navigator browsers. Another possibility may be that the system is to be designed for access by blind users and that there is a requirement that the information on the user interface screens must be readable by a particular screen-reading tool. In systems where users have to provide personal data there may be a need to consider the privacy implications from the point of view of any relevant Data Protection legislation. A further category of constraint may be imposed by the need for the proposed system to interact with other systems that already exist and which, for example, require data to be made available in particular formats if the new system needs to access the facilities provided by these existing systems. 5.4 User interface requirements Interactive systems, i.e. systems that involve a significant amount of user interaction, bring a number of more specific concerns to the process of requirements specification. These include issues about the nature of the user-interface itself, and the modelling of the potential users of the system. There may be different classes of user, with conflicting expectations of how the system should present its features to them, in terms of the level of sophistication of the interactions required, or their degree of assumed knowledge about the information presented. 3

6 A hierarchy of (functional) requirements In many cases there is a natural hierarchical relationship between the requirements that we have identified, and we can organise them in successive levels of abstraction in the way that we describe the overall system. This is particularly true for functional requirements. We can partition our system, i.e. decompose it into its constituent parts, in two directions: horizontally and vertically. A complex area of identified functionality may be decomposed horizontally into several simpler areas of functionality. Each one of these separate areas may itself be further decomposed vertically by describing it in more detail, so that eventually a tree-like structure of requirements emerges. 7 How do we document requirements? The requirements document is an official statement of the system requirements for customers, end-users and software developers. The name this document is given differs between organisations, and it may be called variously a requirements definition, a functional specification or a software requirements specification. Its purpose is more important than its name, and it should be seen as the agreed final product of the analysis of requirements activity, forming the basis for all further system development. It should be equally meaningful to the customers, the project managers, the software designers and coders, and the system testers and maintainers. It acts as a source of reference and possibly even as the basis for any development contract, since it describes the common understanding of exactly what is to be built. The form of the requirements document is also to some extent a matter of choice, and will vary between organisations, depending on the size and complexity of the system to be described. A good overall view of what a requirements document should contain is provided in the classic IEEE/ANSI 830-1993 standard (IEEE 1993) which suggests the following contents and structure: Introduction Purpose of the requirements document Scope of the product Glossary (Definitions of technical terms, acronyms, abbreviations, etc) References Overview of the remainder of the document General description Product perspective Product functions User characteristics General constraints Assumptions and dependencies Specific requirements Functional requirements Non-functional requirements Interface requirements Logical database requirements etc Appendices Index An alternative publicly available and downloadable requirements document format is the Volere Requirements Specification Template (see the Further resources section of this document) which has been produced and refined by The Atlantic Systems Guild. This follows the general approach of the IEEE standard, but is adapted to suit a particular requirements methodology. It is worth looking at, as it has a useful discussion of each major section under the appropriate sub-headings of Content, Motivation, Examples and Considerations, as well as a good set of definitions of the terms used in the template. 4

8 Prioritising requirements When the whole system has been analysed and all possible requirements have been described and documented we may well need to stand back from what we have produced and let reality step in. There may not be enough time, money or even capability available for us to produce a system with all the features that have been identified, and some means of prioritising requirements is needed. Dai Clegg of Oracle UK, one of the early participants in the Dynamic Systems Development Methodology (DSDM) consortium, came up with a useful acronym in this context, for prioritising requirements at the design stage. This is the MoSCoW rule, where M stands for Must have, S for Should have, C for Could have, and W for Won't have (or, in some versions of the rule, Want to have but...). We can expand the meaning of each of these headings as: Must have applies to those requirements that are fundamental to the system, without which it would effectively be inoperable. Should have applies to those requirements which would certainly be mandatory in the system if it was not under any time or money pressure, but without which the system would still be usable and useful. Could have applies to requirements that would be valuable but are only to be included if time and money allows them to be. Won't have (or Want to have, but not this time around) applies to other requirements identified as potentially valuable enhancements to the system at some later date. As a team we can use ranking and cumulative voting techniques to categorise and label all the requirements we have identified and to ensure that an agreed set of requirements that must be provided exists at the end of the requirements analysis phase of a project. 9 Summary This document is not intended to provide a full coverage of the area of systems requirements. Its intention is to give a general indication, for the purposes of this project, of some of the main issues involved, some pointers to the different types of requirement that need to be considered when attempting to define what a system should do, and some pointers to ways in which the results of analysing the identified requirements might be organised and presented. The area is broad enough to be the subject of complete courses, and there are many books specifically devoted to it, such as the volume by Kotonya and Sommerville (1998). 10 Further resources The IEEE/ANSI standard 830-1993 referred to above in Section 7, as well as the IEEE/ANSI standard 830-1998 which superseded it, are available to subscribers to the IEEE Standards Online website. As a registered OU student you have access to this service through the OU Electronic Library facility. The Volere Requirements Specification Template can be accessed online at: www.systemsguild.com/guildsite/robs/template.html A more general paper by Paul R. Read Jr., entitled "Rational unified process: 10 essential elements", includes a discussion of issues such as the MoScoW rules. It can be accessed at: www.jacksonreed.com/public/speaking/rupwnotes.pdf 5

11 References Brooks, F. (1987) No silver bullet: Essence and accidents of software engineering. IEEE Computer 20 (4), April 1987, pp.10 19. IEEE (1993) IEEE recommended practice for software requirements specifications. In: R. H. Thayer and M. Dorfman (eds) Software Requirements Engineering. Chapter 5. Los Alamitos, CA, IEEE Computer Society Press. Kotonya, G. and Sommerville, I. (1998) Requirements Engineering: Processes and Techniques. New York, Wiley. Leffingwell, D, (2000) Features, use cases, requirements, oh my! Rational Software White Paper. 6