inzynieria id 219563 Nieznany

background image

Etapy życia oprogramowania :

model kaskadowy

model prototypowy

model przyrostowy (iteracyjny)

model równoległy

programowanie zwinne (ang. agile programming)

programowanie ekstremalne (ang. extreme programming)

model spiralny

Rational Unified Process

Testowanie oprogramowania – proces związany z wytwarzaniem oprogramowania. Jest to jeden z
procesów zapewnienia jakości oprogramowania. Testowanie ma na celu weryfikację oraz walidację
oprogramowania. Weryfikacja oprogramowania ma na celu sprawdzenie, czy wytwarzane
oprogramowanie jest zgodne ze specyfikacją. Walidacja sprawdza, czy oprogramowanie jest zgodne z
oczekiwaniami użytkownika. Testowanie oprogramowania może być wdrożone w dowolnym
momencie wytwarzania oprogramowania (w zależności od wybranej metody). W podejściu
klasycznym największy wysiłek zespołu testerskiego następuje po definicji wymagań oraz po
zaimplementowaniu wszystkich zdefiniowanych funkcjonalności. Nowsze metody wytwarzania
oprogramowania (np. Agile), skupiają się bardziej na jednostkowych testach wykonywanych przez
członków zespołu programistycznego, zanim oprogramowanie trafi do właściwego zespołu testerów.

Podział testów

na testy elementów systemu (klas, komponentów, podsystemów, systemowe)

na białoskrzynkowe oraz czarnoskrzynkowe (inaczej testy strukturalne i niestrukturalne)

na testy warstw (testy funkcjonalne - testujące warstwę logiki biznesowej, testy API, testy UI,

testy GUI, testy warstwy danych,...)

na testy wymagań (wszystkie testy weryfikujące zgodność implementacji z wymaganiami, np.

testy funkcjonalne, testy GUI), w tym testy niefunkcjonalne - por. klasyfikacja wymagań (i

testów) FURPS+ zdefiniowana w ramach Rational Unified Process (RUP) oraz testy
implementacji (testy weryfikujące zgodność implementacji z założeniami programisty, np. testy

jednostkowe)

Częstym błędem jest utożsamianie testów funkcjonalnych z testami czarnej skrzynki, podczas gdy
testy funkcjonalne mogą wymagać znajomości kodu źródłowego (rzadziej, np. w systemach czasu
rzeczywistego może być wymagana znajomość struktury pakietów danych przesyłanych w
protokołach transmisji) lub nie (częściej). Testy funkcjonalne należą do innego kryterium podziału niż

testy czarnej-skrzynki.

background image

Dodatkowo można wyróżnić testy wykonane w określonym celu:

retesty – testy poprawek błędów

testy regresywne – testy niezmienionych części oprogramowania po wykonaniu zmian.

Poziomy testowania

Testy dzieli się na pięć poziomów:

testy jednostkowe

testy integracyjne wewnętrzne

testy systemowe

testy integracyjne zewnętrzne

testy akceptacyjne albo testy alfa i testy beta

Weryfikacja – sprawdzenie, działanie zmierzające do rozstrzygnięcia prawdziwości danego zdania

Diagram interakcji w języku UML służy do opisu zależności przy przesyłaniu komunikatów
pomiędzy obiektami, czyli zależności w przepływie sterowania pomiędzy obiektami.

System kontroli wersji (ang. version/revision control system) – oprogramowanie służące do śledzenia
zmian głównie w kodzie źródłowym oraz pomocy programistom w łączeniu zmian dokonanych w
plikach przez wiele osób w różnych momentach czasowych.

Systemy kontroli wersji dzielone są według:

architektury oprogramowania

licencji oprogramowania

sposobu oceny zamian

Systemy kontroli wersji dzielą się na:

lokalne, pozwalające na zapisanie danych jedynie na lokalnym komputerze (np. SCCS oraz RCS)

scentralizowane, oparte na architekturze klient-serwer (np. CVS, Subversion)

rozproszone, oparte na architekturze P2P (np. BitKeeper, Code Co-op, svk, Git).

Dobre praktyki programistyczne

1. Zawsze używaj systemu kontroli wersji, nawet gdy nad projektem pracuje tylko jeden programista.
Gdy coś się stanie, nie stracisz nigdy całego kodu, możesz też w pełni skorzystać z historii
repozytorium.

2. Nie używaj komentowania do usuwania kodu, po prostu go kasuj. Kontrola wersji zadba o dostęp
do skasowanych fragmentów.

background image

3. Umieszczaj w jednej przestrzeni klasy, które zmieniają się albo są używane razem.

4. Używaj pozytywnych warunków, negacje są trudniejsze do zrozumienia niż pozytywne warunki.

5. Używaj wstrzykiwania zależności do zarządzania zbyt dużą ilością singletonów.

6. Nie używaj zbyt wiele argumentów metod. Utrzymaj ich liczbę maksymalnie na poziomie 8-10.
Jeżeli masz ich więcej, przejrzyj jeszcze raz projekt.

7. Nie pisz różnych metod dla różnych konfiguracji parametrów binarnych np. metoda(bool
CzyWlaczyc, bool CzyObsluzyc)
itp.
8. Nazwa metody musi zawierać informację, co ta metoda robi.

9. Unikaj metod z parametrami, które są referencjami. Używaj obiektów parametrów z wieloma
atrybutami.

10. Używaj zrozumiałych komentarzy. Zły komentarz jest gorszy niż jego brak.

Audyt projektów informatycznych - Celem audytu projektu jest wyrażenie przez zespół audytorów
pisemnej opinii wraz z raportem o tym, czy projekt realizowany jest w zgodzie ze światowymi
praktykami i standardami, zgodnie z założoną metodyką, prawidłowo i rzetelnie w obszarze
osiąganych efektów, prawidłowo i rzetelnie w obszarze prowadzenia dokumentacji finansowej
projektu.

Inżynieria wymagań to proces pozyskiwania, analizowania, dokumentowania oraz weryfikowania
wymagań dla projektowanego systemu.

Celem inżynierii wymagań jest:

pozyskanie informacji pozwalających na określenie wymagań,

zidentyfikowane wymagań i ich kategorii,

analiza wymagań (jednoznaczność, spójność, zgodność z założeniami),

opisanie wymagań — opracowanie specyfikacji wymagań,

weryfikacja wymagań,

zarządzanie zmianami wymagań w trakcie realizacji projektu.

Wymagania funkcjonalne:

określają jaki pożądane z punktu widzenia zamawiającego funkcje powinien

posiadać system,

powinny pozwolić na realizację określonych wymagań biznesowych i prowadzić

do celu systemu określonego w jego wizji i zakresie,

background image

specyfikują co system ma realizować a nie jak ma to być zrobione.

Wymagania niefunkcjonalne:
określają pożądane cechy systemu, nie wpływając bezpośrednio na istnienie

konkretnych funkcji; wpływają jednak zwykle na to, jak te funkcje będą realizowane.

Specyfikacją wymagań dla oprogramowaniu lub systemu — ang. Software

Requirements Specification (SRS) jest oficjalną deklaracją tego, co jest

wymagane od wytwórców systemu przez zleceniodawcę.

Dokument SRS nie jest dokumentem projektowym, stanowi materiał wejściowy

dla analityków i projektantów systemu.

Programowanie (z ang. software) - to różnego rodzaju programy komputerowe, aplikacje, których
celem jest funkcjonalność i użyteczność.

Edytory dokumentów:

Edytory tekstu - dzielą się na proste i bardziej skomplikowane programy oferujące poza edycją tekstu,
wstawianie grafiki. Do tych prostych należą: w środowisku Unixowym - vi (edytor konsolowy), pod
Windowsem - notatnik, natomiast te bardziej rozbudowane to np. pod Windowsem - Word należący
do pakietu Office czy WordPad - domyślnie instalowany, zaś dla systemów Unixowych - Writer w
pakiecie Open Office oraz dość zaawansowana Aurora dla systemu DOS.

Pakiety biurowe - są zestawem programów przeznaczonych do celów głównie biurowych. Do
najpopularniejszych należą: Microsoft Office (Windows) i Open Office (różne platformy: Linuks,
Unix, Windows, Solaris).

Edytory HTML - czyli programy do tworzenia dokumentów HTML. Powszechnie używanymi są:
Pajączek, Tiger (płatne pod Windowsa) czy Bluefish (Linuks).

Skład tekstu - to m.in. programy do tworzenia czcionek - FontForge czy programy do profesjonalnego
składania tekstów naukowych - TeX.

Programy multimedialne:

Edytory graficzne - przeznaczone do modyfikacji i tworzenia obrazów są klasyfikowane pod
względem techniki ich tworzenia, stąd można wyróżnić programy przeznaczone do grafiki wektorowej
(obrazy są zapamiętane jako figury geometryczne) i rastrowej (obraz jest przedstawiany w postaci
dwuwymiarowej tablicy pikseli). Następny wyróżnik stanowi wymiar, w jakim prezentujemy obraz
(2D - płaski obraz, 3D - obraz przestrzenny). Przykładowe programy do:

Grafiki wektorowej / 2D: CorelDraw, Adobe Illustrator, AutoCAD

Grafiki bitmapowej (rastrowej): Adobe Photoshop, GIMP, ACDSee, IrfanView

background image

Grafiki 3D: 3D Studio, Blender

Edytory dźwięku - programy edytujące pliki dźwiękowe (np. Audacity) albo komponujące muzykę
(np. Tracker).

Edytory video - programy służące do montażu filmów cyfrowych. Popularnym programem jest
Pinnacle Studio.

Odtwarzacze multimedialne - odtwarzanie plików multimedialnych, obsługa zarówno plików
dźwiękowych jak i video, możliwość korzystania z internetowych stacji radiowych i telewizyjnych.
Do znanych programów tego typu należą: Windows Media Player, Winamp, iTunes, QuickTime.

Programy archiwizujące - programy wykonujące kopie zapasowe różnego typu danych, czyli
archiwizację (z ang. backup) w celu zabezpieczenia na wypadek ich zniszczenia. W ramach tworzenia
kopii dane ulegają dodatkowo kompresji (zmniejszeniu objętości). Najczęściej stosowane programy
to: WinRAR, WinZip, Filip.

Bazy danych - programy przeznaczone do magazynowania dużej ilości danych w sposób trwały,
przeglądania, modyfikowania, dodawania i usuwania danych oraz kontroli i ochrony przed błędnymi
operacjami czy niedozwolonym dostępem. Bazy danych operują głównie na danych tekstowych i
liczbowych, ale jest możliwe też przeprowadzani operacji na danych binarnych takich, jak muzyka czy
grafika.Dane są zazwyczaj przechowywane w postaci tabel i formularzy. Przykładowe programy
obsługujące bazy danych: Access (Microsoft Office), Base (Open Office), SQL, PostgreSQL, Oracle,
etc.

Języki programowania - stanowią narzędzie do tworzenia własnych aplikacji bądź modyfikacji już
istniejących.

Wyróżniamy:

Języki niskiego poziomu - zbliżone do kodu maszynowego tzn. są niemal bezpośrednio "zrozumiałe"
dla komputera, przez co ich kompilacja nie jest tak skomplikowana jak dla języków wysokiego
poziomu. Najbardziej znanym językiem niskiego poziomu jest Asembler.

Języki wysokiego poziomu - ich składnia jest przyjazna dla programisty, natomiast niezrozumiała dla
komputera, przez co proces kompilacji jest bardziej skomplikowany. Do tych języków zaliczamy: C,
C++, C#, Java, PHP.

Programy edukacyjne - wspomaganie procesu nauczania i nauki a nawet ich zastąpienie, alternatywa
dla tradycyjnych metod uczenia się. Ich różnorodność sprzyja dotarciu do wielu użytkowników o
indywidualnym podejściu do nauki. Do programów edukacyjnych należą: encyklopedie
multimedialne, gry logiczne i strategiczne, testy, symulacje, etc,

Programy do obliczeń naukowo - technicznych - m.in. Maple - rozwiązuje zaawansowane problemy
matematyczne, Matlab - wykonywanie obliczeń naukowych i inżynierskich oraz tworzenie symulacji i
wizualizacji, Derive - obliczenia symboliczne podparte dwu- i trójwymiarowym obrazowaniem,
Gnuplot - tworzenie wykresów w 2 i 3 wymiarach.

Programy specjalistyczne - przeznaczone dla różnych branż, wspomagające ich rozwój i
zarządzające nimi, np. programy do projektowania domów, wnętrz i ogrodów, wspomagające biuro
nieruchomości, gabinety lekarskie, giełdę, programy bankowe, finansowe, związane z księgowością
itd.

background image

Programy związane z siecią:

Poczta elektroniczna - aby możliwe była obsługa poczty elektronicznej potrzebny jest program
serwerowy np. Sendmail, qmail, program do wysyłania i odbioru poczty, np. Microsoft Outlook,
Netscape Messenger, KMail oraz skrzynka np. udostępniane przez portale: wp.pl, o2.pl, onet.pl, itd.

Komunikatory - programy umożliwiające komunikację w sieci Internet drogą tekstową, głosową czy
przez videokonferencję. Niektóre z nich łączą wszystkie 3 możliwości. Najpopularniejsze z nich to:
gadu-gadu (mało stabilny), tlen.pl, konnekt, skype (komunikator głosowy), Jabber czy Kadu (pod
Linuksem).

Zdalny dostęp - umożliwia połączenie się klienta z serwerem za pomocą protokołu telnet czy
szyfrowanego ssh na przykładzie PuTTY.

Pobieranie i współdzielenie plików - polega to na wyszukiwaniu w sieci plików i znajdowanie do nich
źródeł. Znane programy to: BitTorrent, eMule itd.

Przeglądarki internetowe - programy zajmujące się obsługą dokumentów HTML, XHTML, XML,
CSS technologii: JavaScript, PHP, Java, Macromedia Flash, ciasteczek (Cookies) czy plików
multimedialnych (często za pomocą wtyczek). Do popularnych przeglądarek należą: Opera, Firefox,
Konqueror czy IE (Internet Explorer).

Programy związane z bezpieczeństwem:

Programy antywirusowe - ich celem jest zarówno ochrona przed potencjalnymi atakami programów
wirusowych, jak i wykrywanie, zwalczanie oraz usuwanie wirusów, które już znalazły się w
komputerze. Programy te zazwyczaj zawierają co najmniej dwie opcje (różne nazewnictwo):

Skanowanie - badanie plików na obecność wirusów i innych zagrożeń; sprawdza w zależności od
wybranej opcji: cały komputer, pocztę elektroniczną, konkretne dyski czy pliki, które wydają się nam
podejrzane

Autodiagnostyka - można ją ustawić automatycznie przy starcie systemu, na bieżąco będzie sprawdzać
ochronę komputera i wyświetlać komunikaty ostrzegawcze w razie jakiś nieprawidłowości

Do innych usług programów antywirusowych należą: ciągła aktualizacja nowych definicji wirusów,
ochrona przed szkodliwym oprogramowaniem (z ang. malware), ochrona danych i prywatności
użytkownika (sprawdzanie nieautoryzowanego dostępu), także zawierają zapory sieciowe. Do znanych
programów należą: Kaspersky Anti-Virus, Panda Platinum, Norton AntiVirus.

Zapory sieciowe (z ang. firewall) - większość programów antywirusowych w swoim pakiecie zawiera
ten program. Służy on do zabezpieczania komputerów i sieci przed intruzami, tzn. blokuje dostęp do
komputera, na którym jest zainstalowany przed niepożądanymi osobami, programami śledzącymi.
Przykładowe firewalle: Sygate Personal Firewall, ZoneAlarm czy Norton Personal Firewall.

Filtry antyspamowe - wykrywają, co jest spamem, czyli niechcianą pocztą i na tej podstawie filtrują
przesyłane maile.

Szyfrowanie - w celu ochrony danych, prywatności. Można szyfrować zarówno dyski, różnego
rodzaju pliki na komputerze, jak wykorzystać do przesyłania informacji w sposób bezpieczny
(szyfrowany transfer) np. korzystając z protokołu ssh.

background image

Debugger- program komputerowy służący do dynamicznej analizy innych programów, w celu
odnalezienia i identyfikacji zawartych w nich błędów, zwanych z angielskiego bugami (robakami).

Programowanie strukturalne to paradygmat programowania zalecający hierarchiczne dzielenie kodu
na bloki, z jednym punktem wejścia i jednym lub wieloma punktami wyjścia. Chodzi przede
wszystkim o nieużywanie (lub ograniczenie) instrukcji skoku (goto). Dobrymi strukturami są np.
instrukcja warunkowe (if, if...else), pętle (while, repeat), wyboru (case, ale nie switch z C i
potomnych). Strukturalność zakłócają instrukcje typu: break, continue, switch (w C itp.), które jednak
w niektórych przypadkach znacząco podnoszą czytelność kodu.


Wyszukiwarka

Podobne podstrony:
mechanika inzynieria id 291479 Nieznany
Grafika inzynierska 2 id 194765 Nieznany
inzynierskie 8 id 212520 Nieznany
Grafika inzynierska id 194762 Nieznany
Inzynieria wzory1 id 219676 Nieznany
3 Podstawy obl inzynierskich id Nieznany (2)
Biotechnologia i inzyniera id 8 Nieznany (2)
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany

więcej podobnych podstron