background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  1

Wymagania stawiane 
oprogramowaniu

Przedstawienie 
zagadnienia wymagań 
stawianych systemowi 
oprogramowania i opisanie 
różnych sposobów 
wyrażania tych wymagań

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  2

Cele

Rozumieć pojęcie wymagań użytkownika i wymagań 
systemowych oraz wiedzieć, dlaczego te dwa rodzaje 
wymagań mogą być zapisywane za pomocą różnych 
notacji;

Rozumieć różnice między wymaganiami 
funkcjonalnymi i niefunkcjonalnymi;

Znać dwie metody zapisywania wymagań, tzn. 
strukturalny język naturalny i opisy oparte na 
językach programowania;

Wiedzieć, jak wymagania mogą być zorganizowane w 
dokumentacji wymagań stawianych oprogramowaniu. 

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  3

Zawartość

Wymagania funkcjonalne i niefunkcjonalne

Wymagania użytkownika

Wymagania systemowe

Dokumentacja wymagań stawianych 
oprogramowaniu

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  4

Inżynieria wymagań

Opisy usług i ograniczeń są wymaganiami 
stawianymi systemowi.

Proces wynajdowania, analizowania, 
dokumentowania oraz sprawdzania usług i 
ograniczeń nosi nazwę inżynierii 
wymagań.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  5

Co to jest wymóg?

W przemyśle informatycznym pojęcie 
wymagania nie jest stosowane konsekwentnie.

Niekiedy wymaganie jest postrzegane jako 
zapisane na wysokim poziomie, abstrakcyjne 
określenie usług, które system powinien 
oferować, albo ograniczenie działania systemu.

Niektórzy określają wymaganie jako 
szczegółową, matematycznie formalną definicję 
funkcji systemu.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  6

Dlaczego występują 
rozbieżności (Davis,1993)

Jeśli  firma  chce  podpisać  kontrakt  na  wielkie  przedsięwzięcie 

budowy  oprogramowania,  to  musi  najpierw  określić  swoje 

wymagania  w odpowiednio abstrakcyjny sposób, aby z góry nie 

definiować rozwiązań. Wymagania muszą być spisane, aby różni 

wykonawcy mogli ubiegać się o ten kontrakt, być może oferując 

różne sposoby spełniania oczekiwać firmy – klienta. Gdy kontrakt 

jest już  podpisany,  wykonawca musi zapisać klientowi definicję 

systemu, podając więcej szczegółów, aby klient mógł zrozumieć i 

zweryfikować to, co system będzie robił. Oba te dokumenty mogą 

nosić nazwę dokumentacji wymagań stawianych systemowi.” 

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  7

Typy wymagań

Wymagania użytkownika

To wyrażenia w języku naturalnym oraz diagramy o 

usługach oczekiwanych od systemu oraz o 

ograniczeniach, w których system ma działać.

Wymagania systemowe

Szczegółowo ustalają usługi systemu i ograniczenia. 

Dokumentacja wymagań systemowych, zwana czasem 

specyfikacją funkcjonalną, powinna być precyzyjna.

Specyfikacja projektu oprogramowania

Jest abstrakcyjnym opisem projektu oprogramowania, 

który jest podstawa bardziej szczegółowego projektu i 

implementacji.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  8

Wymagania użytkownika 
systemu

Definicja wymagań użytkownika

Oprogramowanie musi zapewniać mechanizmy reprezentowania i 
dostępu do plików zewnętrznych tworzonych przez inne narzędzia. 

Specyfikacja wymagań 
systemowych

1.1 Użytkownik powinien mieć możliwość definiowania typów plików zewnętrznych.
1.2 Każdy typ pliku zewnętrznego może mieć przypisane narzędzie do obróbki takich plików.
1.3 Każdy typ pliku zewnętrznego może być przedstawiony w postaci charakterystycznej ikony na ekranie 
                                                                                                                                                           użytkownika.
1.4 Należy zapewnić udogodnienia do definiowania przez użytkownika ikon odpowiadających typom  
                                                                                                                                             plików zewnętrznych.
1.5 Gdy użytkownik wybierze ikonę powiązaną z plikiem zewnętrznym, następuje zastosowanie do tego
                                                                                                   pliku narzędzia skojarzonego z typem tego pliku.
 

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  9

Czytelnicy różnych rodzajów 
specyfikacji

Wymagania

użytkownika

Wymagania

systemowe

Specyfikacja 

projektu

oprogramowania

Menedżerowie klienta

Użytkownicy systemu

Inżynierowie klienta

Menedżerowie zleceniobiorcy

Architekci systemu

Użytkownicy systemu

Inżynierowie klienta

Architekci systemu

Twórcy oprogramowania

Inżynierowie klienta 

Architekci systemu

Twórcy oprogramowania

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  10

Wymagania funkcjonalne i 
niefunkcjonalne

Wymagania funkcjonalne

Są stwierdzeniami, jakie usługi ma oferować system, jak ma 

reagować na określone dane wejściowe oraz jak ma się 

zachowywać w określonych sytuacjach. W niektórych 

wypadkach wymagania funkcjonalne określają, czego system 

nie powinien robić.

Wymagania niefunkcjonalne

To ograniczenia usług i funkcji systemu. Obejmują ograniczenia 

czasowe, ograniczenia dotyczące procesu tworzenia, standardy 

itd.

Wymagania dziedzinowe

Pochodzą z dziedziny zastosowania systemu odzwierciedlają jej 

charakterystykę. Mogą być funkcjonalne lub niefunkcjonalne.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  11

Wymagania funkcjonalne

Wymagania funkcjonalne stawiane systemowi 

opisują funkcjonalność lub usługi, które system 

powinien oferować.

Zależą od rodzaju tworzonego oprogramowania, 

spodziewanych użytkowników oprogramowania 

i rodzaju wytwarzanego systemu.

Gdy mają postać wymagań użytkownika, ich 

opis jest zwykle bardziej ogólny, natomiast 

wymagania funkcjonalne systemowe 

szczegółowo definiują funkcje systemu, jego 

wejścia, wyjścia, wyjątki itd.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  12

Przykłady wymagań 
systemowych

Użytkownik  będzie  mógł  przeszukać  zbiór 
wszystkich  baz  danych  lub  wybrać  tylko  ich 
podzbiór.

System  udostępni  odpowiednie  narzędzia  do 
oglądania, 

aby 

użytkownik 

mógł 

czytać 

dokumenty z magazynu.

Każde zamówienie będzie oznaczone unikatowym 
identyfikatorem  (ORDE_ID),  który  będzie  można 
skopiować 

do 

pamięci 

trwałej 

konta 

użytkownika.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  13

Brak ścisłego określania 
specyfikacji wymagań

Natura programisty każe mu interpretować jednoznaczne 

wymagania tak, aby uprościć implementację. Zwykle nie 

jest to jednak to, czego chciał klient.

Należy opracować nowe wymagania i dokonać zmian w 

systemie. Opóźnia to dostarczenie systemu i podnosi 

koszty.

Rozważmy wymaganie stawiane systemowi biblioteki, 

które mówi o „odpowiednich narzędziach do oglądania”.

• Celem tego wymagania jest zapewnienie narzędzia do 

oglądania wszystkich tych formatów.

• Programista działający pod presją czasu może udostępnić 

po prostu narzędzie do oglądania tekstu i ogłosić 

spełnienie wymagania.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  14

Kompletność i spójność

W zasadzie specyfikacja wymagań funkcjonalnych 
stawianych systemowi powinna być kompletna i spójna.

Kompletność oznacza, że wszystkie potrzebne 
użytkownikowi usługi powinny być zdefiniowane.

Spójność oznacza, że wymagania nie powinny mieć 
sprzecznych definicji.

W praktyce w wypadku wielkich złożonych systemów 
nie da się kompletności i spójności. Przyczynami tego są 
swoista złożoność tych systemów oraz fakt, że różne 
punkty widzenia są związane ze sprzecznymi 
potrzebami.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  15

Wymagania niefunkcjonalne

Mogą definiować ograniczenia systemu, takie jak 

możliwości urządzeń wejścia-wyjścia i reprezentacje 

danych używane przez interfejsy systemu.

Przykładami wymagań stawianych procesowi są 

specyfikacja standardów jakości, których należy użyć 

w procesie, stwierdzenie, że projekt należy opracować 

za pomocą konkretnego zbioru narzędzi CASE, i opis 

procesu, którego należy przestrzegać.

Wymagania niefunkcjonalne wynikają z potrzeb 

użytkownika, ograniczeń budżetowych, strategii firmy, 

konieczności współpracy z innymi systemami sprzętu 

lub oprogramowania, czynników zewnętrznych.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  16

Klasyfikacja wymagań 
niefunkcjonalnych

Wymagania produktowe

Określają zachowanie produktu. Przykładami są wymagania 

efektywnościowe dotyczące szybkości działania systemu i 

jego zapotrzebowania na pamięć, wymagania niezawodności.

Wymagania organizacyjne

Wynikają ze strategii i procedur w firmie- kliencie i w firmie- 

wytwórcy.

Wymagania zewnętrzne

Ta szeroka kategoria mieści wszystkie wymagania 

wynikające z czynników zewnętrznych dla systemu i procesu 

jego tworzenia. Obejmuje wymagania współpracy, które 

definiują interakcje systemu z systemami innych firm, 

wymagania prawne.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  17

Typy wymagań 
niefunkcjonalnych

Wymagania

niefunkcjonalne

Wymagania

przenośności

Wymagania

niezawodności

Wymagania

sprawnościowe

Wymagania

etyczne

Wymagania

zewnętrzne

Wymagania

współpracy

Wymagania

produktowe

Wymagania

organizacyjne

Wymagania

efektywnościowe

Wymagania

użyteczności

Wymagania

dostawy

Wymagania

implementacyjne

Wymagania

standardów

Wymagania

prawne

Wymagania

pamięciowe

Wymagania

ochrony

prywatności

Wymagania

zabezpieczeń

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  18

Przykłady wymagań 
niefunkcjonalnych

Wymaganie produktowe

Wszelka niezbędna komunikacja między APSE i użytkownikiem 
powinna dać się wyrazić za pomocą standardowego zestawu 
symboli Ady.

Wymaganie organizacyjne

Proces tworzenia systemu i końcowe dokumenty powinny być 
zgodne z procesem i produktami zdefiniowanymi w XYZCo-SP-
STAN-95.

Wymaganie zewnętrzne

System nie powinien ujawniać operatorom żadnych danych 
osobowych klientów oprócz nazwisk i numerów 
identyfikacyjnych.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  19

Cele i wymagania

Powszechnie występującym 
problemem z wymaganiami 
niefunkcjonalnymi jest fakt, że 
czasem trudno je zweryfikować.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  20

Przykłady

Cel systemu

System powinien być łatwy w użyciu dla 
doświadczonych kontrolerów, a sposób jego organizacji 
powinien zmniejszać liczbę błędów użytkownika.

Weryfikowalne wymaganie 
niefunkcjonalne

Doświadczeni kontrolerzy powinni móc używać 
wszystkich funkcji systemu po szkoleniu trwającym 
dwie godziny. Po tym szkoleniu średnia liczba błędów 
robionych przez doświadczonych użytkowników nie 
powinna przekroczyć dwóch dziennie.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  21

Miary do specyfikowania 
wymagań niefunkcjonalnych

       Właściwość

Miara

Szybkość

Rozmi
ar

Łatwość użycia

Niezawodność

Solidność

Przenośn
ość

Liczba przetworzonych transakcji na sekundę
Czas reakcji na zdarzenie wywołane przez użytkownika
Czas odświeżenia ekranu

   Kilobajty
   Liczba układów 
pamięci

 Czas szkolenia
 Liczba okien pomocy

  Średni czas bez awarii
  Prawdopodobieństwo 
niedostępności
  Częstość błędów
  Dostępność 

  Czas uruchamiania po awarii
  Ułamek zdarzeń powodujących awarie
  Prawdopodobieństwo zniszczenia danych 
po awarii 

  Procent poleceń zależnych od 
platformy
  Liczba docelowych systemów

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  22

Problemy z określeniem 
wymagań

Klienci mogą nie być w stanie przetłumaczyć 
swoich celów na wymagania ilościowe.

Wymagania niefunkcjonalne są często 
sprzeczne lub powiązane z innymi 
wymaganiami funkcjonalnymi.

W zasadzie należy odróżnić wymagania 
funkcjonalne i niefunkcjonalne w 
dokumentacji wymagań. W praktyce jest to 
jednak trudne. 

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  23

Wymagania dziedzinowe

Wymagania dziedzinowe wynikają bardziej z 

dziedziny zastosowania systemu niż z 

konkretnych potrzeb użytkowników.

Mogą być nowymi wymaganiami 

funkcjonalnymi, ograniczać istniejące 

wymagania funkcjonalne albo ustalać sposób 

wykonywania konkretnych obliczeń.

Wymagania dziedzinowe są istotne, ponieważ 

odzwierciedlają podstawy dziedziny 

zastosowania. Jeśli nie są spełnione, to system 

nie może działać w sposób zadowalający.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  24

Wymagania stawiane systemowi 
biblioteki

1.

Wszystkie bazy danych powinny być dostępne 

przez jednolity interfejs użytkownika, którego 

podstawą jest przyjety standard.

2.

Ze  względu  na  ochronę  praw  autorskich 

niektóre 

dokumenty 

należy 

składać 

natychmiast  po  ich  otrzymaniu.  Zależnie  od 

wymagań  użytkownika,  dokumenty  te  będą 

drukowane lokalnie na serwerze systemowym 

i  przekazywane  do  rąk  czytelnika  albo 

wysyłane na drukarkę sieciową.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  25

Wymagania dziedzinowe z 
systemu bezpieczeństwa 
ruchu pociągów

Tempo  zmniejszania  prędkości  pociągu 
jest wyznaczane następująco:

• D

pociągu

 = D

sterowania

 + D

nachylenia 

przy  czym  D

nachylenia 

wynosi

 

  9,81m/s

wyrównane  nachylenie/alfa,  a  9,81m/s

/alfa są znane dla różnych typów pociągów 
.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  26

Zasadnicze problemy z 
wymaganiami 
dziedzinowymi

Są one wyrażone za pomocą języka 
specyficznego dla dziedziny zastosowania, co 
sprawia, że inżynierowie oprogramowania 
często ich nie rozumieją.

Eksperci z danych dziedzin często mogli 
pominąć te informację, ponieważ po prostu jest 
dla nich oczywista.

Może nie być jednak ona oczywista dla twórców 
systemu, którzy mogą to wymaganie 
zaimplementować w sposób niezadowalający.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  27

Wymagania użytkownika

Wymagania użytkownika stawiane 
systemowi powinny określać wymagania 
funkcjonalne i niefunkcjonalne tak, aby 
były zrozumiałe dla użytkowników 
systemu, którzy nie mają szczegółowej 
wiedzy technicznej.

Należy je zapisywać w języku naturalnym, 
używając formularzy i prostych 
intuicyjnych diagramów.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  28

Problemy z językiem 
naturalnym

Brak jasności

Czasem trudno jest wyrażać się w języku naturalnym 
precyzyjnie i jednoznacznie bez czynienia dokumentów 
gadatliwymi i nieczytelnymi.

Sprzeczność wymagań

 Trudno jest jasno rozgraniczać wymagania 
funkcjonalne, wymagania niefunkcjonalne, cele systemu 
i elementy projektu.

Łączenie wymagań

 Kilka różnych wymagań może być zapisanych razem 
jako jedno wymaganie.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  29

Wymaganie stawiane bazie 
danych

      Baza danych powinna wspomagać generowanie obiektów sterujących
 i konfiguracyjnych, tzn. obiektów, które same są grupami innych obiektów
bazy danych. Udogodnienia do sterowania konfiguracją powinny 
umożliwiać dostęp do obiektów w pewnej wersji grupy za pomocą niepełnej
nazwy.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  30

Wymaganie użytkownika 
stawiane siatce edytora

Udogodnienia siatki. Przez opcje panelu sterowania użytkownik może 
uaktywnić siatkę w centymetrach lub w calach, która będzie pomagała w 
umieszczaniu bytów na diagramie. Siatka może być włączona i wyłączona 
w dowolnej chwili sesji edycji; to samo dotyczy przełączania między calami
i centymetrami. Opcja siatki będzie dostępna w widoku „zmniejsz, aby 
dopasować”, ale liczba linii siatki będzie wówczas zmniejszona, aby uniknąć 
zapełnienia małego diagramu liniami siatki.   

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  31

Problemy przy stawianiu 
wymagań

• Jeśli wymagania użytkownika zawierają zbyt wiele 

informacji, to ograniczają wolność twórców systemu 
w wyborze innowacyjnych rozwiązań oraz utrudniają 
zrozumienie wymagań.

• Uzasadnienia związane z wymaganiami są istotne. 

Pomagają wytwórcom i konserwatorom systemu w 
zrozumieniu, dlaczego takie wymaganie się pojawiło, 
i w ocenie wpływu zmiany tego wymagania.

• Szczegóły implementacyjne nie powinny pojawić się 

bez informacji dotyczących działania części systemu.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  32

Definicja siatki w edytorze

2.6 Siatka
2.6.1 Edytor będzie udostępniał siatkę, tzn. matrycę linii 
pionowych jako tło okna edytora. 
Ta sama siatka powinna być 
pasywna, tzn. za układanie bytów odpowiada użytkownik.
Uzasadnienie: Siatka pomaga użytkownikowi w tworzeniu 
schludnego diagramu ze starannie poukładanymi bytami. Chociaż 
siatka aktywna, przy której byty przeskakują do linii siatki, może 
być użyteczna, jednak wówczas układ diagramu jest nieprecyzyjny.
Użytkownik jest najwłaściwszą osobą do decydowania o położeniu 
bytów.

Specyfikacja: ECLIPSE/WS/Tools/DE/FS Punkt 5.6

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  33

Wymagania użytkownika 
wobec dodawania węzłów

3.5.1 Dodawanie węzłów do projektu
3.5.1.1 Edytor będzie udostępniał użytkownikom udogodnienia 
            do dodawania do swoich projektów węzłów określonego typu
3.5.1.2 Sekwencja czynności, które prowadzą do dodania węzła, 
             powinna być następująca:

1. Użytkownik powinien wybrać typ węzła, jaki należy dodać
2. Użytkownik powinien przesunąć wskaźnik do przybliżonego 

                 miejsca nowego węzła na diagramie i zalecić dodanie symbolu 
                  węzła w tym punkcie

3. Użytkownik powinien następnie przeciągnąć węzeł do jego 

                ostatecznego położenia

 Uzasadnienie: Użytkownik jest najwłaściwszą osobą do 
decydowania o położeniu węzłów na diagramie. Takie podejście 
daje użytkownikowi całkowite panowanie nad wyborem typu węzła
i jego umiejscowieniem

Specyfikacja: ECLIPSE/WS/Tools/DE/FS Punkt 3.5.1

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  34

Rady do zapisywania 
wymagań użytkownika

Opracuj standardowy format i spraw, aby 
wszystkie definicje wymagań były z nim zgodne.

Konsekwentnie używaj języka. W szczególności 
rozróżnij wymagania obowiązkowe od 
wskazanych.

Stosuj wyróżnienia (wytłuszczenia, kursywy) do 
zaznaczania głównych części wymagania.

Unikaj, jak tylko się da, żargonu 
komputerowego.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  35

Wymagania systemowe

Wymagania systemowe są bardziej 

szczegółowymi opisami wymagań użytkownika.

Mogą być podstawą kontraktu na implementacje 

systemu, powinny być zatem pełną i 

niesprzeczną specyfikacją całego systemu.

Są traktowane przez inżynierów 

oprogramowania jako punkt wyjścia do 

projektowania systemu.

Specyfikacja wymagań systemowych może 

zawierać różne modele systemu.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  36

Wymagania, a projekt

W dokumentacji wymagań można zdefiniować 
wstępną architekturę systemu, aby nadać 
specyfikacji odpowiednią  strukturę. Wymagania 
systemowe są zorganizowane zgodnie z podziałem 
na podsystemy wchodzące w skład systemu.

W większości wypadków systemy muszą 
współpracować z innymi istniejącymi systemami. 
Ograniczają one projekt, co implikuje dodatkowe 
wymagania stawiane nowemu systemowi.

Użycie specyficznego projektu może być 
zewnętrznym wymaganiem systemowym.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  37

Dalsze kłopoty z językiem 
naturalnym

Niejednoznaczność języka naturalnego prowadzi 

do nieporozumień. Jackson (1995) daje wyśmienity 

przykład takiej sytuacji, opisując symbole 

wyświetlane przez ruchome schody. Mówią one 

„buty trzeba założyć” i „psy trzeba nieść”

Do czytelnika należy stwierdzenie, czy dwa 

wymagania są takie same, czy też się od siebie 

różnią.

Nie ma łatwego podziału wymagań w języku 

naturalnym na moduły. Znalezienie wszystkich 

powiązanych wymagań może być trudne.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  38

Notacje specyfikacji 
wymagań

Notacja

      

Opis

Strukturalny język      To podejście polega na definiowaniu standardowych 
formularzy 
naturalny                     i szablonów do wyrażania specyfikacji wymagań
Języki opisu                W tym podejściu używa się języka podobnego do 
języka programowania, 
projektu                      ale z bardziej abstrakcyjnymi elementami do 
specyfikowania wymagań 
                                   poprzez model operacyjny systemu
Notacje graficzne       Do definiowania wymagań funkcjonalnych stawianych 
systemowi używa

się języka graficznego z tekstowymi dopiskami. 

Przykładem jednego z

 pierwszych takich  języków graficznych  

jest SADT (Ross, 1977;  

Schoman  i Ross, 1977). 

Ostatnio używa się przypadków użycia 

(Jacobsen i 

inni;1993)
Specyfikacje               Są to notacje oparte na pojęciach matematycznych, 
takich jak skończone matematyczne             maszyny stanowe lub zbiory. 
Takie jednoznaczne specyfikacje 

  zmniejszają spory na 

temat funkcjonalności między klientem a  

 

zleceniobiorcą. Większość klientów nie rozumie jednak formalnych 

  specyfikacji i jest niechętna  przyjęciu ich jako kontraktu na 

budowę 

 systemu.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  39

Strukturalny język naturalny

Strukturalny język naturalny jest ograniczoną 

postacią języka naturalnego, przeznaczoną do 

zapisywania wymagań systemowych.

Zaletą tego podejścia jest to, że zachowując 

wyrazistość i zrozumiałość języka naturalnego, 

zapewnia w pewnym stopniu jednolitość specyfikacji.

Notacje oparte na języku strukturalnym mogą 

ograniczać używaną terminologię i obejmować 

szablony do specyfikowania wymagań systemowych.

Zawierają zwykle konstrukcje sterujące podobne do 

spotykanych w językach oprogramowania i graficzne 

wyróżnienia do podziału specyfikacji.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  40

Formularz do definiowania 
wymagań

Opis specyfikowanej funkcji lub bytu

Opis jej danych wejściowych i źródło ich pochodzenia

Opis jej danych wyjściowych i miejsce ich przeznaczenia

Określenie, z których innych bytów się korzysta (część 
wymaga)

Jeśli użyto podejścia funkcjonalnego, to jest wywołany 
warunek początkowy, który musi być prawdziwy przed 
wywołaniem tej funkcji, oraz warunek końcowy, który 
musi być prawdziwy po wywołaniu funkcji.

Opis efektów ubocznych operacji (jeśli występują)

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  41

Specyfikacja wymagań 
systemu z użyciem 
standardowego formularza

ECLIPSE/Workstation/Tools/DE/FS/3.5.1

Funkcja. Dodaj węzeł
Opis. Dodaje węzeł do istniejącego projektu. Użytkownik wybiera typ i położenie węzła
po dodaniu do projektu węzeł jest zaznaczony. Użytkownik wybiera miejsce węzła 
przesuwając wskaźnik na obszar, w którym dodano węzeł
Dane wejściowe. Typ węzła, Położenie węzła, Identyfikator projektu
Źródło. Typ węzła i Położenie węzła pochodzą od użytkownika, a Identyfikator projektu
z bazy danych
Dane wejściowe. Identyfikator projektu
Przeznaczenie. Baza danych projektów. Projekt jest utrwalany w bazie danych po 
zakończeniu operacji
Wymagania. Korzeniem grafu projektu musi być dany identyfikator projektu
Warunek początkowy. Projekt jest otwarty i wyświetlony na ekranie użytkownika
Warunek końcowy. Projekt nie uległ zmianie z wyjątkiem dodania węzła zadanego
typu o zadanym położeniu
Efekty uboczne. Nie ma 

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  42

Specyfikacje wymagań w PDL

Niejednoznaczności charakterystycznych dla języka 

naturalnego można uniknąć przez opisywanie 

wymagań operacyjnie za pomocą języka opisu 

programów (Program Description Language, PDL).

Proponuje się używać PDL w dwóch następujących 

sytuacjach:

Gdy operacja jest specyfikowana jako ciąg prostszych akcji, 

których kolejność wykonania jest istotna. Opisy takich sekwencji 

w języku naturalnym są czasami mylące, zwłaszcza gdy te ciągi 

obejmują zagnieżdżone warunki i pętle.

Gdy trzeba wyspecyfikować interfejsy sprzętowe i programowe. 

W wielu wypadkach interfejsy między podsystemami są 

definiowane w specyfikacji wymagań systemowych. PDL 

umożliwia definiowanie typów i obiektów interfejsowych.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  43

Opis części działania 
bankomatu za pomocą PDL

Class Bankomat {
     // tu deklaracje
     
public static void main (String args []) throws ZłaKarta {
         try {
              taKarta.odczytaj(); //może zgłosić wyjątek ZłaKarta
              pin = Klawiatura.odczytajPin();próby =1;
              while (!ta Karta.pin.equals(pin) & próby < 4)
                   { pin = Klawiatura.odczytajPin();   próby = próby + 1;

    }

                    if (!taKarta. pin.equals(pin))

        throw new ZłaKarta („Zły PIN”);

               toSaldo = taKarta.odczytajSaldo();
               do { Ekran.pytanie(„Wybierz usługę”);

     usługa = Ekran.dotkniętyKlawisz();

                     switch (usługa) {
                     case Usługi.wypłataZPokwitowaniem:
                             wymaganePokwitowanie = true;
              

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  44

Wady PDL

1.

Język używany do zapisu specyfikacji może nie 
być wystarczająco wyrazisty, aby określić 
funkcjonalność systemu.

2.

Notacja jest zrozumiała jedynie dla osób, które 
znają podstawy języków programowania.

3.

Wymaganie może być potraktowane jako 
specyfikacja projektu, a nie jako model, który 
ma pomóc użytkownikom w zrozumieniu 
systemu.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  45

Specyfikacja interfejsów

Większość systemów oprogramowania musi 
współdziałać z innymi systemami, które już 
zaimplementowano i zainstalowano w ich środowisku. 

Trzy typy interfejsów

Interfejsy proceduralne

Struktury danych, które są przekazywane między podsystemami

Reprezentacje danych

Formalne notacje umożliwiają definiowanie 
interfejsów w sposób jednoznaczny, ale ich 
wyspecjalizowana natura oznacza, że są niezrozumiałe 
bez odrębnego szkolenia.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  46

Opis interfejsu serwera 
drukowania za pomocą PDL 
opartego na Javie

 

interface SerwerDrukowania { 

 

// definiuje abstrakcyjny serwer drukowania 

// wymaga: interface Drukarka, interface DokumentDoWydruku 

// udostepnia: inicjuj, drukuj, wyświetlKolejkeZadań, anulujZadanieDrukowania,  

// zmieńDrukarkę 

 

  void inicjuj ( Drukarka d ) ; 

  void drukuj ( Drukarka d, DokumentDoWydruku w) ; 

  void wyświetlKolejkęZadań ( Drukarka d ) ; 

  void anulujZadanieDrukowania (Drukarka d, DokumentDoWydruku w) ; 

  void zmieńDrukarkę(Drukarka d1, Drukarka d2, DokumentDoWydruku w) ; 

} //SerwerDrukowania 

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  47

Dokumentacja wymagań 
stawianych oprogramowaniu

Dokumentacja wymagań stawianych 

oprogramowaniu (nazywana czasem specyfikacją 

wymagań stawianych oprogramowaniu lub 

Software Requirements Specification, SRS) jest 

oficjalną deklaracją tego, co jest wymagane od 

wytwórców systemu.

Powinna zawierać zarówno wymagania 

użytkownika stawiane systemowi, jak i 

szczegółowe specyfikacje wymagań systemowych

Nie jest projektem. Powinna opisywać co system 

ma robić, a nie jak to robić

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  48

Klienci systemu

Menedżerowie

Inżynierowie systemów

Inżynierowie testów systemu

Inżynierowie

pielęgnacji systemów

Określają wymagania i czytają je,

aby sprawdzić, czy odpowiadają

ich potrzebom. Określają także

zmiany wymagań.

Używają dokumentacji wymagań

do planowania oferty budowy

systemu i do planowania

procesu jego tworzenia

Używają wymagań, 

aby zrozumieć, 

jaki system 

ma być zbudowany

Używają wymagań, aby 

opracować testy

zatwierdzające system

Używają wymagań jako pomocy

w zrozumieniu systemu

i związków między jego

częściami

Użytkownicy 
dokumentacji
wymagań

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  49

Wymagania, które powinny być 
spełnione przez dokumentację 
wymagań

Powinna określać zachowanie systemu jedynie z 
zewnątrz.

Powinna określać ograniczenia implementacji.

Powinno być łatwo ja zmieniać.

Powinna być informatorem dla konserwatorów 
systemu.

Powinna obejmować przewidywania przyszłego 
cyklu życia systemu.

Powinna charakteryzować akceptowalne relacje 
na niepożądane zdarzenia.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  50

Standard wymogów IEEE

1

Wstęp

1.1. Przeznaczenie tej dokumentacji wymagań

 

1.2. Zakres produktu
1.3 Definicje, akronimy i skróty
1.4. Odnośniki
1.5. Przegląd pozostałej części dokumentu

2. Ogólny opis

2.1 Wizja produktu
2.2 Funkcje produktu
2.3 Charakterystyka użytkowników
2.4 Ogólne ograniczenia
2.5 Założenia i zależności

3. Szczegółowe wymagania
4. Dodatki
5. Skorowidz – jest zbyt ogólny, aby sam mógł być standardem firmowym. Można go 

jednak dostosować adoptować tak, aby uzyskać definicję standardu, który 

można wykorzystać dla potrzeb konkretnego przedsiębiorstwa.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  51

Struktura dokumentacji 
wymagań

Przedmowa

Wstęp

Słownik

Definicja wymagań użytkownika

Architektura systemu

Specyfikacja wymagań systemowych

Modele systemu

Ewolucja systemu

Dodatki

Skorowidz

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  52

Główne tezy

W wymaganiach stawianych systemowi 

oprogramowania ustala się co system powinien robić, 

oraz definiuje ograniczenia działania i implementację.

Wymagania funkcjonalne to charakterystyki usług, 

które system ma oferować, albo opisy sposobu 

przeprowadzania pewnych obliczeń.

Wymagania niefunkcjonalne dzieli się na wymagania 

produktowe, które ograniczają budowany system, 

wymagania procesu, które dotyczą procesu 

tworzenia, oraz wymagania zewnętrzne. Zwykle są 

powiązane z pojawiającymi się właściwościami 

systemu, a zatem stosują się do systemu jako całości.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  53

Główne tezy

Wymagania użytkownika są przeznaczone dla osób, 

które mają używać i zaopatrywać się w system. 

Należy spisać je za pomocą języka naturalnego, 

tabel i diagramów tak, aby były zrozumiałe.

Wymagania systemowe służą do poinformowania w 

precyzyjny sposób o funkcjach, które system ma 

spełniać. Aby uniknąć niejednoznaczności, można 

je zapisać jakiegoś języka strukturalnego. Może to 

być strukturalna postać języka naturalnego, język 

oparty na języku oprogramowania wysokiego 

poziomu lub specjalny język do specyfikowania 

wymagań.

background image

©Ian Sommerville 2000 

Inżynieria oprogramowania,, Rozdział 5

 Slide  54

Główne tezy

Dokumentacja wymagań stawianych 
oprogramowaniu jest uzgodnionym 
zapisem wymagań systemowych. Należy 
nadać jej odpowiednią strukturę, aby 
mogła być używana zarówno przez 
klientów systemu, jak i twórców 
oprogramowania.


Document Outline