Miliony linii kodu to czasem chaos. Komputer jest z definicji deterministyczny.
Właśnie skończyłem czytać kolejny tegoroczny grudniowy numer Software Developer Journal. Ogromne przemyślenia wzbudził we mnie artykuł Fazy Tworzenia Oprogramowania Pana Daniela Jabłońskiego. Autor, doświadczony programista, pisze o zarządzaniu projektami, w których złożoność staje się wręcz abstrakcyjna dla samych programistów: miliony linii kodu!
To właśnie mnie fascynuje: ogarnianie złożoności za pomocą abstrakcyjnych modeli problemu. Wyrzucam wszystko to co zaciemnia obraz i zostawiam tylko elementy jednej perspektywy. Z milionów linii kodu można zrobić kilkadziesiąt diagramów….
System ERP zawiera kilka tysięcy funkcjonalności, każdą implementuje kilka, kilkanaście czy nawet kilkadziesiąt tysięcy linii kodu. Jak to ogarnąć?
Jeden z pracowników moich klientów, duży developer powiedział, że firma i to co się w niej dzieje jest tak skomplikowana, że nie wyobraża sobie bo można to było opisać lub narysować. Powiedziałem, że można, należy jednak po pierwsze przyjąć pewien poziom szczegółowości opisu sensowny z perspektywy człowieka (model to uproszczenie) oraz podzielić problem na kawałki… dyskusja nie miała końca. Mój projekt dobiegł końca i okazało się, że udało się opisać nie małą firmę w ciągu miesiąca, modelem na kilkudziesięciu stronach. Jak?
Modelowanie to fascynująca profesja. Pozwala uprościć samochód Porche, składający się z kilkuset tysięcy elementów do postaci modelu, zabawki na resorach, zachowującej potrzebne, w kontekście wyścigów na plastykowym torze, cechy takie jak wygląd i rozpoznawalność marki samochodu. Modelowanie pozwala uprościć ten sam złożony samochód do postaci drewnianej skorupy pozwalającej na ocenę aerodynamiki samochodu. Innym razem silnik umieszcza się, w skrzynce imitującej nadwozie z kołami by go przetestować i ocenić jakie samochód będzie miał przyśpieszenie.
Opanowywanie złożoności to podstawowe zajęcie analityka, projektanta.
Autor artykułu pyta: czy kiedyś przypadkowy błąd, defekt, programu zawierającego miliony linii kodu nie spowoduje, że powstanie świadomy program?
No coż … filozoficzne dywagacje :)… czasem i to należy robić…. W każdym razie, z filozoficznego powodu polecam ten numer SDJ