Inżynieria oprogramowania (ang. software engineering) - dyscyplina wiedzy zajmująca się wszelkimi aspektami związanymi z budową dużych systemów informatycznych.

1. Czym zajmuje się inżynieria oprogramowania?
Inżynieria oprogramowania jest wiedzą empiryczną zajmującą się wszelkimi aspektami związanymi z budową dużych systemów informatycznych.

2. Na czym polega kryzys oprogramowania?
Kryzys oprogramowania polega na tym, że mimo rozwoju nowoczesnych technologii i znaczących nakładów finansowych ponoszonych przy produkcji oprogramowania obserwuje się wiele niekonrzystnych zjawisk towarzyszących jego wytwarzaniu.

3. Jakie są cztery głowne zasady walki ze złożonością oprogramowania?
Do najważniejszych zasad walki ze złożonością oprogramowania należą zasady: dekompozycji, abstrakcji, ponownego użycia i sprzyjania naturalnym ludzkim własnościom.

4. W jakim celu stosuje się modelowanie pojęciowe?
Modelowanie pojęciowe stosuje się w celu minimalizacji luki między myśleniem o rzeczywistym problemie a myśleniem o wspierającym go systemie komputerowym.

Cykl życiowy (ang. software life cycle) - ciąg aktywności i procesów, które są niezbędne do wytworzenia i utrzymania oprogramowania.

5. Wymień kolejne etapy cyklu życia oprogramowania.
Analiza, projektowanie, implementacja, testowanie, wdrożenie.

6. Które role w zespole projektowym nie powinny być przydzielone jednej osobie?
Rola programisty i rola testera, ponieważ najtrudniej zawsze jest znaleźć swoje własne błędy w kodzie aplikacji.

7. Co jest pierwszym krokiem na drodze do wykonania aplikacji?
Pierwszym krokiem jest określenie wymagań dla budowanego systemu. Dostępny jest szereg metod badania wymagań użytkowników: analiza istniejącej dokumentacji, wywiad, ankieta, analiza dokumentów (dynamicznych), obserwacja.

Etap wytwarzania oprogramowania - okres między kolejnymi głównymi kamieniami milowymi procesu wytwarzania oprogramowania.

8. Jaki jest pierwszy etap wytwarzania oprogramowania?
Pierwszym etapem jest faza strategiczna.

Metoda COCOMO Constructive Cost Model - metoda szacowania kosztów przedsięwzięcia informatycznego na podstawie szacowanej liczby linii kodu.

Metoda punktów funkcyjnych Function Point Analysis - metoda szacowania kosztów przedsięwzięcia informatycznego na podstawie analizy wymagań.

Metoda UCP Use Case Point - metoda szacowania oprogramowania bazujaca na modelu przypadków użycia; zbliżona do metody FPA. 

9. Na czym bazuje metoda szacowania COCOMO?
Metoda szacowania kosztów projektu COCOMO bazuje na szacunkowej całkowitej liczbie linii kodu w projekcie.

10. Na czym bazuje metoda FPA?
Metoda FPA (punktów funkcyjnych) bazuje na zbiorze wymagań dla projektowanego systemu.

Wymagania funkcjonalne - wymagania opisujące funkcje wykonywane przez system.

Wymagania niefunkcjonalne - wymagania opisujące ograniczenia, przy których system ma realizować wymagania funkcjonalne.

11. Co to jest dokument wymagań?
Dokument wymagań jest to formalny dokument zawierający spis wszystkich wymagań funkcjonalnych i niefunkcjonalnych systemu wraz z miarami ich weryfikacji.

12. Kto powinień zatwierdzać dokument wymagań?
Dokument wymagań powinien być zatwierdzony zarówno przez klienta jak i wyknowacę projektu.

13. Jakie cechy powinien mieć dobry dokument wymagań?
Dobry dokument wymagań powinien być napisany w sposób jasny i zrozumiały dla obu stron, być łatwo modyfikowalny i powinien zaweirać informację o odpowiedzialności za poszczególne wymagania i przyczyny ich identyfikacji.

Model analityczny - logiczny model systemu opisujący sposób realizacji wymagań dla systemu abstrahujący od szczegółów implementacyjnych.

Model projektowy - logiczny model systemu opisujący sposób realizacji wymagań dla systemu oraz szczegóły implementacyjne.

13. Dostęp typu publiczny (public, +) oznacza...
Dostęp dla wszystkich funkcji i metod.

14. Dostęp typu zabezpieczony (protected, #) oznacza...
Dostęp dla metod danej klasy oraz jej specjalizacji.

15. Dostęp typu prywatny (private, -) oznacza...
Dostęp tylko funkcji danej klasy.

16. Co rozumie się zazwyczaj po pojęciem RAD?
Pod pojęciem RAD (Rapid Application Development) szybkie rozwijanie aplikacji rozumie się narzędzia i techniki programowania umożliwiające szybką bydowę prototypów lub gotowych aplikacji.

17. Jakimi cechami powinien charakteryzować się projekt, aby można go było uznać za poprawny?
Aby projekt można było uznać za poprawny powinien charakteryzować się następującymi cechami: kompletnością; niesprzecznością; spójnością; zgodnością z regułami składniowymi notacji.

OOHDM - Object-Oriented Hypermedia Design Model - metodyka projektowania aplikacji internetowych objemująca zbieranie wymagań, budowę modelu koncepcyjnego, modelu nawigacyjnego i modelu abstrakcyjnego interfejsu użytkownika.

WSDM - Web Site Design Method - metodyka projektowania aplikacji internetowych zorientowana na użytkownika, przeznaczona głównie do tworzenia aplikacji o charakterze informacyjnym.

WebML - Web Modeling Language - rozbudowana metodyka projektowania aplikacji internetowych służąca do wysokopoziomowego, niezależnego od platformy specyfikowania aplikacji zorientowanych na dane.

18. Sposród metodyk projektowania aplikacji internetowych OOHDM, WSDM i WebML najbardziej rozbudowana jest...
Metodyka WebML.

19. Model kocepcyjny w metodyce OOHDM przedstawia...
Dane przechowywane w systemie internetowym.

20. W metodyce WebML do określania połączenia pomiędzy stronami i jednostkami treści oraz definiowania sposobów nawigacji pomiędzy nimi stosuje się...
Model nawigacyjny.

Systemy B2B - system business-to-business - klasa systemów przeznaczonych głównie do wspierania procesów biznesowych zachodzących w kontaktach między firmami.

Systemy B2C - systemy business-to-consumers - klasa systemów przeznaczonych głównie do wspierania procesów biznesowych zachodzących w kontaktach między firmą a odbiorcą końcowym.

21. Jakie warunki muszą być spełnione, aby można było mówić o elektornicznym biznesie?
Aby można było mówić o e-biznesie, wszyscy jego uczesnticy muszą: działać we wspólne sieci; pracować w tym samym katalogu; rozporządzać pewnymi środkami umożliwiającymi dostawy towarów; mieć możliwość rozliczenia się po zawarciu transakcji.

22. Jakie są główne modele stosowane w handlu elektroniczym?
Główne modele to: model brokerski, model dopasowany do indywidualnych potrzeb klienta oraz model kontaktowy.

23. Jakie podstawowe elementy wchodzą w skład architektury SOA?
Architektura Service Oriented Architecture skłąda się z trzech głównych składników (ról): 

Service Provider, czyli Dostawca Usług. Jest to taki węzeł sieci (w intranecie, bądź Internecie), który udostępnia dostęp do interfejsów programowych jakiegoś komponentu biznesowego lub podsystemu, dostarczających pewnego zestawu funkcjonalności. 

Service Consumer, czyli Użytkownik Serwisu (klient). Węzeł w sieci, który używa tego zdalnego komponentu, aby stworzyć własne rozwiązanie (aplikację). W architekturze SOA klient, czyli konsument serwisu nazywany jest węzłem. 

Service Broker, czyli Pośrednik. Węzeł w sieci, który jest repozytorium opisów serwisów udostępnianych przez ich dostawców. Jest to więc odpowiednik książki telefonicznej w telefonii. Twórca zdalengo komponentu umieszcza informację o nim u Pośrednika, natomiast klient dzięki takiemu repozytorium jest w stanie odnaleźć interesującą go usługę.

24. Na czym polega zasada ograniczonego dostępu?
Zasada ograniczonego dostępu jest jedną z podstawowych zasad bezpieczeństwa. Można ją sformułować w sposób następujący: dostęp do czegokolwiek powinien być ograniczony tylko do tego co jest niezbędne.

25. Z jakich elementów składa się system statycznej mocnej kontroli typów?
System mocnej statycznej kontroli typu zawiera następujące elementy:
	•	Specyfikacja typów wszystkich zmiennych i obiektów, które występują w programie, np.:   typedef TypPrac = struct { string nazwisko, int zarobek, Dział pracuje_w, int zarobek_netto() };  TypPrac Pracownik;  
	•	Specyfikacja sygnatur wszystkich operatorów, procedur, funkcji, metod, np.:   boolean sprawdź ( in TypPrac prac, in TypDział dział, out int ile_lat_pracuje ); 
	•	Specyfikacja interfejsów modułów, klas i innych hermetyzowanych abstrakcji programistycznych.   
26. Z jakich operacji może składać się transakcja?
Każda transakcja może składać się z następujących operacji:
	•	czytanie danej x przez transakcje T,
	•	zapisanie danej x przez transakcję T,
	•	wycofanie transakcji T,
	•	zatwierdzenie transakcji T.

Błąd - niepoprawna konstrukcja znajdująca się w programie, która może doprowadzić do jego niewłaściwego działania.

Błędne wykonanie - niepoprawne działanie systemu w trakcie jego pracy.

27. Wyjaśnić różnicę między przejściem a audytem.
Przejście jest wczesną oceną dokumentów, modeli, projektów i kodu. Jego celem jest zidentyfikowanie defektów i rozważenie możliwych rozwiązań, a celem wtórnym jest szkolenie i rozwiązanie problemów stylistycznych (np. z formą kodu, dokumentacji, interfejsów użytkownika). Audyt natomiast jest formą przeglądu potwierdzającym zgodność oprogramowania z wymaganiami, specyfikacjami, zaleceniami, standardami, procedurami, instrukcjami, kontraktami i licencjami. Obiektywność audytu wymaga, aby był on przeprowadzony przez osoby niezależne od zespołu projektowego.

28. Wyjaśnij powody, dla któych inspekcja nie jest powszechnie stosowną formą kontroli oprogramowania?
Brak powszechności inspekcji wynika między innymi z konieczności prawidłowego jej zaplanowania i wykonania przy udziale kompetentnych osób. Ni wymaga ona natomiast specjalizowanych narzędzi. Dodatkowo analiza kosztów i zysków inspekcji nie jest prosta. Inspekcja może nie przynieść spodziewanych korzyści jeśli przeprowadzana jest ocena osób na podstawie zebranych metryk lub zaangażowani są słabi kontrolerzy 

29. Kiedy przeprowadza się testy akceptacyjne?
Testy akceptacyjne przeprowadza się w momencie przekazania oprogramowania przedstawicielowi klienta. 

30. Na czym polega tak zwany efekt skali?
Efekt skali polega na wykładniczym wzroście zużycia zasobów w projekcie w funkcji wielkości projektu. 

31. Co uznałbyś za podstawową zaletę metody FPA?
Podstawową zaletą FPA jest niezależność metody od technologii, języka programowania i fazy życia projektu a także od jakości jego konstrukcji. Zalet tych nie mają inne znane metody miary wielkości aplikacji, jak na przykład LOC (Lines Of Code). 

32. Jak należy rozumieć pojęcie aktor średnio złożony stosowane w metodzie UCP?
Aktor średnio-złożony to najczęściej system zewnętrzny, dostępny przez protokół z rodziny TCP/IP, HTTP lub podobny, ewentualnie poprzez terminal znakowy. W tym typie mieszczą się również zbiory danych. 

pozycja konfiguracji - element skłądowy projektu objęty zarządzaniem konfiguracją, np. dokument, harmonogram, specyfiakcja techniczna, moduł oprogramowania, biblioteka itp.

produkt bazowy - pozycja konfiguracji oceniona i zaakceptowana formalnie przez odpowiednie ciało weryfikacyjne jako zakończona, stanowiąca podstawę do dalszych faz rozwoju projektu. 

33. W jaki sposób modyfikuje się produkty bazowe?
Produkty bazowe są niemodyfikowalne. 

34. Wymienić najważniejsze typy pozycji konfiguracji.
Trzy podstawowe typy PK, to:
	•	    źródłowa PK (np. tekst programu),
	•	    pochodna PK (np. binarny kod programu),
	•	    narzędzie dla generowania pochodnej PK ze źródłowej PK (np. kompilator).

35. Gdzie mogą być przechowywane pozycje konfiguracji?
PK może być przechowywana w jedenej z następujaćych bibliotek konfiguracji oprogramowania:
	•	bibliotece związane z bieżącym rozwojem oprogramowania,
	•	bibliotece ukończonych (bazowych) produktów programistycznych,
	•	archiwum (przechowywanie nieaktualnych kodów i dokumentów).

Jakość - ogół cech i właściwości wyrobu lub usługi decydujący o zdolności wyrobu lub usługi do zaspokojenia stwierdzonych lub przewidywanych potrzeb użytkownika produktu.

System jakości - odpowiednio zbudowana struktura organizacyjna z jednoznacznym podziałem odpowiedzialności, określeniem procedur, procesów i zasobów, umożliwiających wdrożenie tzw. zarządzania jakością.

Zarządzanie jakością - jest związane z aspektem całości funkcji zarządzania organizacji, który jest decydujący w określaniu i wdrażaniu polityki jakości.

Polityka jakości - ogół zamierzeń i kierunków działań organizacji dotyczących jakości, w sposób formalny wyrażony przez najwyższe kierownictwo organizacji, będącej systemem jakości.

Audyt jakości - systematyczne i niezależne badanie, mające określić, czy działania dotyczące jakości i ich wyniki odpowiadają zaplanowanym ustaleniom, czy te ustalenia są skutecznie realizowane i czy pozwalają na osiągniecie odpowiedniego poziomu jakości.

36. Czym jest Zarządzanie Jakością Oprogramowania (ZJO)?
ZJO oznacza zespół działań zmierzających do sprawdzania czy plany są zdefiniowane zgodnie ze standardami, czy procedury są wykonywane zgodnie z planami, czy produkty są implementowane zgodnie z planami. 

37. Wymienić poziomy dojrzałości procesów wytwórczych w modelu CMM.
W modelu CMM wyróżniono 5 poziomów dojrzałości wytwórców (poczynając od poziomu najniższego):
	1.	poziom początkowy - l (proces chaotyczny)
	2.	poziom powtarzalny - 2 (proces zindywidualizowany)
	3.	poziom zdefiniowany - 3 (proces zinstytucjonalizowany)
	4.	poziom zarządzany - 4 (proces + informacje zwrotne dla sterowania procesem)
	5.	poziom optymalizujący - 5 (proces + informacje zwrotne wpływające na ulepszenie procesu)

38. Z jakich podstawowych rozdziałów powinien składać się Plan Zarządzania Jakością Oprogramowania (PZJO)?
PZJO powinien być podzielony na 4 rozdziały, każdy dla następujących faz rozwoju oprogramowania:
	1.	    PZJO dla fazy wymagań użytkownika i analizy
	2.	    PZJO dla fazy projektu architektury
	3.	    PZJO dla fazy projektowania i konstrukcji
	4.	    PZJO dla fazy budowy, testowania i instalacji oprogramowania. 

dokument ADD - architectural design document - dokument projektu architektury systemu.

dokument SRD - software requirements document - dokument wymagań na oprogramowanie.

dokument URD - user requirements document - dokument wymagań użytkownika.

39. Portret psychologiczny zespołu projektowego wyróżnia trzy typy psychologiczne. Jakie to typy? Do którego z nich zaliczasz siebie?
Czynniki psychologiczne mają zasadniczy wpływ na efektywność pracy zespołu. Wyróżnia się następujące typy psychologiczne:
	1.	Zorientowani na zadania (task-oriented). Osoby samowystarczalne, zdolne, zamknięte, agresywne, lubiące współzawodnictwo, niezależne.
	2.	Zorientowani na siebie (self-oriented). Osoby niezgodne, dogmatyczne, agresywne, zamknięte, lubiące współzawodnictwo, zazdrosne.
	3.	Zorientowani na interakcje (interaction-oriented). Osoby nieagresywne, o niewielkiej potrzebie autonomii i indywidualnych osiągnięć, pomocne, przyjazne.

40. W jakim proejkcie warto zastosować strukturę organizacyjna zespołu oparta na modelu gwiazdy? 
Struktura gwiaździsta jest przydatna wtedy, gdy w skład zespołu wchodzi wielu niedoświadczonych pracowników. Szef kontroluje i koordynuje prace. Wielkość zespołu może być znacznie większa niż w strukturze sieciowej. Duże problemy mogą wystąpić w momencie odejścia szefa zespołu 

41. Wymień i krótko scharakteryzuj poziomy dojrzałości procesu wytwarzania.
Wyróżnia się pięć poziomów rozwoju organizacji z punktu widzenia dojrzałości procesu:
	•	Początkowy Na tym poziomie nie istnieją żadne standardy procesu. Decyzje są podejmowane ad hoc. Ten poziom mogą mieć również firmy o dobrym zaawansowaniu technicznym.
	•	Powtarzalny Poszczególne przedsięwzięcia wykonywane są w podobny sposób. W firmie istnieje co do tego zgoda, można wiec mówić o pewnym standardzie firmy, które są jednak standardami de facto. Standardy te nie są udokumentowane. Nie istnieją ścisłe procedury kontroli.
	•	Zarządzany Standardy postępowania są dobrze zdefiniowane i sformalizowane, Istnieje ścisła kontrola przestrzegania standardów. Są osoby odpowiedzialne za pracowanie i uaktualnianie standardów.
	•	Mierzony Proces nie tylko podlega kontroli na zgodność ze standardami, ale jest mierzony w sposób ilościowy. Mierzona jest np. wydajność. Wyniki są wykorzystywane do poprawy sposobów realizacji przyszłych przedsięwzięć.
	•	Optymalizowany Standardy są w ciągły sposób uaktualniane tak, aby uwzględnić doświadczenia w przyszłych przedsięwzięciach. Standardy zawierają elementy pozwalające na dostrojenie procesu do aktualnych potrzeb.