Model jest abstrakcyjnym obrazem systemu, kt贸ry pomija pewne jego szczeg贸艂y. Mog膮 powstawa膰 uzupe艂niaj膮ce si臋 modele systemu, kt贸re obejmuj膮 r贸偶ne informacje o systemie.
W modelach kontekstowych zapisuje si臋, jak modelowany system jest umiejscowiony w 艣rodowisku innych system贸w i proces贸w. Modele architektoniczne, modele proces贸w i modele przep艂ywu danych mog膮 by膰 u偶ywane jako modele kontekstowe.
Diagramy przep艂ywu danych mog膮 s艂u偶y膰 do specyfikowania przetwarzania danych zachodz膮cego w systemie. System jest przedstawiany w postaci zbioru przekszta艂ce艅 danych z funkcjami dzia艂aj膮cymi na tych danych.
Modele maszyn stanowych sa u偶ywane do modelowania zachowania systemu, gdy reaguje na zewn臋trzne i wewn臋trzne zdarzenia.
Prototyp. Aby przedstawi膰 u偶ytkownikom wizj臋 udogodnie艅 systemu, mo偶na zbudowa膰 jego prototyp. Prototyp mo偶e zatem pom贸c w okre艣leniu i zatwierdzeniu wymaga艅 systemu.
W miar臋 wzrostu d膮偶enia do szybkiego dostarczania oprogramowania, prototypowanie jest coraz cz臋艣ciej u偶ywane jako standardowa metoda tworzenia ma艂ych i 艣rednich system贸w w zastosowaniach gospodarczych.
Prototypowanie „z porzuceniem” polega na budowie prototypu, kt贸ry pomo偶e w zrozumieniu wymaga艅 systemowych. W wypadku prototypowania ewolucyjnego prototyp ewoluuje przez kilka wersji do ostatecznego systemu.
Implementuj膮c prototyp porzucany, najpierw buduje si臋 te cz臋艣ci systemu, kt贸re rozumie si臋 najs艂abiej. Przy prototypowaniu ewolucyjnym najpierw buduje si臋 te cz臋艣ci systemu, kt贸re rozumie si臋 najlepiej.
Tworzenie b艂yskawiczne jest bardzo wa偶ne w wypadku prototypowych system贸w. Aby szybko dostarczy膰 prototyp, trzeba pomin膮膰 pewn膮 cz臋艣膰 funkcjonalno艣ci systemu lub rozlu藕ni膰 wi臋zy niefunkcjonalne, takie jak czas reakcji i niezawodno艣膰.
Metody prototypowania obejmuj膮 u偶ycie j臋zyk贸w bardzo wysokiego poziomu, programowanie bazy danych i konstrukcj臋 prototypu z komponent贸w u偶ycia wielokrotnego. Wiele 艣rodowisk prototypowania wspomaga tw贸rcze podej艣cie oparte na programowaniu graficznym.
Interfejs u偶ytkownika zawsze nale偶y tworzy膰 przez prototypowanie, poniewa偶 ich wyspecyfikowanie w postaci modelu statycznego jest praktycznie niemo偶liwe. U偶ytkownicy powinni bra膰 udzia艂 w ocenie i ewolucji prototypu.
Metody specyfikacji formalnej system贸w uzupe艂niaj膮 metody specyfikacji nieformalnej. Mo偶na ich u偶y膰 do udoskonalenia szczeg贸艂owej, ale specyfikacji nieformalnej wymaga艅 systemowych. Pomagaj膮 zatem w zasypaniu przepa艣ci mi臋dzy wymaganiami, a projektowaniem.
Specyfikacje formalne s膮 dok艂adne i jednoznaczne. Usuwaj膮 ze specyfikacji obszary w膮tpliwe i pozwalaj膮 unikn膮膰 niekt贸rych problem贸w z niew艂a艣ciw膮 interpretacj膮 j臋zyka. Niespecjali艣ci mog膮 mie膰 jednak trudno艣ci ze zrozumieniem specyfikacji formalnych.
Zasadnicz膮 korzy艣ci膮 z zastosowania metod formalnych w procesie budowania oprogramowania jest wymuszanie analizy wymaga艅 systemowych ju偶 we wczesnej fazie. Poprawianie b艂臋d贸w w tej fazie jest ta艅sze ni偶 modyfikacja gotowego systemu.
Metody specyfikacji formalnej najbardziej przydaj膮 si臋 przy budowaniu system贸w krytycznych, w kt贸rych bezpiecze艅stwo, niezawodno艣膰 i zabezpieczenia s膮 szczeg贸lnie istotne. Mo偶na ich tak偶e u偶y膰 do okre艣lania standard贸w.
Metody algebraiczne specyfikacji formalnej s膮 szczeg贸lnie przydatne do specyfikowania interfejs贸w, przy czym przez interfejs rozumie si臋 zbi贸r klas obiekt贸w lub abstrakcyjny typ danych. W tych metodach ukrywa si臋 stan systemu, a system specyfikuje si臋 w kategoriach zwi膮zk贸w mi臋dzy operacjami interfejsu.
W metodach opartych na modelach system przedstawia si臋 za pomoc膮 poj臋膰 matematycznych, takich jak zbiory i funkcje. Mo偶na w nich odwo艂a膰 si臋 do stanu systemu, co upraszcza niekt贸re rodzaje specyfikacji zachowania.
Architektura oprogramowania jest zasadniczym zr臋bem do strukturalizacji systemu. W trakcie projektowania architektonicznego mo偶na opracowa膰 r贸偶ne modele architektoniczne, na przyk艂ad model strukturalny, model sterowania i model podzia艂u.
Modelami podzia艂u systemu s膮 m.in.. Model repozytorium, model klient-serwer i model maszyny abstrakcyjnej. Repozytorium jest modelem wsp贸艂dzielenia danych we wsp贸lnej sk艂adnicy. W modelach klient-serwer dane s膮 zwykle rozproszone. Modele maszyny abstrakcyjnej s膮 warstwowe, przy czym ka偶da warstwa jest zaimplementowana za pomoc膮 udogodnie艅 swojej warstwy podstawowej.
Modelami sterowania s膮 model scentralizowany i model zdarze艅. W modelach scentralizowanych decyzje dotycz膮ce sterowania s膮 podejmowane na podstawie stanu systemu. W modelach zdarze艅 systemami steruj膮 zdarzenia zewn臋trzne.
Modelami podzia艂u na modu艂y s膮 model przep艂ywu danych i model obiektowy. Modele przep艂ywu danych s膮 funkcjonalne; modele obiektowe s膮 oparte na lu藕no zale偶nych od siebie bytach, kt贸re zarz膮dzaj膮 swoim stanem i operacjami.
Architektoniczne modele charakterystyczne dla dziedziny s膮 abstrakcjami w ramach dziedziny zastosowa艅. Mog膮 by膰 modelami og贸lnymi, kt贸re s膮 budowane wst臋puj膮co z istniej膮cych system贸w lub modelami odniesienia, kt贸re s膮 wyidealizowanymi abstrakcyjnymi modelami dziedziny.
Systemy rozproszone mog膮 charakteryzowa膰 si臋 wsp贸艂dzieleniem zasob贸w, otwarto艣ci膮, wsp贸艂bie偶no艣ci膮, skalowalno艣ci膮, odporno艣ci膮 na awarie i przezroczysto艣ci膮.
Systemy klient-serwer to systemy rozproszone, kt贸rych modelem jest zbi贸r us艂ug oferowanych procesom klient贸w przez serwery.
W systemach klient-serwer interfejs u偶ytkownika dzia艂a zwykle u klienta, a zarz膮dzanie danymi jest zawsze wykonywane przez wsp贸艂dzielony serwer. Funkcjonalno艣膰 u偶ytkowa mo偶e by膰 zaimplementowana na komputerze klienta lub na serwerze.
W architekturze obiekt贸w rozproszonych nie ma rozr贸偶nienia na klient贸w i serwery. Obiekty oferuj膮 og贸lne us艂ugi, kt贸re mog膮 by膰 wywo艂ywane przez inne obiekty. To podej艣cie mo偶na wykorzysta膰 do implementacji system贸w klient-serwer.
Systemy obiekt贸w rozproszonych musz膮 korzysta膰 ze 艣r贸dprogram贸w do obs艂ugi komunikacji obiekt贸w oraz dodawania i usuwania obiekt贸w z systemu. Na poziomie projektowym mo偶na postrzega膰 te 艣r贸dprogramy jako szyn臋 programow膮, do kt贸rej pod艂膮cza si臋 obiekty.
CORBA jest zbiorem standard贸w dla 艣r贸dprogram贸w do obs艂ugi architektur obiekt贸w rozproszonych. Obejmuje definicje modelu obiektowego, po艣rednika zlece艅 obiektowych i wsp贸lnych us艂ug. S膮 ju偶 dost臋pne rozmaite implementacje standard贸w CORBA.
Projektowanie obiektowe jest sposobem projektowania oprogramowania, w kt贸rym zasadnicze komponenty projektu odpowiadaj膮 obiektom z ich prywatnym stanem i operacjami, a nie funkcjami.
Obiekt powinien mie膰 operacje konstruktowe i inspekcyjne, kt贸re umo偶liwiaj膮 odczyt stanu i jego modyfikacj臋. Obiekt oferuje us艂ugi (operacje korzystaj膮ce z informacji o stanie) innym obiektom. Obiekty s膮 tworzone w czasie wykonywania na podstawie specyfikacji zawartej w definicji klasy obiekt贸w.
Obiekty mo偶na implementowa膰 sekwencyjnie lub wsp贸艂bie偶nie. Obiekt wsp贸艂bie偶ny mo偶e by膰 pasywny, w贸wczas jego stan jest zmieniany jedynie przez jego interfejs. Mo偶e by膰 te偶 obiektem aktywnym, kt贸ry zmienia sw贸j stan bez interwencji z zewn膮trz.
Unified Modeling Language (UML) obejmuje wiele r贸偶nych notacji, kt贸re s艂u偶膮 do dokumentowania interfejs贸w obiekt贸w.
System czasu rzeczywistego to system oprogramowania, kt贸ry musi reagowa膰 na zdarzenia w czasie rzeczywistym. Jego poprawno艣膰 nie zale偶y tylko od wytwarzanych wynik贸w, ale tak偶e od czasu ich wytworzenia.
Uniwersalny model architektury systemu czasu rzeczywistego przewiduje skojarzenie procesu z ka偶d膮 klas膮 detektor贸w i efektor贸w. Mog膮 by膰 potrzebne tak偶e inne procesy koordynuj膮ce.
Projektowanie architektoniczne systemu czasu rzeczywistego polega zwykle na nadaniu systemowi struktury zbioru oddzia艂uj膮cych na siebie proces贸w wsp贸艂bie偶nych.
Modu艂 wykonawczy czasu rzeczywistego odpowiada za zarz膮dzanie procesami i zasobami. Zawsze obejmuje modu艂 szereguj膮cy, kt贸ry jest komponentem podejmuj膮cym decyzje o tym, kt贸ry proces ma si臋 wykonywa膰. Decyzje o szeregowaniu s膮 podejmowane na podstawie priorytet贸w proces贸w.
Systemy monitorowania i sterowania okresowego odpytuj膮 zbi贸r detektor贸w, kt贸re dostarczaj膮 informacje ze 艣rodowiska systemu. Takie systemy przez wydawanie polece艅 efektorom wykonuj膮 akcje, kt贸re zale偶膮 od odczyt贸w detektor贸w.
Systemy gromadzenia danych s膮 zwykle zgodne z modelem producent-konsument. Proces producenta wk艂ada dane do bufora cyklicznego, sk膮d s膮 pobierane do wykorzystania przez konsumenta. R贸wnie偶 bufor jest implementowany jako proces, co umo偶liwia wyeliminowanie konflikt贸w mi臋dzy producentem, a konsumentem.
Projektowanie z u偶yciem wielokrotnym polega na projektowaniu oprogramowania zgodnie z istniej膮cymi przyk艂adami dobrych projekt贸w i wykorzystaniu komponent贸w programowych tam, gdzie s膮 potrzebne.
Korzy艣ci z u偶ycia wielokrotnego to ni偶sze koszty, szybsze tworzenie oprogramowania i mniej zagro偶e艅. Przez wykorzystanie wiedzy specjalist贸w do budowania komponent贸w u偶ycia zwi臋ksza si臋 niezawodno艣膰 systemu, a specjali艣ci s膮 wydajniejsi.
Tworz膮c komponentowo, polegamy na komponentach „czarnych skrzynkach” z jasno okre艣lonymi interfejsami wymaganym i oferowanym. Rodzaje komponent贸w, kt贸re mo偶na u偶y膰 wielokrotnie, obejmuj膮 funkcje, abstrakcje danych, zr臋by i ca艂e systemy program贸w u偶ytkowych.
U偶ycie wielokrotne produkt贸w COTS polega na wykorzystaniu wielkich system贸w z p贸艂ki. Takie systemy maja mn贸stwo funkcjonalno艣ci. Ich u偶ycie wielokrotnie mo偶e znacz膮co zmniejszy膰 koszty i czas tworzenia.
Komponenty programowe, kt贸re zaprojektowano z my艣l膮 o u偶yciu wielokrotnym, powinny by膰 niezale偶ne, odzwierciedla膰 stabilne abstrakcje dziedzinowe i oferowa膰 dost臋p do swego stanu przez operacje interfejsu oraz nie obs艂ugiwa膰 samemu swoich wyj膮tk贸w.
Rodziny program贸w u偶ytkowych zawieraj膮 powi膮zane programy u偶ytkowe, kt贸re zbudowano na podstawie co najmniej jednego programu bazowego. Uniwersalny system jest adoptowany i specjalizowany tak, aby spe艂ni艂 konkretne wymagania dotycz膮ce funkcjonalno艣ci, docelowej platformy lub konfiguracji dzia艂ania.
Wzorce projektowe to abstrakcje wysokiego poziomu, b臋d膮ce dokumentacj膮 udanych rozwi膮za艅 projektowych. S膮 podstawowym sposobem u偶ycia wielokrotnego projekt贸w w tworzeniu obiektowym. Opis wzorca powinien obejmowa膰 nazw臋 wzorca, opis problemu i rozwi膮zania oraz wyja艣nienie wynik贸w i kompromis贸w zwi膮zanych ze stosowaniem wzorca.
Proces projektowania interfejsu u偶ytkownika powinien koncentrowa膰 si臋 na u偶ytkowniku. Interfejs powinien porozumiewa膰 si臋 z u偶ytkownikiem za pomoc膮 ich poj臋膰. Powinien by膰 logiczny i sp贸jny. Powinien zawiera膰 tez udogodnienia pomagaj膮ce u偶ytkownikom w pracy z systemem i w wycofywaniu si臋 z pomy艂ek.
Sposoby interakcji z systemem oprogramowanym to m. in. Bezpo艣rednie dzia艂anie, wyb贸r z menu, wype艂nianie formularza, j臋zyki polece艅 i j臋zyk naturalny.
Informacje nale偶y wy艣wietla膰 graficznie, gdy chce si臋 przedstawi膰 trendy i warto艣ci przybli偶one. Wy艣wietlacze cyfrowe powinny by膰 stosowane jedynie w贸wczas, gdy jest wymagana precyzja.
W interfejsie u偶ytkownika kolory nale偶y u偶ywa膰 oszcz臋dnie i sp贸jnie. Projektanci powinni bra膰 pod uwag臋, 偶e znacz膮ca liczba os贸b to daltoni艣ci.
Systemy pomocy powinny oferowa膰 dwa rodzaje pomocy: Pom贸偶cie!, to znaczy „Pom贸偶cie! Jestem w k艂opotach!” i „Pomo偶ecie?”, to znaczy „Pomo偶ecie? Potrzebuj臋 informacji”.
Komunikaty ob艂臋dach nie powinny sugerowa膰, 偶e u偶ytkownik jest winny. Powinny za to sugerowa膰, jak naprawi膰 b艂膮d, i dawa膰 odsy艂acz do systemu pomocy.
Dokumentacja u偶ytkownika powinna obejmowa膰 przewodniki dla pocz膮tkuj膮cych i podr臋czniki. Nale偶y dostarczy膰 oddzielenie dokumenty dla administratora.
Specyfikacja systemu powinna zawiera膰 (tam gdzie to jest mo偶liwe) ilo艣ciowe warto艣ci atrybut贸w u偶yteczno艣ci. Proces oceny powinien polega膰 na weryfikacji systemu wzgl臋dem tych wymaga艅.