CS 372 Spring 2016  >  Notes for February 3, 2016


CS 372 Spring 2016
Notes
for February 3, 2016

The Software Development Process

Overview

We will discuss seven aspects of the software development process.

Note that the above are not phases of the development process that necessarily occur in order. Indeed, various software-developement methodologies collectively known as agile software development specificially specify processes in which gathering of requirements occurs concurrently with other activities listed above.

Requirements

Definition

A requirement is

in order for

We use “contract” above in the sense of design by contract: preconditions, postconditions, etc.

Requirements are divided into functional requirements—what software needs to be able to do—and nonfunctional requirements. A good rule of thumb is that a functional requirement is something you could implement in a single function.

An important part of the software development process involves gathering requirements: determining precisely what properties the software needs to have and what it needs to do. Requirements are then analyzed and recorded.

Project Definition & Scope

When gathering and analyzing requirements, we need to consider what the project is, what activities and features are included in it, and whether proposed requirements are relevant to it.

The project definition tells what the project is. For example, a project might be defined as follows.

The project consists of software implementing a two-player Battleship game, to be played on a desktop/laptop computer.

The project scope is what the project encompasses.

For example, Milton Bradley at one time sold a dedicated, single-purpose computer that supported a two-player Battleship game. The Battleship software for this computer would have needed to deal with various low-level issues; it may have included device drivers and low-battery warnings. On the other hand, if we were to write a web-based Battleship game today, we would not deal with anything remotely like such issues: device drivers would not be part of the project scope.

It is possible for requirements and project definition/scope to affect each other. For example, we may reject requirements that lie outside the project scope. On the other hand, demand for requirements that lie outside the current scope may suggest that the scope needs to be expanded.

Stakeholders

The stakeholders of a software project are people who

Requirements are gathered through discussions with stakeholders.

Possible stakeholders include the following.

Ways of Gathering Requirements

One way to gather requirements is simply to ask stakeholders what the requirements are. However, since stakeholders are often not software developers, they may have little idea what software-project requirements are like, what is feasible, what needs to be specified, etc.

One solution to this is to deal with use cases: lists of actions indicating how the software would interact with the outside world (perhaps with a user) to accomplish some objective. After discussing use cases with stakeholders, developers can then write requirements.

An even more stakeholder-friendly idea is the user story: one or more sentences in everyday language that captures what a user does with the software. User stories originated with Extreme Programming (XP), one of the agile methodologies.

Analyzing & Recording

Once requirements are gathered, they need to be analyzed. Here, we consider issues like the following.

Lastly, at every stage in the software development process, requirements must be recorded: put them in a file somewhere, where they can be referred to, edited, etc.

The Software Development Process will be continued next time.