background image

Inżynieria oprogramowania

część 2 - Inżynieria systemów komputerowych

Mgr inż. Piotr Greniewski

Europejska Wyższa Szkoła Informatyczno-

Ekonomiczna

background image

Slajd nr 2

©Ian Sommerville 2000  - Inżynieria oprogramowania

Inżynieria systemów komputerowych

Zawartość:

Pojawiające się właściwości systemu

Systemy i ich środowiska

Modelowanie systemu

Proces inżynierii systemów

Zaopatrywanie w system

background image

Slajd nr 3

©Ian Sommerville 2000  - Inżynieria oprogramowania

Inżynieria systemów komputerowych

System jest celową kolekcją powiązanych ze 
sobą komponentów, które współpracują aby 
osiągnąć pewien cel.

Systemy są hierarchiczne czyli mogą zawierać 
inne systemy.

System jest czymś więcej niż sumą swoich 
części.

Pojawiające się właściwości nie mogą być 
przypisane żadnej części systemu

background image

Slajd nr 4

©Ian Sommerville 2000  - Inżynieria oprogramowania

Inżynieria systemów komputerowych

Przykłady pojawiających się właściwości 
systemu:

Całkowity ciężar systemu

Niezawodność systemu

Użyteczność systemu

background image

Slajd nr 5

©Ian Sommerville 2000  - Inżynieria oprogramowania

Pojawiające się właściwości systemu

Pojawiające się właściwości systemu są 
atrybutami systemu jako całości. Ich wartość 
można zmierzyć dopiero wtedy gdy 
podsystemy są zintegrowane w kompletny 
system

Dwa typy pojawiających się właściwości:

Funkcjonalne – rower ma cechy środka transportu

Niefunkcjonalne – niezawodność, efektywność, 
bezpieczeństwo i zabezpieczenia

Przykład niezawodności systemu

background image

Slajd nr 6

©Ian Sommerville 2000  - Inżynieria oprogramowania

Pojawiające się właściwości systemu

Istnieją trzy czynniki wpływające na 
niezawodność całego systemu;

Niezawodność sprzętu

Niezawodność oprogramowania

Niezawodność operatora

background image

Slajd nr 7

©Ian Sommerville 2000  - Inżynieria oprogramowania

Systemy i ich środowiska

Systemy nie są niezależnymi bytami ale 
istnieją w pewnym środowisku

Środowisko ma wpływ na funkcjonalność i 
efektywność systemu

background image

Slajd nr 8

©Ian Sommerville 2000  - Inżynieria oprogramowania

Systemy i ich środowiska

Inżynierowie systemu muszą znać otoczenie 
systemu

System może powodować zmiany w swoim 
środowisku. Poprawne działanie systemu możemy 
ocenić jedynie na podstawie jego wpływu na 
środowisko

Na funkcjonowanie systemu mogą mieć wpływ 
trudne do przewidzenia zmiany zachodzące w 
środowisku

background image

Slajd nr 9

©Ian Sommerville 2000  - Inżynieria oprogramowania

Systemy i ich środowiska

Systemy działają nie tylko w środowisku 
fizycznym ale i organizacyjnym. Czynniki 
mające wpływ na na projekt systemu:

Zmiany procesu – czy system wymaga zmian w 
procesach pracy wykonywanej w środowisku?

Zmiana zawodu – czy system zmienia styl pracy 
pracowników?

Zmiany organizacyjne – czy system zmienia 
strukturę władzy w organizacji?

background image

Slajd nr 10

©Ian Sommerville 2000  - Inżynieria oprogramowania

Modelowanie systemu

W trakcie czynności spisywania wymagań i 
projektowania musi powstać model systemu jako zbioru 
komponentów i związku między nimi

Jest on przedstawiany graficznie jako model architektury 
systemu, dający przegląd organizacji systemu

Architektura systemu jest prezentowana jako diagram 
blokowy obrazujący najważniejsze systemy i połączenia 
między nimi

Każdy podsystem jest rysowany w postaci prostokąta 

Związki pomiędzy podsystemami są zaznaczone za 
pomocą strzałek łączących prostokąty

Związki obejmują: przepływ danych, relacje ‘używa’, 
‘jest używany’ lub inne rodzaje zależności

background image

Slajd nr 11

©Ian Sommerville 2000  - Inżynieria oprogramowania

Modelowanie systemu

Detektory ruchu

Detektory 

Drzwiowe

Centralka alarmu

Syrena

Syntezator mowy

Automat 

dzwoniący

background image

Slajd nr 12

©Ian Sommerville 2000  - Inżynieria oprogramowania

Modelowanie systemu

Detektory ruchu

Wykrywają ruch w monitorowanych pomieszczeniach

Detektory drzwiowe

Wykrywają otwarcie drzwi

Centralka alarmu

Steruje działaniem systemu

Syrena

Nadaje sygnały dźwiękowe po wykryciu intruza

Syntezator mowy

Nadaje słowny komunikat o położeniu intruza

Automat dzwoniący

Wykonuje zewnętrzne połączenia do firmy 

ochroniarskiej i policji

background image

Data comms.

system

Transponder

system

Radar

system

Aircraft
comms.

Telephone

system

Flight plan

database

Backup

position

processor

Position

processor

Comms.

processor

Backup comms.

processor

Aircraft

simulation

system

Weather map

system

Accounting

system

Controller

info. system

Controller

consoles

Activity logging

system

ATC system
architecture

©Ian Sommerville 2000  - Inżynieria oprogramowania

background image

Slajd nr 14

©Ian Sommerville 2000  - Inżynieria oprogramowania

Modelowanie systemu

Architektura systemu powinna być 
zaprojektowana w kategoriach funkcjonalnych 
podsystemów bez względu na to czy są to 
systemy programowe czy sprzętowe

Komponenty funkcjonalne można zaklasyfikować:

Komponenty detektorowe – zbierają informację (np.. 
Detektor papieru w drukarce )

Komponenty uruchamiające (efektorowe) – powodujące 
zmiany w środowisku systemu (np.. Mechanizm 
wciągania papieru w drukarce) 

Komponenty obliczeniowe -  pobierają dane wejściowe, 
wykonują na nich pewne obliczenia i wytwarzają wyniki 
(np.. Procesor zmiennoprzecinkowy)

background image

Slajd nr 15

©Ian Sommerville 2000  - Inżynieria oprogramowania

Modelowanie systemu

Komponenty funkcjonalne cd.

Komponenty komunikacyjne – umożliwiają 
komunikację innym komponentom systemu (np..siec 
ethernet w budynku)

Komponenty koordynujące  - koordynują operacje 
innych komponentów (np.. Proces szeregujący w 
systemie czasu rzeczywistego)

Komponenty interfejsu – przetwarzają dane w 
reprezentacji używanej jedne komponenty na 
reprezentacje używane przez inne komponenty (np.. 
Przetwornik analogowo - cyfrowy)

background image

Slajd nr 16

©Ian Sommerville 2000  - Inżynieria oprogramowania

Proces inżynierii systemów

Istotne różnice między procesem inżynierii 
systemów a procesem tworzenia 
oprogramowania:

Interdyscyplinarna zawiłość – wiele różnych dziedzin 
inżynierii wchodzi w skład inżynierii systemów. Możliwe 
są więc nieporozumienia

Ograniczona możliwość modyfikacji w trakcie tworzenia 
systemu – gdy pewne decyzje techniczne są już podjęte 
to wszelkie zmiany są bardzo kosztowne.

Fazy procesu inżynierii systemów są 
przedstawione na następnym slajdzie 

Proces ten miał duży wpływ na model kaskadowy, 
który omówimy później

background image

Slajd nr 17

©Ian Sommerville 2000  - Inżynieria oprogramowania

Proces inżynierii systemów

System

integration

Sub-system

development

System

design

Requirements

definition

System

installation

System

evolution

System

decommissioning

background image

Slajd nr 18

©Ian Sommerville 2000  - Inżynieria oprogramowania

Proces inżynierii systemów

Omówimy teraz system ATC - kontroli lotów w 
którym używa się radarów i innych 
detektorów do wyznaczania pozycji 
samolotów.

następny slajd pokazuje różne dyscypliny, 
których specjaliści muszą być obecni w 
zespole inżynierii systemów

background image

Slajd nr 19

©Ian Sommerville 2000  - Inżynieria oprogramowania

Inter- dyscyplinarna zawiłość

ATC systems

engineering

Electronic

engineering

Electrical

engineering

User interface

design

Mechanical

engineering

Architecture

Structural

engineering

Software

engineering

Civil

engineering

background image

Slajd nr 20

©Ian Sommerville 2000  - Inżynieria oprogramowania

Proces inżynierii systemów

W tego typu systemach oprogramowanie musi 
być bardzo elastyczne i dlatego wiele 
niespodziewanych problemów zostawia się 
inżynierom oprogramowania (np.. Położenie 
radaru powoduje powstanie podwójnego 
obrazu. Przeniesienie radaru jest niemożliwe, 
trzeba modyfikować oprogramowanie.

Inżynierowie oprogramowania często stają 
przed zadaniem zwiększenia możliwości 
oprogramowania bez zwiększania kosztu 
sprzętu co czasami prowadzi do porażki nie z 
winy oprogramowania.

background image

Slajd nr 21

©Ian Sommerville 2000  - Inżynieria oprogramowania

Proces inżynierii systemów

Definiowanie wymagań systemowych ma na celu 
odkrycie wymagań stawianych systemowi jako 
całości. Proces ten tak jak w przypadku wymagań 
dla oprogramowania obejmuje konsultacje z 
klientami i użytkownikami. Najczęściej 
uwzględniamy trzy rodzaje wymagań:

Abstrakcyjne wymagania funkcjonalne – podstawowe 
funkcje są definiowane na wysokim poziomie abstrakcji 

Właściwości systemu – są to wymagania niefunkcjonalne 
takie jak: dostępność, efektywność i bezpieczeństwo

Cechy których system ma nie mieć – np.. Nie podawać 
kontrolerowi zbyt dużej ilości informacji

background image

Slajd nr 22

©Ian Sommerville 2000  - Inżynieria oprogramowania

Proces inżynierii systemów

Projektowanie systemu ma na celu określenie jak 

funkcjonalność systemu będzie realizowana przez 

jego poszczególne komponenty. Czynnościami tego 

procesu są:

Podział wymagań

Identyfikacja podsystemów

Przypisanie wymagań podsystemom

Określenie funkcjonalności podsystemów

Zdefiniowanie interfejsów podsystemów

Strzałki dwukierunkowe oznaczają, że pomiędzy 

każdą parą istnieje wiele iteracji i sprzężeń 

zwreotnych

Dla niemal wszystkich systemów istnieje wiele 

projektów realizacji

background image

Slajd nr 23

©Ian Sommerville 2000  - Inżynieria oprogramowania

Proces projektowania systemu

Partition

requirements

Identify

sub-systems

Assign requirements

to sub-systems

Specify sub-system

functionality

Define sub-system

interfaces

background image

Slajd nr 24

©Ian Sommerville 2000  - Inżynieria oprogramowania

Tworzenie podsystemów

W czasie tworzenia implementuje się 
podsystemy zidentyfikowane w czasie 
projektowania

Jeśli jest to podsystem oprogramowania to 
rozpoczyna się proces tworzenia 
oprogramowania o czym później.

Nie wszystkie podsystemy budujemy od zera. 
Czasami używamy gotowe

Zwykle różne podsystemy tworzymy 
równolegle

background image

Slajd nr 25

©Ian Sommerville 2000  - Inżynieria oprogramowania

Integracja systemu

Integracja systemu polega na scaleniu 
zbudowanych podsystemów w jeden kompletny 
system. Najlepiej robić to przyrostowo tzn. w 
jednym kroku integrowany jest jeden system

Powody stosowania metody przyrostowej:

Zwykle nie da się ustalić jednej daty uruchomienia 
podsystemów

Integracja przyrostowa zmniejsza koszty wykrywania 
błędów.

Awarie podsystemów, które są konsekwencjami 
niewłaściwych założeń o innych podsystemach, 
zwykle są wykrywane na etapie integracji systemu

background image

Slajd nr 26

©Ian Sommerville 2000  - Inżynieria oprogramowania

Instalacja systemu

W trakcie instalacji system jest umieszczany w 
środowisku w którym ma działać. Powstaje 
przy tym wiele problemów:

Środowisko w którym ma działać system jest inne 
niż zakładali twórcy. Występuje najczęściej w chwili 
instalacji podsystemów oprogramowania

Potencjalni użytkownicy mogą być wrogami jego 
wprowadzenia

Nowy system ma koegzystować z istniejącym 
systemem do czasu stwierdzenia jego poprawności

Mogą wystąpić fizyczne problemy z instalacją

background image

Slajd nr 27

©Ian Sommerville 2000  - Inżynieria oprogramowania

Działanie systemu

Po instalacji system zaczyna działać

Wymagane są szkolenia personelu

Pojawiają się przypadki nie uwzględnione w 
wymaganiach

System działa zgodnie z wymaganiami ale 
funkcjonalnie nie spełnia prawdziwych 
potrzeb przedsiębiorstwa

Mogą wystąpić problemy z przeniesieniem 
danych pomiędzy starym a nowym systemem

background image

Slajd nr 28

©Ian Sommerville 2000  - Inżynieria oprogramowania

Ewolucja systemu

Czas życia systemów bywa bardzo długi

W trakcie życia system podlega ewolucji aby 
usunąć błędy w założeniach

Firma może się zreorganizować

Kupowany jest nowy sprzęt komputerowy

Ewolucja systemu jest bardzo kosztowna

background image

Slajd nr 29

©Ian Sommerville 2000  - Inżynieria oprogramowania

Likwidacja systemu

Po okresie funkcjonowania system należy 
zlikwidować ...

background image

Slajd nr 30

©Ian Sommerville 2000  - Inżynieria oprogramowania

Zaopatrywanie w system

Proces dostaw podzespołów, bywa 
skomplikowany i długotrwały – przetargi 
publiczne itp..

background image

Slajd nr 31

©Ian Sommerville 2000  - Inżynieria oprogramowania

Proces zaopatrywania w system

Choose

supplier

Issue request

for bids

Choose

system

Adapt

requirements

Survey market for

existing systems

Let contract for

development

Negotiate

contract

Select

tender

Issue request

to tender

Off-the-shelf

system available

Bespoke system

required

background image

Slajd nr 32

©Ian Sommerville 2000  - Inżynieria oprogramowania

Model wykonawca/podwykonawca

Sub-contractor 2

Sub-contractor 1

Sub-contractor 3

Principal

contractor

System

customer

background image

Slajd nr 33

©Ian Sommerville 2000  - Inżynieria oprogramowania

Główne tezy

Inżynieria systemów jest złożonym i trudnym procesem, 
który wymaga wkładu pracy specjalistów wielu innych 
dziedzin inżynierii.

Pojawiające się właściwości są charakterystykami systemu 
jako całości, a nie jego części składowych. Są to m.in. 
efektywność, niezawodność, użyteczność, bezpieczeństwo i 
zabezpieczenia. Powodzenie lub porażka systemu często 
zależy od tych pojawiających się właściwości.

Architekturę systemu prezentuje się na diagramach 
blokowych, przedstawiających główne podsystemy i związki 
między nimi.

Typami komponentów funkcjonalnych systemu są 
komponenty detektorowe, komponenty efektorowe, 
komponenty obliczeniowe, komponenty koordynujące, 
komponenty komunikacyjne i komponenty interfejsu.

background image

Slajd nr 34

©Ian Sommerville 2000  - Inżynieria oprogramowania

Główne tezy

Proces inżynierii systemów obejmuje specyfikację, 
projektowanie, tworzenie, integrację i testowanie. 
Integracja systemów (łączenie podsystemów od 
różnych dostawców tak, aby współpracowały) jest 
zwykle najtrudniejsza i najważniejsza. 

Proces zaopatrywania w system obejmuje specyfikację 
systemu, ogłoszenie przetargu, wybór dostawcy i 
zawarcie kontraktu na dostawę systemu. Niektóre 
części systemu są kupowane jako komercyjne 
komponenty z półki

.


Document Outline