Czym jest oprogramowanie?
Obejmuje programy komputerowe orazodnośną dokumentację.
Produkty programistyczne mogą być opracowane na zamówienie
konkretnego klienta bądź z przeznaczeniem na otwarty rynek
(ogólnodostępne).
Jakie są cechy dobrego
oprogramowania?
Dobre oprogramowanie powinno zapewniać użytkownikowi
wymaganą funkcjonalność i skuteczność oraz spełniać wymogi:
łatwości utrzymania, niezawodności oraz praktycznej przydatności.
Czym jest inżynieria oprogramowania?
Inżynieria oprogramowania jest dziedziną inżynierii zajmującą się
wszelkimi aspektami produkcji oprogramowania.
Jakie są podstawowe działania
związanez inżynierią
oprogramowania?
Specyfikowanie, wytwarzanie, sprawdzaniepoprawności (walidacja)
oraz rozwijanie oprogramowania.
Jaka jest różnica pomiędzyinżynierią
oprogramowania a informatyką?
Informatyka jest dyscypliną naukową skupiającą się na teorii i
podstawach; inżynieria oprogramowania zajmuje się praktyczną
stroną wytwarzania i dostarczania przydatnego użytkowo
oprogramowania.
Jaka jest różnica pomiędzyinżynierią
oprogramowania a inżynierią
systemów?
Inżynieria systemów dotyczy wszystkich aspektów opracowania
systemów, wktórych zastosowanie znajdują komputery, tzn:
sprzętu, oprogramowania oraz inżynierii procesów. Inżynieria
oprogramowania jest częścią tej, bardziej ogólnej, dziedziny.
Jakie są najważniejsze wyzwania
inżynierii oprogramowania?
Sprostać coraz większejróżnorodności, wymogom skracania czasu
dostawy oraz wytwarzania niezawodnego oprogramowania.
Jakie są koszty inżynierii
oprogramowania?
Z grubsza biorąc, około 60% kosztów oprogramowania to koszty
wytwarzania, a 40% to koszty testowania. W przypadku
oprogramowania zamawianego, koszty rozwijania często
przewyższają koszty wytwarzania.
Jakie są najlepszemetody i techniki
inżynierii oprogramowania?
Ponieważ wszystkie projekty informatycznedotyczące wytwarzania
oprogramowania powinny być profesjonalnie zarządzane i
realizowane, dla różnych typów systemów właściwymi okazują się
różne techniki. Na przykład opracowanie gier zawsze wymaga
przygotowania serii prototypów, gdy tymczasem dla systemów
sterowania o szczególnych wymogach bezpieczeństwa wymaga się
opracowania pełnej i podlegającej analizie specyfikacji. Dlatego nie
można powiedzieć, że pewna metoda jest lepsza niż inna.
Jakie zmiany winżynierii
oprogramowania wywołało
pojawienie się Internetu?
Sieć Webspowodowała dostępność usług programowych oraz
możliwości wytwarzania systemów opartych na usługach o wysokim
stopniu rozproszenia. Wytwarzanie systemów dla sieci Web
spowodowało znaczący postęp w dziedzinie języków programowania
oraz odzyskiwalnościoprogramowania.
Łatwość utrzymania
(pielęgnacji)
Oprogramowanie powinno być napisanetak, aby mogło się rozwijać
wychodząc naprzeciw zmieniającym się potrzebom użytkowników. Jest to
cecha szczególnie ważna, gdyż zmiany w oprogramowaniu są
nieuniknione sytuacji zmieniających się warunków zewnętrznych.
Niezawodność i
bezpieczeństwo
Niezawodność oprogramowania obejmuje szereg cech takich jak:
pewność działania, zapewnienie poufnościi ochrona przez utratą danych.
Niezawodne oprogramowanie powinno zabezpieczać przed stratami
fizycznymi i ekonomicznymi w przypadku awarii systemu. Złośliwi
użytkownicy powinni być pozbawieni możliwości uzyskania dostępu bądź
uszkodzenia systemu.
Wydajność Oprogramowanie nie powinno w sposób nieekonomiczny używać
zasobów systemowych, takich jak pamięć oraz procesor. Dlatego
wydajność odnosi się do takich kwestii jak: czas odpowiedzi, czas
przetwarzania, wykorzystanie pamięci, itd.
Akceptowalność Oprogramowanie powinno być akceptowane przez grupę użytkowników,
dla której zostało zaprojektowane. Oznacza to, że powinno być ono łatwe
w opanowaniu, przydatneoraz zgodne z innymi systemami, których
używa ta grupa użytkowników
Aplikacje jednostanowiskowe
Są to aplikacje przeznaczone dla lokalnego komputera (np. PC). Obejmują one
wszystkie potrzebne funkcje i nie wymagają połączenia z siecią.
# Interaktywne aplikacje z przetwarzaniem transakcji
# Chodzi o aplikacje wykonywane na zdalnym komputerze, do których
użytkownicy mają dostęp za pośrednictwem swoich PC lub terminali. Mogą to
być aplikacje sieciowe do obsługi sprzedaży elektronicznej (e:commerce).
# Wbudowane systemy sterowania
# Jest to oprogramowanie do sterowania i zarządzania rozmaitymi urządzeniami.
Mogą to być np. telefony komórkowe, kuchenki mikrofalowe, systemy ABS w
samochodach itp.
Systemy przetwarzania wsadowego
# Są to systemy do zastosowań komercyjnych, zaprojektowane do
przetwarzania danych w dużych wsadach. Przetwarzają one dużą liczbę
pojedynczych zestawów danych wejściowych, efektem czego jest uzyskanie
odpowiednich zestawów danych wynikowych.
# Systemy do gier i zabaw
# Służą głównie do użytku osobistego i mają służyć użytkownikom do celów
rozrywkowych.
# Systemy modelowania i symulacji
# Jest to klasa systemów opracowanych przez naukowców i inżynierów z
przeznaczeniem do modelowania procesów i zjawisk fizycznych obejmujących
wiele odrębnych oddziałujących na siebie obiektów
# Systemy zbierania danych
# Są to systemy, które zbierają dane z otoczenia za pośrednictwem zestawu
czujników oraz przesyłają te dane do innych systemów w celu dalszego
przetwarzania.
# Systemy systemów
# Chodzi o systemy składające się z pewnej liczby innych systemów
oprogramowania.
Istnieje wiele typów procesów, ale wszystkie one obejmują:
# Specyfikację-definiowanie, co system powinien robić;
# Projektowanie i implementację-definiowanie organizacji systemu oraz
sposobu jego implementacji (realizacji);
# Walidację-sprawdzanie, że system robi to, czego chce użytkownik;
# Rozwijanie-wnoszenie zmian do systemu w odpowiedzi na zmieniające się
potrzeby użytkownika.
Plan-driven(ścisłe planowanie) -to procesy w których wszystkie działania procesowe są uprzednio planowane a postęp jest mierzony w odniesieniu do tego planu
(agile) planowanie odbywa się w sposób przyrostowy i łatwiej jest zmienić proces uwzględniając zmieniające się wymagania użytkownika.
Modele procesó wytwórczych:
Model wodospadu (kaskadowy)
Jest to model wykorzystujący planowanie. Występują wydzielone i odróżnialne
fazy specyfikacji i wytwarzania.
Opracowanie przyrostowe
Specyfikacja, wytwarzanie oraz walidacja przeplatają się ze sobą. Model może
opierać się na planowaniu lub podejściu `agile'.
Inżynieria oprogramowania zorientowana na odzyskiwalność
System jest budowany z istniejących komponentów. Model może opierać się
na planowaniu lub podejściu `agile'.
Wymaganie-Może to być zarówno sporządzony na wysokim poziomie abstrakcji
opis usługi lub ograniczenia jak też szczegółowa specyfikacja
matematyczna.
Rodzaje wymagań:
Wymagania użytkownika
Opis w języku naturalnym uzupełniony o diagramy prezentujące usługi
systemu oraz ograniczenia jego działania. Adresatami są klienci.
Wymagania systemowe
Dokument ustrukturyzowany zawierający szczegółowy opis funkcji systemu,
usług oraz nakładanych ograniczeń. Definiuje co ma być zrealizowane, a więc
może stanowić część zawartej umowy.
Wymagania funkcjonalne
Określenie usług, jakie ma zapewniać system, jak ma on reagować na dane
wejściowe oraz jak zachować się w konkretnych sytuacjach.
Mogą ustalać, czego system robić nie powinien.
Wymagania niefunkcjonalne
Ograniczenia nakładane na usługi lub funkcje systemu takie jak ograniczenia
czasowe, ograniczenia na proces konstrukcyjny, standardy, itd.
Często mają zastosowanie dla całego systemu a nie odrębnych cech czy
usług.
Wymagania dziedzinowe
Ograniczenia nakładane przez środowisko, w którym działa system.
Wymagania produktu
Są to wymagania ustalające, że dostarczony produkt ma się zachowywać w
określony sposób, w odniesieniu np. do prędkości wykonywania,
niezawodności itd.
Wymagania organizacyjne
Wynikają z polityki organizacyjnej oraz obowiązujących procedur, np.
stosowanych standardów procesowych, wymagań konstrukcyjnych itd.
Wymagania zewnętrzne
Są konsekwencją czynników zewnętrznych w stosunku do systemu oraz jego
procesu wytwórczego, np. wymagania dotyczące współpracy, wymagania
legislacyjne, itd.