Software Design

Table of Contents

Requirements engineering with UML

What is UML?

A unified modeling language, the defacto standard for software design.

pros:

main characteristics:

formal modeling language — its core concepts have a well-defined meaning

UML model is represented graphically with diagrams

The different types:

Diagram of diagrams

The ones we will use:

a UML model contains everything related to the system. a diagram is just a “window” on the model (shows some parts, but not necessarily everything).

Requirements engineering

the process of establishing:

requirement can range between:

functional (what) vs non-functional (how) requirements

in UML: use case diagrams for functional requirements.

How to write requirements specifications:

NotationDescription
Natural languageUse numbered sentences in natural language. Each sentence is one requirement.
Structured natural language.Requirements are written in natural language on standard form/template. Each field gives info about an aspect of the requirement.
Design description languagesUse language like programming language, but with more abstract features specifying requirements by defining an operational model of the system.
Graphical notationsGraphical models with text annotations. e.g. UML use case and sequence diagrams.
Mathematical specificationsBased on math concepts like finite-state machines or sets. Most customers don’t understand this so not often used.

Natural language specification

requirements are written as natural language sentences. used because it’s expressive, intuitive, universal, easily understood by customers.

guidelines:

Use case diagrams

express expectations of customers/stakeholders.

answers questions:

use case:

Use case notations

actors:

Actor notations

relationships between use cases and actors:

Relationships between actors and use cases

relationships between use cases:

relationships between actors

Description of use cases:

Remember, it’s an abstraction. Many small use cases with the same objective should be grouped. Don’t decompose functionality into use cases.

Summary of notation

Requirements notation

Requirements notation