Trudna sztuka projektowania

W tym semestrze trafił nam się sympatyczny przedmiot jakim jest Inżynieria Oprogramowania. Każdy trochę bardziej związany z informatyką/programowaniem wie, że w dużym skrócie jest to dział wiedzy mówiący m.in. o planowaniu i projektowaniu nowo powstających aplikacji. No i właśnie o tym projektowaniu będzie ten mój dzisiejszy post.

W ramach tego przedmiotu odbywają się laboratoria. Zadanie jakie dostaliśmy do wykonania w ciągu całego semestru to stworzenie prostego programu, zaczynając od specyfikacji, diagramów itd., a kończąc na działającym projekcie zawierającym również testy jednostkowe. W tym momencie każdy początkujący programista by stwierdził, że przecież małą apkę to się w góra kilka dni napisze więc dlaczego aż 4 miesiące na to dostaliśmy. No właśnie nie. Przyznać się, kto z was kiedykolwiek do swoich programów pisał specyfikację i robił jakiekolwiek diagramy UML? ;) Ja przyznaję się, że tego nigdy nie robiłem, nie tylko z powodu braku wiedzy, ale też, a może przede wszystkim z lenistwa. I teraz wychodzi to dlaczego mieliśmy na to zadanie aż tyle czasu. Otóż dopiero wczoraj udało mi się zakończyć tworzenie specyfikacji projektu i diagramów klas i sekwencji.

Program, który dla siebie wybrałem to banalna aplikacja, której zadaniem jest pobranie średniego kursu walut dostępnego na stronie NBP w postaci pliku XML, wyświetlenie tego kursu oraz danie możliwość ewentualnego przeliczenia wartości z jednej waluty na inną. Niby nic tak na prawdę tutaj nie ma, ot kilka funkcji. A jednak moja specyfikacja, nie licząc spisu treści i tytułu, zajęła 5 stron A4! Zawarte tam są wszystkie funkcjonalności wymagane w projekcie oraz ogólny zarys systemu. O ile przy tej części zadania uważam, że poszło mi nawet nieźle, zwłaszcza, że nigdy wcześniej nie napisałem nawet linijki specyfikacji, to już jeśli chodzi o diagramy to cóż… Określę to tak, że jeśli ocena jaką za nie dostanę będzie większa niż 3.0 to można powiedzieć, że prowadzący przy sprawdzaniu był bardzo pobłażliwy. Nawet to 3.0 w tym wypadku będzie trochę naciąganą oceną. Dlaczego? Bo to co stworzyłem powinno być raczej wstępną wersją diagramu klas i sekwencji (zwłaszcza tego drugiego), a nie czymś co się oddaje do oceny. Niestety, zabrakło mi czasu, pisanie i sprawdzanie specyfikacji zajęło większość semestru. Nie ma oczywiście co udawać świętego, w jakimś stopniu przyczyniło się do tego moje lenistwo, jednak w tym wypadku nie było ono tak mocne jak niekiedy się zdarza przy innych zadaniach.

No więc mamy 13 stycznia, do tego czasu udało mi się oddać gotową specyfikację projektu i pożal się boże diagramy. Następne, a jednocześnie ostatnie zajęcia będą 27 stycznia, a w tym momencie został mi jeszcze do napisania sam kod i dopisanie do niego testów jednostkowych. Tutaj już na pewno pójdzie szybciej, zwłaszcza jak ma się wszystko dobrze zaprojektowanie :P W tym momencie chciałbym zakończyć tym, że jeśli ktokolwiek uważa, że tworząc programy na poważnie po prostu siada się do klawiatury i pisze to mam tylko jedno stwierdzenie – przed taką osobą jeszcze długa droga zanim uda mu się stworzyć i utrzymać większy projekt, niezależnie od tego jak dobry pomysł będzie miał, zawsze zabraknie tego formalnego opisu wszystkiego co chce się umieścić w naszym dziele. Oczywiście, raczej nie znajdzie się programisty, który do każdego swojego programu, nawet mającego max kilkaset linii kodu będzie pisał całą specyfikację i rysował diagramy UML, jednak próba zrobienia tego, nawet jedynie dla siebie, na pewno pozwoli inaczej spojrzeć na cały proces wytwarzania oprogramowania i pokaże, że klepanie kodu to jedynie niewielki fragment całości.

Jak już tak się rozpisałem, to może na koniec zamieszczę tą specyfikację, o której tyle mówiłem, może komuś się przyda, może ktoś będzie chciał zobaczyć jak taki twór wygląda, albo po prostu będzie miał silną chęć ocenienia jak mi to wyszło :D Diagramów nie zamieszczam, uwierzcie na słowo, że szkoda czasu na ich oglądanie.

Plik znaleźć można tutaj -> specyfikacja

5 thoughts on “Trudna sztuka projektowania”

  1. No wiesz, tych diagramów byłam najbardziej ciekawa ;) jako że sama mam podobny przedmiot tylko nazywa się on analiza i projektowanie portali korporacyjnych i zamiast napisać aplikację mamy w nim stworzyć portal i jest to jedyna różnica ;) Trzymam kciuki za ocenę wyższą niż 3.0 ;)

  2. A nie musieliście robić żadnych diagramów do tego ? Zależności, diagramów czynności, linii życia itd. itd. … ?

    Bo to bardziej taki opis projektu niż jego dokumentacja w UML-u ?

    W czym piszesz aplikację i jak postępy ? Tak jak wcześniej w c# czy wymóg to Java ?

    Pozdro. ;-)

    1. Mieliśmy robić do tego diagram klas i sekwencji, ale nie chwaliłem się nimi ponieważ, tak jak zaznaczyłem w tekście, byłby to raczej antyprzykład jak wykonywać takie diagramy :D Aplikację piszę w C#, nie mamy narzuconej technologii, jedyny wymóg jest taki, że ma być to aplikacja desktopowa. W tym momencie jeszcze niewielka część aplikacji istnieje, ale ponieważ jest to prosty program, do którego gotowe fragmenty będę brał z poprzedniej wersji to myślę, że poniedziałkowy deadline jest jak najbardziej wykonalny :)

    1. Tak zrobione. O dziwo nawet diagramy się podobały, chociaż sam jestem z nich wybitnie niezadowolony, tak samo jak z kodu programu, który moim zdaniem wymaga zmian i jest po części wynikiem słabej architektury. Teraz zrobiłbym niektóre rzeczy inaczej, no ale właśnie tak się zdobywa doświadczenie.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *