haker.info  — Etyczny hacking_
Spreading knowledge like a virus.

 Metodyki wytwarzania oprogramowania

   Dawid Farbaniec    770 s┼é├│w

1. Podstawowe poj─Öcia

tym wpisie opisano w skrócie najpopularniejsze metodyki wytwarzania oprogramowania. Przedstawiono czym jest model kaskadowy, iteracyjny czy prototypowanie. Natomiast na końcu znajdziesz wprowadzenie do metodyk zwinnych (Agile).

In┼╝ynieria oprogramowania ÔÇö jest to zastosowanie in┼╝ynierii w tworzeniu oprogramowania. Dziedzina ta zajmuje si─Ö m.in. metodykami, kt├│re stosuje si─Ö do wytwarzania oprogramowania.

Wyja┼Ťnienie terminu In┼╝ynieria oprogramowania wed┼éug standardu Instytutu In┼╝ynier├│w, Elektryk├│w i Elektronik├│w (ang. Institute of Electrical and Electronics Engineers, w skr├│cie IEEE) brzmi nast─Öpuj─ůco:

In┼╝ynieria oprogramowania to aplikowanie systematycznego, zdyscyplinowanego i wymiernego podej┼Ťcia do wytwarzania, obs┼éugi i konserwacji oprogramowania.
IEEE Standard Glossary of Software Engineering Terminology 610.12-1990, 1990

Proces wytwarzania oprogramowania ÔÇô jest to podzia┼é wytwarzania oprogramowania na okre┼Ťlone fazy. Nazywany jest te┼╝ cyklem ┼╝ycia oprogramowania. Dzielenie ca┼éego procesu na cz─Ö┼Ťci ma za zadanie uczyni─ç wydajniejszym projektowanie, programowanie i zarz─ůdzanie projektem.

2. Podstawowe metody wytwarzania oprogramowania

2.1. Model kaskadowy / Wodospad (ang. Waterfall)

Jedna z pierwszych zdefiniowanych metodyk wytwarzania oprogramowania. Polega na podzieleniu procesu tworzenia oprogramowania na liniowe, nast─Öpuj─ůce po sobie etapy. St─ůd nazwa wodospad, gdy┼╝ post─Öp tworzenia projektu zmierza prost─ů ┼Ťcie┼╝k─ů do jednego celu jakim jest powstanie gotowego systemu. Ka┼╝dy kolejny etap jest zale┼╝ny od wynik├│w dostarczonych przez poprzednie etapy. Model ten jest krytykowany za d┼éugi czas od pomys┼éu do stworzenia dzia┼éaj─ůcego programu.



2.2. Model prototypowy

Metoda prototypowania w programowaniu wyst─Öpuje cz─Östo w postaci, gdzie najpierw tworzony jest schemat aplikacji. Dalej tworzony jest interfejs graficzny, do kt├│rego nast─Öpnie programowana jest logika. Pozwala to wypu┼Ťci─ç niedoko┼äczon─ů aplikacj─Ö, czyli tak─ů w kt├│rej tylko cz─Ö┼Ť─ç funkcjonalno┼Ťci jest zaimplementowana i dzia┼éa, ale produkt jest mo┼╝liwy do u┼╝ywania. Dodatkowo przedstawienie najpierw prototypu klientowi do akceptacji cz─Östo chroni przed kosztami, kt├│re mog┼éyby wyst─ůpi─ç np. w przypadku b┼é─Öd├│w projektowych czy b┼é─Ödnego zaprogramowania okre┼Ťlonego modu┼éu.



2.3. Model przyrostowy / iteracyjny (ang. incremental / iterative)

Model ten polega na ca┼éo┼Ťciowym zaplanowaniu tworzonego systemu oraz podzieleniu go na odr─Öbne modu┼éy. Dalej nast─Öpuje programowanie wybranego modu┼éu lub kilku, testowanie i przedstawienie ich dzia┼éania klientowi. Dzia┼éania te s─ů powtarzane, a┼╝ do powstania kompletnego systemu. St─ůd nazwa ÔÇ×model przyrostowyÔÇŁ, gdy┼╝ ka┼╝dy etap zako┼äczony akceptacj─ů klienta rozszerza produkt o now─ů, gotow─ů funkcjonalno┼Ť─ç.



2.4. Metoda Rapid Application Development (RAD)

W przypadku Rapid Application Development (od ang. szybkie tworzenie aplikacji) do programisty dostarczane s─ů gotowe modu┼éy takie jak na przyk┼éad kontrolki, klasy, biblioteki czy inne komponenty, kt├│re posiadaj─ů wyodr─Öbnion─ů, gotow─ů funkcjonalno┼Ť─ç. Zadaniem programisty (lub zespo┼éu) jest u┼éo┼╝enie tego wszystkiego w ca┼éo┼Ť─ç, czyli finalny produkt. Gotowe komponenty mog─ů zosta─ç zakupione z zewn─ůtrz (np. kontrolki Telerik), mog─ů by─ç darmowe (otwarte licencje) lub mog─ů by─ç wykonane na zlecenie przez inn─ů cz─Ö┼Ť─ç zespo┼éu kt├│rej to powierzono. Firmy cz─Östo posiadaj─ů autorskie frameworki, czyli zestawy bibliotek stworzonych przez zesp├│┼é firmowy do wielokrotnego u┼╝ycia w kolejnych produktach. Mianem RAD (Rapid Application Development) okre┼Ťla si─Ö te┼╝ ┼Ťrodowiska programistyczne, kt├│re wyr├│┼╝niaj─ů si─Ö wieloma gotowymi komponentami oraz wizualnym projektowaniem aplikacji ÔÇô cz─Östo poprzez metod─Ö ÔÇ×przeci─ůgnij i upu┼Ť─çÔÇŁ (ang. drag and drop). Przyk┼éadowe ┼Ťrodowiska RAD to Microsoft Visual Studio (wiele j─Özyk├│w programowania), Qt Designer (j─Özyk C++) czy Lazarus (j─Özyk Free Pascal).

2.5. Metodyki zwinne Agile

Okre┼Ťlenie ÔÇ×Programowanie zwinneÔÇŁ zosta┼éo zaproponowane w dokumencie Manifest Agile (Agile Manifesto) w 2001 r. Metody zwinne zosta┼éy stworzone g┼é├│wnie z powodu, ┼╝e wymagania klienta cz─Östo si─Ö zmieniaj─ů w czasie trwania projektu. Praca zostaje rozdzielona pomi─Ödzy samoÔÇôzarz─ůdzalne zespo┼éy w sk┼éad kt├│rych wchodz─ů nie tylko programi┼Ťci, ale r├│wnie┼╝ ludzie od marketingu, dzia┼éu operacyjnego, zasob├│w ludzkich itd. Agile stosowane do zarz─ůdzania projektami posiada elementy LEAN Management (od ang. zarz─ůdzanie szczup┼ée).

Fragment manifestu Agile:

Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.

Jednostki i interakcje ponad procesy i narz─Ödzia.
Dzia┼éaj─ůce oprogramowanie ponad wyczerpuj─ůc─ů dokumentacj─Ö.
Współpraca z klientem ponad negocjacje kontraktu.
Reagowanie na zmiany ponad pod─ů┼╝aniem wed┼éug planu.
Fragment manifestu Agile

2.5.1. Programowanie ekstremalne (XP, ang. eXtreme Programming)

Programowanie ekstremalne to bardzo popularny rodzaj metodyki zwinnej (Agile). W metodologii tej najwa┼╝niejsza jest jako┼Ť─ç wytwarzanego oprogramowania oraz dostosowanie do zmieniaj─ůcych si─Ö potrzeb klienta. Proces wytwarzania dzielony jest na kr├│tkie cykle, kt├│re ko┼äcz─ů si─Ö punktem kontrolnym, podczas kt├│rego mo┼╝liwe jest zaadoptowanie nowych zmian podanych przez klienta.

Niekt├│re praktyki stosowane w tej metodyce:

  • Tworzenie test├│w jednostkowych do ca┼éo┼Ťci kodu
  • Ulepszenia i optymalizacje s─ů zostawiane na koniec
  • Nie wypuszcza si─Ö kodu, kt├│ry nie przeszed┼é test├│w jednostkowych
  • Bardzo cz─Östy kontakt z klientem
  • Programowanie w parach, gdzie jeden programista pisze kod, a drugi przeprowadza analiz─Ö i review
  • Dopilnowanie, aby pracowano na najnowszej wersji kodu
  • Ustalenie i trzymanie si─Ö konkretnego standardu i stylu pisania kodu

3. Zakończenie

Wiele metodologii tworzenia oprogramowania posiada niekt├│re cechy zaczerpni─Öte z innych. W prostych s┼éowach: cechy okre┼Ťlonych metodologii krzy┼╝uj─ů si─Ö. Nowoczesne programowanie zwinne (Agile) wyci─ůgn─Ö┼éo najlepsze praktyki z poprzednich metodologii. Nie oznacza to jednak, ┼╝e jest idealne, gdy┼╝ pojawiaj─ů si─Ö r├│wnie┼╝ s┼éowa krytyki.

Dawid Farbaniec


Tagi:  inne 

Komentarze czytaj─ůcych

Wszystkie tre┼Ťci umieszczone na tej witrynie s─ů chronione prawem autorskim. Surowo zabronione jest kopiowanie i rozpowszechnianie zawarto┼Ťci tej witryny bez zgody autora. Wszelkie opublikowane tutaj tre┼Ťci (w tym kody ┼║r├│d┼éowe i inne) s┼éu┼╝─ů wy┼é─ůcznie celom informacyjnym oraz edukacyjnym. W┼éa┼Ťciciele tej witryny nie ponosz─ů odpowiedzialno┼Ťci za ewentualne niezgodne z prawem wykorzystanie zasob├│w dost─Öpnych w witrynie. U┼╝ytkownik tej witryny o┼Ťwiadcza, ┼╝e z zamieszczonych tutaj danych korzysta na w┼éasn─ů odpowiedzialno┼Ť─ç. Wszelkie znaki towarowe i nazwy zastrze┼╝one zosta┼éy u┼╝yte jedynie w celach informacyjnych i nale┼╝─ů wy┼é─ůcznie do ich prawnych w┼éa┼Ťcicieli. Korzystaj─ůc z zasob├│w witryny haker.info o┼Ťwiadczasz, ┼╝e akceptujesz powy┼╝sze warunki oraz polityk─Ö prywatno┼Ťci.