Zaawansowana inżynieria oprogramowania

From Studia Informatyczne

Spis treści

Forma zajęć

Wykład (30 godzin) + laboratorium (30 godzin)

Opis

Przedmiot ten jest kontynuacją przedmiotu Inżynieria oprogramowania. Szczególną uwagę poświęca się zagadnieniom dotyczącym procesów wytwarzania oprogramowania, inżynierii wymagań oraz zarządzania przedsięwzięciem programistycznym.

Po zaliczeniu przedmiotu student powinien mieć pogłębioną wiedzę na temat: modeli doskonalenia procesów wytwarzania oprogramowania (ISO 9001, CMMI), metodyk zarządzania przedsięwzięciami (PRINCE2, PSP, TSP, RUP), inżynierii wymagań (standard IEEE 830, norma ISO 9126 i metoda HAZOP dotycząca analizy systemów krytycznych, czyli systemów o znacznie podniesionych wymaganiach dotyczących bezpieczeństwa) oraz szacowania rozmiaru oprogramowania i związanej z nim pracochłonności (metoda delficka, metoda punktów przypadków użycia, COCOMO II). Powinien też posiąść umiejętność doboru modelu procesu wytwarzania oprogramowania do specyfiki przedsięwzięcia i na tej podstawie opracowywania planu przedsięwzięcia dotyczącego budowy oprogramowania.

Sylabus

Autorzy

  • Jerzy Nawrocki — Politechnika Poznańska

Wymagania wstępne

  • Inżynieria oprogramowania

Zawartość

Przedmiot jest podzielony na moduły obejmujące wykłady i ćwiczenia laboratoryjne. Poniżej opisano zawartość poszczególnych modułów.

  • Normy serii ISO 9000 (3 godz. wykładu i 5 godz. ćwiczeń). Normy te określają jak powinien być zbudowany system zarządzania jakością. Bardzo wiele firm informatycznych posiada bądź zabiega o certyfikat ISO 9001:2000 i choćby z tego względu warto się z tymi normami zapoznać. W trakcie wykładu zostaną krótko omówione normy wchodzące w skład serii ISO 9000, zostanie przedstawiona historia ich rozwoju, zasady zarządzania jakością, na których opiera się norma ISO 9001:2000, oraz główne wymagania stawiane systemom zarządzania jakością przez normę ISO 9001:2000. Zostaną też krótko przedyskutowane słabe strony ISO 9000 związane z niewłaściwym stosowaniem praktyk tam zawartych.
  • Model dojrzałości CMMI (2 godz. wykładu i 2 godz. ćwiczeń). Normy serii ISO 9000 mają bardzo ogólny charakter: mogą być stosowane zarówno w wielkiej stoczni, jak i w małym zakładzie krawieckim. Tymczasem wiele osób zarządzających firmami programistycznymi chciałoby mieć wskazówki zorientowane ściśle na wytwarzanie oprogramowania. Tym oczekiwaniom wychodzi na przeciw model CMMI (Capability Maturity Model Integration). W trakcie wykładu zostanie omówiona koncepcja tego modelu, opierająca się na pięciu poziomach dojrzałości, zaprezentowane zostaną obszary i cele związane z drugim poziomem CMMI, szczegółowo zostaną przedstawione praktyki dotyczące zarządzania wymaganiami oraz planowania przedsięwzięcia oraz zostaną wymienione tzw. praktyki generyczne, dotyczące instytucjonalizacji (czyli wdrażania) procesów wytwarzania oprogramowania w kształcie sugerowanym przez CMMI.
  • Zarządzanie przedsięwzięciami i PRINCE2 (5 godz. wykładu i 4 godz. ćwiczeń). Metodyka PRINCE2 jest jedną z najpopularniejszych metodyk zarządzania przedsięwzięciami i interesuje się nią coraz więcej polskich firm informatycznych. W trakcie wykładu zostanie przedstawiona historia metodyki PRINCE2, organizacja zespołu wg PRINCE2, cykl życia przedsięwzięcia, ogólna charakterystyka procesów PRINCE2, przypadek biznesowy i jego struktura, planowanie przedsięwzięcia realizowanego zgodnie z PRINCE2, problemy dotyczące jakości, zarządzania ryzykiem i zarządzania zmianami, przygotowanie założeń przedsięwzięcia, inicjowanie przedsięwzięcia, zarządzanie pojedynczym etapem i zamykanie przedsięwzięcia.
  • Personal Software Process (5 godz. wykładu i 5 godz. ćwiczeń). Aby zespół był dobrze zorganizowany, jego poszczególni członkowie też muszą być dobrze zorganizowani. Wychodząc z tej przesłanki Watts Humphrey opracował metodykę PSP (Personal Software Process), ukierunkowaną na pojedynczego programistę. W trakcie wykładu zostanie zaprezentowana metodyka PSP wraz z jej stopniami dojrzałości (wtajemniczenia). Szczególna uwaga zostanie poświęcona dwóm pierwszym stopniom dojrzałości: procesowi bazowemu i planowaniu. Zostaną dość szczegółowo omówione rejestry czasu i defektów, problem wyboru miary dla rozmiaru kodu, standard kodowania i formularz propozycji samodoskonalenia. W metodyce PSP planowanie opiera się na metodach statystycznych. W ramach wykładu zostanie zaprezentowana metoda PROBE wykorzystywana w metodyce PSP do szacowania rozmiaru kodu i szacowania pracochłonności. Przypomniane zostaną także podstawowe wiadomości z metod probabilistycznych, których znajomość jest konieczna do zrozumienia metody PROBE (rozkład t-Studenta). Omówione zostanie również układanie harmonogramu, uwzględniające szacowaną pracochłonność poszczególnych zadań i realny czas dostępny na realizację zaplanowanych działań.
  • Metodyki programowania: TSP i RUP (2 godz. wykładu i 2 godz. ćwiczeń). Metodyka TSP (Team Software Process) jest propozycją organizacji pracy zespołu programistów, z których każdy organizuje swoją pracę na bazie PSP. W trakcie wykładu zostanie omówiona organizacja zespołu TSP i zaprezentowany zostanie cykl życia oprogramowania. Metodyka RUP (Rational Unified Process) została opracowana w firmie Rational Corporation i w 2003 roku przejęta – wraz z firmą Rational – przez IBM. Jest to zwinna metodyka programowania zgodna, podobnie jak XP, z manifestem zwinności, ale nie tak radykalna jak XP. W trakcie wykładu zostanie omówiona struktura zespołu zgodna z RUP i przedstawiony zostanie cykl życia oprogramowania proponowany przez tę metodykę.
  • Pozyskiwanie i dokumentowanie wymagań (2 godz. wykładu i 2 godz. ćwiczeń). Specyfikacja wymagań i przypadki użycia zostały wstępnie zaprezentowane w ramach przedmiotu „Inżynieria oprogramowania”. Ten wykład ma za zadanie przybliżyć słuchaczom standard IEEE 830, dotyczący specyfikacji wymagań, oraz zaprezentować dobre praktyki dotyczące dokumentu zawierającego wymagania.
  • Wymagania pozafunkcjonalne i ISO 9126 (2 godz. wykładu i 2 godz. ćwiczeń). Międzynarodowy standard ISO/IEC 9126 definiuje model jakości dla oprogramowania jako produktu. Standard składa się z czterech części opisujących model jakości (część pierwsza) i związane z nim metryki (pozostałe 3 części). Model jakości opiera się na sześciu charakterystykach: funkcjonalności, niezawodności, użyteczności, efektywności, łatwości utrzymania i przenośności. W trakcie wykładu zostaną omówione problemy związane z oceną jakości oprogramowania i przedstawiona zostanie norma ISO 9126.
  • Zarządzanie ryzykiem (2 godz. wykładu i 2 godz. ćwiczeń). Z każdym przedsięwzięciem jest związane ryzyko niepowodzenia. Dotyczy to zwłaszcza przedsięwzięć informatycznych. Potrzebna jest więc umiejętność zarządzania ryzykiem. W trakcie wykładu omówione zostaną zagadnienia dotyczące planowania zarządzania ryzykiem, identyfikacji czynników ryzyka, jakościowej i ilościowej analizy czynników ryzyka, monitorowania i kontroli ryzyka.
  • Systemy krytyczne i HAZOP (2 godz. wykładu i 2 godz. ćwiczeń). Systemy krytyczne są to takie systemy, których awaria może doprowadzić do utraty życia lub zdrowia ludzi albo wyrządzić ogromne szkody materialne. W trakcie wykładu zostaną zaprezentowane dobre praktyki dotyczące zbierania i analizy wymagań dla systemów krytycznych. Szczegółowo zostanie omówiona metoda analizy takich systemów zwana HAZOP, wywodząca się z przemysłu chemicznego, która coraz częściej jest stosowana również do analizy systemów informatycznych.
  • Szacowanie rozmiaru oprogramowania i pracochłonności (5 godz. wykładu i 4 godz. ćwiczeń). Jakość oszacowań dotyczących pracochłonności ma kluczowy wpływ na jakość planowania. Bardzo często szacowanie pracochłonności jest poprzedzane szacowaniem rozmiaru oprogramowania, które trzeba stworzyć. Przy okazji omawiania metodyki PSP prezentowana była metoda PROBE służąca do szacowania rozmiaru kodu i pracochłonności. W ramach tego modułu zostanie zaprezentowana metoda punktów funkcyjnych, metoda delficka, COCOMO II i metoda punktów przypadków użycia, będąca próbą przeniesienia koncepcji punktów funkcyjnych na grunt przypadków użycia.


Literatura

  1. CMMI for System Engineering/Software Engineering/Integrated Product and Process Development, Version 1.1, Staged Representation, CMU/SEI-2002-TR-004, Carnegie Mellon University, 2004.
  2. OGC. Managing Successful Projects with PRINCE2, TSO, 2002.
  3. Systemy zarządzania jakością. Wymagania, PN-EN ISO 9001, PKN, 2001.
  4. B.W. Boehm, C. Abts, A.W. Brown, S. Chulani, B.K. Clark, E. Horowitz, R. Madachy, D. Reifer, B Steece, Software Cost Estimation with COCOMO II, Prentice Hall PTR, 2000.
  5. W. Humphrey, A Discipline for Software Engineering, Addison-Wesley, Reading 1995.
  6. W. Humphery, Introduction to the Team Software Process, Addison-Wesley, Reading 2000.
  7. P. Kroll, P. Kruchten, The Rational Unified Process Made Easy, Addison-Wesley, Boston 2003.
  8. I.Sommerville, P. Sawyer, Requirements Engineering. A Good Practice Guide, John Wiley & Sons, Chichester 1997.

Moduły

  1. Standardy serii ISO 9000 (swf, pdf), (Ćwiczenia [1] [2])
  2. Model dojrzałości CMMI (swf, pdf), (Ćwiczenia)
  3. Personal Software Process, cz. I (swf, pdf), (Ćwiczenia)
  4. Personal Software Process, cz. II (swf, pdf), (Ćwiczenia)
  5. Pozyskiwanie i dokumentowanie wymagań (swf, pdf, pdf kolor), (Ćwiczenia)
  6. Wymagania pozafunkcyjne i ISO 9126 (swf, pdf), (Ćwiczenia)
  7. Zarządzanie ryzykiem (swf, pdf) (Ćwiczenia)
  8. Systemy krytyczne i HAZOP (swf, pdf, pdf kolor), (Ćwiczenia)
  9. Szacowanie rozmiaru oprogramowania (swf, pdf, pdf kolor), (Ćwiczenia)
  10. Szacowanie pracochłonności (swf, pdf), (Ćwiczenia)