08 Prototypowanie oprogramowaniaid 7587 ppt

background image

Inżynieria oprogramowania

część VIII – Prototypowanie oprogramowania

mgr inż. Piotr Greniewski

Europejska Wyższa Szkoła Informatyczno-

Ekonomiczna

background image

Slajd nr 2

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie oprogramowania

Zawartość:

Prototypowanie w procesie tworzenia
oprogramowania

Metody błyskawicznego prototypowania

Prototypowanie interfejsu użytkownika

background image

Slajd nr 3

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie oprogramowania

Prototyp oprogramowania pomaga w dwóch
czynnościach inżynierii wymagań:

Określenie wymagań. Prototypy systemu umożliwiają
użytkownikom eksperymentowanie, w celu
sprawdzenia czy system pomaga im w pracy. Dzięki
temu użytkownicy wpadają na nowe pomysły itp.

Zatwierdzanie wymagań. Prototyp może ujawnić
błędy i pominięcia w zaproponowanych
wymaganiach.

Inne cele:

Szkolenia użytkowników

Testowanie systemu

background image

Slajd nr 4

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie oprogramowania

Establish

prototype

objectives

Define

prototype

functionality

Develop

prototype

Evaluate

prototype

Prototyping

plan

Outline

definition

Executable

prototype

Evaluation

report

background image

Slajd nr 5

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie oprogramowania

Prototypowanie

Prototypowanie ewolucyjne

zaczyna się od zbudowania

prostego systemu spełniającego wymagania
użytkowników. Jest on następnie modyfikowany w marę
poznawania wymagań. Ostatecznie staje się systemem,
którego oczekiwano.

Prototypowanie z porzuceniem

służy do udoskonalania i

wyjaśnienia specyfikacji. Po napisaniu specyfikacji
prototyp jest porzucany.

Cele

Celem prototypowania ewolucyjnego jest dostarczenie
użytkownikowi działającego systemu.

Celem prototypowania z porzuceniem jest zatwierdzenie
i dostarczenie wymagań.

background image

Slajd nr 6

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie oprogramowania

Evolutionary

prototyping

Throw-away

Prototyping

Delivered

system

Executable Prototype +

System Specification

Outline

Requirements

background image

Slajd nr 7

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie ewolucyjne

Zalety prototypowania ewolucyjnego

Przyspieszone dostarczenie systemu.

Włączenie użytkownika w budowę systemu

Wspólne cechy błyskawicznych metod
tworzenia oprogramowania:

Przeplatanie procesu specyfikowania, projektowania
i implementowania

System budowany jest w postaci ciągu przyrostów

Stosuje się narzędzia CASE i języki 4GL

Interakcyjna metoda budowy interfejsów.

background image

Slajd nr 8

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie ewolucyjne

Problemy z prototypowaniem ewolucyjnym

Kłopoty z zarządzaniem

. prototypy ewoluują tak

szybko że nie nadąża się z dokumentacją.

Kłopoty z pielęgnacją

. Ustawiczne zmiany powodują

uszkodzenia struktury prototypowanego systemu.

Kłopoty z umową

. Zwykły model umowy klienta z

wytwórcą oprogramowania oparty jest na
specyfikacji systemu. Klienci nie znają zakresu prac.
Dostawcy nie chcą się zgodzić na stałą cenę.

background image

Slajd nr 9

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie ewolucyjne

Build prototype

system

Develop abstract

specification

Use prototype

system

Deliver

system

System

adequate?

YES

N

background image

Slajd nr 10

©Ian Sommerville 2000 - Inżynieria oprogramowania

Przyrostowy proces tworzenia

Tworzenie przyrostowe likwiduje pewne
niedogodności charakterystyczne dla
prototypowania ewolucyjnego

Tworzenie przyrostowe jest łatwiejsze w
zarządzaniu, ponieważ przestrzega się w nim
standardów budowy oprogramowania.

background image

Slajd nr 11

©Ian Sommerville 2000 - Inżynieria oprogramowania

Przyrostowy proces tworzenia

Validate

increment

Build system

increment

Specify system

increment

Design system

architecture

Define system

deliverables

System

complete?

Integrate

increment

Validate

system

Deliver final

system

YES

NO

background image

Slajd nr 12

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie z porzuceniem

Najczęściej stosowany przy budowie systemów
sprzętowych. Posługując się ‘komponentami z
półki’ sprawdzamy projekt przed podjęciem
decyzji o kosztownych zakupach.

Przy budowie oprogramowania prototyp nie
służy do oceny projektu ale pomaga w
opracowaniu wymagań. Prototyp najczęściej
tworzymy przy pomocy innych narzędzi niż
projekt. W prototypie porzucanym można
pominąć kryteria efektywności i jakości na
rzecz szybkiego rezultatu

background image

Slajd nr 13

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie z porzuceniem

Outline

requirements

Develop

prototype

Evaluate

prototype

Specify

system

Develop

software

Validate

system

Delivered

software

system

Reusable

components

background image

Slajd nr 14

©Ian Sommerville 2000 - Inżynieria oprogramowania

Metody błyskawicznego prototypowania

Tworzenie za pomocą dynamicznych języków
wysokiego poziomu

Języki programowania bazy danych

Scalanie komponentów i programów
użytkowych

background image

Slajd nr 15

©Ian Sommerville 2000 - Inżynieria oprogramowania

Języki programowania bazy danych

Języki 4-tej generacji 4GL (Narzędzia)

Języki zapytań do bazy danych

Generator interfejsów

Arkusz kalkulacyjny

Generator raportów

background image

Slajd nr 16

©Ian Sommerville 2000 - Inżynieria oprogramowania

Języki programowania bazy danych

DB

programming

language

Interface

generator

Spreadsheet

Report

generator

Database management system

Fourth-generation language

background image

Slajd nr 17

©Ian Sommerville 2000 - Inżynieria oprogramowania

Scalanie komponentów i programów
użytkowych

Component

composition

framework

Executable

prototype

Reusable

software

components

Control and

integration code

background image

Slajd nr 18

©Ian Sommerville 2000 - Inżynieria oprogramowania

Prototypowanie interfejsu użytkownika

Generatory interfejsów

Prototyp HTML –owy lub PHP

background image

Inżynieria oprogramowania

część IX – Projektowanie architektoniczne

mgr inż. Piotr Greniewski

Wyższa Szkoła Menedżerska SIG

Katedra Informatyki

background image

Slajd nr 20

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Zawartość:

Strukturalizacja systemu

Modele sterowania

Rozkład na moduły

Architektury charakterystyczne dla różnych
dziedzin

background image

Slajd nr 21

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Wielkie systemy są zwykle podzielone na
podsystemy, które oferują pewien zbiór
powiązanych z sobą interfejsów.

W początkowej fazie procesu projektowania
identyfikuje się podsystemy, ustala się zrąb
sterowania oraz komunikacji pomiędzy
podsystemami. Faza ta jest nazywana

projektowaniem architektonicznym

. Produktem

tej fazy jest opis architektury oprogramowania.

Przypomnimy jak wygląda model procesu
projektowania

background image

Slajd nr 22

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Specyfikacja

wymagań

Projektowanie

architektury

Projektowanie

interfejsów

Projektowanie

komponentów

Projektowanie

struktur danych

Projektowanie

algorytmów

Specyfikowanie

abstrakcyjne

Architektura

systemu

Specyfikacja

oprogramowania

Specyfikacja

interfejsów

Specyfikacja

komponentów

Specyfikacja

struktur danych

Specyfikacja

algorytmów

Produkty projektowania

Czynności projektowe

background image

Slajd nr 23

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Czynności procesu projektowania:

Projektowanie architektury. Identyfikuje i dokumentuje
podsystemy tworzące system oraz związki między nimi.

Specyfikowanie abstrakcyjne. Opracowuje się
abstrakcyjną specyfikację usług i ograniczeń każdego
podsystemu.

Projektowanie interfejsów. Projektuje się i dokumentuje
interfejsy każdego podsystemu z innymi podsystemami.
Specyfikacja musi być jednoznaczna ponieważ
umożliwia korzystanie z podsystemów bez znajomości
ich działania.

Projektowanie komponentów. Przypisuje się usługi do
różnych komponentów i projektuje interfejsy tych
komponentów.

background image

Slajd nr 24

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Czynności procesu projektowania:

Projektowanie struktur danych. Szczegółowo
specyfikuje się i projektuje struktury danych użyte w
implementacji systemu.

Projektowanie algorytmów. Szczegółowo specyfikuje
się i projektuje algorytmy służące do realizacji
usług.

background image

Slajd nr 25

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Model architektoniczny jest punktem
początkowym do specyfikowania rozmaitych
części systemu.

Proces projektowania architektonicznego
polega na ustaleniu podstawowego zrębu
systemu.

Obejmuje identyfikację najważniejszych
komponentów systemu i komunikację między
nimi.

background image

Slajd nr 26

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Zalety jawnego projektowania i
dokumentowania architektury oprogramowania:

Komunikacja z uczestnikami

. Architektura jest

prezentacją systemu na wysokim poziomie, która może
służyć za podstawę dyskusji w gronie różnych
uczestników.

Analiza systemu

. Ujawnienie architektury systemu we

wczesnej fazie budowania systemu daje możliwość
przeprowadzenia analizy systemu. Decyzje
projektowania architektonicznego mają znaczący
wpływ na to, czy system spełni krytyczne wymagania
dotyczące efektywności, niezawodności zdatności do
pielęgnacji, czy nie

background image

Slajd nr 27

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Zalety jawnego projektowania i
dokumentowania architektury
oprogramowania c.d.:

Użycie wielokrotne w wielkiej skali

. Architektura

systemu jest zwartym i łatwym do opanowania
opisem organizacji systemu i współpracy jego
komponentów. Architekturę można przekazać innym
systemom, które mają podobne wymagania. Pomaga
to w użyciu wielokrotnym oprogramowania.

background image

Slajd nr 28

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Wspólne czynności dla wszystkich procesów
projektowania architektonicznego:

Strukturalizacja systemu

. System jest dzielony na

kilka podstawowych podsystemów. Podsystem jest
niezależną jednostką oprogramowania. Identyfikuje
się komunikację między podsystemami.

Modelowanie sterowania

. Określa się ogólny model

związków sterowania między częściami systemu.

Podział na moduły

. Każdy zidentyfikowany

podsystem jest dzielony na moduły. Architekt musi
wskazać typy modułów i ich połączenia.

background image

Slajd nr 29

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Rozróżnienie między podsystemami i
modułami:

Podsystem

jest systemem na swoich własnych

prawach; jego usługi nie zależą od usług
oferowanych przez inne podsystemy. Podsystemy
składają się z modułów i mają interfejsy używane do
komunikacji z innymi podsystemami.

Moduł

jest zwykle komponentem systemu, który

oferuje co najmniej jedną usługę innym modułom.
Nie traktujemy go jako oddzielnego podsystemu.
Moduły są zbudowane z kilku innych, prostszych
komponentów systemu.

background image

Slajd nr 30

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Wynikiem procesu projektowania
architektonicznego jest dokumentacja
projektu architektonicznego , składająca się z
graficznych przedstawień modelu systemu
oraz tekstu opisowego.

Dokumentacja ta powinna zawierać opis
systemu jako struktury złożonej z
podsystemów i każdego podsystemu jako
struktury złożonej z modułów.

Modele graficzne mogą przedstawiać różne
perspektywy systemu.

background image

Slajd nr 31

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Zakres modelu architektonicznego:

Statyczny model strukturalny

obejmuje komponenty

lub podsystemy, które można zbudować jako
niezależne jednostki.

Model dynamiczny procesu

, w którym przedstawia

się podział systemu na procesy wg. czasu
wykonania. Najczęściej różni się od modelu
statycznego.

Model interfejsów

, w którym definiuje się usługi

oferowane przez każdy podsystem za
pośrednictwem jego interfejsu publicznego.

Model związków

, który obejmuje związki takie jak

przepływ danych między podsystemami.

background image

Slajd nr 32

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Architektura systemu ma wpływ na efektywność,
niezawodność, łatwość pielęgnacji, ... . Wybrany dla
danego zastosowania styl i struktura mogą więc
zależeć od wymagań niefunkcjonalnych systemu:

Efektywność

. Jeśli efektywność jest krytycznym

wymaganiem to prawdopodobnie należy tak zaprojektować
architekturę, aby umieścić krytyczne operacje w niewielkiej
liczbie podsystemów komunikujących się między sobą w
niewielkim stopniu. Oznacza to użycie komponentów

gruboziarnistych

co umożliwia zmniejszenie komunikacji

między nimi.

Zabezpieczenie

. Jeśli zabezpieczenie jest krytycznym

wymaganiem to należy zastosować architekturę warstwową
i najbardziej krytyczne zasoby zabezpieczyć w najniższych
warstwach.

background image

Slajd nr 33

©Ian Sommerville 2000 - Inżynieria oprogramowania

Projektowanie architektoniczne

Architektura systemu c.d.:

Bezpieczeństwo

. Jeśli bezpieczeństwo jest krytycznym

wymaganiem, to należy tak zaprojektować architekturę

aby operacje dotyczące bezpieczeństwa znalazły się w

jednym podsystemie lub w niewielkiej ich liczbie.

Zmniejszy to koszty i kłopoty związane z zatwierdzeniem

bezpieczeństwa.

Dostępność

. Jeśli dostępność jest krytycznym

wymaganiem, to w architekturze należy uwzględnić

komponenty nadmiarowe, tak aby można było podmieniać

i modyfikować komponenty bez zatrzymania systemu.

Zdolność do pielęgnacji

. Jeśli zdolność do pielęgnacji jest

krytycznym wymaganiem to architektura powinna się

składać z

drobnoziarnistych

samodzielnych komponentów,

które można łatwo zmieniać.

Niestety między architekturami często występują

konflikty.

background image

Slajd nr 34

©Ian Sommerville 2000 - Inżynieria oprogramowania

Strukturalizacja systemu.

Pierwsza faza projektowania
architektonicznego polega na podziale
systemu na zbiór oddziałujących ze sobą
podsystemów.

Projekt architektoniczny przedstawia się za
pomocą diagramu blokowego, na którym
każdy prostokąt oznacza podsystem.

background image

Slajd nr 35

©Ian Sommerville 2000 - Inżynieria oprogramowania

System sterowania robotem pakującym
przedmioty

Vision

system

Object

identification

system

Arm

controller

Gripper

controller

Packaging

selection

system

Packing

system

Conveyor

controller

System

wizyjny

System

identyfikacji

przedmiotów

Sterownik

ramienia

Sterownik

chwytacza

System

wyboru

opakowania

System

pakujący

Sterownik

taśmociągu

background image

Slajd nr 36

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model repozytorium

Aby efektywnie współpracować, podsystemy
wchodzące w skład systemu muszą wymieniać
między sobą informacje:

Wszystkie współdzielone dane znajdują się w jednej
bazie danych

Każdy podsystem prowadzi swoją bazę danych.
Dane są przekazywane innym podsystemom przez
wysyłanie komunikatów

background image

Slajd nr 37

©Ian Sommerville 2000 - Inżynieria oprogramowania

Architektura zintegrowanego zestawu
narzędzi CASE

Project

repository

Design

translator

Program

editor

Design

editor

Code

generator

Design

analyser

Report

generator

Repozytorium

przedsięwzięcia

Translator

projektów

Edytor

programów

Edytor

projektów

Generator

kodu

Analizator

projektów

Generator

raportów

background image

Slajd nr 38

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model repozytorium

Wady i zalety współdzielonego repozytorium:

Efektywny sposób współdziałania dużych ilości danych.

Nie ma potrzeby jawnej transmisji z jednego podsystemu

do drugiego.

Twórcy podsystemów muszą uzgodnić model danych

repozytorium. Prowadzi to do kompromisów między

specyficznymi potrzebami każdego narzędzia. Integracja

może być trudna

Podsystemu produkujące dane nie muszą zajmować się

sposobem użycia tych danych przez inne podsystemy.

Ewolucja może być trudna, ponieważ duże ilości

informacji powstają zgodnie z ustalonym modelem danych

Łatwość tworzenia kopii zapasowych, sterowanie

zabezpieczeniami i dostępem przy pomocy menedżera

repozytorium

background image

Slajd nr 39

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model repozytorium

Wady i zalety współdzielonego repozytorium
c.d.:

Różne podsystemy mogą mieć odmienne
wymagania stawiane zabezpieczeniom oraz inne
strategie odtwarzania z kopii zapasowych

Model współdzielenia jest widoczny przez schemat
repozytorium. Integracja nowych narzędzi jest
bardzo łatwa o ile jest zgodna z przyjętym modelem
danych

Proces rozproszenia repozytorium po kilku
narzędziach może być trudny

background image

Slajd nr 40

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model klient-serwer

Architektoniczny model klient-serwer jest
modelem rozproszonym systemu w którym dane
i przetwarzanie jest rozproszone między zbiór
procesorów. Główne komponenty systemu:

Zbiór samodzielnych procesorów oferujących usługi
innym podsystemom. Przykładami są systemy
realizujące usługi drukowania, serwery plików,
serwery kompilujące.

Zbiór klientów, którzy korzystają z usług oferowanych
przez serwery. Zwykle same w sobie są podsystemami.
Może być kilka współbieżnie działających programów
klient.

Sieć dająca klientowi dostęp do serwerów

background image

Slajd nr 41

©Ian Sommerville 2000 - Inżynieria oprogramowania

Biblioteka filmów i zdjęć

Catalogue

server

Catalogue

Video

server

Film clip

files

Picture

server

Digitized

photographs

Hypertext

server

Hypertext

web

Client 1

Client 2

Client 3

Client 4

Wide-bandwidth network

Sieć ethernet

Klient 1

Klient 2

Klient 3

Klient 4

Katalo

g

Serwer

katalogu

Katalo

g

Serwer

filmów

Katalo

g

Serwer zdjęć

Katalo

g

Serwer hiper-

txt

background image

Slajd nr 42

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model maszyny abstrakcyjnej

Model maszyny abstrakcyjnej (zwany czasami modelem
warstwowym) opisuje sprzęganie podsystemów.

Układa system w ciąg warstw, z których każda oferuje
pewne usługi.

Każda warstwa , jest maszyną abstrakcyjną, której język
maszynowy ( usługi oferowane przez tę warstwę ) służy
do implementacji następnego poziomu maszyny
abstrakcyjnej.

Implementowanie języka często polega na kompilowaniu
opisu na tzw. ‘język maszyny idealnej’ a następnie na
kod maszynowy.

Podejście warstwowe ułatwia podejście przyrostowe

Wadą jest wolny dostęp do warstw wewnętrznych i
zmniejszenie przez to wydajności.

background image

Slajd nr 43

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model maszyny abstrakcyjnej zarządzania
wersjami

System

operacyjny

System bazy danych

Zarządzanie obiektami

Zarządzanie wersjami

background image

Slajd nr 44

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele sterowania

Modele do strukturalizacji

opisują podział

systemu na moduły .

Aby podsystemy pracowały jako jeden system
system, należy nimi

sterować

, tak aby ich

usługi były dostarczane we właściwe miejsce i
we właściwym czasie.

Modele strukturalne

nie obejmują informacji o

sterowaniu.

Modele sterowania

na poziomie

architektonicznym opisują przepływy
sterowania między podsystemami.

background image

Slajd nr 45

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele sterowania

Możemy wyróżnić dwa ogólne podejścia do
sterowania:

Sterowanie scentralizowane

. Jeden podsystem jest całościowo

odpowiedzialny za sterowanie; to on uruchamia i zatrzymuje
inne podsystemy. Może przekazać sterowanie innemu
podsystemowi, ale będzie oczekiwał zwrotu
odpowiedzialności za sterowanie.

Sterowanie zdarzeniowe

. Informacja o sterowaniu nie jest

wbudowana w podsystem, ale każdy system może może
reagować na zdarzenia zachodzące na zewnątrz. Te zdarzenia
mogą występować w innych podsystemach lub w otoczeniu
systemu.

Wszystkie powyższe modele struktury mogą być
zorganizowane za pomocą sterowania
scentralizowanego jak i zdarzeniowego.

background image

Slajd nr 46

©Ian Sommerville 2000 - Inżynieria oprogramowania

Sterowanie scentralizowane

W modelu scentralizowanym jeden z podsystemów
jest wybrany do roli sterownika systemu i
odpowiada za działanie innych podsystemów.
Modele te dzielimy na dwie klasy w zależności od
tego czy systemy są sekwencyjne czy współbieżne.

Model call-return.

Jest to dobrze znany model

podprogramów, w którym sterowanie zaczyna się na
wierzchołku hierarchii podprogramów i przez wywołania
podprogramów przechodzi do niższych poziomów
drzewa. Model ten można zastosować jedynie do
systemów sekwencyjnych.
Model przedstawiony na następnym slajdzie

nie jest

modelem strukturalnym

. Podprogram 1.1 nie musi być

częścią składową programu 1.

background image

Slajd nr 47

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model call-return

Routine 1.2

Routine 1.1

Routine 3.2

Routine 3.1

Routine 2

Routine 3

Routine 1

Main

program

background image

Slajd nr 48

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model menedżera

Model scentralizowany c.d.:

Model menedżera

. Stosowany jedynie do systemów

współbieżnych. Jeden z komponentów systemu jest
wybierany do roli menedżera systemu i steruje
rozpoczynaniem, zatrzymywaniem i koordynacją
innych procesów. Proces jest podsystemem lub
modułem, który może działać równolegle z innymi
procesami.
Model często używany do systemów real time (czasu
rzeczywistego).

background image

Slajd nr 49

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model sterowania dla systemów Real-
time

System

controller

User

interface

Fault

handler

Computation

processes

Actuator

processes

Sensor

processes

background image

Slajd nr 50

©Ian Sommerville 2000 - Inżynieria oprogramowania

Systemy sterowane zdarzeniami

Istnieje wiele rodzajów oprogramowań
sterowanych zdarzeniami.

Zdarzenia w tych modelach najczęściej
przychodzą z zewnątrz.

Zdarzenie nie oznacza po prostu binarnego
sygnału. Może to być sygnał przyjmujący
pewien zakres wartości.

Różnica między zdarzeniem i zwykłymi
danymi wejściowymi polega na tym, że proces
obsługujący zdarzenie nie decyduje o czasie
jego zajścia.

background image

Slajd nr 51

©Ian Sommerville 2000 - Inżynieria oprogramowania

Systemy sterowane zdarzeniami

Omówimy dwa modele sterowania
zdarzeniowego:

Modele rozgłaszania

. W takich modelach zdarzenie

jest w zasadzie ogłoszeniem dla wszystkich
podsystemów. Każdy podsystem, który może
obsłużyć to zdarzenie reaguje na nie.

Modele z przerwaniami

. Są używane najczęściej w

systemach czasu rzeczywistego, gdzie zewnętrzne
przerwania są wykrywane przez obsługę przerwań.
Następnie są przekazywane do innego komponentu,
który je przetworzy

background image

Slajd nr 52

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model sterowania z rozgłaszaniem

Sub-system

1

Event and message handler

Sub-system

2

Sub-system

3

Sub-system

4

Procedura obsługi zdarzeń i komunikatów

Podsystem 1

Podsystem 2

Podsystem 3

Podsystem 4

background image

Slajd nr 53

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model sterowania z przerwaniami

Handler

1

Handler

2

Handler

3

Handler

4

Process

1

Process

2

Process

3

Process

4

Interrupts

Interrupt

vector

background image

Slajd nr 54

©Ian Sommerville 2000 - Inżynieria oprogramowania

Rozkład na moduły

Po zaprojektowaniu architektury strukturalnej
następnym procesem projektowania architektonicznego
jest podział podsystemów na moduły.

Na tym poziomie można zastosować modele omówione
na początku dzisiejszego wykładu. Ponieważ
komponenty modułów są mniejsze niż podsystemy
możemy zastosować inne modele dla podzielonego
systemu:

Model obiektowy

. System jest dzielony na zbiór

porozumiewających się obiektów.

Model przepływu danych

. System jest dzielony na moduły

funkcjonalne, które pobierają dane wejściowe i przetwarzają je
na dane wyjściowe. Model ten bywa nazywany modelem
potokowy.

background image

Slajd nr 55

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele obiektowe

Model obiektowy architektury systemu dzieli
się na zbiór luźno uzależnionych od siebie
obiektów z dobrze zdefiniowanymi interfejsami.

Obiekty korzystają z usług oferowanych przez
inne obiekty.

Na następnym slajdzie pokazano przykład
architektonicznego modelu obiektowego dla
systemu fakturowania. System wystawia
klientom faktury, przyjmuje zapłaty, drukuje
pokwitowania płatności i upomnienia o
niezapłaconych fakturach.

background image

Slajd nr 56

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model obiektowy w systemie
fakturowania

issue ()

sendReminder ()

acceptPayment ()

sendReceipt ()

invoice#

date

amount

customer

Invoice

invoice#

date

amount

customer#

Receipt

invoice#

date

amount

customer#

Payment

customer#

name

address

credit period

Customer

background image

Slajd nr 57

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model przepływu danych

W modelu przepływu danych przekształcenia

funkcyjne przetwarzają dane wejściowe na dane

wyjściowe.

Dane przepływają od do drugiego procesu i są

przekształcane w miarę swej wędrówki przez cały

ciąg.

Każdy krok przetwarzania jest implementowany jako

przekształcenie.

Dane wejściowe przepływają przez te przekształcenia

do chwili wytworzenia z nich danych wyjściowych.

Przekształcenia mogą działać sekwencyjnie lub

równolegle.

Przekształcenie może przetwarzać dane jedna po

drugiej lub w postaci wsadu.

background image

Slajd nr 58

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model przepływu danych

USED AT:AUTHOR: PIOTR GRENIEWSKI

DATE:

REV:

PROJECT: rent-DFD

2003-10-30

2003-11-08

NOTES: 1 2 3 4 5 6 7 8 9 10

WORKING

DRAFT

RECOMMENDED

PUBLICATION

READER

DATE CONTEX T:

A-0

NODE:

TITLE:

NUMBER:

Rent a Car

A0

Zlecenia

Info o
p³atnoœciach

Info o
p³atnoœciach

Info o
wydaniu

Nazwa klienta,
adres klienta

Nazwa klienta,
adres klienta

Faktury, p³atnoœci,
ponaglenia

Samochód

Samochód

Nazwa klienta,
adres klienta

Tworzenie zleceń

Zlecenia

Samochód

1

Przetwarzanie

zleceñ

2

Przetwarzanie

p³atnoœci

3

Wydawanie

samochodów

1 Faktury

2

Zlecenia

wypo¿yczenia

3 Klienci

1

Klienci

2

Ustalenia

1

Klienci

background image

Slajd nr 59

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model przepływu danych system
fakturowania

Read issued

invoices

Identify

payments

Issue

receipts

Find

payments

due

Receipts

Issue

payment

reminder

Reminders

Invoices

Payments

background image

Slajd nr 60

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model przepływu danych system
fakturowania

Zalety modelu przepływu danych:

Umożliwia użycie wielokrotne przekształceń

Jest intuicyjna dla wielu ludzi, którzy myślą o swojej
pracy w kategorii przetwarzania wejścia i wyjścia.

Ewolucja systemu polegająca na dodawaniu nowych
przekształceń jest bardzo łatwa.

Ta architektura jest łatwa do zaimplementowania
zarówno jako system sekwencyjny jak i współbieżny.

background image

Slajd nr 61

©Ian Sommerville 2000 - Inżynieria oprogramowania

Architektury charakterystyczne dla
różnych dziedzin

Istnieją dwa rodzaje modeli
architektonicznych charakterystyczna dla
dziedziny:

Modele ogólne

, które są abstrakcjami systemów

takich jak: modele architektoniczne, systemy
gromadzenia danych, systemy monitorowania, itd.

Modele odniesienia

, które są jeszcze bardziej

abstrakcyjne i opisują większe klasy systemów.

background image

Slajd nr 62

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele ogólne

Najbardziej znanym przykładem architektonicznego modelu
ogólnego jest model kompilatora. Moduły kompilatora:

Analizator leksykalny

, który pobiera symbole języka wejściowego

i przekształca je w postać wewnętrzną.

Tabela symboli

budowana przez analizator leksykalny

przechowuje informację o nazwach i typach użytych w
programie.

Analizator składniowy

, który sprawdza składnie kompilowanego

języka. Korzysta z definicji gramatyki i buduje drzewo składni.

Drzewo składni

, które wewnętrzną strukturą danych

reprezentującą kompilowany program.

Analizator znaczeniowy

, który korzystając z informacji drzewa

składni i tabeli symboli sprawdza znaczeniową poprawność
programu wejściowego

Generator kodu

, który przechodzi drzewo składni i generuje kod

maszynowy.

background image

Slajd nr 63

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model przepływu danych kompilatora

Lexical

analysis

Syntactic

analysis

Semantic

analysis

Code

generation

Symbol

table

Analiza

leksykalna

Generowanie

kodu

Analiza

składniowa

Analiza

znaczeniowa

Tabela

symboli

background image

Slajd nr 64

©Ian Sommerville 2000 - Inżynieria oprogramowania

Model repozytorium systemu
przetwarzania języka

Syntax

analyser

Lexical

analyser

Semantic

analyser

Abstract

syntax tree

Grammar

definition

Symbol

table

Output

definition

Pretty-

printer

Editor

Optimizer

Code

generator

Repository

Generator

prezentacji

Edytor

Optymalizator

Analizator

znaczeniowy

Analizator

składniowy

Analizator

leksykalny

Generator

kodu

Drzewo

składni

abstrakcyjnej

Definicja

wyniku

Definicja

gramatyki

Tabela

symboli

background image

Slajd nr 65

©Ian Sommerville 2000 - Inżynieria oprogramowania

Modele odniesienia

Ogólne modele architektoniczne

odzwierciedlają

architekturę istniejących systemów.

Modele odniesienia

są natomiast wynikami badań dziedziny

zastosowania. Reprezentują wyidealizowane architektury
obejmujące wszystkie udogodnienia jakie system
potencjalnie może oferować.

Architektury odniesienia mogą służyć jako podstawa
implementacji systemu. Taki był motyw powstania modelu
referencyjnego OSI (Zimmerman, 1980) do komunikacji
systemów otwartych. Ten model był z założenia standardem.

System zgodny z tym modelem powinien móc się
skontaktować z innymi zgodnymi systemami.

Model OSI jest siedmiowarstwowym modelem komunikacji
systemów otwartych.

background image

Slajd nr 66

©Ian Sommerville 2000 - Inżynieria oprogramowania

Architektura modelu OSI

Application

Presentation

Session

Transport

Network

Data link

Physical

7

6

5

4

3

2

1

Communications medium

Network

Data link

Physical

Application

Presentation

Session

Transport

Network

Data link

Physical

Aplikacja


Document Outline


Wyszukiwarka

Podobne podstrony:
2009 04 08 POZ 06id 26791 ppt
1(45) Przedmiot i cele inżynierii oprogramowaniaid 10176 ppt
08 Krystalizacja polimerówid 7435 ppt
08 Oświadczenie woliid 7465 ppt
08 kompresja orogenyid 7583 ppt
08 Teoria Hollandaid 7523 ppt
05 Wymagania stawiane oprogramowaniuid 5978 ppt
08 Funkcje rekurencjaid 7257 ppt
22(45) Zapewnienie jakości oprogramowaniaid 29565 ppt
08 ZAPALENIA (2)id 7290 ppt
08 ognisko epidemiczeid 7586 ppt
10. Legalność Oprogramowania (15.12.08), LEGALNOŚĆ OPROGRAMOWANIA
14(45) Proces Tworzenia oprogramowaniaid 15602 ppt
08 Stacje elektroenergetyczneid 7511 ppt
08 transakcje i blokadyid 7590 ppt
03 Proces tworzenia oprogramowaniaid 4616 ppt

więcej podobnych podstron