1. Co to jest oprogramowanie ?
Są to programy komputerowe, cała związana z nimi dokumentacja i dane konfiguracyjne
Rodzaje produktów oprogramowania :
- Powszechne
- Dostosowane (na zamówienie)
2. Wymienić etyczne dylematy inżynierii oprogramowania.
- zasadnicza niezgodność z poglądami przełożonego
- nieetyczne zachowanie pracodawcy, np. fałszowanie dzienników kontroli przy testowaniu krytycznego systemu
- uczestnictwo w tworzeniu systemów wojskowych i nuklearnych
3. Omówić podstawowe właściwości systemów.
Niefunkcjonalne :
niezawodność
efektywność
bezpieczeństwo
zabezpieczenia
Są związane z zachowaniem się w środowisku jego pracy. Często są zasadnicze dla sys. komputerowych, ponieważ niepowodzenie w osiągnięciu pewnego zdefiniowanego min. ich poziomu może sprawić, iż system będzie bezużyteczny.
Funkcjonalne - które są widoczne, gdy wszystkie części sys. współpracują, by osiągnąć jakiś cel. Cechą funkcjonalną roweru jest bycie środkiem transportu po złożeniu wszystkich jego elementów.
4. Co to jest tworzenie ewolucyjne ?
Tworzenie badawcze - celem procesu jest praca z klientem, polegająca na badaniu wymagań i dostarczenie ostatecznego systemu. Tworzenie rozpoczyna się od tych części które są dobrze rozpoznane. System ewoluuje poprzez dodawanie nowych cech, które proponuje klient.
Prototypowanie z porzuceniem - celem tworzenia ewolucyjnego jest zrozumienie wymagań klienta i wypracowanie lepszej definicji wymagań stawianych systemowi. Budowanie prototypu ma na celu eksperymentowanie z tymi wymaganiami klienta, które są niejasne.
Problemy:
Proces nie jest widoczny
System ma złą strukturę
Konieczne mogą być specjalne narzędzia i techniki
Stosowanie:
W przypadku małych systemów (do 100 tys. linijek kodu) lub średnich (do 500 tys.), z krótkim czasem życia, podejście ewolucyjne jest najlepsze.
W przypadku dużych systemów, z długim okresem życia, wady tworzenia ewolucyjnego ujawniają się z całą ostrością.
5. Wymień podstawowe metody projektowania.
Metody projektowania - są zbiorem notacji i porad dla projektantów oprogramowania.
Użycie metod strukturalnych polega zwykle na opracowaniu graficznych modeli systemu i prowadzi do ogromnej ilości dokumentacji projektowej.
Modele:
Model przepływu danych
Model strukturalny
Model obiektowy
6. Dokonać podziału systemów CASE.
CASE (Computer-Aided Systems Engineering) - oprogramowanie używane do komputerowego wspomagania projektowania oprogramowania.
Podział:
Narzędzia - wspomagają poszczególne zadania w ramach procesu, np. sprawdzanie spójności projektu, kompilacji programu, porównywania wyników testów itp.
Warsztaty - wspomagają całe fazy procesów lub czynności, np. specyfikowanie, projektowanie itp.
Środowiska - wspomagają całość lub znaczną część procesu tworzenia oprogramowania.
7. Omówić wymagania funkcjonalne i niefunkcjonalne.
Wymagania funkcjonalne - są stwierdzeniami jakie usługi ma oferować system, jak ma reagować na określone dane wejściowe, oraz jak ma się zachowywać w określonych sytuacjach. W niektórych przypadkach wymagania funkcjonalne określają czego system nie powinien robić.
Wymagania niefunkcjonalne - to ograniczenia usług i funkcji systemu. Obejmują ograniczenia czasowe, ograniczenia dotyczące procesu tworzenia, standardy itp.
wymagania produktowe: niezawodność, zapotrzebowanie na pamięć, szybkość działania systemu
wymagania organizacyjne: wynikają ze strategii i procedur w firmie- kliencie i firmie- wytwórcy
wymagania zewnętrzne: ta szeroka kategoria obejmuje wymagania współpracy, które definiują interakcje systemu z systemami innych firm, wymagania prawne.
8. Co to jest model procesu i na czym polega ?
Jest to uproszczona prezentacja procesu tworzenia oprogramowania. Modele ze swej natury są uproszczeniami .
Przykłady:
Model przepływu prac
Model przepływu danych (lub model czynności)
Model rola-akcja
Przykłady ogólnych modeli (paradygmatów) tworzenia oprogramowania:
Model kaskadowy
Tworzenie ewolucyjne
Formalne przekształcenia
Składanie systemu z komponentów ponownego użycia
9. Programowanie baz danych.
Większość gospodarczych programów użytkowych obejmuje przetwarzanie danych z bazy danych i generowanie wyników, które polega na organizowaniu i formatowaniu danych.
Programowanie bazy danych jest wykonywane w specjalizowanym języku, który ma wbudowaną wiedzę o bazie danych i zawiera operacje służące do pracy z bazą danych.
Pojęcie język czwartej generacji (4GL) obejmuje zarówno język programowania bazy danych, jak i wspomagające go środowisko.
Baza danych powinna wspomagać generowanie obiektów sterujących i konfiguracyjnych, tzn. obiektów, które same są grupami innych obiektów bazy danych.
Udogodnienia do sterowania konfiguracją powinny umożliwiać dostęp do obiektów w pewnej wersji grupy za pomocą niepełnej nazwy.
10. Zalety sys. obiektywnych. (obiektowych)
Systemy powinny być łatwe w pielęgnacji, ponieważ obiekty są niezależne.
Można je poznawać i modyfikować jako samodzielne byty.
Zmiana implementacji obiektu lub dodanie usług nie powinno mieć wpływu na obiekty systemowe.
Obiekty są skojarzone z bytami, zwykle więc istnieje jasne odwzorowanie bytów świata rzeczywistego (np. komponentów sprzętowych) na sterujące nimi obiekty w systemie. Zwiększa to zrozumiałość i zarazem zdatność do pielęgnacji systemu.
11. Omówić proces tworzenia oprogramowania.
Specyfikowanie oprogramowania - funkcjonalność oprogramowania i ograniczenia jego działania musza być zdefiniowane.
Projektowanie i implementowanie oprogramowania - oprogramowanie, które spełnia specyfikację, musi być stworzone.
Zatwierdzenie oprogramowania - programowanie musi być zweryfikowane, aby zapewnić, że robi to, czego oczekiwał klient.
Ewolucja oprogramowania - programowanie musi ewoluować, aby spełniać zmieniające się potrzeby użytkowników.
12. Co rozumiemy pod pojęciem odpowiedzialność etyczna i zawodowa ?
Muszą postępować etycznie i moralnie, jeśli chcą być uważani za profesjonalistów.
Zachowywać się etycznie, to więcej niż tylko przestrzegać obowiązujące prawo.
Inżynierowie oprogramowania powinni postępować dla dobra społeczeństwa.
Inżynierowie oprogramowania powinni zachowywać rozsądek i niezależność swoich sądów.
Zarządzający inżynierami oprogramowania i zwierzchnicy powinni przyjąć i promować etykę w zarządzaniu tworzeniem i pielęgnacją oprogramowania.
Inżynierowie oprogramowania powinni być uczciwi i chętni do pomocy swoim kolegom.
Zasady odpowiedzialności zawodowej:
Zachowywanie tajemnicy - inżynierowie powinni zawsze dochowywać tajemnic powierzonych przez pracodawców i klientów, niezależnie od tego czy podpisano formalną umowę o ochronie tajemnicy.
Kompetencje - inżynierowie nie powinni zawyżać poziomu swoich kompetencji. Nie powinni świadomie przyjmować prac, które przekraczają ich możliwości.
Prawo własności intelektualnej - inżynierowie powinni znać miejscowe prawo regulujące korzystanie z własności intelektualnej. Powinni szczególnie dbać o poszanowanie intelektualnej własności swoich pracodawców i klientów.
Niewłaściwe użycie komputera - inżynierowie oprogramowania nie powinni używać swoich umiejętności do niewłaściwego używania cudzych komputerów. Niewłaściwe użycie może być dość banalne (np. granie na maszynie pracodawcy) lub skrajnie poważne (rozsiewanie wirusów).
13. Co rozumiemy pod pojęciem 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 systemów.
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.
14. Ewolucja systemu - podaj przykład.
Czas życia wielkich złożonych systemów jest bardzo długi. W trakcie swego działania systemy te musza ewoluować.
Ewolucja oprogramowania jest ze swej natury kosztowna:
proponowane zmiany muszą być bardzo starannie rozważone z punktu widzenia przedsiębiorstwa i technologii,
podsystemy nigdy nie są całkowicie niezależne,
przyczyny pierwotnych decyzji projektowych zwykle nie są zapisywane,
w miarę starzenia się systemu jego struktura staje się coraz bardziej skomplikowana przez zmiany.
Przykładem może tu posłużyć system operacyjny firmy Microsoft - Windows XP, który ewoluował poprzez dostarczane nieodpłatnie przez producenta, pakiety zwane Service Pack (1-3), zawierające nowe funkcje i/lub zbiorczą aktualizację bezpieczeństwa dla oprogramowania, udostępnione najczęściej w postaci pojedynczego, łatwego do zainstalowania pliku.
15. Omów tworzenie formalne systemów.
Tworzenie formalne systemów jest podejściem, które ma wiele wspólnego z modelem kaskadowym. Proces tworzenia jest tu jednak oparty na matematycznych przekształceniach specyfikacji systemu w program wykonywalny.
W procesie przekształcania formalna matematyczna reprezentacja systemu jest metodycznie przekształcana w bardziej szczegółowe, ale wciąż matematycznie poprawne reprezentacje systemu.
W systemach, w których nie można dopuścić do awarii, użycie metod formalnych może być uzasadnione i opłacalne.
Metody formalne są coraz częściej stosowane w wyspecjalizowanej dziedzinie tworzenia systemów krytycznych.
Oprócz specjalistycznych dziedzin procesy oparte na przekształceniach formalnych są używane rzadko.
Wymagają specjalistycznej wiedzy i w praktyce okazuje się, że w wypadku większości systemów nie powodują zmniejszenia kosztów lub polepszenia jakości w porównaniu z innymi podejściami.
Interakcje systemów nie poddają się łatwo specyfikowaniu formalnemu.
16. Omów projektowanie i wyszukiwanie błędów.
Programiści wykonują pewne testy kodu, który napisali. Często prowadzi to do wykrycia błędów, które należy usunąć z programu.
Testowanie usterek i usuwanie błędów to dwa różne procesy.
Lokalizacja błędu może wymaga nowych przypadków testowych.
17. Co to jest etnografia.
To metoda obserwacji, która może służyć do rozpoznawania wymagań społecznych i organizacyjnych.
Analityk pogrąża się w środowisku pracy, w którym system będzie używany.
Obserwuje codzienną pracę i odnotowuje podstawowe zadania wykonywane przez pracowników.
Zaleta etnografii jest to, że pomaga odkrywać niejawne wymagania systemowe odzwierciedlające rzeczywiste, a nie formalne procesy, w których biorą udział ludzie.
18. Co to są metody formalne ?
Analiza matematyczna stanowi rutynowa składową procesu opracowywania i zatwierdzania projektu produktu.
Pojęcie „metod formalnych” obejmuje:
Specyfikowanie formalne systemu
Analizowanie i dowodzenie specyfikacji
Proces tworzenia z przekształceniem
Weryfikowanie programów
19. Wymienić zalety jawnego projektowania.
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 pewnej analizy. Decyzje projektowania architektonicznego mają znaczący wpływ na to, czy system może spełnić krytyczne wymagania dotyczące efektywności, niezawodności i zdatności do pielęgnacji, czy nie.
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 przekazywać innym systemom, które mają podobne wymagania.
20. Omówić architekturę zintegrowanego zestawu narzędzi CASE.
21. Co to jest CASE ?
CASE (Computer-Aided Software Engineering)
CASE obejmuje rożne programy wykorzystywane do wspomagania czynności procesu tworzenia oprogramowania (np. edytory notacji, generatory kodów, narzędzia do modelowania w UML).
Upper-CASE - związane z początkowymi fazami tworzenia oprogramowania
Lower-CASE - wspomagają implementowanie i testowanie
22. Jakie są podstawowe cele inżynierii systemów komputerowych ?
Inżynieria systemów - to czynność specyfikowania, projektowania, implementowania, weryfikowania, wdrażania i pielęgnacji systemów postrzegana jako całość.
23. 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ę.
Niezawodność operatora
Jakie jest prawdopodobieństwo błędu operatora systemu?
24. Omówić model wykonawca - podwykonawca.
Bardzo wiele 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 pewna liczbą podwykonawców.
Takie konsorcjum powinno być zdolne do wykonania wszystkich prac związanych z tym typem systemu.
25. Omówić tworzenie z użyciem wielokrotnym.
W większości przedsięwzięć programistycznych występuje użycie wielokrotne oprogramowania.
Etapy procesu :
Specyfikacja wymagań
Analiza komponentów
Modyfikacja wymagań
Projektowanie systemu z użyciem wielokrotnym
Tworzenie i integracja
Zatwierdzenie systemu
Zakłada się istnienie wielkiego zbioru dostępnych komponentów programowych użycia wielokrotnego oraz integrującej je struktury.
26. Podstawowe wymagania stawiane oprogramowaniu.
Zdolność do pielęgnacji - zdolność do ewolucji zgodnie z potrzebami klientów
Niezawodność - nie powinno powodować fizycznych lub ekonomicznych katastrof w przypadku awarii
Efektywność - nie powinno marnotrawić zasobów systemu takich jak pamięć czy czas procesora
Użyteczność - powinno być użyteczne, bez zbędnego wysiłku ze strony użytkownika (np. interfejsy)
27. Omówić model maszyn stanowych.
Służą do opisywania zachowania systemu, gdy reaguje na wewnętrzne lub zewnętrzne zdarzenia.
Zawierają stany i zdarzenia, które powodują przejścia z jednego stanu do innego.
Nie obejmuje przepływu danych w ramach systemu.
Modele maszyn stanowych są integralna częścią metod projektowania systemów czasu rzeczywistego.
W metodzie Harela wprowadzono tzw. grafy stanów (statecharts), które są podstawą notacji do modelowania maszyn stanowych w UML.
28. Co to jest prototypowanie oprogramowania ?
Prototyp jest początkowa wersją systemu oprogramowania, która służy do prezentacji założeń, do wypróbowania wariantów projektu, a bardziej ogólnie do coraz lepszego poznawania problemu i jego możliwych rozwiązań.
Bardzo ważne jest szybkie tworzenie prototypu, ponieważ umożliwia panowanie nad kosztami i umożliwia eksperymentowanie użytkownikom we wczesnej fazie procesu tworzenia oprogramowania.
29. Co to jest architektura sys. rozproszonych ?
Niemal wszystkie współczesne systemy komputerowe są systemami rozproszonymi.
W systemie rozproszonym przetwarzanie informacji jest wykonywane na kilku komputerach, a nie przydzielone do jednej maszyny.
Istotne cechy sys. rozproszonego:
Współdzielenie zasobów
Otwartość
Współbieżność
Skalowalność
Odporność na awarie
Przezroczystość
Wady:
Złożoność
Zarządzanie zabezpieczeniem
Trudności z zarządzaniem i pielęgnacją
Nieprzewidywalność czasu reakcji
Architektury sys. rozproszonych:
Architektury klient-serwer - w tym podejściu system jest postrzegany jako zbiór usług oferowanych klientom, którzy z nich korzystają. W takich systemach odmiennie traktuje się serwery i klientów.
Architektury obiektów rozproszonych - tym podejściu nie istnieje rozróżnienie między klientami i serwerami. System jest postrzegany jako zbiór komunikujących się obiektów, których położenie jest nieistotne. Nie ma różnicy między dostawcą i użytkownikiem usług.
30. Omówić strategie obiektowe.
Analiza obiektowa polega na opracowaniu modelu obiektowego dziedziny zastosowania. Rozpoznane obiekty odzwierciedlają byty i operacje związane z rozwiązywanym problemem.
Projektowanie obiektowe polega na opracowaniu modelu obiektowego systemu oprogramowania, który będzie implementacją zidentyfikowanych wymagań. Obiekty projektu obiektowego są związane z rozwiązaniem problemu.
Programowanie obiektowe polega na realizacji projektu oprogramowania za pomocą języka programowania obiektowego. Języki obiektowe, takie jak Java, umożliwiają bezpośrednią implementację obiektów i dostarczają udogodnienia do definiowania klas obiektów.
31. Omówić proces tworzenia oprogramowania.
Patrz pkt. 11
32. Co to jest sys. komputerowy ?
System komputerowy (ang. computer system) - układ współdziałania dwóch składowych: sprzętu komputerowego oraz oprogramowania, działających coraz częściej również w ramach sieci komputerowej.
Warstwy systemu komputerowego:
Sprzęt
Oprogramowanie systemowe
Oprogramowanie narzędziowe
Oprogramowanie użytkowe
Użytkownicy
33. Podać przykład hierarchii systemów.
34. Omówić proces tworzenia oprogramowania.
Patrz pkt. 11
35. Co to jest tworzenie spiralne ?
Każda pętla spirali reprezentuje jedną fazę procesu.
Najbardziej wewnętrzna pętla może być poświęcona wykonalności systemu, następna definicji wymagań stawianych systemowi, kolejna projektowaniu itd.
Ustalanie celów - definiuje się konkretne cele tej fazy przedsięwzięcia. Identyfikuje się ograniczenia, którym podlega proces i produkt.
Rozpoznanie i redukcja zagrożeń - przeprowadza się szczegółową analizę każdego z rozpoznanych zagrożeń przedsięwzięcia.
Tworzenie i zatwierdzanie - po ocenie zagrożeń wybiera się model tworzenia systemu.
Planowanie - recenzuje się przedsięwzięcie i podejmuje decyzję, czy rozpoczynać następną pętlę spirali.
36. Omówić technologię CASE.
Technologia CASE - zapewnia zautomatyzowane wspomaganie procesu tworzenia oprogramowania.
Narzędzia CASE wspomagają poszczególne czynności procesu. Warsztaty CASE wspomagają zbiory powiązanych czynności. Środowiska CASE wspomagają większość lub nawet wszystkie czynności procesu tworzenia oprogramowania.
37. Specyfikacje wymagań w PDL.
PDL (Program Description Language) - niejednoznaczności charakterystycznych dla języka naturalnego można uniknąć przez opisywanie wymagań za pomocą ` języka opisu programów '.
Proponuje się używać PDL w dwóch następujących sytuacjach:
Gdy operacja jest specyfikowana jako ciąg prostszych akcji, których kolejność wykonania jest istotna. Opisy takich sekwencji w języku naturalnym są czasami mylące, zwłaszcza gdy te ciągi obejmują zagnieżdżone warunki i pętle.
Gdy trzeba wyspecyfikować interfejsy sprzętowe i programowe. W wielu wypadkach interfejsy między podsystemami są definiowane w specyfikacji wymagań systemowych. PDL umożliwia definiowanie typów i obiektów interfejsowych.
38. Omówić notację UML.
Notacja - czyli zbiór oznaczeń, jest wykorzystywana do dokumentowania wyników poszczególnych faz projektu -pośrednich i końcowych. Notacja służy jako środek wspomagający ludzką pamięć i wyobraźnię, a także jako środek ułatwiający komunikację zarówno między członkami zespołu projektowego, jak i między zespołem projektowym a klientem.
Rodzaje notacji:
Tekstowa
Specyfikacje - ustrukturalizowany zapis tekstowy i numeryczny
Notacje graficzne
Elementy UML-a w diagramach przepływu danych:
Owale oznaczają kroki przetwarzania.
Strzałki z nazwami danych to przepływy.
Prostokąty są magazynami danych lub źródłami danych.
39. Zalety stosowania prototypowania ewolucyjnego.
Przyspieszone dostarczanie systemu. W niektórych wypadkach błyskawiczne dostarczanie i użyteczność są znacznie ważniejsze niż funkcjonalność lub zdatność do pielęgnacji w długim okresie.
Włączenie użytkownika w budowę systemu. Udział użytkowników w procesie budowania powoduje nie tylko to, że system ma więcej szans spełnienia ich wymagań. Oznacza także akceptację systemu przez użytkowników, którzy będą chcieli, żeby dobrze działał.
40. Omówić proces projektowania obiektowego.
To strategia projektowania, w ramach której projektanci systemu myślą w kategoriach „bytów”, a nie operacji albo funkcji.
Działający system składa się z oddziałujących na siebie obiektów, które przechowują swój lokalny stan i oferują operacje na tej informacji o stanie.
Obiekty ukrywają informację o reprezentacji stanu i w ten sposób ograniczają do niego dostęp.
Proces projektowania obiektowego obejmuje zaprojektowanie klas obiektów i związków między tymi klasami.
Gdy projekt przybierze już postać działającego programu, potrzebne obiekty są tworzone na podstawie definicji klas.
Etapy procesu:
Zrozumienie i zdefiniowanie kontekstu oraz modelu użytkowania systemu.
Zaprojektowanie architektury systemu.
Identyfikacja głównych obiektów systemu.
Opracowanie modeli projektowych.
Wyspecyfikowanie interfejsów obiektów.