Kilka lat temu rozpoczęła się automatyzacja procesów technologicznych. Budowano proste maszyny. Sterowniki PLC miały małe możliwości pod względem programowym, jak również sprzętowym. Dlatego nie było sposobu na tworzenie złożonego oprogramowani. Rozwój technologiczny spowodował, że sytuacja zmieniła się także w branży automatyki. Zaczęto budować w pełni zautomatyzowane fabryki. Wiele z tych przedsięwzięć trwało bardzo długo, ponieważ pojawiły się problemy podczas pisania kodu programu. Większy projekt wiązał się ze wzrostem objętości kodu programu. Powodem tej sytuacji jest nieodpowiednie rozpoczęcie prac nad projektem. Wielu automatykom brakuje znajomości technik budowy oprogramowania.
Inżyniera oprogramowania
Czym jest inżynieria oprogramowania? To dziedzina informatyki obejmująca aspekty oprogramowania. Jest to wiedza techniczna dotycząca wszystkich faz życia oprogramowania, aby uzyskać jak najwyższą jakość. Dlaczego tej wiedzy nie przenieść do automatyki? Teraz już ogólnie wiadomo, że oprogramowanie jest jednym z produktów technicznych, gdzie błędy są powszechnie akceptowalne. Ale jak dużo musi być tych błędów? Dlaczego nie użyć technik minimalizacji tych błędów.
Produkcja kodu programu lub ogólnie mówiąc oprogramowania jest przez większość programistów traktowana jako jedyny etap jego budowy. Trzeba ogólniej spojrzeć na tworzony system. Jest to po prostu proces, który należy realizować w sposób systematyczny. Ten proces nazywany zazwyczaj modelem wprowadza pewne fazy życia oprogramowania, gdzie dla każdej z faz są określone czynności do wykonania. Dzięki temu jest ułatwione planowanie zdań, można uporządkować przebieg prac oraz monitorować ich przebieg.
Model liniowy jest klasycznym cyklem życia oprogramowania.
1. Faza strategiczna
2. Określenie wymagań
3. Analiza
4. Projektowanie
5. Implementacja
6. Testowanie
7. Konserwacja
Można zauważyć analogię do sposobów prowadzenia przedsięwzięć z innych dziedzin np. budownictwo.
1. Faza strategiczna
Jest to etap rozważania i planowania produkcji nowego oprogramowania, lecz ostateczna decyzja nie została jeszcze podjęta.
2.Określenie wymagań
Ta faza służy do precyzyjnego określenia wymagań klienta do tworzonego systemu.. Sprowadza się to do zamiany celów klienta na dokładne wymagania. Warto w tym etapie porozmawiać z osobami, które będą ten system użytkować. Wymagania można podzielić na funkcjonalne (czynności i operacje wykonywane przez system) i niefunkcjonalne (zachowania , których system nie powinien realizować). Wszystkie wymagania powinny być spisane w dokumencie, aby był formalna podstawą do późniejszej weryfikacji, czy stworzony system spełnia postawione wymagania.
Wykorzystując język naturalny spisujemy w punktach wszystkie wymagania. Nie należy skupiać się na algorytmie, ponieważ jest to składnik jednego z następnych etapów
3. Analiza
Jest to model systemu opisujący sposób realizacji postawionych wymagań, jednak bez szczegółów implementacyjnych. Zazwyczaj sprowadza się to do narysowania bloków, które grupują najważniejsze funkcjonalności systemu. Następnie każdy z bloków można podzielić na jeszcze mniejsze bloki, aby uszczegółowić dane zagadnienie. Zaleca się także umieszczenie w tych blokach danych, które będą potrzebne do obliczeń lub wymiany informacji.
4. Projektowanie
W tym kroku należy opracować szczegółowy opis implementacji systemu. Jest to jeden z ważniejszych etapów, ponieważ żądanie niewielkiej zmiany przez klienta nie będzie stanowiło żadnego problemu. Jednym ze sposobów na zrealizowanie tej fazy będzie narysowanie algorytmu, czyli co krok po kroku powinno być wykonywane.
5. Implementacja
Od tego zaczyna tworzenie systemu większość programistów, czyli kodowania. Implementacja, to zakodowanie poszczególnych modułów w jednym z języków. Dodatkowo są przeprowadzane testy. Ta faza ma znaczący wpływ na niezawodność całego systemu. Dlatego należy pamiętać o praktykach dobrego programowania oraz unikać instrukcji zaburzających naturalną strukturę algorytmu.
6. Testowanie
Służy do wykrycia błędów w systemie oraz ocenę jego niezawodności. Zazwyczaj testowanie polega na podaniu określonych danych do wejścia modułu i sprawdzenie, czy otrzymany wynik zgadza się z oczekiwaną wartością.
7. Konserwacja
Polega na wprowadzaniu modyfikacji polegających na usunięciu błędów, ulepszeniu jakości oprogramowania oraz dostosowaniu systemu do zmian zachodzących w jego środowisku pracy.
Równolegle jest tworzona dokumentacja użytkownika, która jest integralną częścią końcowego produktu. Zazwyczaj jest dzielona na ze względu na odbiorców, czyli użytkowników końcowych oraz administratorów systemu.
Tak w dużym skrócie wygląda cykl życia oprogramowania. Teraz już masz ogólny obraz tego, co jest wykonywane w poszczególnych krokach przedsięwzięcia programistycznego. Podałem Ci najpopularniejsze metody projektowania oprogramowania. W następnych wpisach przeczytasz, jak to jest realizowane w praktyce.
Kurs wideo
Więcej na temat programowania w języku SCL znajdziesz w kursie Sterownik PLC w praktyce:
Jeszcze brakuje mi tylko podpunktu; „dbanie o przejrzystość kodu”. Nie ma nic gorszego niż praca nad kodem osoby, która nie używała wcięć, odstępów między poszczególnymi blokami albo tworzyła go chaotycznie. Jeśli dostajemy taki soft do obróbki po kimś w „spadku” jest to prawdziwa gehenna – największa zmora testerów oprogramowania. Niby banał, ale jednak czytelność jest niezwykle istotna, a wcale nie jest to dla wszystkich oczywiste. I wcale nie mówię tu o początkujących programistach. Przy czym artykuł bardzo sympatyczny. Pozdrawiam!
Mariusz, będzie wkrótce oddzielny wpis na temat praktyk dobrego programowania