Inżynieria oprogramowania podstawy na podstawie Ian Sommerville Inżynieria oprogramowania WNT 2003
Gospodarki wszystkich rozwiniętych krajów zależą od oprogramowania
Coraz więcej i więcej systemów wymaga niezawodnego oprogramowania
Inżynieria oprogramowania zajmuje się teorią, metodami i narzędziami związanymi z wytwarzaniem oprogramowania
Obecnie wytwarzanie oprogramowania jest poważną gałęzią gospodarki narodowej rozwiniętego kraju
Co to jest inżynieria oprogramowania?
Jest to dziedzina inżynierii, która obejmuje wszystkie aspekty tworzenia oprogramowania od fazy początkowej do jego pielęgnacji
Inżynierowie oprogramowania pracują w sposób systematyczny i uporządkowany ponieważ jest to najskuteczniejszy sposób tworzenia oprogramowania wysokiej jakości
Koszty oprogramowania
Koszty oprogramowania są często dominującym składnikiem kosztów całego systemu. Zdarza się, że koszt oprogramowania znacznie przekracza samą wartość sprzętu komputerowego np. komputera osobistego.
Koszt utrzymania i konserwacji oprogramowania jest większy niż koszt jego wytworzenia. Wieloletnia konserwacja oprogramowania może kosztować wielokrotnie więcej niż jego zakup.
Inżynieria oprogramowania zajmuje się efektywnymi metodami wytwarzania i implementowania oprogramowania.
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)
Jaka jest różnica pomiędzy inżynierią oprogramowania a informatyka ?
Zasadniczo informatyka obejmuje teorie i podstawowe zasady działania komputerów. Inżynieria oprogramowania obejmuje praktyczne problemy związane z tworzeniem oprogramowania
Byłoby dobrze gdyby inżynier programowania znał teorie informatyczne, z drugiej strony nie zawsze przystają one do rzeczywistości
Jaka jest różnica pomiędzy inżynierią oprogramowania a inżynierią systemów?
Inżynieria systemów komputerowych obejmuje wszystkie aspekty tworzenia i ewolucji systemów komputerowych, w których oprogramowanie odgrywa zasadniczą rolę.
Inżynierowie systemów biorą udział w specyfikacji systemu i definiowania jego ogólnej architektury
Co to jest proces tworzenia oprogramowania ?
Jest to zbiór czynności i związanych z nimi wyników, które zmierzają do opracowania produktu programowego
Zasadnicze czynności wspólne dla wszystkich procesów
Specyfikacja oprogramowania
Tworzenie oprogramowania
Zatwierdzenie oprogramowania
Ewolucja oprogramowania
Co to jest model procesu tworzenia oprogramowania?
Jest to uproszczona prezentacja procesu tworzenia oprogramowania. Modele ze swej natury są uproszczeniami
Przykłady takich modeli:
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
Jakie są koszty inżynierii oprogramowania?
Koszty wytworzenia oprogramowania można w przybliżeniu określić na 60%, natomiast 40% stanowią koszty testowania. Ewolucja oprogramowania może przewyższyć koszty jego wytworzenia
Koszty zmian oprogramowania użytkowanego przez długi okres czasu mogą kilkukrotnie przekroczyć koszty jego wytworzenia
Koszty zależą od stosowanego modelu
Co to są metody inżynierii oprogramowania?
To jest uporządkowane podejście do tworzenia oprogramowania, które obejmuje
Opisy modeli systemu
Np. Modele obiektów, modele przepływu itp.
Reguły
Ograniczenia, którym podlegają modele systemu
Zalecenia
Heurystyki, które określają dobre zwyczaje projektantów
Poradnictwo
Opisy czynności, które należy wykonać
Co to jest CASE (Computer-Aided Software Engineering)
CASE obejmuje rożne programy wykorzystane do wspomagania czynności procesu tworzenia oprogramowania (np. edytory notacji, generatory kodów)
Upper-CASE
Związane z początkowymi fazami tworzenia oprogramowania
Lower-CASE
Wspomagają implementowanie i testowanie
Jakie właściwości ma dobre oprogramowanie?
Konkretny zbiór właściwości zależy od zastosowania, niemniej można podąć ogólny zbiór właściwości
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)
Jakie są najistotniejsze wyzwania dla inżynierów oprogramowania?
Wyzwanie dziedzictwa
Pielęgnacja i modyfikacji działających dużych systemów, pełniących poważne funkcje gospodarcze
Wyzwanie różnorodności
Wymóg działania oprogramowania w systemach rozproszonych przy rożnych typach komputerów I systemów wspomagających
Wyzwanie doręczenia
Wymóg dostarczanie gotowego programowania w skróconym czasie bez utraty jakości
Odpowiedzialność etyczna i zawodowa
Inżynierowie oprogramowania muszą zaakceptować fakt, że ponoszą znacznie większą odpowiedzialność niż tylko wynikająca z ich technicznych umiejętności
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
Główne tezy
Inżynieria oprogramowania to dziedzina inżynierii, która obejmuje wszystkie aspekty tworzenia oprogramowania.
Produkty programowe składają się z utworzonych programów oraz związanej z nimi dokumentacji. Zasadniczymi atrybutami produktów są zdatność do pielęgnacji, niezawodność, efektywność i użyteczność.
Proces tworzenia oprogramowania składa się z czynności prowadzących do utworzenia produktu programowego. Głównymi czynnościami są specyfikacja oprogramowania, tworzenie, zatwierdzenie i ewolucja.
Metody to uporządkowane sposoby budowy oprogramowania. Obejmują sugestie wyboru procesu tworzenia, mutacji, reguły określające, jakie opisy systemu opracować, a także wskazówki projektowe.
Narzędzia CASE to systemy komputerowe, które są przeznaczone do wspomagania rutynowych czynności procesu tworzenia takich jak praca nad diagramami projektowymi, sprawdzanie poprawności diagramów oraz śledzenie wykonanych testów.
Inżynierowie oprogramowania ponoszą odpowiedzialność przed kolegami po fachu i społeczeństwem. Nie powinni zajmować się jedynie aspektami technicznymi.
Stowarzyszenia zawodowe publikują kodeksy postępowania , które definiują standardy zachowania oczekiwane od swoich członków.