Inżynieria systemów komputerowych yródÅ‚o: Ian Sommerville; "Inżynieria oprogramowania"; WNT W-wa 2003 Cele Celem jest przedstawienie pojÄ™cia inżynierii systemów komputerowych i wyjaÅ›nienie, dlaczego znajomość inżynierii systemów jest potrzebna inżynierom oprogramowania. Po przeczytaniu tego rozdziaÅ‚u bÄ™dziesz: ·ð wiedzieć, dlaczego oprogramowanie w systemie pozostaje pod wpÅ‚ywem ogólniejszych zagadnieÅ„ inżynierii systemów; ·ð wprowadzony w pojÄ™cia pojawiajÄ…cych siÄ™ wÅ‚aÅ›ciwoÅ›ci systemu takich jak niezawodność, efektywność, bezpieczeÅ„stwo i zabezpieczenia; ·ð rozumieć, dlaczego w czasie projektowania systemu należy zbadać jego Å›rodowisko; ·ð rozumieć inżynieriÄ™ systemów i proces zaopatrywania w system. Zawartość ·ð PojawiajÄ…ce siÄ™ wÅ‚aÅ›ciwoÅ›ci systemu ·ð Systemy i ich Å›rodowiska ·ð Modelowanie systemu ·ð Proces inżynierii systemów ·ð Zaopatrywanie w system Inżynieria systemów to czynność specyfikowania, projektowania, implementowania, weryfikowania, wdrażania i pielÄ™gnacji systemów postrzegana jako caÅ‚ość. Inżynierowie systemów nie zajmujÄ… siÄ™ tylko oprogramowaniem, ale także sprzÄ™tem komputerowym oraz interakcjami systemu z jego użytkownikami i Å›rodowiskiem. MuszÄ… myÅ›leć o usÅ‚ugach, które system oferuje, ograniczeniach, w ramach których system musi być zbudowany i w których musi dziaÅ‚ać, oraz jego interakcji ze Å›rodowiskiem. Inżynierowie oprogramowania muszÄ… rozumieć inżynieriÄ™ systemów, ponieważ problemy inżynierii oprogramowania sÄ… czÄ™sto wynikiem decyzji inżynierów systemów. Jest wiele możliwoÅ›ci zdefiniowania systemu od najbardziej abstrakcyjnych do konkretnych. Przyjmiemy nastÄ™pujÄ…cÄ… roboczÄ… definicjÄ™: System jest celowÄ… kolekcjÄ… powiÄ…zanych ze sobÄ… komponentów, które współpracujÄ…, aby osiÄ…gnąć pewien cel. Ta ogólna definicja obejmuje rozmaitość systemów. Bardzo prosty system, na przykÅ‚ad pióro, jest zrobiony z trzech lub czterech komponentów sprzÄ™towych. System kontroli lotów skÅ‚ada siÄ™ z tysiÄ™cy komponentów programowych i sprzÄ™towych oraz użytkowników, którzy podejmujÄ… decyzje na podstawie informacji otrzymanej z systemu. Systemy charakteryzujÄ… siÄ™ tym, że wÅ‚aÅ›ciwoÅ›ci i zachowania ich komponentów sÄ… nierozerwalnie ze sobÄ… splecione. Poprawne dziaÅ‚anie każdego z komponentów systemu zależy od funkcjonowania kilku innych komponentów. Oprogramowanie może dziaÅ‚ać jedynie wówczas, gdy poprawnie pracuje procesor. Procesor może prowadzić obliczenia pod warunkiem, że dobrze zainstalowano system oprogramowania, który definiuje te obliczenia. Systemy sÄ… czÄ™sto hierarchiczne w tym sensie, że zawierajÄ… inne systemy. Policyjny system nadzoru i kierowania może na przykÅ‚ad zawierać system informacji geograficznej do pobierania szczegółów miejsc incydentów. Te inne systemy noszÄ… nazwÄ™ podsystemów. Podsystemy charakteryzujÄ… siÄ™ tym, że mogÄ… dziaÅ‚ać jako niezależne systemy rzÄ…dzÄ…ce siÄ™ swoimi prawami. Ten sam system informacji geograficznej może być zatem używany w innych systemach. Jego zachowanie w ramach konkretnego systemu zależy jednak od zwiÄ…zków z innymi podsystemami. ZÅ‚ożone zależnoÅ›ci miÄ™dzy komponentami systemu oznaczajÄ…, że system jest czymÅ› wiÄ™cej niż tylko sumÄ… swoich części. Te pojawiajÄ…ce siÄ™ wÅ‚aÅ›ciwoÅ›ci (Checkland, 1981) nie mogÄ… być przypisane żadnej części systemu. PojawiajÄ… siÄ™ jedynie wówczas, gdy rozpatrujemy system jako caÅ‚ość. Niektóre z tych wÅ‚aÅ›ciwoÅ›ci można wyprowadzić bezpoÅ›rednio z porównywalnych wÅ‚aÅ›ciwoÅ›ci podsystemów. Najczęściej sÄ… one jednak wynikiem zÅ‚ożonych wzajemnych zależnoÅ›ci podsystemów, których praktycznie nie da siÄ™ zrozumieć, analizujÄ…c poszczególne komponenty systemu. Oto niektóre przykÅ‚ady pojawiajÄ…cych siÄ™ wÅ‚aÅ›ciwoÅ›ci systemu: ·ð CaÅ‚kowity ciężar systemu jest przykÅ‚adem pojawiajÄ…cej siÄ™ wÅ‚aÅ›ciwoÅ›ci, którÄ… można wyznaczyć z wÅ‚aÅ›ciwoÅ›ci poszczególnych komponentów. ·ð Niezawodność systemu zależy od niezawodnoÅ›ci komponentów systemu i zwiÄ…zków miÄ™dzy nimi. ·ð Użyteczność systemu jest bardzo zÅ‚ożonÄ… wÅ‚aÅ›ciwoÅ›ciÄ…, która nie zależy jedynie od oprogramowania i sprzÄ™tu, ale także od operatorów systemu i Å›rodowiska, w którym siÄ™ go używa. W tej książce skoncentrowaÅ‚em siÄ™ na systemach komputerowych zawierajÄ…cych sprzÄ™t i oprogramowanie i oferujÄ…cych użytkownikom interfejs zaimplementowany przez oprogramowanie. Inżynierowie oprogramowania powinni znać podstawy inżynierii systemów komputerowych (Computer-Based System Engineering, CBSE) (White i inni, 1993) ze wzglÄ™du na znaczenie oprogramowania w tych systemach. W programie kosmicznym Apollo, dziÄ™ki któremu czÅ‚owiek stanÄ…Å‚ na Księżycu w 1969, wykorzystano jedynie 10 megabajtów oprogramowania. OkoÅ‚o 100 megabajtów oprogramowania pojawiÅ‚o siÄ™ za to w amerykaÅ„skim programie stacji kosmicznej. Inżynieria oprogramowania ma zatem rozstrzygajÄ…ce znaczenie dla tworzenia z powodzeniem zÅ‚ożonych systemów komputerowych. 2.1. PojawiajÄ…ce siÄ™ wÅ‚aÅ›ciwoÅ›ci systemu We wprowadzeniu do tego rozdziaÅ‚u wyjaÅ›niÅ‚em, że pojawiajÄ…ce siÄ™ wÅ‚aÅ›ciwoÅ›ci systemu sÄ… atrybutami systemu jako caÅ‚oÅ›ci. Zwykle nie jest Å‚atwo z góry przewidzieć wartoÅ›ci tych wÅ‚aÅ›ciwoÅ›ci. Można je zmierzyć dopiero wówczas, gdy podsystemy sÄ… już zintegrowane i tworzÄ… kompletny system. IstniejÄ… dwa typy pojawiajÄ…cych siÄ™ wÅ‚aÅ›ciwoÅ›ci: ·ð WÅ‚aÅ›ciwoÅ›ci funkcjonalne, które sÄ… widoczne, gdy wszystkie części systemu współpracujÄ…, aby osiÄ…gnąć pewien cel. Rower ma na przykÅ‚ad cechÄ™ funkcjonalnÄ… bycia Å›rodkiem transportu, gdy scali siÄ™ go z jego części. ·ð WÅ‚aÅ›ciwoÅ›ci niefunkcjonalne, takie jak niezawodność, efektywność, bezpieczeÅ„stwo i zabezpieczenia. SÄ… zwiÄ…zane z zachowaniem systemu w jego Å›rodowisku pracy. CzÄ™sto sÄ… zasadnicze dla systemów komputerowych, ponieważ niepowodzenie w osiÄ…gniÄ™ciu pewnego zdefiniowanego minimalnego ich poziomu może sprawić, że system bÄ™dzie bezużyteczny. Niektóre funkcje systemu mogÄ… nie być potrzebne wszystkim jego użytkownikom, a zatem system można bez tych funkcji zaakceptować. System, który jest jednak zawodny lub zbyt wolny, bÄ™dzie prawdopodobnie odrzucony przez wszystkich użytkowników. Aby zilustrować zÅ‚ożoność zagadnienia pojawiajÄ…cych siÄ™ wÅ‚aÅ›ciwoÅ›ci, rozważmy na przykÅ‚ad niezawodność systemu. Niezawodność jest zÅ‚ożonym pojÄ™ciem, które zawsze należy badać na poziomie systemu, a nie jego poszczególnych komponentów. Komponenty w systemie sÄ… od siebie zależne, a zatem awarie w jednym z nich mogÄ… przenosić siÄ™ na caÅ‚y system i mieć wpÅ‚yw na operacje innych skÅ‚adowych. CzÄ™sto projektanci systemu nie sÄ… w stanie przewidzieć, jak konsekwencje awarii przenoszÄ… siÄ™ na caÅ‚y system. Nie mogÄ… zatem podać wiarygodnych oszacowaÅ„ niezawodnoÅ›ci systemu na podstawie danych o niezawodnoÅ›ci jego skÅ‚adowych. IstniejÄ… trzy silnie ze sobÄ… powiÄ…zane czynniki wpÅ‚ywajÄ…ce na niezawodność caÅ‚ego systemu: ·ð Niezawodność sprzÄ™tu. Jakie jest prawdopodobieÅ„stwo awarii komponentu sprzÄ™towego i jak dÅ‚ugi jest czas jego naprawy? ·ð Niezawodność oprogramowania. Jakie jest prawdopodobieÅ„stwo wytworzenia przez komponent programowy bÅ‚Ä™dnych danych wyjÅ›ciowych? Awarie oprogramowania istotnie różniÄ… siÄ™ od awarii sprzÄ™tu, ponieważ oprogramowanie nie zużywa siÄ™. Może dalej dziaÅ‚ać nawet wówczas, gdy wytworzyÅ‚o niepoprawny wynik. ·ð Niezawodność operatora. Jakie jest prawdopodobieÅ„stwo bÅ‚Ä™du operatora systemu? Wszystkie te czynniki sÄ… ze sobÄ… Å›ciÅ›le powiÄ…zane. Awarie sprzÄ™tu mogÄ… spowodować wysÅ‚anie faÅ‚szywych sygnałów, które sÄ… poza zakresem danych wejÅ›ciowych spodziewanych przez oprogramowanie. W takim wypadku oprogramowanie może zachować siÄ™ w sposób nieprzewidywalny. BÅ‚Ä…d operatora jest najbardziej prawdopodobny w sytuacjach stresowych. Dochodzi do tego najczęściej wówczas, gdy system ulega awarii. BÅ‚Ä™dy operatora mogÄ… mieć wpÅ‚yw na dziaÅ‚anie sprzÄ™tu, co prowadzi do dalszych bÅ‚Ä™dów i tak dalej, i tak dalej. Może siÄ™ zatem zdarzyć, że awaria jednego podsystemu, którÄ… można by Å‚atwo naprawić, przeradza siÄ™ w poważny problem wymagajÄ…cy caÅ‚kowitego wyÅ‚Ä…czenia systemu. Rzeczywista niezawodność zależy od kontekstu, w którym system jest użytkowany. WyjaÅ›niÅ‚em już wczeÅ›niej, że Å›rodowiska systemu nie da siÄ™ z góry wyspecyfikować. Projektanci nie mogÄ… też ograniczać Å›rodowiska dziaÅ‚ania systemu. Różne systemy mogÄ… w Å›rodowisku niespodziewanie reagować na problemy, co ma wpÅ‚yw na niezawodność tych systemów. Nawet wówczas, gdy system już zintegrowano, nie można podać dokÅ‚adnych miar jego niezawodnoÅ›ci. Wyobrazmy sobie na przykÅ‚ad system zaprojektowany do pracy w temperaturze pokojowej. Aby uniknąć odmiennoÅ›ci i wyjÄ…tkowych warunków, elektroniczne skÅ‚adniki systemu należy przygotować do dziaÅ‚ania w innym zakresie temperatur, np. od 0 do 45 stopni. W innych temperaturach komponenty mogÄ… zachowywać siÄ™ nieprzewidywalnie. Załóżmy teraz, że ten system zainstalowano w pobliżu klimatyzatora. JeÅ›li klimatyzator ulegnie awarii i wyrzuci gorÄ…ce powietrze na skÅ‚adniki elektroniczne naszego systemu, to system może zepsuć siÄ™. JeÅ›li zainstalowano by ten system w jakimÅ› innym miejscu, nie byÅ‚oby problemów. JeÅ›li klimatyzator dziaÅ‚aÅ‚by poprawnie, to nie byÅ‚oby kÅ‚opotów. Z powodu fizycznej bliskoÅ›ci tych urzÄ…dzeÅ„ zaszedÅ‚ zatem miÄ™dzy nimi niespodziewany zwiÄ…zek, który spowodowaÅ‚ awariÄ™ systemu. Podobnie jak niezawodność, inne pojawiajÄ…ce siÄ™ wÅ‚aÅ›ciwoÅ›ci, takie jak efektywność i użyteczność sÄ… trudne do oceny, można je jednak zmierzyć po uruchomieniu systemu. Z wÅ‚aÅ›ciwoÅ›ciami takimi jak bezpieczeÅ„stwo i zabezpieczenia sÄ… zwiÄ…zane inne problemy. W tym wypadku mamy po prostu do czynienia nie z atrybutem ogólnego zachowania systemu, ale zachowania systemu, które nie powinno mieć miejsca. System zabezpieczony to taki, który nie dopuszcza nieuprawnionego dostÄ™pu do swoich danych. Nie da siÄ™ przewidzieć wszystkich sposobów dostÄ™pu i jawnie ich zabronić. Można zatem jedynie ocenić te wÅ‚aÅ›ciwoÅ›ci przez domniemanie, tzn. system jest niezabezpieczony, gdy komuÅ› udaÅ‚o siÄ™ do niego wÅ‚amać. 2.2. Systemy i ich Å›rodowiska Systemy nie sÄ… niezależnymi bytami, ale istniejÄ… w pewnym Å›rodowisku. Åšrodowisko to ma wpÅ‚yw na funkcjonowanie i efektywność systemu. Czasem Å›rodowisko można uważać za system sam w sobie, ale w ogólniejszym wypadku skÅ‚ada siÄ™ ono z pewnej liczby oddziaÅ‚ujÄ…cych na siebie systemów. Na rysunku 2.1 przedstawiono systemy, które mogÄ… być elementami biurowca. System ogrzewania, system energetyczny, system oÅ›wietlenia, system wodnokanalizacyjny, system zsypów na Å›mieci i system zabezpieczeÅ„ sÄ… podsystemami w ramach budynku, który sam w sobie także jest systemem. Biurowiec stoi przy ulicy, a ulica leży w mieÅ›cie itd. Lokalne Å›rodowisko systemu to systemy na tym samym poziomie. CaÅ‚e Å›rodowisko skÅ‚ada siÄ™ ze Å›rodowiska lokalnego i Å›rodowiska systemu otaczajÄ…cego. Rys 2.1 Hierarchia systemów Rozważmy system zabezpieczeÅ„ przedstawiony w lewym dolnym rogu Lokalnym Å›rodowiskiem tego systemu sÄ… inne systemy wewnÄ…trz budynku. CaÅ‚e Å›rodowisko zawiera także wszystkie inne systemy na zewnÄ…trz budynku na ulicy i w mieÅ›cie oraz systemy naturalne, na przykÅ‚ad system pogodowy. IstniejÄ… dwa istotne powody, dlaczego inżynierowie systemu muszÄ… znać otoczenie systemu: 1. W wielu wypadkach system ma powodować pewne zmiany w swoim Å›rodowisku. System ogrzewania zmienia zatem swoje Å›rodowisko przez zwiÄ™kszanie lub zmniejszanie temperatury. Poprawne dziaÅ‚anie systemu można wiÄ™c ocenić jedynie na podstawie jego wpÅ‚ywu na Å›rodowisko. 2. Na funkcjonowanie systemu mogÄ… mieć wpÅ‚yw trudne do przewidzenia zmiany zachodzÄ…ce w Å›rodowisku. Na system instalacji elektrycznej mogÄ… na przykÅ‚ad oddziaÅ‚ywać zmiany w otoczeniu budynku. Efektem prac ziemnych może być przerwanie linii zasilajÄ…cej i wyÅ‚Ä…czenie systemu elektrycznego. Burza z piorunami może indukować prÄ…dy w instalacji elektrycznej, które wpÅ‚ywajÄ… na normalne funkcjonowanie tego systemu. Systemy sÄ… umieszczone nie tylko w Å›rodowisku fizycznym, ale także w Å›rodowisku organizacyjnym. Obejmuje ono strategie i procedury, które również sÄ… regulowane przez ważniejsze od nich zagadnienia polityczne, ekonomiczne, spoÅ‚eczne i Å›rodowiskowe. JeÅ›li Å›rodowisko organizacyjne nie jest dobrze rozpoznane, to systemy mogÄ… nie speÅ‚niać potrzeb przedsiÄ™biorstwa i mogÄ… być odrzucone przez użytkowników i zarzÄ…dzajÄ…cych przedsiÄ™biorstwami. Oto niektóre ludzkie i organizacyjne czynniki obecne w Å›rodowisku systemu, które majÄ… wpÅ‚yw na projekt systemu: 1. Zmiany procesu. Czy system wymaga zmian w procesach pracy wykonywanej w Å›rodowisku? JeÅ›li tak, to bÄ™dÄ… potrzebne szkolenia. JeÅ›li zmiany sÄ… poważne lub oznaczajÄ… utratÄ™ pracy przez pewne osoby, to istnieje niebezpieczeÅ„stwo sprzeciwu użytkowników wobec systemu. 2. Zmiany zawodu. Czy system zmniejsza umiejÄ™tnoÅ›ci użytkowników i sprawia, że muszÄ… zmienić swój styl pracy? JeÅ›li tak, mogÄ… oni aktywnie sabotować wprowadzenie systemu do organizacji. Projekty, które zmuszajÄ… zarzÄ…dzajÄ…cych do zmiany sposobu pracy tak, aby dostosować siÄ™ do systemu komputerowego, bardzo czÄ™sto nie sÄ… akceptowane. Menedżerowie mogÄ… odczuwać, że systemy umniejszyÅ‚y ich rolÄ™ w firmie. 3. Zmiany organizacyjne. Czy system zmienia strukturÄ™ oÅ›rodków wÅ‚adzy politycznej w organizacji? JeÅ›li firma zależy, na przykÅ‚ad, od zÅ‚ożonego systemu, to osoby, które wiedzÄ…, jak siÄ™ nim posÅ‚ugiwać, majÄ… wiÄ™kszÄ… wÅ‚adzÄ™ politycznÄ…. Te ludzkie, spoÅ‚eczne i organizacyjne czynniki sÄ… zwykle zasadnicze przy ocenie, czy system dobrze speÅ‚nia swoje funkcje. Niestety, ocena ich wpÅ‚ywu na system jest bardzo trudna dla inżynierów, którzy zwykle majÄ… bardzo maÅ‚e doÅ›wiadczenie w dziedzinie socjologii i kultury. Aby pomóc w zrozumieniu wpÅ‚ywu systemu na organizacje, opracowano różne metodyki, takie jak socjo-technika Mumforda (Mumford, 1989) i Soft System Methodology Checklanda (Checkland, 1981; Checkland i Scholes, 1990). Przeprowadzono też staranne studia socjologiczne nad skutkami pracy systemów komputerowych. W idealnej sytuacji caÅ‚a istotna wiedza o Å›rodowisku powinna być częściÄ… specyfikacji systemu, aby mogli jÄ… wziąć pod uwagÄ™ projektanci. W rzeczywistoÅ›ci nie jest to możliwe. Projektanci muszÄ… przyjmować zaÅ‚ożenia o Å›rodowisku na podstawie porównywalnych systemów i zdrowego rozsÄ…dku. JeÅ›li pomylÄ… siÄ™, to system może funkcjonować zle w zupeÅ‚nie nieprzewidywalny sposób. JeÅ›li projektanci nie rozumiejÄ… na przykÅ‚ad pojÄ™cia zgodnoÅ›ci elektromagnetycznej, to system może dziaÅ‚ać niepoprawnie w pobliżu urzÄ…dzeÅ„ emitujÄ…cych fale elektromagnetyczne. 2.3. Modelowanie systemu W trakcie czynnoÅ›ci spisywania wymagaÅ„ i projektowania musi powstać model systemu jako zbioru komponentów i zwiÄ…zków miÄ™dzy nimi. Zwykle jest on przedstawiany graficznie jako model architektury systemu, który daje czytelnikowi przeglÄ…d organizacji systemu. Architektura systemu jest zwykle prezentowana jako diagram blokowy, obrazujÄ…cy najważniejsze podsystemy i poÅ‚Ä…czenia miÄ™dzy nimi. Każdy podsystem jest rysowany w postaci prostokÄ…ta na diagramie blokowym. ZwiÄ…zki miÄ™dzy podsystemami sÄ… zaznaczane za pomocÄ… strzaÅ‚ek Å‚Ä…czÄ…cych prostokÄ…ty. Te zwiÄ…zki mogÄ… obejmować przepÅ‚ywy danych, relacje używa" - jest używany" lub inne rodzaje zależnoÅ›ci. Zilustrowano to na rysunku 2.2, na którym przedstawiono dekompozycjÄ™ alarmowego systemu anty wÅ‚amaniowego na jego podstawowe komponenty. Diagram blokowy powinien być opatrzony krótkimi opisami każdego podsystemu takimi jak na przykÅ‚ad na rys. 2.3. Na tym poziomie szczegółowoÅ›ci system podzielono na podsystemy. Każdy podsystem można przedstawiać w ten sam sposób, dopóki dekomponujemy system na komponenty funkcjonalne. Komponenty funkcjonalne sÄ… to komponenty, które z punktu widzenia podsystemu realizujÄ… jednÄ… funkcjÄ™. Podsystemy sÄ… zwykle wielofunkcyjne. SÄ… także możliwe inne spojrzenia (np. wytwórcy komponentów), w których komponenty sÄ… same w sobie systemami. Dawniej model architektury systemu byÅ‚ używany do zidentyfikowania komponentów programowych i sprzÄ™towych, które można tworzyć równolegle. To rozróżnienie sprzÄ™tu i oprogramowania staje siÄ™ jednak nieistotne. Niemal wszystkie współczesne komponenty majÄ… pewnÄ… moc obliczeniowÄ…. Maszyny Å‚Ä…czÄ…ce sieci bÄ™dÄ… na przykÅ‚ad skÅ‚adać siÄ™ z fizycznych przewodów oraz wzmacniaków Rysunek 2.2 Prosty system antywÅ‚amaniowy Podsystem Opis Detektory ruchu WykrywajÄ… ruch w monitorowanych pomieszczeniach Detektory drzwiowe WykrywajÄ… otwarcie zewnÄ™trznych drzwi budynku Centralka alarmu Steruje dziaÅ‚aniem systemu Syrena Nadaje sygnaÅ‚y dzwiÄ™kowe po wykryciu intruza Syntezator mowy Nadaje sÅ‚owny komunikat informujÄ…cy o poÅ‚ożeniu intruza Automat dzwoniÄ…cy Wykonuje zewnÄ™trzne poÅ‚Ä…czenie telefoniczne do firmy ochroniarskiej i policji Rysunek 2.3 Funkcjonalność podsystemów systemu antywÅ‚amaniowego i ruterów sieciowych. WewnÄ…trz wzmacniaków i ruterów można znalezć procesory i oprogramowanie nimi sterujÄ…ce, a także wyspecjalizowane komponenty elektroniczne. Obecnie na poziomie architektury lepiej jest klasyfikować podsystemy wzglÄ™dem ich funkcji, zanim przystÄ…pi siÄ™ do rozstrzygniÄ™cia dylematów sprzÄ™t czy oprogramowanie?". Decyzja, czy konkretnÄ… funkcjÄ™ należy zrealizować za pomocÄ… sprzÄ™tu czy oprogramowania, może wynikać z nietechnicznych przesÅ‚anek, na przykÅ‚ad dostÄ™pność komponentów COTS, lub ograniczeÅ„ na czas tworzenia komponentu. Diagramy blokowe nadajÄ… siÄ™ do systemów dowolnych rozmiarów. Na rysunku przedstawiono architekturÄ™ znacznie wiÄ™kszego systemu do kontroli lotów. SkÅ‚ada siÄ™ naÅ„ kilka głównych podsystemów, które już same w sobie sÄ… dużymi systemami. PrzepÅ‚yw informacji miÄ™dzy tymi podsystemami zobrazowano za pomocÄ… Å‚Ä…czÄ…cych je strzaÅ‚ek. 2.3.1. Komponenty funkcjonalne 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 systemu można raczej zaklasyfikować do jednej z poniższych kategorii: Rys.2.4 Architektura systemu kontroli lotów Komponenty detektorowe zbierajÄ… informacje ze Å›rodowiska systemu. PrzykÅ‚adami takich komponentów sÄ… radary w systemie kontroli lotów, detektory papieru w drukarkach laserowych i termopara w piecu. ·ð Komponenty efektorowe (uruchamiajÄ…ce) powodujÄ… zmiany w Å›rodowisku systemu. PrzykÅ‚adami takich komponentów sÄ… zawory, które otwierajÄ… siÄ™ i zamykajÄ…, aby zwiÄ™kszyć lub zmniejszyć przepÅ‚yw cieczy w rurze, stateczniki samolotu, które wyznaczajÄ… kierunek lotu, i mechanizm wciÄ…gania papieru do drukarki, który przesuwa papier za detektor papieru. ·ð Komponenty obliczeniowe pobierajÄ… dane wejÅ›ciowe, wykonujÄ… na nich pewne obliczenia i wytwarzajÄ… wyniki. PrzykÅ‚adem takiego komponentu jest procesor zmiennopozycyjny, który wykonuje obliczenia na liczbach rzeczywistych. ·ð Komponenty komunikacyjne umożliwiajÄ… komunikacjÄ™ innym komponentom systemu. PrzykÅ‚adem takiego komponentu jest sieć Ethernet Å‚Ä…czÄ…ca różne komputery wewnÄ…trz budynku. ·ð Komponenty koordynujÄ…ce koordynujÄ… operacje innych komponentów. PrzykÅ‚adem takiego komponentu jest proces szeregujÄ…cy w systemach czasu rzeczywistego, który decyduje, kiedy poszczególne procesy powinny mieć przydzielony procesor. ·ð Komponenty interfejsu przetwarzajÄ… dane w reprezentacji używanej przez jedne komponenty na reprezentacje używane przez inne komponenty. PrzykÅ‚adem może być komponent interfejsu do komunikacji z czÅ‚owiekiem, który pobiera pewien model systemu i wyÅ›wietla go operatorowi. Innym przykÅ‚adem jest przetwornik analogowo-cyfrowy, który zamienia wejÅ›cie analogowe na wyjÅ›cie cyfrowe. Na rysunku 2.5 wyjaÅ›niono, które z funkcjonalnych typów komponentów wystÄ™pujÄ… w architekturze systemu antywÅ‚amaniowego z rys. 2.2. PodziaÅ‚ na różne typy komponentów nie jest ani jednoznaczny, ani natychmiastowy. W systemach, którymi zapewne bÄ™dÄ… zajmować siÄ™ inżynierowie Typ komponentu Komponenty Funkcja Detektor Detektor ruchu, detektor Wykrywa ruch w monitorowanej drzwiowy przestrzeni, wykrywa otwarcie monitorowanych drzwi Efektor Syrena DzwiÄ™kowy sygnaÅ‚ wÅ‚amania Komunikacja Automat dzwoniÄ…cy Dzwoni do zewnÄ™trznego centrum monitoringu i informuje o wÅ‚amaniu. Odbiera polecenia z tego centrum Koordynacja Centralka alarmu Koordynuje pracÄ™ wszystkich komponentów systemu. Wykonuje polecenia otrzymane z klawiatury i centrum monitoringu Interfejs Syntezator mowy Syntetyzuje komunikat informujÄ…cy o poÅ‚ożeniu wÅ‚amywacza Rysunek 2.5 Typy komponentów systemu antywÅ‚amaniowego oprogramowania, wiÄ™kszość komponentów bÄ™dzie miaÅ‚a wbudowane oprogramowanie. Oprogramowanie bÄ™dzie zwykle sÅ‚użyÅ‚o do sterowania caÅ‚ym systemem. Te klasyfikacje komponentów sÄ… bardzo pomocne w trakcie projektowania systemu. WiÄ™kszość systemów zawiera wszystkie rodzaje komponentów. PowinniÅ›my jawnie zidentyfikować każdy typ na podstawie wymagaÅ„. JeÅ›li brakuje co najmniej jednego typu komponentu, prawdopodobnie pominÄ™liÅ›my coÅ› ważnego w swoim projekcie. 2.4. Proces inżynierii systemów Fazy procesu inżynierii systemów sÄ… przedstawione na rys. 2.6. Ten proces miaÅ‚ duży wpÅ‚yw na model kaskadowy tworzenia oprogramowania. IstniejÄ… 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. Liczba możliwych nieporozumieÅ„ jest ogromna, ponieważ dla różnych dziedzin inżynierii posÅ‚ugujemy siÄ™ odmiennÄ… terminologiÄ…. Ograniczona możliwość modyfikacji w trakcie tworzenia systemu. Gdy pewne decyzje techniczne (np. umiejscowienie radarów systemu kontroli lotów) sÄ… już podjÄ™te, zmienianie ich jest bardzo kosztowne. PrzeksztaÅ‚cenie projektu systemu tak, aby rozwiÄ…zać takie problemy, jest możliwe bardzo rzadko. JednÄ… z przyczyn znaczenia oprogramowania w systemach jest jego elastyczność - można dokonywać zmian w odpowiedzi na nowe wymagania. Rysunek 2.6 Proces inżynierii systemów Inżynieria systemów jest dziedzinÄ… interdyscyplinarnÄ…, w której biorÄ… udziaÅ‚ zespoÅ‚y wyspecjalizowane w rozmaitych dziedzinach. ZespoÅ‚y te sÄ… niezbÄ™dne, ponieważ do oceny konsekwencji decyzji projektowych jest potrzebna duża wiedza. Rozważmy system kontroli lotów, w którym używa siÄ™ radarów i innych detektorów do wyznaczenia pozycji samolotu (rys. 2.4). Na rysunku 2.7 przedstawiono niektóre z wielu dziedzin, z których specjaliÅ›ci muszÄ… być obecni w zespole inżynierów systemowych. Rysunek 2.7 Interdyscyplinarna zawiÅ‚ość inżynierii systemów W wypadku wielu systemów istnieje niemal nieskoÅ„czona liczba kompromisowych decyzji wyboru miÄ™dzy różnymi typami podsystemów. Inżynierowie różnych dziedzin muszÄ… negocjować sposób realizacji funkcjonalnoÅ›ci systemu. Nie ma zwykle poprawnej" decyzji, jak należy rozÅ‚ożyć system na części. Jest za to wiele innych możliwoÅ›ci. Wybór jednej z nich wcale nie musi być dokonany na podstawie kryteriów technicznych. Przypuśćmy, że w systemie kontroli lotów jednÄ… z opcji jest zbudowanie nowych radarów, a nie wykorzystanie istniejÄ…cej instalacji. JeÅ›li zatrudnieni inżynierowie lÄ…dowi nie majÄ… wiele wiÄ™cej do roboty, to mogÄ… faworyzować taki wybór, ponieważ umożliwia zachowanie swojego stanowiska. NastÄ™pnie uzasadniajÄ… go za pomocÄ… argumentów technicznych. Oprogramowanie jest niesÅ‚ychanie elastyczne i dlatego wiele niespodziewanych problemów zostawia siÄ™ do rozwiÄ…zania inżynierom oprogramowania. Przypuśćmy, że poÅ‚ożenie radaru powoduje powstawanie podwójnego obrazu. Przeniesienie radaru jest niemożliwe, trzeba wiÄ™c innego sposobu radzenia sobie z podwójnym obrazem. RozwiÄ…zanie mogÅ‚oby polegać na poprawieniu oprogramowania przetwarzajÄ…cego obraz tak, aby wyeliminować efekt podwójnego obrazu. Może to zwiÄ™kszyć niezbÄ™dnÄ… moc procesora w systemie, która może stać siÄ™ nierealna. Inżynierowie oprogramowania czÄ™sto stajÄ… przed zadaniem zwiÄ™kszenia możliwoÅ›ci oprogramowania bez zwiÄ™kszania kosztu sprzÄ™tu. Wiele tzw. porażek oprogramowania" nie wynikaÅ‚o z kÅ‚opotów zwiÄ…zanych z oprogramowaniem. ByÅ‚y rezultatem próby zmiany oprogramowania, aby dostosować je do zmienionych wymagaÅ„ inżynierii systemów. Dobrym przykÅ‚adem takiej porażki jest niepowodzenie systemu bagażowego na lotnisku w Denver (Swartz, 1996). 2.4.1. Definicja wymagaÅ„ systemowych Definiowanie wymagaÅ„ systemowych ma na celu odkrycie wymagaÅ„ stawianych systemowi jako caÅ‚oÅ›ci. Podobnie jak w wypadku analizy wymagaÅ„ dla oprogramowania, ten proces obejmuje konsultacje z klientami i użytkownikami. W tej fazie definiowania wymagaÅ„ zwykle koncentrujemy siÄ™ na trzech rodzajach wymagaÅ„: 1. Abstrakcyjne wymagania funkcjonalne. Podstawowe funkcje, które system ma wypeÅ‚niać, sÄ… definiowane na wysokim poziomie abstrakcji. Szczegółowa specyfikacja wymagaÅ„ funkcjonalnych ma miejsce na poziomie podsystemów. W wypadku systemu kontroli lotów czynność zbierania wymagaÅ„ prawdopodobnie doprowadzi do stwierdzenia, że jest konieczność zbudowania bazy danych do przechowywania planów lotów wszystkich samolotów wlatujÄ…cych do kontrolowanej przestrzeni powietrznej. Szczegóły tej bazy danych nie bÄ™dÄ… jednak specyfikowane, chyba że miaÅ‚oby to wpÅ‚yw na wymagania stawiane innym podsystemom. 2. WÅ‚aÅ›ciwoÅ›ci systemu. SÄ… to niefunkcjonalne, omówione wczeÅ›niej, pojawiajÄ…ce siÄ™ wÅ‚aÅ›ciwoÅ›ci systemu. Może to być dostÄ™pność, efektywność i bezpieczeÅ„stwo. Te niefunkcjonalne wÅ‚aÅ›ciwoÅ›ci systemu majÄ… wpÅ‚yw na wymagania stawiane wszystkim podsystemom. 3. Cechy, których system ma nie mieć. Czasem wyspecyfikowanie tego, czego systemowi nie wolno robić, jest tak samo ważne, jak okreÅ›lenie tego, co system powinien robić. W specyfikacji systemu kontroli lotów można na przykÅ‚ad ustalić, że system nie powinien jednoczeÅ›nie podawać kontrolerowi zbyt wiele informacji. WażnÄ… częściÄ… fazy definicji wymagaÅ„ jest ustalenie zbioru ogólnych celów, które system ma osiÄ…gnąć. Nie muszÄ… być one okreÅ›lone w kategoriach funkcjonalnoÅ›ci systemu, ale muszÄ… zdefiniować, dlaczego system jest nabywany do konkretnego Å›rodowiska. Aby zilustrować różnicÄ™ miÄ™dzy tymi dwoma podejÅ›ciami, rozważmy zainstalowany w biurowcu system zabezpieczeÅ„ przeciwko pożarom i wÅ‚amaniom. OkreÅ›lenie celu w kategoriach funkcjonalnoÅ›ci systemu mogÅ‚oby być na przykÅ‚ad takie: Dostarczyć antywÅ‚amaniowy i przeciwpożarowy system alarmowy biurowca, który na zewnÄ…trz i we wnÄ™trzu wyemituje ostrzeżenie o pożarze lub wÅ‚amaniu. W sformuÅ‚owaniu tego celu wyraznie stwierdzono, że konieczny jest system alarmowy, który bÄ™dzie ostrzegaÅ‚ o niepożądanych zdarzeniach. Taka definicja jest wÅ‚aÅ›ciwa, gdy na przykÅ‚ad w budynku istnieje już system alarmowy, który trzeba zamienić na nowy. Ten cel można jednak okreÅ›lić szerzej: Zapewnić, aby normalna praca w biurowcu nie byÅ‚a poważnie zakłócana przez pożary i wÅ‚amania. Zapisywanie celów w ten sposób jednoczeÅ›nie zwiÄ™ksza i zmniejsza zbiór potencjalnych decyzji projektowych. Umożliwia zabezpieczenie budynku przed wÅ‚amaniami za pomocÄ… skomplikowanych systemów zamków bez jakichkolwiek wewnÄ™trznych alarmów. Wyklucza za to użycie instalacji tryskaczowych do zabezpieczenia przeciwpożarowego. Takie instalacje mogÅ‚yby uszkodzić instalacjÄ™ elektrycznÄ… budynku i w ten sposób poważnie zakłócić pracÄ™. Zasadnicza trudność z okreÅ›laniem wymagaÅ„ stawianych systemowi polega na tym, że problemy, w których rozwiÄ…zaniu majÄ… pomóc budowane zÅ‚ożone systemy, sÄ… zwykle problemami zÅ‚oÅ›liwymi" (Rittel i Webber, 1973). Problem zÅ‚oÅ›liwy" to taki skomplikowany problem, w którym jest tak wiele powiÄ…zanych ze sobÄ… bytów, że nie istnieje jego ostateczna specyfikacja. Prawdziwy charakter problemu objawia siÄ™ dopiero w miarÄ™ opracowywania rozwiÄ…zania. Jaskrawym przykÅ‚adem takiego problemu jest przewidywanie trzÄ™sieÅ„ ziemi. Nikt nie może dokÅ‚adnie przewidzieć poÅ‚ożenia epicentrum trzÄ™sienia ziemi, jego czasu, wpÅ‚ywu na miejscowe Å›rodowisko itd. Nie możemy zatem caÅ‚kowicie wyspecyfikować sposobu postÄ™powania przy poważnych trzÄ™sieniach ziemi. Taki problem można rozwiÄ…zywać dopiero wówczas, gdy siÄ™ pojawi. 2.4.2. Projektowanie systemu Projektowanie systemu (rys. 2.8) ma na celu okreÅ›lenie, jak funkcjonalność systemu bÄ™dzie realizowana przez jego poszczególne komponenty. CzynnoÅ›ciami Rysunek 2.8 Proces projektowania systemu tego procesu sÄ…: 1. Podziel wymagania. Analizuje siÄ™ i Å‚Ä…czy w grupy powiÄ…zane ze sobÄ… wymagania. Zwykle istnieje kilka możliwych sposobów podziaÅ‚u. W tej fazie procesu można utworzyć kilka różnych opcji. 2. Zidentyfikuj podsystemy. Identyfikuje siÄ™ różne podsystemy, które samodzielnie lub zespoÅ‚owo speÅ‚niajÄ… wymagania. Grupy wymagaÅ„ sÄ… zwykle skojarzone z podsystemami, a zatem tÄ™ czynność i grupowanie wymagaÅ„ można ze sobÄ… poÅ‚Ä…czyć. Identyfikacja podsystemów może być jednak zależna od innych czynników zarówno organizacyjnych, jak i Å›rodowiskowych. 3. Przypisz wymagania podsystemom. Przypisuje siÄ™ wymagania do podsystemów. Teoretycznie powinno to być bardzo proste, o ile do identyfikacji podsystemów użyto grupowania wymagaÅ„. W praktyce nie mamy jednak nigdy do czynienia z idealnÄ… zgodnoÅ›ciÄ… podziaÅ‚u wymagaÅ„ i zidentyfikowanych podsystemów. Z ograniczeÅ„ narzuconych przez kupione na zewnÄ…trz podsystemy (COTS, por. p. 2.4.3) może wyniknąć konieczność zmiany wymagaÅ„. 4. OkreÅ›l funkcjonalność podsystemów. Specyfikuje siÄ™ poszczególne funkcje realizowane przez podsystemy. Czynność tÄ™ można uważać za część fazy projektowania systemu albo fazy specyfikacji wymagaÅ„, gdy podsystem jest systemem oprogramowania. W tym kroku należy także rozpoznać zwiÄ…zki miÄ™dzy podsystemami. 5. Zdefiniuj interfejsy podsystemów. Definiuje siÄ™ interfejsy oferowane i wymagane przez poszczególne podsystemy. Po ich uzgodnieniu można równolegle pracować nad podsystemami. Dwukierunkowe strzaÅ‚ki na rys. 2.8 oznaczajÄ…, że miÄ™dzy każdÄ… parÄ… kroków procesu projektowania wystÄ™puje wiele iteracji i sprzężeÅ„ zwrotnych. Gdy pojawiajÄ… siÄ™ problemy i pytania, ponowne zajÄ™cie siÄ™ wczeÅ›niejszymi fazami jest czÄ™sto nieuniknione. Dla niemal wszystkich systemów istnieje wiele możliwych projektów, które można by opracować. ObejmujÄ… caÅ‚y zakres rozwiÄ…zaÅ„ z różnymi kombinacjami sprzÄ™tu, oprogramowania i pracy ludzkiej. RozwiÄ…zanie wybrane do dalszej realizacji może być najlepsze pod wzglÄ™dem technicznym i speÅ‚niać wymagania. W wielu wypadkach czynniki natury organizacyjnej i politycznej majÄ… istotny wpÅ‚yw na wybór rozwiÄ…zania. JeÅ›li system jest na przykÅ‚ad przeznaczony dla instytucji rzÄ…dowej, dostawcy paÅ„stwowi mogÄ… mieć pierwszeÅ„stwo przed zagranicznymi, nawet gdy ich produkty sÄ… technologicznie sÅ‚absze. 2.4.3. Tworzenie podsystemów W czasie tworzenia podsystemów implementuje siÄ™ podsystemy zidentyfikowane w trakcie projektowania. Może to oznaczać rozpoczÄ™cie kolejnego procesu inżynierii systemów dla poszczególnych podsystemów. JeÅ›li jest to podsystem oprogramowania, to prawdopodobnie rozpocznie siÄ™ proces tworzenia oprogramowania obejmujÄ…cy gromadzenie wymagaÅ„, projektowanie, implementacjÄ™ itd. Proces tworzenia rzadko bÄ™dzie polegaÅ‚ na budowie wszystkich podsystemów od zera. Na ogół część podsystemów bÄ™dzie jednak komercyjnymi systemami z półki (Commercial, Off-The-Shelf, COTS) zakupionymi w celu integracji z naszym systemem. Zwykle kupienie istniejÄ…cego produktu jest znacznie taÅ„sze niż stworzenie wÅ‚asnego wyspecjalizowanego komponentu. W tej fazie prawdopodobnie należy cofnąć siÄ™ do projektowania, aby przystosować siÄ™ do nowego kupionego komponentu. Systemy COTS nie zawsze precyzyjnie speÅ‚niajÄ… wymagania, ale jeÅ›li produkty z półki sÄ… dostÄ™pne, to zwykle warto ponieść koszty rewizji projektu. Różne systemy sÄ… zwykle tworzone równolegle. Przy problemach na pograniczu miÄ™dzy podsystemami trzeba opracować żądanie modyfikacji systemu. JeÅ›li system wymaga obszernych prac inżynieryjnych nad sprzÄ™tem, to dokonywanie zmian po rozpoczÄ™ciu produkcji jest zwykle bardzo kosztowne. Należy wówczas znalezć jakieÅ› obejÅ›cia" rozwiÄ…zujÄ…ce taki problem. Te obejÅ›cia" polegajÄ… przeważnie na zmianie oprogramowania, ponieważ to wÅ‚aÅ›nie ono jest swoiÅ›cie elastyczne. Oznacza to zmiany w wymaganiach stawianych oprogramowaniu. Ważne jest wiÄ™c, jak wspomniaÅ‚em w rozdziale 1, aby projektować oprogramowanie z myÅ›lÄ… o zmianach. 2.4.4. Integracja systemu Integracja systemu polega na pobraniu niezależnie zbudowanych podsystemów i scaleniu ich w jeden kompletny system. IntegracjÄ™ można przeprowadzić za pomocÄ… podejÅ›cia wielkiego wybuchu", gdy wszystkie podsystemy sÄ… integrowane w tym samym czasie. Z powodów technicznych i menedżerskich najlepiej jest jednak integrować przyrostowo, tzn. w jednym kroku jest integrowany jeden system.Taki przyrostowy proces jest najwÅ‚aÅ›ciwszy z dwóch powodów: 1. Zwykle nie da siÄ™ ustalić harmonogramów budowania wszystkich podsystemów tak, aby koÅ„czyÅ‚y siÄ™ w tym samym czasie. 2. Integracja przyrostowa zmniejsza koszty wykrywania bÅ‚Ä™dów. JeÅ›li integruje siÄ™ jednoczeÅ›nie wiele podsystemów, to bÅ‚Ä…d wykryty w trakcie testowania może wystÄ™pować w każdym z tych podsystemów. Gdy integruje siÄ™ jeden podsystem z już dziaÅ‚ajÄ…cym systemem, zauważone bÅ‚Ä™dy sÄ… prawdopodobnie w integrowanym podsystemie lub w interakcji tego podsystemu i już dziaÅ‚ajÄ…cych podsystemów. Awarie podsystemów, które sÄ… konsekwencjami niewÅ‚aÅ›ciwych zaÅ‚ożeÅ„ o innych podsystemach, sÄ… zwykle wykrywane w trakcie integracji systemu. Może to doprowadzić do sporów miÄ™dzy dostawcami odpowiedzialnymi za różne podsystemy. Po wykryciu bÅ‚Ä™dów w interakcji podsystemów różni dostawcy mogÄ… mieć odmienne zdania o tym, kto za te bÅ‚Ä™dy odpowiada. Negocjacje, jak rozwiÄ…zać te problemy, mogÄ… trwać wiele tygodni lub nawet miesiÄ™cy. 2.4.5. Instalacja systemu W trakcie instalacji system jest umieszczany w Å›rodowisku, w którym ma dziaÅ‚ać. Chociaż może to wyglÄ…dać na bardzo prosty proces, może tu pojawić siÄ™ wiele problemów. To oznacza, że instalacja zÅ‚ożonego systemu może zająć wiele miesiÄ™cy, a nawet lat. PrzykÅ‚adami tych problemów sÄ…: 1. Åšrodowisko, w którym system ma być zainstalowany, jest inne niż to, które zakÅ‚adali twórcy systemu. Jest to najczęściej wystÄ™pujÄ…cy problem w trakcie instalacji systemów oprogramowania. System może na przykÅ‚ad korzystać z funkcji oferowanych przez specyficznÄ… wersjÄ™ systemu operacyjnego. W systemie operacyjnym w Å›rodowisku instalacji systemu te funkcje mogÄ… nie być identyczne. Po instalacji systemu może okazać siÄ™, że nie pracuje on w ogóle albo pracuje zupeÅ‚nie inaczej, niż przewidywali jego twórcy. 2. Potencjalni użytkownicy systemu mogÄ… być wrogami jego wprowadzenia. System może zmniejszyć zakres ich odpowiedzialnoÅ›ci lub liczbÄ™ stanowisk w firmie. Ludzie mogÄ… wiÄ™c rozmyÅ›lnie odmówić współpracy z instalatorami systemu. MogÄ… na przykÅ‚ad nie wziąć udziaÅ‚u w szkoleniu operatorów lub sprzeciwić siÄ™ udostÄ™pnieniu podstawowych informacji dla procesu instalacji. 3. Nowy system ma koegzystować z istniejÄ…cym systemem do czasu przekonania firmy, że nowy system pracuje poprawnie. Sprawia to szczególne problemy z instalacjÄ…, jeÅ›li systemy te nie sÄ… caÅ‚kowicie niezależne, ale współdzielÄ… pewne komponenty. Instalacja nowego systemu może być niemożliwa bez usuniÄ™cia starego. Próby z nowym systemem mogÄ… siÄ™ zatem odbywać jedynie w czasie, gdy stary system nie jest używany. 4. MogÄ… wystÄ…pić fizyczne problemy z instalacjÄ…. Wstawienie systemu do istniejÄ…cego budynku może być niemożliwe z braku miejsca na kable sieciowe w kanaÅ‚ach przewodowych, braku wymaganej klimatyzacji, zbyt maÅ‚ych mebli itd. JeÅ›li system ma być instalowany w budynku zabytkowym, to jakiekolwiek przebudowy bÄ™dÄ… prawdopodobnie zakazane. 2.4.6. DziaÅ‚anie systemu Po zainstalowaniu system zaczyna dziaÅ‚ać. Uruchomienie systemu może wymagać organizacji sesji szkoleniowych dla operatorów i zmiany normalnego toku pracy, aby jak najefektywniej wykorzystać nowy system. Nie wykryte problemy mogÄ… pojawić siÄ™ w tej fazie, ponieważ specyfikacja systemu mogÅ‚a zawierać Awarie podsystemów, które sÄ… konsekwencjami niewÅ‚aÅ›ciwych zaÅ‚ożeÅ„ o innych podsystemach, sÄ… zwykle wykrywane w trakcie integracji systemu. Może to doprowadzić do sporów miÄ™dzy dostawcami odpowiedzialnymi za różne podsystemy. Po wykryciu bÅ‚Ä™dów w interakcji podsystemów różni dostawcy mogÄ… mieć odmienne zdania o tym, kto za te bÅ‚Ä™dy odpowiada. Negocjacje, jak rozwiÄ…zać te problemy, mogÄ… trwać wiele tygodni lub nawet miesiÄ™cy. 2.4.5. Instalacja systemu W trakcie instalacji system jest umieszczany w Å›rodowisku, w którym ma dziaÅ‚ać. Chociaż może to wyglÄ…dać na bardzo prosty proces, może tu pojawić siÄ™ wiele problemów. To oznacza, że instalacja zÅ‚ożonego systemu może zająć wiele miesiÄ™cy, a nawet lat. PrzykÅ‚adami tych problemów sÄ…: 1. Åšrodowisko, w którym system ma być zainstalowany, jest inne niż to, które zakÅ‚adali twórcy systemu. Jest to najczęściej wystÄ™pujÄ…cy problem w trakcie instalacji systemów oprogramowania. System może na przykÅ‚ad korzystać z funkcji oferowanych przez specyficznÄ… wersjÄ™ systemu operacyjnego. W systemie operacyjnym w Å›rodowisku instalacji systemu te funkcje mogÄ… nie być identyczne. Po instalacji systemu może okazać siÄ™, że nie pracuje on w ogóle albo pracuje zupeÅ‚nie inaczej, niż przewidywali jego twórcy. 2. Potencjalni użytkownicy systemu mogÄ… być wrogami jego wprowadzenia. System może zmniejszyć zakres ich odpowiedzialnoÅ›ci lub liczbÄ™ stanowisk w firmie. Ludzie mogÄ… wiÄ™c rozmyÅ›lnie odmówić współpracy z instalatorami systemu. MogÄ… na przykÅ‚ad nie wziąć udziaÅ‚u w szkoleniu operatorów lub sprzeciwić siÄ™ udostÄ™pnieniu podstawowych informacji dla procesu instalacji. 3. Nowy system ma koegzystować z istniejÄ…cym systemem do czasu przekonania firmy, że nowy system pracuje poprawnie. Sprawia to szczególne problemy z instalacjÄ…, jeÅ›li systemy te nie sÄ… caÅ‚kowicie niezależne, ale współdzielÄ… pewne komponenty. Instalacja nowego systemu może być niemożliwa bez usuniÄ™cia starego. Próby z nowym systemem mogÄ… siÄ™ zatem odbywać jedynie w czasie, gdy stary system nie jest używany. 4. MogÄ… wystÄ…pić fizyczne problemy z instalacjÄ…. Wstawienie systemu do istniejÄ…cego budynku może być niemożliwe z braku miejsca na kable sieciowe w kanaÅ‚ach przewodowych, braku wymaganej klimatyzacji, zbyt maÅ‚ych mebli itd. JeÅ›li system ma być instalowany w budynku zabytkowym, to jakiekolwiek przebudowy bÄ™dÄ… prawdopodobnie zakazane. 2.4.6. DziaÅ‚anie systemu Po zainstalowaniu system zaczyna dziaÅ‚ać. Uruchomienie systemu może wymagać organizacji sesji szkoleniowych dla operatorów i zmiany normalnego toku pracy, aby jak najefektywniej wykorzystać nowy system. Nie wykryte problemy mogÄ… pojawić siÄ™ w tej fazie, ponieważ specyfikacja systemu mogÅ‚a zawierać bÅ‚Ä™dy i opuszczenia. Chociaż system dziaÅ‚a zgodnie ze specyfikacjÄ…, jego funkcjonalność może nie speÅ‚niać prawdziwych potrzeb przedsiÄ™biorstwa. Oznacza to, że projektanci nie przewidzieli oczekiwanego trybu pracy z systemem. Jednym z problemów, które mogÄ… wyjść na jaw dopiero po uruchomieniu systemu, jest współpraca nowego systemu z istniejÄ…cymi już systemami. MogÄ… wystÄ…pić fizyczne problemy z niekompatybilnoÅ›ciÄ…. Przeniesienie danych miÄ™dzy systemami może być trudne. Bardziej subtelne sÄ… problemy z bardzo różniÄ…cymi siÄ™ interfejsami użytkownika różnych systemów. Wprowadzenie nowego systemu może doprowadzić do zwiÄ™kszenia liczby bÅ‚Ä™dów operatorów, ponieważ operatorom mogÄ… siÄ™ mylić polecenia dostÄ™pne w różnych interfejsach użytkownika. 2.4.7. Ewolucja systemu Czas życia wielkich zÅ‚ożonych systemów jest bardzo dÅ‚ugi. W trakcie swego dziaÅ‚ania systemy te muszÄ… ewoluować, aby daÅ‚o siÄ™ usunąć bÅ‚Ä™dy w pierwotnych wymaganiach oraz speÅ‚nić nowe wymagania, które siÄ™ pojawiÅ‚y. Komputery systemu bÄ™dÄ… prawdopodobnie wymienione na nowe szybsze maszyny. Firma, która używa systemu, może siÄ™ zreorganizować i używać systemu w caÅ‚kiem inny sposób. ZewnÄ™trzne Å›rodowisko też może siÄ™ zmienić, wymuszajÄ…c zmiany w systemie. Ewolucja systemu (podobnie jak omówiona w części 7 ewolucja oprogramowania) jest ze swej natury kosztowna z kilku powodów: 1. Proponowane zmiany muszÄ… być bardzo starannie rozważone z punktu widzenia przedsiÄ™biorstwa i technologii. MuszÄ… być zaakceptowane przez rozmaite osoby, zanim bÄ™dÄ… wprowadzone. 2. Podsystemy nigdy nie sÄ… caÅ‚kowicie niezależne, zatem zmiany w jednym systemie mogÄ… zle wpÅ‚ynąć na zachowanie i efektywność innych podsystemów. Odpowiednie zmiany powinny być wiÄ™c wprowadzone do tych podsystemów. 3. Przyczyny pierwotnych decyzji projektowych zwykle nie sÄ… zapisywane. Osoby odpowiedzialne za ewolucjÄ™ systemu muszÄ… ustalić, dlaczego podjÄ™to takie a nie inne decyzje. 4. W miarÄ™ starzenia siÄ™ systemu jego struktura staje siÄ™ coraz bardziej skomplikowana przez zmiany, a koszt wprowadzenia nowych zmian jest coraz wiÄ™kszy. Wraz ze wzrostem zależnoÅ›ci spoÅ‚eczeÅ„stwa od systemów rozmaitych rodzajów, zwiÄ™kszajÄ… siÄ™ nakÅ‚ady na ewolucjÄ™ systemów, a nie rozwijanie nowych. IstniejÄ…ce systemy, które trzeba utrzymywać przy życiu, sÄ… czasem nazywane odziedziczonymi. 2.4.8. Likwidacja systemu Likwidacja systemu oznacza wycofanie go po okresie jego pożytecznego użytkowania. Czasem jest to proste, niektóre jednak systemy mogÄ… zawierać surowce niebezpieczne dla Å›rodowiska. W swej dziaÅ‚alnoÅ›ci inżynierowie systemów powinni przewidywać likwidacjÄ™ systemu i w trakcie projektowania wziąć pod uwagÄ™ utylizacjÄ™ substancji systemu. Toksyczne chemikalia powinny być na przykÅ‚ad zamkniÄ™te w szczelnych moduÅ‚ach, które po zużyciu można w caÅ‚oÅ›ci usunąć. W wypadku oprogramowania nie ma mowy o żadnych fizycznych problemach z likwidacjÄ…. Pewne funkcje oprogramowania mogÄ… jednak wystÄ™pować w systemie po to, aby uÅ‚atwić proces likwidacji. Oprogramowanie może na przykÅ‚ad monitorować stan innych komponentów systemu. Gdy system ulega likwidacji, nie zużyte komponenty można zidentyfikować i ponownie użyć. JeÅ›li dane przechowywane w likwidowanym systemie muszÄ… być zachowane, to należy je przeksztaÅ‚cić i przenieść do innego systemu. CzÄ™sto może siÄ™ to wiÄ…zać z wysokimi kosztami, ponieważ struktury danych mogÄ… być niejawnie zdefiniowane w samym oprogramowaniu. 2.5. Zaopatrywanie w system Klientami kupujÄ…cymi zÅ‚ożone systemy komputerowe sÄ… zwykle duże przedsiÄ™biorstwa, na przykÅ‚ad instytucje wojskowe, rzÄ…dowe i sÅ‚użby ratownicze. System może być kupiony jako caÅ‚ość, a także jako zestaw oddzielnych części, które potem siÄ™ integruje, specyficznie projektuje i wytwarza. W wypadku wielkich systemów podjÄ™cie decyzji, którÄ… z tych opcji wybrać, może trwać miesiÄ…ce, a nawet lata. Proces zaopatrywania w system polega na podejmowaniu decyzji o najlepszych sposobach zdobycia systemu i wybraniu najlepszych jego dostawców. Proces zaopatrywania jest Å›ciÅ›le zwiÄ…zany z procesem inżynierii systemów. Niektóre specyfikacje systemu i projekty architektury opracowuje siÄ™ przed podjÄ™ciem decyzji zaopatrzeniowych. IstniejÄ… dwie przyczyny takiej kolejnoÅ›ci dziaÅ‚aÅ„: Aby kupić lub podpisać kontrakt na projekt i budowÄ™ systemu, należy najpierw na wysokim poziomie abstrakcji opracować specyfikacjÄ™ tego, co system ma robić. Niemal zawsze taniej jest kupić system, niż go zaprojektować, wyprodukować i zbudować jako oddzielne przedsiÄ™wziÄ™cie. Pewien zakres projektowania architektonicznego jest konieczny, aby rozpoznać podsystemy, które można kupić, a nie samodzielnie projektować i produkować. Wielkie zÅ‚ożone systemy zwykle skÅ‚adajÄ… siÄ™ z komponentów z półki (COTS) oraz komponentów specjalnie zbudowanych. JednÄ… z przyczyn coraz wiÄ™kszej obecnoÅ›ci oprogramowania w systemach jest jego elastyczność, która umożliwia wykorzystanie wiÄ™kszej liczby istniejÄ…cych komponentów sprzÄ™towych. Oprogramowanie jest tu klejem", który spaja te różne komponenty i umożliwia im efektywnÄ… pracÄ™. Potrzeba stworzenia sklejacza (glueware) powoduje czasem, że oszczÄ™dnoÅ›ci wynikajÄ…ce z użycia komponentów z półki wcale nie sÄ… takie wielkie. Na rysunku 2.9 przedstawiono proces zaopatrywania w system w wypadku systemu istniejÄ…cego, jak i takiego, który należy specjalnie zaprojektować. Oto istotne uwagi na temat procesu z tego diagramu: 1. Komponenty z półki zwykle nie speÅ‚niajÄ… wymagaÅ„ idealnie, chyba że napisano te wymagania z myÅ›lÄ… o tych wÅ‚aÅ›nie komponentach. Wybór systemu oznacza zatem znalezienie najlepszego dopasowania miÄ™dzy wymaganiami stawianymi systemowi a możliwoÅ›ciami systemów z półki. Wymagania zmieniÄ… siÄ™ w wyniku tego wyboru. Może to mieć kaskadowy wpÅ‚yw na inne podsystemy. 2. Gdy system bÄ™dzie budowany na zamówienie, specyfikacja wymagaÅ„ jest podstawÄ… kontraktu na zaopatrzenie w system. Jest to wiÄ™c dokument zarówno prawniczy, jak i techniczny. 3. Po wybraniu wykonawcy systemu nastÄ™puje okres negocjacji kontraktu, w trakcie którego uzgadnia siÄ™ dalsze zmiany wymagaÅ„ i omawia różne sprawy, na przykÅ‚ad koszt zmian. Rysunek 2.9 Proces zaopatrywania w system WiÄ™kszość podsystemów sprzÄ™towych oraz wiele podsystemów oprogramowania, na przykÅ‚ad systemy zarzÄ…dzania bazÄ… danych, nie jest specjalnie tworzonych, gdy sÄ… częściÄ… wiÄ™kszego systemu. Używa siÄ™ raczej istniejÄ…cych podsystemów, wÅ‚Ä…czajÄ…c je takimi, jakie sÄ…, lub adaptujÄ…c do potrzeb tego systemu. Bardzo niewiele firm może samodzielnie projektować, tworzyć i przetestować wszystkie komponenty wielkiego zÅ‚ożonego systemu. Wykonawca, którego zwykle nazywamy generalnym, może podpisać kontrakt na zbudowanie rozmaitych podsystemów z pewnÄ… liczbÄ… podwykonawców. W wypadku wielkich systemów (np. kontroli lotów) grupa dostawców może stworzyć konsorcjum, aby zdobyć ten kontrakt. Takie konsorcjum powinno być zdolne do wykonania wszystkich prac zwiÄ…zanych z tym typem systemu, bÄ™dzie wiÄ™c obejmować dostawców sprzÄ™tu komputerowego, wytwórców oprogramowania, dostawców urzÄ…dzeÅ„ zewnÄ™trznych i dostawców specjalistycznego osprzÄ™tu, na przykÅ‚ad radarów. Rysunek 2.10 Model wykonawca- -podwykonawca Taki model wykonawca-podwykonawca zmniejsza liczbÄ™ przedsiÄ™biorstw, z którymi klient musi siÄ™ kontaktować. Podwykonawcy projektujÄ… i tworzÄ… części systemu zgodnie ze specyfikacjÄ… opracowanÄ… przez generalnego wykonawcÄ™. Po ich ukoÅ„czeniu te części sÄ… integrowane przez generalnego wykonawcÄ™. SÄ… nastÄ™pnie dostarczane klientowi kupujÄ…cemu system. Zależnie od treÅ›ci kontraktu klient może wyrazić zgodÄ™ generalnemu wykonawcy na wolny wybór podwykonawców lub wymagać wyboru z uzgodnionej listy firm GAÓ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 systemu 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. ·ð Architektury systemów zwykle 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. ·ð Proces inżynierii systemów obejmuje specyfikacjÄ™, projektowanie, tworzenie, integracjÄ™ i testowanie. Integracja systemu (Å‚Ä…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 komputerowego sÄ… kupowane jak komercyjne komponenty z półki (COTS).