IO szacowanie wielkości, koszty przedsięwzięcia informatycznego

background image

COCOMO 2, grudzień 2004

1



Metody szacowania kosztu przedsięwzięć informatycznych









Materiał do wykładu z przedmiotu

Inżynieria Oprogramowania




Opracowane głównie na podstawie materiału źródłowego

B.Boehma i współautorów

po przekładzie T.Tarnawskiego pod kierunkiem G.Bliźniuka





Ostateczne przygotowanie dla studentów: G.Bliźniuk










Warszawa, grudzień 2004r.

background image

COCOMO 2, grudzień 2004

2

Spis treści

1.

Wprowadzenie...........................................................................................................................................................5

2.

Uwarunkowania oceny kosztu procesu wytwórczego oprogramowania ...................................................................6

3.

Podział kosztu procesu wytwórczego na poszczególne etapy cyklu życia oprogramowania ....................................9

4.

COCOMO 2 ............................................................................................................................................................14

4.1.

Cele Cocomo2 ...............................................................................................................................................14

4.2.

Modele Cocomo2...........................................................................................................................................14

4.3.

Charakterystyka modeli Cocomo2.................................................................................................................15

4.4.

Czynniki wpływające na koszt: Rozmiar.......................................................................................................18

4.4.1.

Komponowanie Aplikacji: Punkty Obiektowe ..............................................................................................18

4.4.1.1.

Procedura szacowania kosztu metodą Punktów Obiektowych wykorzystana w Cocomo2 ......................19

4.4.2.

Rozwój Aplikacji ...........................................................................................................................................21

4.4.2.1.

Reguły zliczania Linii Kodu .....................................................................................................................21

4.4.2.2.

Reguły naliczania Punktów Funkcyjnych .................................................................................................23

4.4.3.

Ponowne Użycie istniejącego kodu i Reinżynieria........................................................................................25

4.4.3.1.

Nieliniowe Koszty Ponownego Użycia istniejącego kodu........................................................................25

4.4.3.2.

Model Dostosowywania istniejącego kodu użyty w Cocomo2.................................................................26

4.4.3.3.

Szacowanie kosztów reinżynierii i konwersji oprogramowania ...............................................................29

4.4.4.

Występowanie Usterek ..................................................................................................................................30

4.4.5.

Pielęgnacja oprogramowania .........................................................................................................................30

4.5.

Czynniki wpływające na koszt: Skala Programu ...........................................................................................30

4.5.1.

Modelowania tzw. ekonomii lub anty-ekonomii skali w pracach informatycznych......................................30

4.5.2.

Określenie skali prac w Cocomo i Ada Cocomo ...........................................................................................31

4.5.3.

Skalowanie prac w Cocomo2.........................................................................................................................32

4.6.

Czynniki wpływające na koszt: Dodatkowe czynniki zwiększające nakład pracy ........................................33

4.6.1.

Czynniki Produktu .........................................................................................................................................34

4.6.1.1.

RELY – Wymagana Niezawodność Oprogramowania.............................................................................34

4.6.1.2.

DATA – Wielkość Bazy Danych..............................................................................................................35

4.6.1.3.

CPLX – Złożoność (trudność) Produktu...................................................................................................35

4.6.1.4.

RUSE – Wymagane ponowne użycie tworzonego oprogramowania........................................................36

4.6.1.5.

DOCU – przydatność wymaganej dokumentacji przy budowaniu oprogramowania................................36

4.6.1.6.

Czynniki Platformy ...................................................................................................................................36

4.6.1.7.

TIME – Ograniczenie Czasu Działania, STOR – Limit Dostępnej Pamięci.............................................38

4.6.1.8.

PVOL – Zmienność Platformy..................................................................................................................38

4.6.1.9.

TURN – Czas Kompilacji (Computer Turnaround Time) ........................................................................38

4.6.2.

Czynniki Kadrowe .........................................................................................................................................38

4.6.2.1.

ACAP – Umiejętności Analityków, PCAP – Umiejętności Programistów...............................................38

4.6.2.2.

AEXP – Doświadczenie z aplikacjami, PEXP – Doświadczenie z platformami, LTEX – Doświadczenie z

językiem programowania i narzędziami .......................................................................................................................39

4.6.2.3.

PCON – Stabilność personelu..................................................................................................................40

4.6.3.

Czynniki Procesu Produkcji...........................................................................................................................40

4.6.3.1.

MODP – Wykorzystanie nowoczesnych metod tworzenia oprogramowania ...........................................40

4.6.3.2.

TOOL – Stosowanie narzędzi software’owych.........................................................................................40

4.6.3.3.

SITE – Rozproszenie tworzenia oprogramowania....................................................................................41

4.6.3.4.

SCED – Wymaganie dotyczące harmonogramu prac ...............................................................................41

4.6.3.5.

SECU – Oprogramowanie utajnione.........................................................................................................41

4.7.

Dodatkowe możliwości metody Cocomo2 ....................................................................................................41

4.7.1.

Szacunki Punktów Funkcyjnych w modelach Projektu Wstępnego i Późnych Faz Projektowych................41

Czynniki w modelu .......................................................................................................................................................42

Projektu Wstępnego......................................................................................................................................................42

4.7.2.

Szacunki harmonogramu prac........................................................................................................................43

4.7.3.

Przedziały wyników obliczeń ........................................................................................................................43

5.

Podsumowanie ........................................................................................................................................................44

6.

Wyjaśnienie skrótów użytych w tekście..................................................................................................................45

background image

COCOMO 2, grudzień 2004

3

Spis tabel

Tabela 1. Procentowy udział kosztu w poszczególnych procesach i fazach cyklu życia oprogramowania......................10
Tabela 2. Porównanie Cocomo, Ada Cocomo i Cocomo2................................................................................................17
Tabela 3. Typy Funkcji Użytkowych w FPA....................................................................................................................24
Tabela 4. Wartości wskaźnika Zrozumiałości Oprogramowania (SU) w zależności od jakości kodu..............................28
Tabela 5. Skala wartości Współczynnika AA...................................................................................................................29
Tabela 6. Wartości stopnia automatycznego przerabiania kodu .......................................................................................29
Tabela 7. Oceny składników wykładnika skali projektu...................................................................................................33
Tabela 8. Skale szacowania czynników wzrostu kosztów w modelu Post-Architekturowym ..........................................34
Tabela 9. Wyznaczanie trudności dla różnych typów modułów.......................................................................................37
Tabela 10. Czynniki wzrostu kosztów w modelach Projektu Wstępnego i Późnych Faz Projektowych ..........................42

background image

COCOMO 2, grudzień 2004

4

Spis rysunków

Rysunek 1. Przewidywana struktura rynku informatycznego USA w roku 2005...............................................................6

Rysunek 2. Typowe niedokładności szacowania kosztu przedsięwzięcia informatycznego w poszczególnych fazach

cyklu wytwórczego. ........................................................................................................................................9

Rysunek 3.Udział poszczególnych faz cyklu życia oprogramowania w koszcie przedsięwzięcia informatycznego........12

Rysunek 4. Podział kosztów na procesy cyklu wytwórczego oprogramowania. ..............................................................12

Rysunek 5. Udział kosztów składowych procesu wytwórczego w poszczególnych fazach cyklu życia

oprogramowania............................................................................................................................................13

Rysunek 6. Szkielet procedury zliczania punktów obiektowych ......................................................................................20

Rysunek 7. Lista-Definicja do Naliczania LOC ...............................................................................................................22

Rysunek 8. Procedura naliczania punktów funkcyjnych ..................................................................................................25

Rysunek 9. Nieliniowe koszty dostosowywania istniejącego oprogramowania ...............................................................27

Rysunek 10. Liczba testów interfejsów między-modułowych jako funkcja ilości zmian.................................................27

background image

COCOMO 2, grudzień 2004

5


1. Wprowadzenie

Zakres materiału obejmuje zaproponowanie albo wskazanie efektywnej metody szacowania

kosztu przedsięwzięć informatycznych wraz z opisem uwarunkowań omawianego zagadnienia.

Po pierwsze należy zauważyć, że szacowanie kosztu przedsięwzięć informatycznych jest

zadaniem niezwykle trudnym i od wielu lat nie wypracowano jednak, ogólnie przyjętej metodzie,

dzięki której możnaby jednoznacznie powiedzieć, że koszt wytworzenia jakiegoś konkretnego

systemu informatycznego powinien wynosić X, a koszt wytworzenia innego systemu powinien

wynosić Y. Zawsze pracuje się tutaj w warunkach wiedzy niepełnej o potencjalnym koszcie

ostatecznym i koszcie rzeczywistym wytworzenia systemu informatycznego. Nie oznacza to jednak,

że współczesny dorobek inżynierii oprogramowania nie pomaga w tej kwestii. Ważne jest jednak,

aby mieć na względzie to, że cały czas poruszamy się tutaj w obszarze szacowania kosztu, a każdy

szacunek jest jedynie pewnym przybliżeniem rzeczywistej wartości, która podlega szacowaniu.

W czasie opracowywania tego materiału przeanalizowano własne doświadczenia, dotyczące

wytwarzania systemów informatycznych. Z doświadczeń tych wynika, że dominującymi obecnie

metodami szacowania kosztu przedsięwzięć informatycznych są dwie metody:

– metoda analizy punktów funkcyjnych pochodząca z firmy IBM (ang. Function Point

Analisys – FPA), zaproponowana przez A.J.Albrecht’a w roku 1979 i potem

rozwijana

1

. Zasadniczą miarą kosztu w tej metodzie jest „punkt funkcyjny”.

Zasadniczą wadą tej metody jest jednak to, że nie do końca wiadomo, jaka jest miara

kosztu punktu funkcyjnego.

– metoda Cocomo2 zaproponowana przez SEI

2

(ang. Software Engineering Institute)

umożliwiająca efektywne szacowanie kosztu produkcji i wdrażania oprogramowania.

Według opinii autora najlepszą obecnie metodą jest Cocomo2. Wynika to z tego, że jej właściwości

dają w naszej opinii właściwy aparat analityczny dla osób odpowiedzialnych za budżet

poszczególnych przedsięwzięć informatycznych, a równocześnie uwzględnia ona własności metody

FPA, równie ważnej dla oceny kosztu przedsięwzięć informatycznych.

1

Metoda FPA jest opisywana na stronie: www.ifpug.org

2

W tej ekspertyzie zostanie wykorzystany materiał źródłowy opisujący wersję drugą metody Constructive Cost Model,

nazywanej w skrócie Cocomo2, przedstawiony przez autorów tej metody, którymi są: Barry Boehm, Bradford Clark,
Ellis Horowitz, Chris Westland z USC Center for Software Engineering, Ray Madachy z USC Center for Software
Engineering and Litton Data Systems i Richard Shelby zUC Irvine and Amadeus Software Research.

background image

COCOMO 2, grudzień 2004

6

2. Uwarunkowania oceny kosztu procesu wytwórczego oprogramowania

Szacowanie kosztu procesu wytwórczego oprogramowania jest realizowane w warunkach

wiedzy niepełnej i niepewnej. Według twórców metody Cocomo2 bardzo istotny i ciągły spadek

cen sprzętu komputerowego i dominująca tendencja do informatycznego wspomagania zarządzania

przedsiębiorstwami wymuszają intensywne prace nad obniżeniem kosztów tworzenia systemów

informatycznych. W takiej sytuacji dużego znaczenia nabierają metody analizy zysków i strat, na

podstawie których będzie można dobrać właściwy model cyklu wytwórczego oprogramowania

3

.

Pojawia się też potrzeba jednoczesnej kontroli jakości produktu i procesu produkcji

oprogramowania i bieżącej analizy kosztów i jakości oprogramowania.

Nowa generacja produktów i metod projektowych spowodowała istotne zmiany w procesie

tworzenia oprogramowania. Przykładem mogą być tutaj metody zarządzania ryzykiem, czy

współzależnościami w procesie wytwórczym, użycie języki czwartej generacji (4GL) i czy coraz

bardziej powszechne wykorzystanie generatorów aplikacji. Ważne w tym miejscu są również

kwestie ponownego użycia wcześniejszych osiągnięć innych przedsięwzięć informatycznych.

Kolejną istotną kwestią jest przewidywana struktura rynku informatycznego. Rysunek 1 jest

ilustracją przewidywań rynku informatycznego w najbliższej przyszłości, na których bazuje metoda

Cocomo2. Największy udział w prognozowanym rynku mają programiści końcowi, których liczba

jest szacowana na około 55 mln programistów (w Stanach Zjednoczonych do roku 2005). Dolny

sektor infrastruktury rynku przejmie prawdopodobnie do 0.75 mln osób. Sektor pośredni będzie

można podzielić na trzy równoległe części: opracowywanie generatorów aplikacji i narzędzi

wspomagających tworzenie oprogramowania (ok. 0.6 mln osób), tworzenie systemów przez

łączenie aplikacji (0.7 mln osób) i integrowanie złożonych (w tym wbudowanych) systemów

informatycznych do zadań specjalistycznych (0.7 mln osób).


Programiści i Użytkownicy Końcowi

(55 mln w Stanach Zjednoczonych)

Generatory Aplikacji i

Wspomaganie Wytwarzania

Oprogramowania

(0.6 mln)

Wytwarzanie Aplikacji
dla warstwy pośredniej

(0.7 mln)

Integratorzy Systemów

(0.7 mln)

Infrastruktura informatyczna

(0.75 mln)

Rysunek 1.

Przewidywana struktura rynku informatycznego USA w roku 2005.


3

Zagadnienia doboru cyklu modelu cyklu wytwórczego oprogramowania pozostają poza zakresem opracowania.

background image

COCOMO 2, grudzień 2004

7

Bodźcem do szybkiego rozwoju sektora programistów i użytkowników końcowych jest ciągłe

upowszechnianie wiedzy informatycznej w społeczeństwie, a także fakt, że jedynie firmy stosujące

najlepsze rozwiązania informatyczne pozostaną konkurencyjne na rynku. W takiej sytuacji coraz

większa część rynku informatycznego przypadnie na samych użytkowników, którzy własnoręcznie

będą tworzyć większość potrzebnych im aplikacji np. przy pomocy generatorów aplikacji.

Przykładem pomocnych tu generatorów aplikacji są arkusze kalkulacyjne, podręczne bazy danych

oraz wyspecjalizowane narzędzia zarządzania przedsiębiorstwami. Przy pomocy stosownych opcji,

parametrów i prostych reguł użytkownicy są w stanie wykorzystać generatory aplikacji do

tworzenia narzędzi informatycznych o pożądanych cechach. Praktycznie wszystkie firmy – od

najbogatszych firm do sektora MŚP

4

, a także na przykład instutycje rządowe będą miały swój

udział w tym sektorze rynku informatycznego.

Typowymi przykładami oprogramowania zaliczanego do infrastruktury informatycznej

systemy operacyjne, systemy baz danych, systemy zarządzania interfejsem użytkownika, czy też

systemy sieciowe. Sektor infrastruktury będzie coraz bardziej zaangażowany w tworzenie

rozwiązań dla architektury trójwarstwowej do zadań takich jak przetwarzanie rozproszone i

przetwarzanie transakcyjne. Największymi firmami zajmującymi się infrastrukturą informatyczną

są teraz między innymi: Microsoft, NeXT, Oracle, SyBase, Novell i największe firmy

rozprowadzające sprzęt komputerowy. Należy pamiętać o tym, że programiści i użytkownicy

końcowi będą doskonale zorientowani w tworzeniu potrzebnego im specjalistycznego

oprogramowania, nie będą natomiast mieli szczególnie dobrego pojęcia o komputerach czy

informatyce jako takiej. Z kolei producenci infrastruktury będą specjalistami z zakresu informatyki

i inżynierii komputerowej, nie będą zaś wiedzieć zbyt wiele o programach czysto użytkowych.

Tworzenie infrastruktury informatycznej będzie wymagało od programistów nadążania za nowymi

technologiami komputerowymi (nowe procesory, pamięci, technologie multimedialne i

komunikacyjne) i stąd tylko część modułów oprogramowania będzie mogła być ponownie użyta.

Pozostała część będzie musiała być stworzona od zera.

Sektor generatorów aplikacji będzie źródłem gotowych pakietów umożliwiających

„programowanie końcowe”. Obecnie tą część rynku zajmują firmy takie jak Microsoft, IBM -

Lotus, Novell, Borland (ostatnio mniej widoczny na rynku), a także producenci oprogramowania

menedżerskiego (np. pakiety IBM-Rational), inżynierskiego (np. pakiety IBM-Rational, Oracle),

4

Małe i średnie przedsiębiorstwa

background image

COCOMO 2, grudzień 2004

8

przemysłowego (np. systemy klasy ERP), systemów klasy workflow (np. polski Rodan Systems,

amerykański IBM-Lotus Domino) i systemów analizy finansowej (w Europie wiodący jest

niemiecki SAP). W wielu przypadkach oprogramowanie to będzie tworzone z gotowych (lub nieco

zmodyfikowanych) podzespołów, niemniej zawsze będzie też istniała konieczność budowy

pakietów od podstaw. Wspomaganie wytwarzania oprogramowania będzie rozbudowywane

zarówno przez wyżej wymienione firmy, jak również przez inwestycje rozwojowe w sektorze

narzędzi wspomagających wytwarzanie oprogramowania dla warstwy pośredniej. Sektor ten skupi

się na zadaniach na tyle różnorodnych i specjalistycznych, że nie sposób będzie produkować ich w

postaci wielkonakładowych, gotowych pakietów. Z drugiej zaś strony programy te będą na tyle

proste, że będzie można błyskawicznie stworzyć je z kilku gotowych już podzespołów. Takimi

gotowymi komponentami będą zwykle: generatory Graficznego Interfejsu Użytkownika (GUI)

wraz z doskonałymi generatorami firmy Microsoft czy też firmy Borland, menadżery obiektów i

baz danych, „middleware” do przetwarzania rozproszonego i przetwarzania transakcyjnego,

oprogramowanie multimedialne, hurtownie danych oraz oprogramowanie specjalizowane, np.:

medyczne, finansowe, kontroli produkcji itp.

Integrowanie systemów będzie związane z wielkimi, najczęściej wbudowanymi systemami.

Po części programy te będą mogły powstawać przy wykorzystaniu metod wytwarzania

oprogramowania dla warstwy pośredniej, niemniej ich specyfika spowoduje, że znacząca ilość prac

przypadnie na projektowanie całkowicie nowych systemów i tworzenie oprogramowania

dostosowanego do indywidualnych potrzeb. Przykładami firm obracających się w tym sektorze są

producenci sprzętu lotniczego (np. oprogramowanie sterowania samoloty F22 ma ponad miliard

linii kodu), samochodowego, elektronicznego, firmy telekomunikacyjne i finansowe, a także

przedsiębiorstwa budujące wielkoskalowe systemy informacyjne i kontroli produkcji.

Menedżerowie planujący koszt przedsięwzięć informatycznych oprócz znajomości zasad gry

rynkowej i prognozy rozwoju tego rynku pracują w kolejnych, niezwykle restryktywnych

uwarunkowaniach. Przede wszystkim pracują oni w warunkach ciągłego stresu wynikającego z

zachodzenia zmian w projektach informatycznych.

Na potwierdzenie powyższej tezy można przytoczyć wyniki badania amerykańskiego rynku

informatycznego, w których skoncentrowano się na szacunkach kosztów przedsięwzięć

informatycznych (patrz: Rysunek 2). Z doświadczeń tych wynika jednoznacznie, że dopiero na

etapie eksploatacji systemu informatycznego jesteśmy w stanie prawie idealnie oszacować koszt

przedsięwzięcia informatycnego. Na etapie definicji systemu możemy popełnić nawet 400%-towy

background image

COCOMO 2, grudzień 2004

9

błąd przeszacowania lub niedoszacowania kosztu. Z tego też powodu należy dać możliwość

osobom prowadzącym czynności związane z zarządzaniem budżetem weryfikacji swoich prognoz,

jeżeli chodzi o koszt konkretnego przedsięwzięcia informatycznego. Pozycja wyjściowa do

szacowania kosztu przedsięwzięć informatycznych jest często jeszcze bardziej niekorzystna.

Wynika to z faktu, że bardzo często istnieje konieczność oszacowania kosztu przedsięwzięć

informatycznych jeszcze przez fazą definicji wymagań, co wynika z cyklu planowania budżetu

państwa. Taka procedura może wprowadzać błąd szacowania jeszcze większy niż prognozowane

400%.

Rysunek 2. Typowe niedokładności szacowania kosztu przedsięwzięcia informatycznego w poszczególnych fazach

cyklu wytwórczego.

3. Podział kosztu procesu wytwórczego na poszczególne etapy cyklu życia

oprogramowania

Faza Definicji

Faza

Implementacji

Faza

Projektowania

Faza Analizy

Faza eksploatacji

Koszt

rzeczywisty

2-krotne

przeszacowanie

4-krotne

przeszacowanie

2-krotne

niedoszacowanie

4-krotne

niedoszacowanie

background image

COCOMO 2, grudzień 2004

10

Podział kosztu procesu wytwórczego na poszczególne etapy cyklu życia oprogramowania

zostanie przedstawiony na podstawie wyników badań przeprowadzonych przez firmę Oracle

Corporation. Badania te dotyczyły około 5 tysięcy projektów informatycznych o różnej skali i

wydaje się, że są one wiarygodne i adekwatne również dla polskiego rynku informatycznego.

Tabela 1 stanowi syntezę przeprowadzonych i cytowanych w tym miejscu wyników bada

firmy Oracle Corp. Proces wytwórczy został tutaj podzielony na 6 zasadniczych faz cyklu życia

oprogramowania, tj. na:

1. definicję systemu,

2. analizę systemu,

3. projekt systemu,

4. budowę (implementację) systemu,

5. wdrażanie systemu,

6. eksploatację systemu.

W ramach poszczególnych faz cyklu życia oprogramowania w różnym stopniu realizowane są

poszczególne procesy cyklu wytwórczego oprogramowania. Procesami tymi są:

1. definicja wymagań na system,

2. analiza istniejących systemów,

3. opracowanie architektury technicznej systemu,

4. projekt i budowa bazy danych,

5. projekt i budowa modułów systemu,

6. konwersja danych,

7. utworzenie dokumentacji systemu,

8. testowanie systemu,

9. szkolenie użytkowników,

10. wdrożenie systemu,

11. asysta po wdrożeniu,

12. zarządzanie projektem.

Tabela 1. Procentowy udział kosztu w poszczególnych procesach i fazach cyklu życia

oprogramowania

background image

COCOMO 2, grudzień 2004

11

PROCES

Udzia

ł %

P

roc

es

u

DEFINICJA

ANALIZA

P

R

OJE

K

TOWANIE

BUDOWA

W

DRA

Ż

ANIE

E

K

SPLOA

T

ACJ

A

NAZWA PROCESU

% A B C D E F

Definicja Wymagań

8,5 %

3,9 %

4,6 %

Analiza Istniejących
Systemów

2,6 %

1,0 %

1,6 %

Architektura Techniczna

2,1 %

0,3 %

1,5 %

0,3 %

Projekt i Budowa Bazy
Danych

1,3 %

0,9 %

0,4 %

Projekt i Budowa Modułów

37,3 %

17,5 % 19,8 %

Konwersja Danych

7,3 %

0,4 %

1,2 %

1,8 %

3,2 % 0,7 %

Dokumentacja

4,2 %

0,1 %

0,1 %

2,2 %

1,8 %

Testowanie

16,3 %

0,1 %

1,8 % 13,6 % 0,8 %

Szkolenie

1,9 %

0,3 %

0,4 %

0,6 % 0,6 %

Wdrożenie

0,9 %

0,1 %

0,1 %

0,2 % 0,5 %

Asysta po Wdrożeniu

3,4 %

3,4

%

Zarządzanie Projektem

14,2 %

0,8 %

1,7 %

4,1 %

6,6 % 0,4 % 0,6 %

UDZIAŁ % FAZ

100 % 6,6 % 11,1 % 29,1 % 46,2 %

3 %

4 %

Dokładny podział procentowy poszczególnych składników kosztów został przedstawiony w tabeli

wyżej. Ilustrację procentu udziału poszczególnych faz cyklu życia oprogramowania przedstawia

Rysunek 3, a podział kosztu cyklu wytwórczego - Rysunek 4.

background image

COCOMO 2, grudzień 2004

12

Koszt poszczególnych faz cyklu życia oprogramowania

6,6

11,1

29,1

46,2

3

4

0

5

10

15

20

25

30

35

40

45

50

de

fin

ic

ja

an

al

iz

a

pr

oj

ek

to

w

an

ie

bu

do

w

a

w

dr

an

ie

ek

sp

lo

at

ac

ja

nazwa fazy

%

udz

ia

łu

Rysunek 3.Udział poszczególnych faz cyklu życia oprogramowania w koszcie przedsięwzięcia informatycznego

Podział kosztów w cyklu wytwórczym oprogramowania

8,5

2,6

2,1

1,3

37,3

7,3

4,2

16,3

1,9

0,9

3,4

14,2

0

5

10

15

20

25

30

35

40

De

fin

icj

a W

ym

aga

ń

Anali

za I

st

nie

cy

ch S

ys

tem

ów

Ar

chi

tek

tur

a T

ec

hn

icz

na

Pr

oj

ek

t i

B

udow

a B

az

y

Dany

ch

Pr

oj

ek

t i

B

ud

ow

a M

od

ów

Konw

er

sja

Dany

ch

Do

ku

m

en

ta

cja

Te

sto

wa

ni

e

Sz

ko

leni

e

W

dr

en

ie

As

yst

a p

o W

dro

że

ni

u

Za

rz

ąd

za

ni

e

Pr

oj

ek

te

m

Nazwa procesu

%

udz

ia

łu

Rysunek 4. Podział kosztów na procesy cyklu wytwórczego oprogramowania.

W podsumowaniu analizy udziału kosztów, przedstawiono Rysunek 5, na którym przedstawiono

zależności kosztowe pomiędzy procesem wytwórczym i cykle życia oprogramowania.

background image

COCOMO 2, grudzień 2004

13

Udział procesów cyklu w ytw órczego w fazach cyklu życia

oprogramow ania

0%

10%

20%

30%

40%

50%

60%

70%

80%

90%

100%

de

fin

icja

an

al

iza

pr

oje

kto

wani

e

bud

ow

a

wdr

an

ie

eks

pl

oat

ac

ja

fazy cyklu życia

sk

ła

dow

e pr

oc

es

u w

ytw

ór

cz

eg

o

Definicja Wymagań

Analiza Istniejących Systemów

Architektura Techniczna

Projekt i Budowa Bazy Danych

Projekt i Budowa Modułów

Konwersja Danych

Dokumentacja

Testowanie

Szkolenie

Wdrożenie

Asysta po Wdrożeniu

Zarządzanie Projektem

Rysunek 5. Udział kosztów składowych procesu wytwórczego w poszczególnych fazach cyklu życia oprogramowania

background image

COCOMO 2, grudzień 2004

14

4. COCOMO 2

Metoda COCOMO 2 została opracowana po to, aby umożliwić odpowiednie planowanie

harmonogramu prac, organizowanie zespołów ludzkich, szacowanie czasu zakończenia projektu,

przygotowywanie i przeplanowywanie prac, śledzenie postępów prac, negocjowania kontraktów,

oceny ofert przetargowych, decyzji o zgodzie na warunki kontraktu.

4.1. Cele Cocomo2

Cele metody Cocomo2 są następujące:

• zapewnienie łatwości zrozumienia metody,
• dostosowanie możliwości metody do przewidywanej struktury rynku

informatycznego,

• dostosowanie wartości wejściowych i wyjściowych podmodeli Cocomo2 do

przewidywanej rozległości i różnorodności informacji o przedsięwzięciu

informatycznym,

• umożliwienie uniwersalnego wykorzystania podmodeli Cocomo2 przy różnych

strategiach projektowo-wdrożeniowych.

W Cocomo2 wszystkie algorytmy są w pełni dostępne publicznie. Podobnie wszystkie

interfejsy są zaprojektowane tak, aby były powszechnie zrozumiałe, dokładnie zdefiniowane i

sparametryzowane, dzięki czemu umożliwiają one łatwą implementację pre-szacunków (modele

szacowania wielkości projektów) i post-szcunków (narzędzia planowania i kontroli procesu

produkcji, analizy poziomów ryzyka) wynikających z kolejnych algorytmów metody Cocomo2.

4.2. Modele Cocomo2

Model Cocomo2 opisujący sektor wytwarzania aplikacji dla warstwy pośredniej bazuje na

metodzie Analizy Punktów Obiektowych. Punkty Obiektowe są zliczane na podstawie liczby

modułów napisanych w językach trzeciej generacji oraz ilości ekranów i raportów stworzonych na

potrzeby danej aplikacji. Każdy z nicj jest ważony współczynnikiem poziomu trudności (łatwy,

średni, trudny) [Banker 1994, Kauffman i Kumar 1993]. Takie podejście dobrze odzwierciedla

ilość informacji na temat komponowanej aplikacji dostępnej zwykle na wstępnym etapie prac.

Zapewnia ono dokładność wystarczającą do adekwatnego oszacowania kosztów (projekty w tym

background image

COCOMO 2, grudzień 2004

15

sektorze tworzone są zwykle przez kilkuosobowe grupy programistów w czasie kilku tygodni,

miesięcy).

Szacowanie złożoności generatorów aplikacji, integracji systemów i kosztu infrastruktury

opiera się w metodzie Cocomo2 na uniwersalnym połączeniu modelu dla komponowania aplikacji i

dwóch modeli szacunkowych o wzrastającej dokładności – opracowanych dla kolejnych etapów

cyklu życia oprogramowania.

4.3. Charakterystyka modeli Cocomo2


Uzasadnienie dla uniwersalnego zestawu modeli Cocomo2 bazuje się na trzech

wymienionych niżej przesłankach:

Pierwsza: Inaczej niż w późnych latach siedemdziesiątych, kiedy powszechnie

preferowano tylko jeden model cyklu życia oprogramowania (tzw. model

kaskadowy), obecnie stosuje się różne modele procesów produkcyjnych,

dostosowane do konkretnych sytuacji. O wyborze właściwej metody decydują

teraz: możliwość wykorzystania COTS (gotowych pakietów),

użycie/dostosowanie istniejącego kodu, poziom znajomości wymagań

i architektury projektowanego systemu, ograniczenia dla harmonogramu prac,

wielkość programu, wymagana niezawodność.

Druga:

Możliwy błąd oszacowania kosztów (patrz: Rysunek 2) w danej metodzie musi

być zgodny z poziomem szczegółowości informacji dostępnych na każdym

etapie produkcji. We wczesnych stadiach programu mamy najczęściej niewiele

wiadomości o wielkości programu, docelowej platformie, ilości i jakości

personelu zaangażowanego w tworzenie oprogramowania, czy o szczegółach

stosowanego procesu tworzenia oprogramowania.

Trzecia: Z powyższego wynika, że Cocomo2 umożliwia wykorzystanie zgrubnych

informacji we wczesnych fazach projektowych, a jednocześnie pozwala na

doszlifowanie szacunków wraz z napływem dokładniejszych danych

z postępujących prac. Cocomo2 nie daje więc punktowych szacunków kosztów

i rozmiarów oprogramowania, a raczej przedziały możliwych wartości –

właściwie dla ilości dostępnych danych. Za podstawę do wyznaczania tych

background image

COCOMO 2, grudzień 2004

16

przedziałów szacunkowych przyjęto przedziały niepewności i niepełności

wiedzy, który ilustrację stanowi Rysunek 2.

W dalszych rozważaniach przypadki generatorów aplikacji, integracji systemów

i infrastruktury informatycznej będą rozważane przy pomocy zestawu trzech modeli procesów.

Właściwe połączenie tych modeli będzie zależało od czynników rynkowych oraz od stopnia

zrozumienia projektu. Poniżej zamieszczono krótki opis tych trzech modeli.

Model komponowania aplikacji umożliwia opis kosztów prace prototypowych mających

na celu rozpoznanie zagadnień o potencjalnie zwiększonym ryzyku, takich jak interfejs

użytkownika, interakcja oprogramowanie-system, wydajność, dojrzałość technologii.

Model wczesnych faz projektu dotyczy rozpoznawania różnych alternatyw architektury

systemu informatycznego i wypracowywania koncepcji jego działania. W takim stadium na ogół

niewiele jeszcze wiadomo i nie sposób przeprowadzać dokładne szacowania kosztów. Możliwości

Ccocomo2 w tym zakresie obejmują zastosowanie punktów funkcyjnych i kilku dodatkowych

metod opisu źródeł kosztów (cost drivers).

Model późnych faz projektu obejmuje właściwe prace nad budową i pielęgnowaniem

oprogramowania. Model ten jest adekwatny do sytuacji, w których architektura systemu jest już

zaprojektowana i zatwierdzona jako podstawa do dalszych prac produkcyjnych. Ten model

w metodzie Cocomo2 obejmuje metryki linii kodu i/lub punkty funkcyjne z uwzględnieniem

wykorzystania kodu już istniejącego. Zdefiniowano tutaj zestaw 17-stu współczynników źródeł

kosztów oraz 5-ciu czynników wyznaczających wykładnik skali projektu.

Podsumowując, metoda Cocomo2 zawiera następujące 3 szczeble umożliwiające

szacowanie złożoności systemów w sektorach generatorów aplikacji, integracji systemów i

infrastruktury informatycznej:

1. Początkowe stadia spiralnego cyklu tworzenia oprogramowania generalnie nie

obejdą się bez tworzenia prototypów w wykorzystaniem narzędzi Komponowania

Aplikacji. Prace takie, a także dalsze prototypowanie w późniejszych fazach

produkcji są uwzględnione w Cocomo2 w modelu komponowania aplikacji.

2. W następnych stadiach rozważane są zwykle różne alternatywy architektury

systemu, a także strategie etapowej budowy produktu. Cocomo2 wspiera te stadia

modelem wczesnego szacowania, który stosuje punkty funkcyjne do oceny kosztu

projektu i 5-ciu zgrubnych wyznaczników źródeł kosztów (np. 2 współczynniki

background image

COCOMO 2, grudzień 2004

17

opisujące wykwalifikowanie personelu, jego umiejętności, doświadczenie itp.). Jak

wspomniano wcześniej, dokładność szacunków jest tu zależna od ilości informacji

dostępnej na tym etapie.

3. Gdy zakończą się prace czysto projektowe, przyszły produkt ma już stabilnie

nakreśloną architekturę. Dostępne są wtedy znacznie bogatsze dane na temat

przyszłych źródeł kosztów i można znacznie dokładniej szacować wymogi czasowe,

robocze czy finansowe. Ten etap rozwoju jest opisany w C2 przy pomocy modelu

punktów funkcyjnych lub źródłowych LOC i 17-tu współczynników źródeł kosztów.

Metoda Cocomo2 stanowi kolejną wersję pierwotnej metody Cocomo z lat 70-tych i jej

następczyni zwanej Ada Cocomo. Tabela 2 stanowi syntetyczne porównanie tych metod

5

.

Tabela 2. Porównanie Cocomo, Ada Cocomo i Cocomo2

Cocomo

Ada Cocomo

Cocomo2:

Etap 1

Cocomo2:

Etap 2

Cocomo2:

Etap 3

Rozmiar (R)

(Dostarczone)
Instrukcje
Źródłowe (DSI)
lub Źródłowe
LOC (SLOC)

DSI lub SLOC

Punkty Obiektowe Punkty Funkcyjne

(FP) i Język
Programowania

FP i Język
Programowania
lub SLOC

Użycie kodu
istniejącego

Równoważne
SLOC = liniowa
funkcja
f(DM,CM,IM)

Równoważne
SLOC = liniowa
funkcja
f(DM,CM,IM)

domyślne w tym
modelu

Błędne
zatrzymania

wartość RVOL

wartość RVOL

domyślne w tym
modelu

%błędnych zatrzy-
mań: BRAK

BRAK

Pielęgnacja Roczny

Poziom

Zmian (ACT) =
%dodany +
%zmieniony

ACT Model

Ponownego

Użycia Punktów
Obiektowych

Model Ponownego
Użycia

Model Ponownego
Użycia

Skalowanie
(wartość b) w
MM

NOM

= a(R)

b

Organiczne: 1.05
Wpółodcięty: 1.12
Wbudowany: 1.20

Wbudowany: 1.04
– 1.24 zależnie od:

• poziomu

wczesnej
eliminacji ryzyka

• solidności

architektury

• stabilności

wymagań

• dojrzałości

procesu
produkcji

1.0

1.01 – 1.26
zależnie od:

• oryginalności

• wygody

użytkowania

• stabilności

wymagań

• zgrania zaspołu

• dojrzałości

procesu
produkcji (SEI)

Źródła kosztów
wynikające z cech

RELY, DATA,
CPLX

RELY*, DATA*,
CPLX*, RUSE

brak RCPX*+,

RUSE*+

RELY, DATA,
DOCU*+,

5

W tabeli tej użyto wielu skrótów sklasyfikowanych w wykazie skrótów zamieszczonych w zakończeniu ekspertyzy.

background image

COCOMO 2, grudzień 2004

18

Cocomo

Ada Cocomo

Cocomo2:

Etap 1

Cocomo2:

Etap 2

Cocomo2:

Etap 3

produktu

CPLX+, RUSE*+

Źródła kosztów
wynikające z cech
platformy

TIME, STOR,
VIRT, TURN

TIME, STOR,
VMVH, VMVT,
TURN

brak Złożoność

platformy:
PDIF*+

TIME, STOR,
PVOL (=VIRT)

Źródła kosztów
wynikające z cech
personelu

ACAP, AEXP,
PCAP, VEXP,
LEXP

ACAP*, AEXP,
PCAP*, VEXP,
LEXP*

brak kwalifikacje

personelu i
doświadczenie:
PERS*+, PREX*+

ACAP*, AEXP+,
PCAP*, PEXP*+,
LTEX*+,
PCON*+

Źródła kosztów
wynikające z
praktyk
produkcyjnych

MODP, TOOL,
SCED

MODP*, TOOL*,
SECD, SECU

brak

SCED, FCIL*+

TOOL*+, SCED,
SITE*+

* odmienny

mnożnik

+ odmienna skala ocen


4.4. Czynniki wpływające na koszt: Rozmiar

W tej części przedstawione będą definicje i uzasadnienia dla trzech wielkości w Cocomo2

użytych do opisu rozmiaru produktu: punktów obiektowych, nieznormalizowanych punktów

funkcyjnych i źródłowych LOC. Następnie opisane będą parametry, które w szacunkach rozmiaru

uwzględniają użycie gotowego kodu, przeprojektowywanie istniejącego systemu, dostosowywanie

i pielęgnację oprogramowania.

4.4.1. Komponowanie Aplikacji: Punkty Obiektowe

Punkty obiektowe są nowością wśród metryk wielkości oprogramowania, niemniej bardzo

dobrze nadają się do opisu sytuacji spotykanych w obszarze Komponowania Aplikacji. Oddają one

koszty prac prototypowych przy błyskawicznym komponowaniu aplikacji przy pomocy narzędzi

typu ICASE (Integrated Computer Aided Software Environment), zawierających kreatory

graficznego interfejsu użytkownika, narzędzia tworzenia oprogramowania i pokaźne biblioteki

gotowych komponentów aplikacji. W tych obszarach punkty obiektowe zostały wykorzystane na

pokaźnym, choć nadal mocno ograniczonym zbiorze aplikacji i okazały się metryką nie gorszą od

punktów funkcyjnych.

Opracowanie porównujące szacunki oparte na punktach funkcyjnych z analogicznymi

opartymi na punktach obiektowych [Banker et al. 1994] przeanalizowało 19 różnych przykładów

oprogramowania inwestycyjno-bankowego, stworzonego przy użyciu ICASE i o wymaganym

nakładzie pracy od 4.7 do 71.9 roboczo-miesięcy. W wyniku badań okazało się, że wyniki metody

background image

COCOMO 2, grudzień 2004

19

punktów obiektowych mieściły się w 73% zaś wyniki metody punktów funkcyjnych w 76%

w takim samym przedziale ufności przyjętym dla przeprowadzonych badań.

Następnie przeprowadzono eksperyment w sposób umożliwiający przeprowadzenie

analizy statystycznej [Kaufman i Kumar 1993], w którym czterech doświadczonych menedżerów

projektu szacowało przy pomocy Punktów Funkcyjnych i Punktów Obiektowych koszt prac

wymaganych do wykonania dwóch zakończonych już programów (stworzenie pierwszego zajęło

3.5 roboczo-miesięcy, drugiego – 6 r-mcy). W wyniku eksperymentu okazało się, że wyniki

szacunków Punktami Obiektowymi i Punktami Funkcyjnymi były tak samo dokładne (P.O.

uzyskały minimalnie większą dokładność, ale mniejszą niż wyniósł margines błędu eksperymentu).

Z kolei czas potrzebny na opracowanie szacunków metodą Punktów Obiektowych wyniósł około

47% (ponad 2 razy mniej) czasu potrzebnego przy Punktach Funkcyjnych. Wszyscy uczestnicy

eksperymentu uznali też, że metoda Punktów Obiektowych była prostsza w użyciu.

Powyższe wyniki nie były jeszcze potwierdzone w szerszych badaniach, niemniej w

zakresie Komponowania Aplikacji wydają się być dostatecznie obiecujące, aby uzasadnić wybór

metryki Punktów Obiektowych jako podstawowego modelu szacunkowego Komponowania

Aplikacji w metodzie Cocomo2.

4.4.1.1. Procedura szacowania kosztu metodą Punktów Obiektowych wykorzystana w

Cocomo2

Rysunek 6 przedstawia szkielet procedury szacowania kosztu prac metodą Punktów

Obiektowych, stosowaną dla komponowania aplikacji i prac prototypowych. Jest to syntetyczny

skrót metody opisanej w dodatku B3 w [Kaufman i Kumar 1993] i opisów produktywności z grupy

19-stu metryk z [Banker et al. 1994].

Wartości produktywności opracowano na podstawie danych z 2 kolejnych lat prac nad

różnym oprogramowaniem [Banker et al. 1994]. Podczas pierwszego roku narzędzie CASE nie

było jeszcze w pełni gotowe, a jego użytkownicy dopiero uczyli się zasad jego obsługi. W takiej

sytuacji średnią produktywność (wynoszącą 7 NOP/roboczo-miesiąc) w 12 cyklach produkcyjnych

podczas tego pierwszego roku uznano (na skali ocen „dojrzałość i wydajność ICASE

i pracowników) za niską. Z kolei w pracach nad siedmioma innymi programami podczas kolejnego

roku wydajność tak ICASE jak i personelu była zdecydowanie wyższa. Osiągnięty wtedy poziom

25 NOP/roboczo-miesiąc uznano (na w/w skali) za wysoki.

background image

COCOMO 2, grudzień 2004

20

Rysunek 6. Szkielet procedury zliczania punktów obiektowych

Znaczenie pojęć użytych w rysunku wyżej:

• NOP: Nowe Punkty Obiektowe (liczba P.O. uwzględniająca zastosowanie

gotowego kodu ponownie użytego)

• srvr: ilość tabel danych serverów (mainframe lub równoważne) użytych w

połączeniu ze SCREEN i REPORT

• clnt: ilość tabel danych „klientów” („osobiste” stacje robocze {personal

workstation}) użytych w połączeniu ze SCREEN i REPORT

Krok 1: Zliczenie obiektów: oszacować liczbę ekranów, raportów i komponentów w 3GL (ew. 4GL)

wchodzących w skład aplikacji. Założyć, że w środowisku ICASE będą one zdefiniowane
standardowo.

Krok 2: Zakwalifikować każdy z tych obiektów jako łatwy, średnio trudny lub trudny, w zależności od

wielkości opisujących ten obiekt – zgodnie z poniższą tabelą:

Dla ekranów

Dla raportów

ilość i źródła tabel danych

ilość i źródła tabel danych

Ilość

Widoków

łącznie < 4
(<2 srvr
<3 clnt)

łącznie < 8
(2/3 srvr
3-5 clnt)

łącznie < 4
(>3 srvr
>5 clnt)

Ilość

części

łącznie < 4
(<2 srvr
<3 clnt)

łącznie < 4
(<2 srvr
<3 clnt)

łącznie < 4
(<2 srvr
<3 clnt)

<3

łatwy

łatwy

średni

0 lub 1

łatwy

łatwy

średni

3 do 7

łatwy

średni

trudny

2 lub 3

łatwy

średni trudny

8 i więcej

średni

trudny

trydny

4 i więcej

średni trudny trydny


Krok 3: Wyznaczyć wagę każdego obiektu przy pomocy prostego schematu podanego poniżej. Owa waga

opisuje właściwy nakład pracy niezbędny do stworzenia takiego obiektu.

Waga obiektu

Rodzaj Obiektu

Łatwy

Średni Trudny

Ekran 1

2

3

Raport 2

5

8

Komponent w 3GL (4GL)

10


Krok 4: Wyznaczyć ilość Punktów Obiektowych: dodać wagi wszystkich obiektów w aplikacji.
Krok 5: Oszacować procentową ilość kodu ponownie użytego, (współczynnik „reuse”). Wyznaczyć Nowe

Punkty Obiektowe, NOP = (Punkty Obiektowe) (100-%reuse)/100.

Krok 6: Wyznaczyć produktywność PROD (w NOP/roboczo-miesiąc) na podstawie tabeli:

Doświadczenie i wydajność
programistów

B. Niska

Niska

Przeciętna Wysoka B.

Wysoka

dojrzałość i wydajność ICASE

B. Niska

Niska

Przeciętna Wysoka B.

Wysoka

PROD

4 7 13 25 50


Krok 7: Obliczyć liczbę roboczo-miesięcy wg. wzoru: r-m = NOP / PROD.

background image

COCOMO 2, grudzień 2004

21

• %reuse: procent gotowych ekranów, raportów lub modułów napisanych w 3GL

(4GL) uzyskanych z wcześniej stworzonych aplikacji, z uwzględnieniem

„wprowadzania ewentualnych modyfikacji” (degree of reuse).

Odnotujmy tu jeszcze jedną uwagę: używane tu pojęcia „obiekt” i „punkty obiektowe”

rozumie się w ten sposób, że obiektami są ekrany, raporty i moduły w 3GL (4GL). Może, ale nie

musi mieć to żadnego związku z takimi własnościami „obiektów” (w językach programowania) jak

dziedziczenie, enkapsulacja, przesyłanie komunikatów. Analizą takich obiektów, zdefiniowanych

np. w programie napisanym w C++, zajmiemy się w części następnej przy „źródłowych LOC”.

4.4.2. Rozwój Aplikacji

Jak już wspomniano w metrykach projektu wstępnego i późnych faz projektu w metodzie

Cocomo2 pomiar wielkości programu odbywa się przy pomocy Punktów Funkcyjnych

i Źródłowych LOC. Nieodzowne jest ujednolicenie reguł zliczania Punktów Funkcyjnych

i Źródłowych LOC, tak aby możliwe było porównywanie szacunków dokonywanych w całej

metodzie Cocomo2.

Metoda Cocomo2 przejęła reguły zliczania P.F. i Ź.LOC dość powszechnie zaakceptowane

w środowisku informatycznym. Metryki Źródłowych LOC opracowano na podstawie listy-definicji

Instytutu Inżynierii Oprogramowania (SEI) [Park 1992]. Metryki Punktów Funkcyjnych

zaczerpnięto zaś z wytycznych Międzynarodowej Grupy Użytkowników Punktów Funkcyjnych

[IFPUG 1994] [Behrens 1983] [Kunkler 1985].

4.4.2.1.Reguły zliczania Linii Kodu

W Cocomo2 za standardową linię kodu uważa się określone wyrażenie logiczne. Różnice

w strukturze poleceń i deklaracji w różnych językach utrudniają jednoznaczną definicję Linii Kodu

(LOC). Użycie miary LOC ma na celu ocenę ilości pracy intelektualnej, potrzebnej do stworzenia

danego programu. Trudno jest jednak ustalić taką definicję Linii Kodu aby była ona jednolita dla

wielu różnych języków programowania. Na przeciw tym trudnościom wychodzi opracowana przez

SEI lista kryteriów dla źródłowych operacji logicznych – definiujących LOC. Więcej o owej liście,

a także o podobnych opracowaniach SEI można znaleźć w [Park 1992, Goethert et al. 1992].

background image

COCOMO 2, grudzień 2004

22

Jednostka miary: Linie Kodu
Wyrażenia Logiczne

Rodzaj wyrażenia Definicja

ν

Tabela Danych

Włączyć Wyłączyć

Jeśli linia kodu lub wyrażenie zawiera więcej niż jeden typ wyrażenia –

klasyfikuj jako ten o najwyższym priorytecie

1

ν


2

ν

3

ν


4

ν

5

ν

6

ν

7

ν

8

ν

1. Uruchamialne kolejność priorytetowa

2. Nieuruchamialne
3. Deklaracje
4. Dyrektywy kompilatora
5. Komentarze
6. Samodzielne w wierszu
7. W jednej linii z kodem
8. Transparenty i rozdzielacze (banners and spacers)
9. Puste komentarze
10. Puste linie
11.

Sposób realizacji Definicja

ν

Tabela Danych

Włączyć Wyłączyć

ν

ν

ν

ν

ν

ν

1. Zaimplementowana ręcznie
2. Stworzona przez generator kodu
3. Przetłumaczona przy pomocy zautomatyzowanego narzędzia
4. Skopiowana i użyta ponownie bez zmian
5. Zmodyfikowana
6. Usunięta
7.

Źródło Definicja

ν

Tabela Danych

Włączyć Wyłączyć

ν

ν

ν

ν

ν

ν

ν

ν

ν

ν

ν

1. Nowy projekt
2. Prowadzono już wcześniejsze prace: projekt bazuje na
3. Poprzedniej wersji
4. Gotowych, nabytych pakietach (z wyjątkiem bibliotek)
5. Oprogramowaniu na zamówienia (z wyjątkiem bibliotek)
6. Innym, wcześniej wykonanym programie
7. Bibliotece dostarczonej z językiem programowania (bez modyfikacji)
8. Elementach nabytego systemu operacyjnego lub programu użytkowego (j.w.)
9. Zmodyfikowanych bibliotekach języka lub elementach systemu operacyjnego
10. Innych bibliotekach dostępnych na rynku
11. Bibliotekach zaprojektowanych jako oprogramowanie do ponownego użytku
12. Innych komponentach, bibliotekach
13.

Rysunek 7

.

Lista-Definicja do Naliczania LOC


Rysunek 7 przedstawia część w/w listy-definicji w formie, w jakiej włącza się ją do

metody Cocomo2. Każdy check-mark w kolumnie Włączyć oznacza rodzaj wyrażenia lub jego

przymiot, który jest włączany do zliczanych LOC (i odwrotnie w kolumnie Wyłącz). Nie zostały

pokazane na rysunku wyżej części definicji opisujące parametry użycia, funkcjonalności, replikacji

i statusu rozwojowego. W definicji znajdują się też dodatkowe wskazówki dla specyficznych

background image

COCOMO 2, grudzień 2004

23

wyrażeń z różnych języków programowania (Ada, C, C++, CMS-2, COBOL, FORTRAN, JOVIAL

i Pascal).

Definicja LOC w Cocomo2 odbiega nieco od tej opisanej w [Park 1992]. Główną różnicą

jest pominięcie tych kategorii oprogramowania, które w ramach prac implementacyjnych nie

wymagają dużych nakładów pracy. Z definicji usunięto więc gotowe pakiety zakupione na rynku,

oprogramowanie wykonane na zamówienie, gotowe biblioteki (dostępne w ramach języków

programowania, systemów operacyjnych itp.) Kod wygenerowany automatycznie nie jest wliczany

do miary LOC, niemniej dla pełniejszej analizy ilościowej pomiary wielkości oprogramowania będą

się odbywać zarówno z uwzględnieniem jak i z wyłączeniem kodu wygenerowanego

automatycznie.

„Linie Kodu wg. Cocomo2” zliczane są automatycznie przy pomocy narzędzia Amadeus

umożliwiającego obliczanie wartości metryk [Amadeus 1994] [Selby et al. 1991]. Narzędzie to

zapewnia jednolite i konsekwentne pozyskiwanie danych do późniejszej analizy w ramach projektu

Cocomo2. Autorzy niniejszego artykułu stworzyli zestaw wzorców dla Amadeus’a zgodnych z

definicjami zawartymi w Cocomo2. Stosowanie tych pakietów przez wszystkie organizacje

rozwijające Cocomo2 umożliwi sprawniejszą i bardziej jednolitą kolekcję danych liczbowych.

Amadeus umożliwia automatyczne zliczanie następujących metryk: całkowita ilość linii

kodu, komentarze, wyrażenia wykonywalne, deklaracje, interfejsy komponentów, zagnieżdżenia

i inne. Narzędzie to dostarcza bogaty wachlarz metryk, w tym metryki obiektowe opisane w

[Chidamber i Kemerer 1994]. Definicja metryk liczbowych w Cocomo2 będzie dalej

dostosowywana wraz z rozwojem próbki statystycznej pozyskanych wartości metryk z grupy LOC.



4.4.2.2.Reguły naliczania Punktów Funkcyjnych

Szacowanie kosztów oprogramowania przy pomocy punktów funkcyjnych opiera się na

mierze funkcjonalności (ilości i trudności zadań jakie program ma wykonać) i kilku czynnikach

ustalonych dla danego programu [Behrens 1983] [Kunkler 1985] [IFPUG 1994]. Punkty funkcyjne

są szczególnie przydatne z tej racji, że ich kalkulacja opiera się na informacjach dostępnych we

wczesnych fazach prac projektowych. Poniżej przedstawiono krótki opis zastosowania i naliczania

punktów funkcyjnych w metodzie Cocomo2.

background image

COCOMO 2, grudzień 2004

24

Tabela 3. Typy Funkcji Użytkowych w FPA

Wejście Zewnętrzne (Wejścia) Policzyć wszystkie typy różnych danych lub decyzji wprowadzanych

przez użytkownika, które (i) przekraczają zewnętrzną granicę badanego
systemu informatycznego i (ii) powodują zmianę w danych w
wewnętrznych plikach logicznych.

Wyjście Zewnętrzne (Wyjścia) Policzyć wszystkie typy danych, które opuszczają zewnętrzne granice

mierzonego oprogramowania.

Wewnętrzny Plik Logiczny (Pliki)

Policzyć wszystkie główne logiczne grupy informacji na temat danych
lub decyzji wprowadzonych przez użytkownika. Dotyczy to wszystkich
plików logicznych (czyli wszystkich logicznych grup danych)
tworzonych, używanych i zachowywanych przez system.

Plik Zewnętrznego Interfejsu (Interfejsy)

Do Plików Zewnętrznego Interfejsu zaliczyć wszystkie pliki używane
wspólnie przez różne systemy informatyczne (lub przekazywane między
systemami).

Zewnętrzne Zapytanie (Pytania)

Policzyć wszystkie kombinacje wejście-wyjście w których jakaś dana
wejściowa powoduje natychmiastowe wygenerowanie danych
wyjściowych.

Punkty funkcyjne opisują funkcjonalność programu poprzez miarę przetwarzanych

informacji z zewnętrznych źródeł danych i przekazywanych na wyjście (ekran, pliki). Przy metryce

punktów funkcyjnych używa się pięciu typów funkcji użytkowych – opisanych powyżej.

Dla wszystkich elementów programu z pięciu typów funkcji użytkowych wyznaczane są

ich poziomy trudności (wagi), które następnie dodane do siebie dają sumę nieznormalizowanych

Punktów Funkcyjnych. Zazwyczaj następnym krokiem procedury naliczania Punktów Funkcyjnych

jest oszacowanie poziomu, w jakim 14-cie różnych czynników ma wpływ na tworzony program.

Wartości każdego z tych czynników wahają się od 0.0 do 0.65 i po dodaniu ich wszystkich (i

ewentualnym powiększeniu tej sumy tak, aby była nie mniejsza niż 0.65) dają współczynnik

poprawki z przedziału od 0.65 do 1.35.

Każdy z tych 14 czynników uwzględniających funkcje rozproszone, wydajność, użycie

gotowego kodu i inne, mógł mieć do 5% przyczynku do całości szacowanego nakładu prac.

Doświadczenia metody Cocomo zanegowały poprawność takiego modelu. W związku z tym w

Cocomo2 do szacowania wielkości używa się wyłącznie nieznormalizowanych Punktów

Funkcyjnych, które następnie mnoży się przez współczynniki wykorzystania gotowego kodu,

współczynniki źródeł kosztów i wykładnicze mnożniki skali. Rysunek 8 ukazuje procedurę

naliczania nieznormalizowanych punktów funkcyjnych w metodzie Cocomo2.

background image

COCOMO 2, grudzień 2004

25

Rysunek 8. Procedura naliczania punktów funkcyjnych


4.4.3. Ponowne Użycie istniejącego kodu i Reinżynieria


4.4.3.1.Nieliniowe Koszty Ponownego Użycia istniejącego kodu

Podejście do reinżynierii i używania kodu istniejącego w metodzie Cocomo2 jest w sposób

istotny odmienne od reguł w jej poprzednikach. Nowinką w Cocomo2 jest to, że w tym przypadku

stosuje model nieliniowy. W pierwotnej metodzie Cocomo koszt stosowania istniejącego

oprogramowania był praktycznie liniową funkcją ilości zmian, jakie należy w nim wprowadzić.

Wymagało to oszacowania rozmiaru dopasowywanego oprogramowania, ASLOC i trzech

parametrów wielkości zmian: DM (% zmian projektowych), CM (% wymiany kodu) i IM (koszt

złożenia zmodyfikowanego kodu w całość, jako % wartości pierwotnych nakładów integracji

systemu).

Krok 1: Zliczyć punkty funkcyjne według typów funkcji. Opracowane na podstawie danych o wymaganiach i

projekcie oprogramowania, przez wiodącego członka zespołu projektowego. Każdy z pięciu typów funkcji
użytkowych (Wewnętrzny Plik Logiczny* (ILF), Plik Zewnętrznego Interfejsu (EIF), Wejście Zewnętrzne
(EI), Wyjście Zewnętrzne (EO) Zewnętrzne Zapytanie (EQ)) musi być znany.

Krok 2: Wyznaczyć poziomy trudności tych elementów. Poziom trudności może mieć wartości: Niski, Średni lub

Wysoki, zależnie od liczby zawartych typów danych i liczby plików różnych typów weń użytych. Do
oceny stosuje się następujące kryteria:

Dla ILF i EIF

Dla EO i EQ

Dla EI

Elementy Danych

Elementy Danych

Elementy Danych

Elementy

rekordu

1-19 20-50 >50

Typy

plików

1-5 6-19 >19

Typy

plików

1-4 5-15 >15

1 N N Ś

0 lub 1

N

N

Ś 0

lub

1 N N Ś

2-5 N Ś W 2-3 N Ś W 2-3 N Ś W

>5

Ś W W >3 Ś W W >3 Ś W W


Krok 3: Wyznaczyć wagę każdego elementu przy pomocy prostego schematu niżej:

Trudność - Waga

Typy

Funkcji

Niska

Średnia Wysoka

ILF 7

10

15

EIF 5

7

10

EI 3

4

6

EO 4

5

7

EQ 3

4

6


Krok 4: Wyznaczyć ilość nieznormalizowanych Punktów Funkcyjnych: dodać wagi wszystkich elementów w

programie.


____________
*

Uwaga: słowo plik oznacza tu grupę powiązanych za sobą danych, a nie fizyczną implementację takiej grupy.

background image

COCOMO 2, grudzień 2004

26

Oto formuła, według której Cocomo obliczał ekwiwalent ilości nowego kodu w sensie

rozmiaru używanego ponownie oprogramowania istniejącego:

100

)

3

.

0

3

.

0

4

.

0

(

IM

CM

DM

ASLOC

ESLOC

×

+

×

+

×

×

=

( 1 )

Jak widać oprogramowanie użyte bez zmian spowoduje zerowy wzrost nakładów

(kosztów). W przeciwnym razie wzrost szacowanej wielkości programu będzie liniową funkcją

DM, CM i IM. Okazuje się jednak, jak udowadnia analiza kosztów wdrażania istniejącego

oprogramowania w [Selby 1988] opracowana na podstawie doświadczeń Laboratorium Inżynierii

Oprogramowania NASA z prawie 3000 ponownie użytych modułów oprogramowania, że koszty

ponownego użycia oprogramowania odbiegają od modelu liniowego w dwojaki sposób:

• funkcja kosztów nie przebiega przez początek układu współrzędnych. Na ogół

mniej-więcej 5cio procentowy koszt przypada na samo przejrzenie, wybranie i

zrozumienie przydatnych komponentów.

• nieznaczne zmiany pociągają za sobą nieproporcjonalnie duże koszty.

Spowodowane jest to głównie potrzebą wcześniejszego dobrego zrozumienia

istniejącego oprogramowania oraz względnym kosztem sprawdzenia interfejsów.

Model dostosowywania istniejącego oprogramowania użyty w Cocomo2 uwzględnia te

nieliniowości.

4.4.3.2.Model Dostosowywania istniejącego kodu użyty w Cocomo2

Według [Parikh i Zvegintzov 1983] aż 47% kosztów pielęgnacji istniejącego

oprogramowania przypada na poznawanie i przyswajanie oprogramowania poddawanego

modyfikacjom. W takiej sytuacji przejście z używania kodu bez zmian (black-box) na kod

dostosowywany do potrzeb istniejącego oprogramowania (white-box) pociąga za sobą skokowy

wzrost kosztów. Ponadto konieczność ponownego przetestowania interfejsów międzymodułowych

pociąga za sobą dodatkowe nakłady pracy. W [Gerlich i Denskat 1994] pokazano, że zmiany w k z

m modułów wymagają wykonania N testów, gdzie N = k*(m-k) + k*(k-1)/2.

Rysunek 9 pokazuje zależność między ilością zmodyfikowanych modułów k i liczbą

testów potrzebnych do sprawdzenia poprawnego działania interfejsów. Kształt krzywej będzie też

podobny dla innych wartości parametru m (całkowita liczba modułów). Widać więc, ze nakłady

background image

COCOMO 2, grudzień 2004

27

prac podczas projektowania, tworzenia, integrowania i testowania zmodyfikowanego kodu nie są

liniową funkcją ilości dokonanych zmian.


Rysunek 9. Nieliniowe koszty dostosowywania istniejącego oprogramowania

Rysunek 10. Liczba testów interfejsów między-modułowych jako funkcja ilości zmian

Koszty przyswajania i testowania oprogramowania można ograniczać poprzez tworzenie

kodu o właściwej strukturze. Pisanie oprogramowania o strukturze modularnej i hierarchicznej

może ograniczyć ilość niezbędnych testów interfejsów [Gerlich i Denskat 1994], a w dodatku taka

budowa systemu informatycznego powinna ułatwiać jego szybsze przyswajanie. Prawdy te są

odzwierciedlone w Cocomo2 w szacunkach nakładu pracy przy wykorzystywaniu istniejącego

background image

COCOMO 2, grudzień 2004

28

oprogramowania. Zmodyfikowana formuła obliczania zależności liczby linii nowego kodu i

rozmiaru ponownie użytego oprogramowania jest następująca:

100

)

3

.

0

3

.

0

4

.

0

(

IM

CM

DM

SU

AA

ASLOC

ESLOC

×

+

×

+

×

+

+

×

=

( 2 )

Wartość SU – nakładu pracy na przyswajanie oprogramowania – otrzymuje się z tabeli 4.

Wyznaczane tam wartości SU mogą się wahać od 10% przyrostu pracy dla oprogramowania

napisanego w sposób przejrzysty, intuicyjny, o dobrej strukturze i ze stosowną liczbą komentarzy,

do 50% dla kodu trudno przyswajalnego.

Drugi zaś nowy współczynnik we wzorze (2), tj. AA (Oceny i włączania) – symbolizuje

prace konieczne do sporządzenia oceny przydatności istniejącego oprogramowania w tworzeniu

nowej aplikacji, oraz do włączenia dokumentacji tego oprogramowania do całości dokumentacji

programu. Tabela 4. podaje wartości parametru AA w zależności od sytuacji. W ocenie kosztów

przeróbek oprogramowania czynnik AA stanowi rozwinięcie opisanego w [Boehm 1981, str. 558]

tzw. Współczynnika Planowania Zmian.


Tabela 4. Wartości wskaźnika Zrozumiałości Oprogramowania (SU) w zależności od jakości kodu

Bardzo niska

Niska

Przeciętna

Wysoka

B. wysoka

Ustruktu-
ralnienie

Bardzo słabe
pogrupowanie
kodu, wysoki
„coupling”,
poplątany kod.

słabe
pogrupowanie,
wysoki
„coupling”
(sprzężenie)

dość dobra
struktura, ale z
kilkoma słabymi
punktami

dobre
pogrupowanie,
niski „coupling”

Modułowość,
informacje
ukryte w
strukturach
danych

Przejrzystość Brak powiązania

między punktem
widzenia
programisty i
użytkownika

Słaba korelacja
między punktem
widzenia
programisty i
użytkownika

Średnia korelacja
między strukturą
kodu a
działaniem
programu

Dobra korelacja
kod-aplikacja

Oczywiste
powiązanie kodu
z działaniem
aplikacji (od str.
użytkownika)

Zrozumiałość
kodu

Kod niejasny.
Dokumentacja
wybrakowana,
zagmatwana i
przestarzała

Nieznaczna ilości
komentarzy i
nagłówków.
Część dokumen-
tacji użyteczna.

Średni poziom
komentarzy,
dokumentacji i
nagłówków.

Dobra dokumen-
tacja, nagłówki i
komentarze, ale z
paroma słabymi
punktami.

Zrozumiały kod,
aktualna
dokumentacja,
uwzględniające
uzasadnienia

wartość wspł.
SU

50 40 30 20 10






background image

COCOMO 2, grudzień 2004

29

Tabela 5. Skala wartości Współczynnika AA.

Wartość współczynnika AA

Prace nad ocena i włączeniem oprogramowania

0 Brak
2 Proste

wyszukiwanie

modułów i dokumentacji

4 Nieznaczna

ilość testów/ocen modułów; dokumentacja

6 Znacząca ilość testów/ocen modułów; dokumentacja
8 Szczegółowe testowanie i ocena modułów, dokumentacja


4.4.3.3.Szacowanie kosztów reinżynierii i konwersji oprogramowania

Model stosowania istniejącego oprogramowania wymaga dalszych uściśleń

uwzględniających reinżynierię i konwersję oprogramowania. Wydajność współczesnych

zautomatyzowanych narzędzi do przerabiania/konwersji oprogramowania jest tak wysoka, iż nawet

bardzo znaczące zmiany w oprogramowaniu (tzn. o wysokiej wartości parametru CM – procentu

wymiany kodu) wykonywane są stosunkowo małym nakładem pracy. Przykładowo, w jednej z

prac w NIST 80% kodu (13 131 wyrażeń w COCOLu) było zmienione przy pomocy

zautomatyzowanego narzędzia i wymagało nakładu pracy wynoszącego 35 roboczo-miesięcy.

Estymacja wykonana metodą Cocomo oszacowała ten nakład pracy na 152 roboczo-miesiące

(ponad 4 razy więcej) [Ruhl i Gunn 1991].

Wobec powyższego Cocomo2 wprowadza następny parametr AT, oznaczający procent

kodu przetwarzanego przez automatyczne translatory. Na podstawie danych doświadczalnych

wyznaczono pracochłonność automatycznej translacji i wynosi ona 2400 wyrażeń kodu źródłowego

/ roboczo-miesiąc. Opisany wcześniej model wykorzystania istniejącego oprogramowania stosuje

się dla pozostałego kodu, nie translowanego automatycznie.

Tabela 6. Wartości stopnia automatycznego przerabiania kodu

proces reinżynierii

AT (% automatycznego przerabiania)

plikami wsadowymi

96%

plikami wsadowymi + SORT

90%

plikami wsadowymi + DBMS

88%

pliki wsadowe, SORT i DBMS

82%

Interaktywne 50%


Szacunkowe wartości parametru AT wyznaczono w dużej mierze na podstawie danych z

prac NIST i pokazano je w tabeli wyżej. Współczynnik AT okazuje się być pewnym rodzajem

funkcji granicznej (np.: wykorzystania pakietów COTS, przejścia z operacji wykonywanych

background image

COCOMO 2, grudzień 2004

30

plikami wsadowymi na interaktywne) umożliwiającej ocenę w granicy kosztu oprogramowania

wytworzonego niezmienionym i przetranslowanym kodem.

4.4.4. Występowanie Usterek

W Cocomo2 zastąpiono występujące w Cocomo i Ada Cocomo współczynnik zmienności

wymagań poprzez procentowy wskaźnik występowania usterek: BRAK. Powoduje on w podobny

sposób regulowanie efektywnej wielkości programu. Przykładowo załóżmy, że gotowy produkt

może zawierać 100 000 wyrażeń. Miara ta nie uwzględnia dodatkowych 20 000 wyrażeń które

musiały być zmienione w celu poprawienia programu. Wartość wskaźnika BRAK w takim

programie wynosiłaby 20, a efektywny rozmiar programu w szacunkach Cocomo2 wyniósłby

łącznie 120 000 wyrażeń. W modelu Komponowania Aplikacji nie stosuje się czynnika BRAK,

gdyż jest on tam domyślny.

4.4.5. Pielęgnacja oprogramowania

Główną miarą nakładów pracy na pielęgnację oprogramowania używaną w pierwotnej

metodzie Cocomo był Roczny Przepływ Zmian (ACT), czyli procent oprogramowania które było

poprawione/dodane w ciągu roku. Miara ta nie zdała egzaminu, albowiem była ograniczona do

rocznych przedziałów czasu, a także kłóciła się z wynikami zastosowania modelu ponownego

użycia istniejącego oprogramowania. By uniknąć podobnych problemów w metodzie Cocomo2,

użyto modelu dostosowania istniejącego kodu także do zagadnień pielęgnacji oprogramowania.

4.5. Czynniki wpływające na koszt: Skala Programu


4.5.1. Modelowania tzw. ekonomii lub anty-ekonomii skali w pracach informatycznych

Ekonomią skali nazywa się zjawisko zmniejszenia kosztów jednostkowych wytwarzania

spowodowane wyłącznie poprzez wzrost wielkości produkcji. Anty-ekonomią skali będzie

natomiast wzrost kosztów przy wzroście wielkości. Zjawiska te w procesie produkcji

oprogramowania modelowanie są w Cocomo2 przy pomocy wykładniczej funkcji wielkości

programu. Czynnik ekonomii bądź anty-ekonomii skali oznaczony jest jako B w poniższym

wzorze:

B

Wielkosc

A

Naklady

)

(

×

=

( 3 )

background image

COCOMO 2, grudzień 2004

31

W przypadku gdy B < 1.0, mamy do czynienia z ekonomią skali. Dwukrotne

powiększenie rozmiaru programu powoduje wzrost kosztów o czynnik mniejszy niż 2. Wydajność

produkcji wzrasta więc ze wzrostem wielkości samego programu. Ekonomię skali można czasem

uzyskać poprzez stosowanie w procesie wytwórczym stosownych narzędzi (symulacji, platform do

testowania), na ogół jednak ekonomia skali jest rzadkością. W przypadku małych produkcji stałe

koszty początkowe (rozpoczęcie produkcji, zakupienie i przygotowanie narzędzi, prace

administracyjne) są źródłem ekonomii skali.

Jeśli B = 1.0 to zjawiska ekonomii i anty-ekonomii skali równoważą się wzajemnie. Przy

szacowaniu kosztów niewielkich projektów często posługuje się takim modelem liniowym. W

metodzie Cocomo2 model taki stosuje się dla Komponowaniu Aplikacji.

Przypadek B > 1.0 oznacza anty-ekonomię skali. Dzieje się tak zwykle z dwu głównych

przyczyn: większej ilości czasu potrzebnego na przekazywanie informacji w zespołach ludzkich

i dodatkowych prac wymaganych do integracji systemu. Większa liczba ludzi zaangażowanych

w tworzenie pokaźnego programu w oczywisty sposób oznacza większą ilość kontaktów

międzyludzkich (przekazywanie informacji, dopracowywanie złożonych pomysłów itp.) które

konsumują czas pracy. Ponadto włączanie mniejszej części oprogramowania do większej całości

wymaga nie tylko stworzenia samego modułu, ale także zaprojektowania, doglądania, integrowania

i testowania interfejsów między tą częścią a resztą produktu.

Wstępna wartość parametru A została w Cocomo2 ustalona na 3.0. Pierwsze przymiarki

tego modelu do danych liczbowych z Cocomo [Boehm 1981, str. 496-97] wskazują, że jest to

całkiem rozsądny punkt wyjściowy.

4.5.2. Określenie skali prac w Cocomo i Ada Cocomo

Analiza danych liczbowych przy pracach nad metodą Cocomo wykazała, że większość

programów cechowała anty-ekonomia skali. Systemy informatyczne podzielono w tej metodzie na

trzy główne grupy (Organiczna, Wpół-Odłączona i Wbudowana), dla których wartości parametru B

wynosiły odpowiednio 1.05, 1.12 i 1.20. Przyczyny tych różnic leżały głównie w szczegółach

realizacji produktu: systemy wbudowane są generalnie najbardziej bezprecedensowe, wymagają

większego przepływu informacji między zespołami programistów i sprawiają więcej trudności

podczas integracji całego systemu. Jednocześnie wymagania sprzętowe i czasowe są bardziej

background image

COCOMO 2, grudzień 2004

32

restryktywne – wszelkie problemy projektowe trzeba rozwiązać w ograniczonym czasie i budżecie,

przy restryktywnych wymaganiach sprzętowych i nie dopuszczającym zmian opisie interfejsów.

Zmiany wprowadzone w metodzie Ada Cocomo miały na celu uwzględnienie faktu, iż

zmiana parametrów procesu produkcji może ograniczyć efekt anty-ekonomii skali. Wymagany

przepływ informacji i nakłady na integrację systemu obniżony będzie przez m.in.: wczesną redukcję

ryzyka i błędów; stosowanie dokładnych i sprawdzonych specyfikacji architektury; uściślenie

wymagań; itp. W Ada Cocomo wartość parametru B zależała od stosowania tych praktyk

w realizacji programu [Boehm i Royce 1989, Royce 1990].

Taki model zastosowano w Ada Cocomo tylko w odniesieniu do oprogramowania

systemów wbudowanych, gdzie w miejsce pojedynczej wartości współczynnika B (= 1.20)

umożliwiono wahania tej wartości między 1.04 a 1.24. Zależy to od stopnia stabilności wymagań i

architektury, redukcji ryzyka dojrzałości procesu produkcji oraz innych czynników redukujących

anty-ekonomię skali.

4.5.3. Skalowanie prac w Cocomo2

Cocomo2 łączy w sobie modele obu swoich poprzedników. Do metody Ada Cocomo jest

podobna w tym, że stosuje zestaw składników, których suma daje wartość B. Część z tych

składników pozostała bez zmian, choć współczynniki architektury i ryzyka połączono w jedną

wartość, a wyznacznik dojrzałości procesu stosowany w Ada Cocomo zastąpiono podobną

wielkością zdefiniowaną przez Instytut Inżynierii Oprogramowania (SEI). (Szczegóły tej definicji

są obecnie dopracowywane przez SEI.) Z kolei w spadku po pierwotnej metodzie Cocomo,

w wersji 2.0 znalazły się składniki opisujące „bezprecedensowość” (precedentness) i elastyczność

wymagań programu które zastąpiły wcześniejszy podział oprogramowania na 3 grupy (organiczna,

współzależna i wbudowana z Cocomo). Nowością w Cocomo2 jest ocena zgrania personelu, która

uwzględnia wpływ słabej koordynacji prac na nasilenie anty-ekonomii skali. Usunięto natomiast

czynnik zmienności wymagań (z Ada Cocomo) – zwiększenie kosztu produktu końcowego jest

teraz zamknięte we współczynniku „występowania usterek” (Breakage).

W tabeli 7 podano wartości składników do wykładnika skali programu. Oceny z każdej

kategorii, W

i

, są do siebie dodane i dają wartość współczynnika B wg. wzoru (4).

background image

COCOMO 2, grudzień 2004

33

+

=

i

W

B

01

.

0

01

.

1

( 4 )




Tabela 7. Oceny składników wykładnika skali projektu.

(W

i

) Elementy

współczynnika skali

B. Niska

(5)

Niska

(4)

Normalna

(3)

Wysoka

(2)

B. Wysoka

(1)

Wybitnie

Wysoka (0)

bezprecedensowość
problemu / zadania

Całkowicie
bez preced.

większość bez
precedensu.

częściowo
bez preced.

generalnie
nieobcy

większość
nieobca

Całkowicie
znany

elastyczność
wymagań

Rygorystycz
-ne

możliwe małe
odstępstwa

możliwe
odstępstwa

średnia
elastyczność

duża
elastyczność

znane tylko
ogólne cele

Architektura /
usunięcie ryzyka *

małe (20%)

średnie (40%)

ponad pół
(60%)

większość
(75%)

prawie pełne
(90%)

Pełne
(100%)

zgranie zespołu Bardzo

utrudnione
kontakty

utrudnione
kontakty

średnio
dobre
kontakty

dość dobre
kontakty

bardzo dobre
kontakty

Idealny
przepływ
informacji

Dojrzałość procesu +

Średnia ważona odpowiedzi twierdzących na kwestionariusz CMM

* % zakończenia specyfikacji interfejsów między głównymi modułami; % wykonania prac eliminacji ryzyka;
+ kwestionariusz Modelu Dojrzałości Produkcyjnej (CMM od Capability Maturity Model) jest opracowywany z udziałem SEI.

Dojrzałość procesu produkcji będzie średnią ważoną odpowiedzi na pytania dotyczące 18 kluczowych aspektów procesu
produkcji w CMM [Paulk et al. 1993]. Wagi poszczególnych odpowiedzi nie są jeszcze ustalone


Przykładowo, program o wielkości 100K Źródłowych LOC, który otrzymał wyjątkowo

wysokie (=0) noty we wszystkich elementach skali programu, będzie miał wykładnik skali B = 1.01

(bo sumaW=0) i wyskalowany nakład pracy wzrośnie do 105 roboczo-miesięcy. Z kolej

otrzymanie samych bardzo niskich (=5) ocen da w wyniku wartość B = 1.26 (sumaW=25) i wzrost

nakładu pracy do 331 roboczo-miesięcy. Jest to bardzo duży skok, choć trzeba zauważyć, że mała

zmiana (o 1) jednego tylko parametru spowoduje tylko 4.7 procentową zmianę szacowanych

kosztów. W ten sposób Cocomo2 zapobiega aż 40% zmianom szacowanego nakładu prac

spowodowanym odmienną interpretacją charakteru prac w modelu skalowania metody Cocomo.

4.6. Czynniki wpływające na koszt: Dodatkowe czynniki zwiększające nakład pracy

Podobnie jak w Cocomo i Ada Cocomo w metodzie Cocomo2 używa się zestawu

współczynników regulujących końcową wartość szacunków w roboczo-miesiącach. Wartości

otrzymane po uwzględnieniu wykładniczej skali projektu, mnożone są następnie przez dodatkowe

czynniki zwiększające nakład pracy:

×

=

i

i

e

a

no

poprawione

EM

PM

PM

)

(

ln

min

( 5 )

Głównymi kryteriami doboru współczynników EM były w Cocomo2:

background image

COCOMO 2, grudzień 2004

34

• ciągłość: z wyjątkiem uzasadnionych przypadków, sposób naliczania nakładu

prac pozostawiono taki sam, jak w poprzednikach – Cocomo i Ada Cocomo.

• oszczędność: współczynniki przyrostu kosztów zostały umieszczone w

Cocomo2 wyłącznie w przypadkach, gdy samodzielnie i adekwatnie opisują

znaczący czynnik wpływające na zmianę nakładu pracy.

4.6.1. Czynniki Produktu


4.6.1.1.RELY – Wymagana Niezawodność Oprogramowania

Skala ocen i waga współczynnika RELY zostały w Cocomo2 zachowane po pierwotnej

Cocomo. Z kolei w metodzie Ada Cocomo zawężono zbiór możliwych wartości tego

współczynnika dla wyższych poziomów wymaganej niezawodności, uważano bowiem, że

rygorystyczne przestrzeganie typów zmiennych, wbudowana wielozadaniowość, wyjątki i inne

atrybuty języka programowania Ada ułatwią tworzenie niezawodnego oprogramowania. Analiza

danych liczbowych tez tych nie potwierdziła, wobec czego W Cocomo2 powrócono do opisu RELY

z pierwotnej Cocomo.

Tabela 8. Skale szacowania czynników wzrostu kosztów w modelu Post-Architekturowym

B. Niski

Niski

Normalny

Wysoki

B. Wysoki

Wyj. Wysoki

RELY minimalna

niewygoda

Niska, łatwo
naprawialne

średnio-łatwo
naprawialne

duze straty
finansowe

ryzyko dla
życia ludzi

DATA

DB

bytes/Pgm

SLOC < 10

10

≤ D/B <100 100 ≤ D/B <

1000

D/P

≥ 1000

CPLX

patrz Tabela 8.

RUSE

Brak

w

danym

podzespole

w całym
programie

w całej linii
produkcyjnej

wielu liniach
produkcyjnych

DOCU Wiele

potrzeb

niezaspokoj.

Część potrzeb
niezaspokoj.

Stosowna do
potrzeb

zbyt obszerna

zdecydowanie
zbyt obszerna

TIME

≤ 50% dostęp.
czasu pracy

70% 85% 95%

STOR

≤ 50% dostęp-
nej pamięci

70% 85% 95%

PVOL

duże zmiany
co 12 m-cy;
małe co 1 m-c

duże: 6 m-cy;
małe: 2 tyg.

duże: 2 m-ce;
małe: tydzień

duże: 2 tyg.;
małe: 2 dni

ACAP

kwantyl 15 rz. kwantyl 30 rz. kwantyl 55 rz. kwantyl 75 rz. kwantyl 90 rz.

PCAP

kwantyl 15 rz. kwantyl 30 rz. kwantyl 55 rz. kwantyl 75 rz. kwantyl 90 rz.

PCON

48% / rok

24% / rok

12% / rok

6% / rok

3% / rok

AEXP

≤ 2 miesiące

6 miesięcy

1 rok

3 lata

6 lat

PEXP

≤ 2 miesiące

6 miesięcy

1 rok

3 lata

6 lat

LTEX

≤ 2 miesiące

6 miesięcy

1 rok

3 lata

6 lat

TOOL

edycja, debug

proste, począt-
kowe i końco-

podstawowe
narzędzia

dobry,
dojrzały zes-

dobre, dojrzałe
i postępowe

background image

COCOMO 2, grudzień 2004

35

B. Niski

Niski

Normalny

Wysoki

B. Wysoki

Wyj. Wysoki

we CASE,
nieznaczna
integracja

cyklu prod.,
średnio
zintegrowane

taw narzędzi,
średnio
zintegrowane

narzędzia
zintegrowane
z metodami
produkcji i
wielokrotnym
użyciem kodu

SITE:

Bliskość

międzynaro-
dowe

Różne miasta i
różne firmy

różne miasta
albo firmy

obszar miasta
(metropolii)

budynek lub
kompleks

w jednym
miejscu

SITE:

Tele-

komunikacja

poczta, kilka
telefonów

FAX, każdy
ma telefon

zwykły e-mail pojemne łącza

elektroniczne

pojemne łącza
elektroniczne
+ okazyjne
telekonferenc.

interaktywne,
multimedialne

SCED 75%

nominalnego

85% 100% 130% 160%


4.6.1.2.DATA – Wielkość Bazy Danych

Podobnie jak w przypadku RELY, analiza danych liczbowych nie wykazała potrzeby

zmian ocen i wartości współczynników. Zachowując kryterium ciągłości współczynnik DATA w

Cocomo2 pozostał bez zmian.

4.6.1.3.CPLX – Złożoność (trudność) Produktu

Tabela 8 przedstawia nową skalę not dla CPLX w Cocomo2. Zmiany, które miały

miejsce, odzwierciedlają postęp w technologii komputerowej i tworzeniu oprogramowania.

Polegały one na dodaniu skali dla Operacji Zarządzania Interfejsem Użytkownika, uwzględnieniu

wpływu przetwarzania rozproszonego i równoległego, oraz uwzględnieniu postępu w technologii

warstwy pośredniej i obiektów baz danych.

Zbiór wartości współczynnika CPLX w Ada Cocomo był zmniejszony dla bardziej

złożonych programów. Uważano, że mechanizmy w języku Ada (wielozadaniowość, wyjątki,

enkapsulacja i inne) ułatwią rozwiązywanie dotychczas trudnych problemów. W Tabeli 8 widzimy

jednak dodatkowy, Wyjątkowo Wysoki poziom trudności oprogramowania dla dziedzin takich, jak

przetwarzanie równoległe, rozproszone sterowanie w warunkach silnego uwarunkowania czasem

rzeczywistym (hard real time) i wirtualna rzeczywistość, które akurat w Ada (czy innych nowych

językach programowania) nie są szczególnie ułatwione. Zdaje się, że wzrost wymagań na

oprogramowanie rozwiązujące złożone problemy bez trudu nadąża za postępem w techikach

background image

COCOMO 2, grudzień 2004

36

rozwiązywania tych problemów. W takiej sytuacji zachowanie skali dla CPLX z pierwotnej

metody Cocomo wydaje się być jak najbardziej na miejscu.

4.6.1.4.RUSE – Wymagane ponowne użycie tworzonego oprogramowania

Ten współczynnik wzrostu kosztów dodano w metodzie Ada Cocomo, aby uwzględnić

wzrost nakładów pracy na stworzenie kodu dostosowanego do późniejszego wielokrotnego użycia

w różnych programach. Współczynnik miał cztery kategorie ocen i przybierał wartości między 1.0

a 1.5. Późniejsze doświadczenia wykazały, że konieczne było rozszerzenie ilości kategorii i

zakresu wartości. Przykładowo doświadczenia AT&T (American Telephone & Telegraph), w

których tworzenie kodu do późniejszego wielokrotnego użytku spowodowało 2.25-krotny wzrost

kosztów. Co prawda wymagania odnośnie wielokrotnego użycia korespondowały też ze zwiększoną

niezawodnością oprogramowania, zatem właściwy współczynnik wzrostu kosztów wyniósłby w

Ada Cocomo (1.5)(1.4) = 2.10, a nie 1.5. Zmiana wprowadzone w Cocomo2 rozszerza zakres

wartości RUSE do 1.75, co w efekcie połączenia RUSE*RELY może dać wartości do (1.75)(1.5) =

2.45.

4.6.1.5.DOCU – przydatność wymaganej dokumentacji przy budowaniu oprogramowania

Część modeli szacowania kosztów oprogramowania zawiera odpowiednik wartości DOCU

zależny od rozmiarów wymaganej dokumentacji. W Cocomo2 natomiast skala ocen tego

współczynnika opisana jest przydatnością wymaganej dokumentacji do potrzeb cyklu produkcji.

Noty zaczynają się na poziomie Bardzo Niskim (potrzeby produkcyjne niezaspokojone) a kończą na

Bardzo Wysokim (nadmiar dokumentacji z punktu widzenia potrzeb producentów). Zakresu (iloraz

wartości największej przez najmniejszą) współczynnika DOCU wynosi 1.35.

4.6.1.6.Czynniki Platformy

Określenie „platforma” odnosi się do docelowego zastawu sprzętu i oprogramowania, z

którymi dany program ma pracować (dawniej: „maszyna wirtualna”). Czynniki platformy zostały

częściowo zmodyfikowane w porównaniu z poprzednimi wersjami metody – szczegóły tych zmian

są opisane poniżej. Niektóre z rozważanych czynników usunięto (np.: rozproszenie, stopień

background image

COCOMO 2, grudzień 2004

37

wbudowania, wymagania czasu rzeczywistego) gdyż zagadnienia te są już uwzględnione w

Złożoności Produktu (CPLX).



Tabela 9.

Wyznaczanie trudności dla różnych typów modułów

B. Niski

Niski

Normalny

Wysoki

B. Wysoki

Wyb. Wysoki

Operacje
sterujące

Szereg prostych,
nie zagnieżdżo-
nych operacji:
DO, CASE,
IFTHENELSE.
Prosta kompozyc-
ja modułowa z
wywołaniami
procedur i
„skryptami”.

Proste zagnież-
dżenie struktur
programu.
Przewaga
prostych
„predykatów”.

Przeważnie proste
zagnieżdżanie.
Przypadki stero-
wania między-
modułowego.
Tabele decyzyjne,
proste „callbacks”
lub przekazywa-
nie wiadomości.
Przetwarzanie
rozproszone przy
udziale warstwy
pośredniej.

Wysoce
zagnieżdżone
operacje o wielu
złożonych
„predykatach”.
Nadzorowanie
kolejek i stert.
Jednolite przetwa-
rzanie rozproszo-
ne. Pojedynczy
procesor pracuje
w warunkach
„miękkiego”
czasu
rzeczywistego.

Rekurencja i
wielokrotne
uruchamianie.
Obsługa przerwań
o bez zmian ich
priorytetów.
Synchronizacja
procesów, złożone
callbacks,
Przetwarzanie
rozproszone.
Pojedynczy
proce-sor
realizujący
zadania
„twardego czasu
rzeczywistego

Koordynacja
zasobów o
zmiennych
priorytetach.
Sterowanie na
poziomie mikro-
kodu. Praca
układu wielo-
procesorowego w
warunkach
„twardego” czasu
rzeczywistego.

Operacje
obliczenio-
we

Obliczanie pros-
tych wyrażeń, n.p.
A=B+C*(D-E)

Obliczanie śred-
nio trudnych
wyrażeń, n.p:
D=Sqrt(B**2-
4*A*C)

Wykorzystanie
standardowych
operacji matema-
tycznych i statys-
tycznych. Podsta-
wowe operacje na
macierzach i
wektorach.

Podstawy analizy:
interpolacja
„wielu zmiennych
zwykłe równania
różniczkowe.
Podwyższona
waga zaokrąglania

Złożona analiza
numeryczna:
równania z macie-
rzami niemal-
jednostkowymi,
cząstkowe równa-
nia różniczkowe.
Prosta paraleliza-
cja obliczeń.

Złożona i „nie-
strukturalna” ana-
liza numeryczna:
dyża dokładność
brzy danych
stochastycznych z
szumem. Złożona
paralelizacja
obliczeń

Operacje
specyficzne
dla urządze-
nia

Proste komendy
odczytu i zapisu.
Wyrażenia o
przejrzystym
formacie.

Zbędna wiedza na
temat danego
procesora czy
urządzenia I/O.
Wejście/wyjście
na poziomie
operacji GET i
PUT.

Przetwarzanie I/O
zawiera wybór
urządzenia,
sprawdzenie
statusu i obsługę
błędów.

Operacje na fizy-
cznym poziomie
I/O (przeliczanie
adresów fizycz-
nych; szukanie,
czytanie danych)
Zoptymalizowane
operacje I/O.

Operacje obsługi,
diagnozowania i
ukrywania przer-
wań. Obsługa
linii komunikacyj-
nych. Systemy
wbudowane o
dużej szybkości
działania.

Działanie zsyn-
chronizowane z
pracą urządzenia,
część programu w
mikro-kodzie.
Systemy
wbudowane o
wyśrubowanych
osiągach.

Operacje
zarządzania
danymi

Proste tablice w
pamięci. Proste
zapytania i
zmiany w bazie
danych COTS

Pojedynczy plik z
pojedynczym ty-
pem danych, bez
zmian w pliku,
bez pośrednich
plików. Średnio
zaawansowane
operacje w bazie
danych COTS.

Dane wejściowe z
wielu plików,
wyjściowe do
jednego. Niewiel-
kie zmiany ich
struktury.
Złożone operacje
w bazie danych
COTS.

Proste „odpalacze
(triggers)
uruchamiane
przez zawartośc
strumienia danych
Złożone manipu-
lacje na struktu-
rach danych.

Koordynacja
rozproszonej bazy
danych. Złożone
„odpalacze”.
Optymizacja
przeszukiwania
danych.

Wysoce sprzężo-
ne, dynamiczne
struktury
obiektów i relacji.
Zarządzanie
danymi w
językach
naturalnych (a.
ludzkich)

Operacje
interfejsu
użytkow-
nika

Proste formy do
danych wejścio-
wych, generatory
raportów

Proste kreatory
graficznego inter-
fejsu użytkownika
(GUI)

Zwykłe zastoso-
wanie zestawu
widgetów (?)

Rozwinięcie zes-
tawu widgetów,
proste I/O multi-
medialne (głos)

Średnio złożone
2D/3D, dynamicz-
na grafika, multi-
media

Skomplikowane
multimedia,
wirtualna
rzeczywistość


background image

COCOMO 2, grudzień 2004

38

4.6.1.7.TIME – Ograniczenie Czasu Działania, STOR – Limit Dostępnej Pamięci

W świetle zadziwiającego wręcz postępu technicznego w dziedzinie szybkości procesorów

i wielkości pamięci (operacyjnej, dyskowej) można by się zastanawiać, czy ograniczenia czasu

wykonywania programu lub ilości dostępnej pamięci mają nadal znaczenie. Okazuje się jednak, że

coraz to nowe aplikacje w pełni wykorzystują zasoby szybkości i pamięci sprzętu komputerowego,

a ograniczenia TIME/STOR są wiążące. Zgodnie z kryterium ciągłości i w świetle wyników analiz

danych liczbowych, skale i wartości tych czynników pozostały bez zmian w Cocomo2.

4.6.1.8.PVOL – Zmienność Platformy

W Cocomo wartość ta nosiła nazwę Zmienności Maszyny Wirtualnej (VIRT – Virtual

Machine Volatility), natomiast w Ada Cocomo była rozdzielona na Zmienność Hosta i Zmienność

Maszyny Docelowej – odzwierciedlając dominujący wówczas trend „tworzenie oprogramowania

host-maszyna docelowa w Ada” (Ada host-target software development approach). Obecnie

podąża się raczej w kierunku rozproszonego tworzenia oprogramowania, a podział między hostem a

maszyną docelową jest bardziej rozmyty. W takiej sytuacji Cocomo2 powraca do pojedynczego

czynnika Zmienności Platformy, zgodnie z kryterium oszczędności. Skala i wartości współczynnika

także zostały zachowane z opisu czynnika VIRT w Cocomo. „Platformę” definiuje się tu

identycznie do dawnej „Maszyny wirtualnej”: połączenie sprzęt-oprogramowanie (OS, DBMS)

wykorzystywane przez dany program do wykonania swoich zadań.

4.6.1.9.TURN – Czas Kompilacji (Computer Turnaround Time)

Czynnik ten miał zdecydowanie większe znaczenie w okresie wprowadzania pierwotnej

metody Cocomo (lata 70-te), kiedy to programiści pracowali zwykle na sprzęcie wykonującym

zadania wsadowe. Obecnie większość oprogramowania tworzy się w środowiskach interaktywnych

i tendencja ta tylko się umacnia. W rezultacie czynnik TURN utracił niemal całkowicie swoje

znaczenie i został usunięty z Cocomo2.

4.6.2. Czynniki Kadrowe


4.6.2.1.ACAP – Umiejętności Analityków, PCAP – Umiejętności Programistów

Zarówno w Cocomo jak i Ada COCOCMO łączny zakres wartości (iloraz wartości

największej do najmniejszej) tych dwóch współczynników wynosił nieco ponad 4, odzwierciedlając

background image

COCOMO 2, grudzień 2004

39

w ten sposób duży wpływ, jaki umiejętności personelu mają na wydajność tworzenia

oprogramowania. Pierwotnie, w Cocomo, założono mniej-więcej równe wartości obu czynników:

ACAP=2.06 i PCAP=2.03. Z kolei w Ada Cocomo założono sytuację, w której zwarty sztab

wysoce wykwalifikowanych analityków kreował dokładne specyfikacje oprogramowania – do

wcielenia w życie przez może mniej zdolnych programistów. Zakresy wartości zmieniły się zatem

na ACAP=2.57 i PCAP=1.62.

Dzisiaj także podkreśla się wagę umiejętności analityków, ale wzrasta też znaczenie

kwalifikacji samych programistów. Spowodowane jest to w dużej mierze zwiększonym

wykorzystaniem złożonych pakietów COTS, z którymi tylko dobrze wyszkoleni programiści będą

w stanie sprawnie sobie radzić.

Dla powyższych przyczyn współczynniki ACAP i PCAP łącznie zachowują podobny

zakres wartości (4), natomiast rozważane oddzielnie znajdują się w punkcie pośrednim między

Cocomo i Ada Cocomo. W rezultacie zakresy współczynników w Cocomo2 wynoszą: 2.24 dla

ACAP i 1.85 dla PCAP.

4.6.2.2.AEXP – Doświadczenie z aplikacjami, PEXP – Doświadczenie z platformami,

LTEX – Doświadczenie z językiem programowania i narzędziami

W metodzie Cocomo2 dokonano trzech zasadniczych zmian w powyższych czynnikach

wzrostu kosztów:

• przeniesiono je na jedną wspólną skalę dla uniknięcia wcześniejszych

nieporozumień;

• powiększono zakres wartości PEXP, ponieważ dogłębne zrozumienie możliwości

wykorzystania najnowszego sprzętu nabrało ostatnio na znaczeniu (np.: sprzętowe

wspomaganie dla graficznego interfejsu użytkownika, baz danych, sieci

komputerowych, wykorzystanie możliwości middleware);

• rozszerzono doświadczenie w języku programowania o umiejętności używania

narzędzi i metod projektowych.

Powyższe współczynniki w Cocomo2, w porównaniu do Cocomo i Ada Cocomo, mają

następujące zakresy wartości:

• AEXP : 1.54 w Cocomo2; 1.57 w Cocomo i Ada Cocomo;
• PEXP : 1.58 w Cocomo2; 1.34 w Cocomo i Ada Cocomo (VEXP);

background image

COCOMO 2, grudzień 2004

40

• LTEX : 1.51 w Cocomo2; 1.20 w Cocomo i Ada Cocomo (LEXP);

4.6.2.3.PCON – Stabilność personelu

Przy kolekcji i analizie danych liczbowych pierwotnej metody Cocomo rozważano

zastosowanie współczynnika PCON. Wyniki analizy nie były jednak jednoznaczne i ostatecznie

nie umieszczono tej wartości wśród czynników zwiększających nakład pracy [Boehm 1981, str.

486-487]. W Cocomo2 skalę szacowania wartości PCON opisuje procentowa wartość wymiany

personelu w ciągu roku: od 3 do 48 procent. Zakres wartości wynosi 1.52.

4.6.3. Czynniki Procesu Produkcji


4.6.3.1.MODP – Wykorzystanie nowoczesnych metod tworzenia oprogramowania

Pojęcie „nowoczesne metody tworzenia oprogramowania” ewoluuje w stronę jeszcze

szerszego określenia: „dojrzałe metody inżynierii oprogramowania” użytego w CMM (Capability

maturity Model – wspomniany wyżej) Instytutu Inżynierii Oprogramowania (SEI) [Paulk et al.

1993] i innych podobnych modelach (ISO 9000-3, SPICE). Wpływ zastosowania takich metod

w tworzeniu oprogramowania opisany jest w Cocomo2 jako składnik Dojrzałości Procesu Produkcji

wśród wykładniczych współczynników skali. Współczynnik źródeł kosztów MODP nie jest zatem

potrzebny w Cocomo2.

4.6.3.2.TOOL – Stosowanie narzędzi software’owych

Od czasu kalibracji pierwotnej metody Cocomo, czyli lat 70-tych, narzędzia informatyczne

były znacząco usprawniane. W Ada Cocomo dodano więc dwa nowe poziomy ocen wychodzące

naprzeciw oczekiwanemu rozwojowi możliwości tych narzędzi w późnych latach 80-tych i

początku 90-tych. Od tego czasu programy otrzymujące noty „B. Niska” i „Niska” na skali TOOL

zaczęły być rzadkością. Wobec tego w Cocomo2 przesunięto całą skalę TOOL eliminując

najniższe (B. Niska i Niska) wartości i zmieniając nieco pozostałe pięć poziomów ocen z Ada

Cocomo. Usunięcie dwóch ocen ze skali zmniejszyło zakres wartości współczynnika TOOL z 2.00

do 1.61.

background image

COCOMO 2, grudzień 2004

41

4.6.3.3.SITE – Rozproszenie tworzenia oprogramowania

Dwie przesłanki – upowszechnienie rozproszonego tworzenia oprogramowania oraz głosy

producentów oprogramowania stwierdzające, że taki tryb pracy ma znaczący wpływ na nakład

pracy – spowodowały dodanie czynnika SITE do metody Cocomo2. Jego szacowana wartości jest

średnią dwu czynników: fizycznej bliskości (od pracy w jednym miejscu po rozmieszczenie w

różnych krajach) i możliwości infrastruktury telekomunikacyjnej (od zwykłej poczty i połączeń

telefonicznych po interaktywny kontakt multimedialny). Zakres wartości wynosi 1.57.

4.6.3.4.SCED – Wymaganie dotyczące harmonogramu prac

Analiza danych liczbowych nie wykazała, aby zmiana dotychczasowych wartości

współczynnika SCED była potrzebna. Wobec tego pozostają one bez zmian w Cocomo2, zgodnie z

kryterium ciągłości.

4.6.3.5.SECU – Oprogramowanie utajnione

W Ada Cocomo współczynnik SECU zwiększał szacunkowy nakład prac o 1.10 w

przypadku produktów poufnych/utajnionych. Znakomita większość oprogramowania nie jest

klasyfikowana na żadnym poziomie tajności, w związku z czym zgodnie z postulatem

oszczędności, współczynnik SECU usunięto z metody Cocomo2


4.7.Dodatkowe możliwości metody Cocomo2

W tej części uszczegółowione będą zagadnienia związane z zastosowaniem wspomnianych

wcześniej narzędzi w Cocomo2: modele szacunkowe Projektu Wstępnego i Późnych Faz

Projektowych używające Punktów Funkcyjnych, estymacja harmonogramu prac, przedziały

dokładności szacunków. W następnych artykułach opisane będą dalsze możliwości metody

Cocomo2, w tym ocena wpływu wykorzystania gotowego kodu i zastosowania komponowania

aplikacji na koszt i harmonogram prac.

4.7.1. Szacunki Punktów Funkcyjnych w modelach Projektu Wstępnego i Późnych Faz

Projektowych

Po wyznaczeniu liczby Punktów Funkcyjnych programu, zgodnie z opisem

przedstawionym wcześniej, należy uwzględnić poziom języka programowania (asembler, języki

background image

COCOMO 2, grudzień 2004

42

wysokiego poziomu, języki czwartej generacji), w którym program ma być napisany. Na tej

podstawie określi się proporcję punktów funkcyjnych do faktycznych Źródłowych LOC.

Przeliczanie punktów funkcyjnych na SLOC kodu odbywa się w Cocomo2 przy pomocy

odpowiednich tabel (m.in. tabel stworzonych przez Badania Wydajności Informatycznej (Software

Productivity Research - SPR) [SPR 1993]); zarówno dla modelu Projektu Wstępnego jak i Późnych

Faz Projektu.

Dalsze obliczenia w modelu Późnych Faz Projektu przebiegają identycznie do obliczeń

bazowanych na SLOC. Co więcej, metoda Cocomo2 umożliwia zastosowanie punktów

funkcyjnych do niektórych modułów program i SLOC do pozostałych (np. w sytuacji, gdy punkty

funkcyjne nie są miarą adekwatną, jak przy systemach czasu rzeczywistego czy obliczeniach

naukowych).

W przypadku modelu Projektu Wstępnego szacowanie przy pomocy punktów

funkcyjnych, przeliczanie ich na SLOC i skalowanie opisane w rozdziale 5 odbywają się tak samo

jak w modelu Późnych Faz Projektowych. Jedyną różnicą jest użycie mniejszej ilości czynników

przyrostu nakładu pracy. Współczynniki te otrzymuje się poprzez łączenie ich odpowiedników z

modelu Późnych Faz Projektu; zgodnie z opisem w tabeli 10.

Po połączeniu tym otrzymujemy siedem głównych czynników kosztów. Ich wartości

można oszacować już we wczesnych stadiach prac nad programem, znacznie łatwiej niż wartości

odpowiadających im 17 współczynników z modelu Późnych Faz Projektowych. Z racji pokaźnych

zakresów wartości tych czynników (do 5.45 w przypadku PERS i 5.21 przy RCPX) zwiększył się

zakres możliwych wartości końcowych. W takiej sytuacji większy jest także możliwy błąd

oszacowania i w związku z tym wynikowi w modelu Projektu Wstępnego przypisuje się

odpowiednio większą wartość odchylenia standardowego (niż w Późnych Faz Projektowych).

Tabela 10. Czynniki wzrostu kosztów w modelach Projektu Wstępnego i Późnych Faz Projektowych

Czynniki w modelu
Projektu Wstępnego

Odpowiedniki w modelu
Późnych Faz Projektowych

RCPX

RELY, DATA, CPLX, DOCU

RUSE RUSE
PDIF TIME,

STOR,

PVOL

PERS ACAP,

PCAP,

PCON

PREX

AEXP, PEXP, LTEX

FCIL TOOL,

SITE

SCED SCED

background image

COCOMO 2, grudzień 2004

43

4.7.2. Szacunki harmonogramu prac

Pierwsza wersja metody Cocomo2 zawiera prosty model szacunkowy dla harmonogramu

prac projektowych i produkcyjnych, podobny do analogicznych modeli w Cocomo i Ada Cocomo.

Równanie stosowane we wszystkich trzech podmodelach Cocomo2 jest następujące:

100

%

]

)

(

0

.

3

[

)

01

.

1

(

2

.

0

33

.

0

(

SCED

PM

TDEV

b

×

×

=

×

+

( 6 )

gdzie TDEV oznacza czas w miesiącach między dostarczeniem pierwotnych wymagań do momentu

zatwierdzenia produktu, jako spełniającego wymagania programowe. PM jest ilością roboczo-

miesięcy wymaganą do zakończenia prac wyznaczoną z uwzględnieniem wszystkich wskaźników z

wyjątkiem SCED. Występujące w równanie %SCED jest natomiast procentową wartością

współczynnika skomasowania/rozluźnienia harmonogramu prac opisanego w Tab. 7.

4.7.3. Przedziały wyników obliczeń

Niektórzy użytkownicy metody Cocomo wyrazili opinię, iż bardziej celowe byłoby

otrzymanie wyników w postaci przedziałów, a nie pojedynczych wartości. W metodzie Cocomo2

jest to możliwe przy pomocy opisu dokładności szacunków (Rysunek 2). Po wyznaczeniu

najbardziej prawdopodobnej wartości nakładu pracy E (w każdym z trzech modeli: Komponowania

Aplikacji, Projektu Wstępnego i Późnych Faz Projektowych) można znaleźć wartości dla

optymistycznej i pesymistycznej wersji szacunku – odległą o około jedno odchylenie standardowe

od E. Oblicza się je w następujący sposób:

Model

Wersja Optymistyczna

Wersja Pesymistyczna

Komponowanie Aplikacji

0.50 E

2.0 E

Projekt Wstępny

0.67 E

1.5 E

Późne Fazy Projektowe

0.80 E

1.25 E

Tak obliczone wartości można też użyć do wyznaczenia przedziału czasu potrzebnego na

stworzenie programu (we wzorze 6.)

background image

COCOMO 2, grudzień 2004

44

5. Podsumowanie

Z przedstawionego powyżej materiału widać wyraźnie, że jakkolwiek szacowanie kosztu

produkcji oprogramowania – szczególnie w początkowych fazach jego cyklu życia – jest możliwe,

ale równocześnie jest bardzo trudne. Błąd szacunku może wynieść nawet 400%, co w przypadku

budżetów projektów rządowych może oznaczać ogromne kwoty. Dlatego też wydaje się, że każdy

menedżer projektu musi przewidzieć odpowiednie służby, które będą odpowiedzialne wyłącznie za

zarządzanie kosztem przedsięwzięć i za szacowanie pracochłonności procesu wytwórczego

oprogramowania. Należy tutaj również rozważyć możliwość odpowiedniego oprzyrządowania

koniecznego dla komputerowego wspomagania zespołu szacującego koszty przedsięwzięć

informatycznych. Należy również pamiętać o tym, że Cocomo2 podaje koszt produkcji

oprogramowania w osobogodzinach. Na tej podstawie będzie możliwe przeliczanie szacunku

Cocomo2 na wartości pieniężne, o ile znamy stawkę godzinową w firmie, dla której wykonywane

są szacunki kosztu wytwarzania oprogramowania.


background image

COCOMO 2, grudzień 2004

45

6. Wyjaśnienie skrótów użytych w tekście


3GL Język Programowania 3ciej Generacji

AA %nakładu prac przy ponownym użyciu kodu pochłonięta na przejrzenie i ocenę kodu

ACAP Umiejętności Analityków

ACT Roczny

Przepływ Zmian

ASLOC Dostosowane

Źródłowe Linie Kodu

AEXP Doświadczenie z Aplikacjami

AT Zautomatyzowane

Tłumaczenie

BRAK Występowanie Usterek

CASE Inżynieria Programowania Wspomagana Komputerowo

CM

% Kodu zmodyfikowanego dla potrzeb ponownego jego użycia

CMM Model

Dojrzałości Produkcyjnej

Cocomo Model

Kosztów

Konstrukcji

Oprogramowania

COTS

pakiety informatyczne zakupione jako całość – do użycia we własnym programie

CPLX Złożoność Produktu

CSTB

Naczelna Rada Informatyki i Telekomunikacji

DATA

Rozmiar Bazy Danych

DBMS System

Zarządzania Bazami Danych

DI Poziom

Wpływu

DM

% projektu zmodyfikowanego dla potrzeb ponownego jego użycia

DOCU przydatność wymaganej dokumentacji do potrzeb produkcji

EDS

Elektroniczne Systemy Danych

ESLOC Równoważne Źródłowe Linie Kodu

FCIL Zaplecze

FP Punkty

Funkcyjne

GFS

Oprogramowanie na Zamówienie (Rządowe)

GUI

Graficzny Interfejs Użytkownika

ICASE

Komputerowo Wspomagane Zintegrowane Środowiska Programowania

IM

%prac integracyjnych powtórzonych przy ponownym użyciu kodu

KSLOC Tysiąc Źródłowych Linii Kodu

LEXP Doświadczenie z Językiem Programowania

LTEX Doświadczenie z Językiem i Narzędziami Programowania

MODP Współczesne Metody Tworzenia Oprogramowania

background image

COCOMO 2, grudzień 2004

46

NIST

Krajowy Instytut Norm i Technologii

NOP

Nowe Punkty Obiektowe

OS Systemy

Operacyjne

PCAP Umiejętności Programistów

PCON Ciągłość Personelu

PDIF Złożoność Sprzętu

PERS Umiejętności Załogi

PEXP Doświadczenie z Platformą

PL Linia

Produkcyjna

PM Roboczo-miesiąc

PREX Doświadczenie Załogi

PROD Współczynnik Wydajności Produkcji

PVOL Zmienność Platformy

RCPX Niezawodność i Złożoność Produktu

RELY Wymagana

Niezawodność Oprogramowania

RUSE

Wymaganie tworzenia kodu do ponownego wykorzystania

RVOL Zmienność wymagań

SCED Wymagany

harmonogram

prac

SECU Tajne

Aplikacje

SEI Instytut

Inżynierii Oprogramowania

SITE równoległa praca w wielu różnych miejscach

SLOC

Źródłowe Linie Kodu

STOR Ograniczenie

Dostępnej Pamięci

T&E

Testy i Ocena Działania

SU %nakładu prac przy ponownym użyciu kodu pochłonięta na przyswajanie kodu

TIME Ograniczenie

Czasu

Działania

TOOL Wykorzystanie

Narzędzi Informatycznych

TURN Czas

Kompilacji

USAF/ESD Oddział Systemów Elektronicznych Sił Powietrznych Stanów Zjednoczonych

VEXP Doświadczenie z „Maszyną Wirtualną”

VIRT Zmienność Maszyny Wirtualnej

VMVH Zmienność Maszyny Wirtualnej: Hosta

VMVT Zmienność Maszyny Wirtualnej: Wyniku


Wyszukiwarka

Podobne podstrony:
2 Przychody i koszty przedsiebiorstwaid 20694 ppt
Przedstawianie Informacji w komputerze wprowadzenie2010
Rachunkowość, RACHUNKOWOŚĆ, KOSZTY PRZEDSIĘBIORSTWA STANOWIĄ
przedsionek informacja
koncepcja metody oceny ryzyka w przedsiewzieciach informatyc WHX4Y2MTPMKXMSFMSNK4ZOD2YPTTQAW7YZ6DLOI
27(45) Zarządzanie przedsięwzięciem informatycznym
Prezentacja = Produkcja i koszty w przedsiębiorstwie
WP Diagnoza przedszkolna Informacja o gotowości dziecka do podjęcia nauki szkolnej, ilustracje warzy
Koszty w przedsiebiorstwie rynk Nieznany
PIWZ- KOLO, Studia Zarządzanie PWR, Zarządzanie PWR I Stopień, VI Semestr, Przedsięwzięcia informaty
Koszty w przedsiebiorstwie (14 stron), studia UMK, Podstawy ekonomii (mikro i makro)
koszty w przedsiębiorstwie, [Finanse]
Koszty w przedsiębiorstwie, Finanse Publiczne
cenzurka o gotowosci szkolnej przedszkolnej, INFORMACJA O GOTOWOŚCI DZIECKA
Zadania Szacowanie kosztu kapitału przedsiębiorstwa 2012, UE ROND - UE KATOWICE, Rok 2 2011-2012, se
Ekonomia 11 Koszty Przedsiębiorstwa, [.] Prawo

więcej podobnych podstron