Inżynieria oprogramowania

Od początku istnienia, w ramach inżynierii oprogramowania występowały dwa nurty:

  • nurt formalny, który postuluje jak najszersze stosowanie metod formalnych: formalnych języków specyfikacji, formalnych transformacji, formalnych dowodów poprawności

  • nurt praktyczny, który opiera się na stosowaniu notacji nie w pełni sformalizowanych, w dużej mierze graficznych oraz proponuje metody, w których dużą rolę odgrywa wiedza i doświadczenie ludzkie.
O ile dorobek nurtu praktycznego jest obecnie powszechnie wykorzystywany w firmach programistycznych, o tyle nurt formalny ma raczej znaczenie teoretyczne i ciągle jest daleki od poważnych, rzeczywistych zastosowań.

Warto też zwrócić uwagę na dwa skrajne punkty widzenia dotyczące stosunku inżynierii oprogramowania do tradycyjnych technik programistycznych.

Tradycyjny punkt widzenia uznaje pojawienie się inżynierii oprogramowania za naturalny etap rozwoju technik programowania. Jego zwolennicy uważają, że w pewnej fazie rozwoju informatyki konieczne stało się ogólne spojrzenie na tworzone systemy - spojrzenie abstrahujące od poziomu kodu w konkretnym języku programowania.

Punkt widzenia, który można nazwać rewolucyjnym, uważa inżynierię oprogramowania za całkowite przeciwieństwo tradycyjnych podejść do tworzenia oprogramowania. Punktem wyjścia jest konieczność zaspokojenia potrzeb użytkownika. Praca nad oprogramowaniem rozpoczyna się więc od modelowania i projektowania użytecznego systemu, na dalszym etapie rozważana jest sprawa jego implementacji. Inżynieria oprogramowania wymaga więc myślenia przede wszystkim w kategoriach zastosowania, a nie w kategoriach kodu. Skrajni zwolennicy tej tezy uważają, np. że kształcenie informatyków powinno rozpoczynać się od nauki inżynierii oprogramowania, a dopiero później nauki konkretnych języków i środowisk programowania.

Jest oczywiste, że oba te punkty widzenia są częściowo słuszne i wskazują na różne czynniki, które rzeczywiście wpływały na rozwój inżynierii oprogramowania.

Co oferuje inżynieria oprogramowania jego profesjonalnym poducentom? W jaki sposób pozwala przynajmniej częściowo wyjść z "kryzysu oprogramowania"?

Wymienione wyżej przyczyny "kryzysu oprogramowania" wskazują także na sposoby walki z tym zjawiskiem. Należy więc:

  • stosować techniki i narzędzia ułatwiające pracę nad złożonymi systemami

  • korzystać z metod wspomagających analizę nieznanych problemów oraz ułatwiających wykorzystywanie wcześniejszych doświadczeń

  • usystematyzować proces wytwarzania oprogramowania, tak aby ułatwić jego planowanie i monitorowanie

  • wytworzyć przekonanie zarówno wśród producentów, jak i nabywców oprogramowania, że budowa dużego systemu wysokiej jakości jest zadaniem wymagającym w pełni profesjonalnego podejścia.
Inżynieria oprogramowania obejmuje więc m.in. takie zagadnienia, jak:

  • sposoby prowadzenia przedsięwzięć informatycznych

  • techniki planowania, szacowania kosztów, harmonogramowania i monitorowania przedsięwzięć programistycznych

  • metody analizy i projektowania systemów

  • techniki zwiększania niezawodności oprogramowania

  • sposoby testowania systemów i szacowania niezawodności

  • sposoby przygotowywania dokumentacji technicznej i użytkowej

  • procedury kontroli jakości

  • metody redukcji kosztów konserwacji (usuwania błędów, modyfikacji i rozszerzeń)

  • techniki pracy zespołowej i czynniki psychologiczne wpływające na efektywność pracy.

TOP 200