Program ų keitimas ir evoliucijos dėsniai
-
Upload
ria-pickett -
Category
Documents
-
view
65 -
download
0
description
Transcript of Program ų keitimas ir evoliucijos dėsniai
ProgramProgramų keitimas ir evoliucijos dėsniaių keitimas ir evoliucijos dėsniai
Prof. Robertas Damaševičius, [email protected]
Prof. Vytautas Štuikys, [email protected]
TikslaiTikslai
• Programų keitimo strategijos• Programų priežiūros principai per keitimo sąvoką• Atviro kodo sistemų evoliucija• Programų klasifikacija• PĮ evoliucija• PĮ evoliucijos (Lehmano) dėsniai
TerminijaTerminija
• Keitimas (change) - programinės įrangos sistemos keitimo proceso valdymas
• Modifikavimas (modification) –keitimas siekiant ištaisyti klaidas arba pagerinti charakteristikas
• Adaptavimas/priderinimas (adaptation) – keitimas siekiant pritaikyti prie pasikeitusių išorės reikalavimų
• Evoliucija/tobulinimas (evolution) – palaipsniniai PĮ pokyčiai, kurie veda prie pageidaujamo rezultato
• Evoliucionuojanti sistema – sistema, kuris sugeba keistis savo gyvavimo ciklo metu
Programų priežiūraProgramų priežiūra
• Programos modifikavimas po to, kai ji jau buvo pradėta naudoti
• Paprastai nereikalauja esminių sistemos architektūros pakeitimų
• Pakeitimai yra realizuojami modifikuojant egzistuojančius komponentus arba pridedant naujus komponentus į sistemą
Programų keitimas yra Programų keitimas yra neišvengiamasneišvengiamas
• Atsiranda nauji reikalavimai naudojamoms programoms
• Keičiasi verslo aplinka• Pastebėtos klaidos turi būti ištaisomos• Sistema turi veikti su nauja įranga• Greitis arba patikimumas turi būti didinamas• Evoliucija būdinga didelėms programoms
– Dydis virš 50 KLOC– Programos, kurių kūrimas buvo valdomas
3 programų keitimo strategijos3 programų keitimo strategijos
• Programų priežiūra– pakeitimai yra atliekami atsižvelgiant į pasikeitusius
reikalavimus, tačiau bazinė programos struktūra išlieka stabili
• Architektūros transformacija– Modifikuojama sistemos architektūra (pvz: centralizuota ->
paskirstyta)
• Programų rekonstravimas– naujas funkcionalumas nepridedamas, tačiau sistema
reorganizuojama rekonstruojama, atseit keičiama architektūra, kad būtų galima palengvinti būsimus pakeitimus
• Šios strategijos gali būti taikomos kartu arba atskirai
Priežiūros numatymasPriežiūros numatymas
• Susijęs su sistemos dalių, kurios gali sukelti problemas ir turėti aukštus priežiūros kaštus, įvertinimu– Pakeitimų realizavimas sumažina sistemos
prižiūrimumą– Priežiūros kaštai priklauso nuo pakeitimų skaičiaus
Priežiūros numatymasPriežiūros numatymas
• Prižiūrimumo numatymas– kurios sistemos dalys bus labiausiai keičiamos?– Kurių dalių priežiūra bus brangiausia?
• Sistemos pakeitimų numatymas– kiek galima tikėtis sistemos pakeitimo užklausų?
• Pakeitimo kaštų numatymas– kokie bus sistemos priežiūros kaštai per
metus/gyvavimo ciklą?
Pakeitimų numatymasPakeitimų numatymas
• Norint numatyti pakeitimų skaičių, reikia gerai suprasti sistemos ryšius su aplinka
• Tampriai surištos sistemos turi būti keičiamos kiekvieną kartą, kai pasikeičia jų aplinka
• Faktoriai– sistemos sąsajų skaičius ir sudėtingumas– Kintančių sistemos reikalavimų skaičius– naudojami verslo procesai
Sudėtingumo matavimasSudėtingumo matavimas
• Įvertinus sistemos komponentų sudėtingumą, galima numatyti sistemos prižiūrimumą
• Daugiausiai priežiūros ir pastangų dažniausiai yra skiriama tik nedidelei daliai sistemos komponentų
• Prižiūrimosios programos sudėtingumas priklauso nuo– valdymo struktūrų sudėtingumo– Duomenų struktūrų sudėtingumo– Procedūrų ir modulių dydžio
Proceso įvertinimasProceso įvertinimas
• Procesų charakteristikos gali padėti įvertinti prižiūrimumą– užklausų taisymui skaičius– vidutinis laikas reikalingas įtakos analizei– vidutinis laikas reikalingas pokyčio užklausai realizuoti– Laukiančių pokyčio užklausų skaičius
• Jei šie dydžiai didėja, sistemos prižiūrimumas mažėja
PĮ keitimas ir evoliucijos dėsniai 12
Kas yra programa?
• Mąstymo sukurtas techninis artefaktas• Vykdomoji matematinė formulė• Įrankis (paslauga)• Tekstas atspindintis tikrovę• Informacija
Kas yra programa?
• Programas kuria, rašo ir naudoja žmonės.
• Programos yra didesnių sistemų (ne tik technologinių, bet ir socialinių) komponentai.
• Programų kūrimo procesas yra ne tik techninis, bet ir socialinis procesas susietas su organizacinėmis struktūromis.
• Programuotojai bendradarbiauja grupėse, kurios yra didesnės organizacijos dalis. Šios socialinės struktūros įtakoja jų darbo procesus ir rezultatus.
• Atviro kodo sistemose daug programuotojų bendradarbiauja, dalinasi idėjomis ir prisideda prie jų kūrimo ir tobulinimo
PĮ keitimas ir evoliucijos dėsniai 13
PPĮĮ evoliucijos tyrimai evoliucijos tyrimai
• Programos išeities tekstas yra daugelio programuotojų praeityje atliktų keitimų rezultatas
• Atviro kodo programos yra didelio kiekio informacijos, kurią galima naudoti tiriant programų evoliucijos procesus, šaltinis
• Programų kūrimo procesai gali būti tiriami analizuojant atviro kodo programų saugyklas
• Programų sistemos praeities keitimų tyrimas kartais vadinamas programinės įrangos archaeologija – atskira žinių inžinerijos šaka
PĮ keitimas ir evoliucijos dėsniai 14
Atviro kodo sistemų evoliucijaAtviro kodo sistemų evoliucija
• Atviro kodo sistemos kuriamos pagal laisvesnį PĮ kūrimo vadybos modelį.
• Paprastai proceso pradžioje yra vienas kūrėjas, kuris sprendžia savo problemą ir paviešina savo sprendimą kitiems nemokamai.
• Sprendimas pritraukia kitus vartotojus, iš kurių kai kurie gali prisidėti plėsdami ir tobulindami pradinę sistemą.
• Sistemos evoliucija prasideda kaip atsakas į vartotojų reikalavimus
• Spontanišką kūrėjų bendradarbiavimą palaiko decentralizuotos kūrėjų bendruomenės ir internetinės atviro kodo saugyklų platformos
PĮ keitimas ir evoliucijos dėsniai 15
Evoliucijos mechanizmaiEvoliucijos mechanizmai
• Evolucijos procesas paklūsta paprastiems mechanizmams, kuriems analogijų galima rasti gyvojoje gamtoje:
• 1) variantiškumą didinantys mechanizmai, ir • 2) variantiškumą mažinantys mechanizmai. • Pvz., standartų laikymasis kaip veiklos strategija mažina
variantiškumą, o programų šeimynų kūrimo modelis variantiškumą didina.
• Šiuos mechanizmus taip pat įtakoja psichologiniai, intelektualiniai, socialiniai ir kultūriniai, ekonominiai ir verslo faktoriai.
PĮ keitimas ir evoliucijos dėsniai 16
PPĮ eĮ evoliucijos tyrimo tikslaivoliucijos tyrimo tikslai
• Nustatyti programų evoliucijos etapus ir perėjimų iš vieno etapo į kitą priežastis
• Programų evoliucija – lėtas palaipsninis kitimo procesas ?• Evoliucijos procesas gali turėti daug etapų• Perėjimo (lūžio) taškai tarp skirtingų etapų atspindi
reikšmingus evoliucionuojančios sistemos pokyčius ir skiria du santykinio stabilumo (ar pusiausvyros) periodus
PĮ keitimas ir evoliucijos dėsniai 17
Šuolinė evoliucijaŠuolinė evoliucija
• Stabilumo periodų metu, sistemos architektūra išlieka stabili ir gali tinkamai reaguoti į numatomus reikalavimų pokyčius. Pokyčiai yra maži ir nepažeidžia sistemos architektūrinių apribojimų.
• Evoliucijos eigoje PĮ architektūra palaipsniui degraduoja (dreifuoja) dėl atliekamų priežiūros veiksmų (klaidų ištaisymo arba funkcionalumo modifikavimo)
• Siekiant kovoti su architektūros degradavimu, architektūra turi būti tobulinama. Tai gali būti atliekama palaipsniui (kodo valymas), arba staiga, kai kokybinis pokytis įvyksta per trumpą laiką.
PĮ keitimas ir evoliucijos dėsniai 18
Evoliucijos etapai (fazės)Evoliucijos etapai (fazės)
PĮ keitimas ir evoliucijos dėsniai 19
PĮ keitimas ir evoliucijos dėsniai 20
Programų klasifikacija evoliucijos požiūriu
• S-programos
• P-programos
• E-programos
čia:
S – specifikacija;
P – problema;
E – aplinka (environment)
PĮ keitimas ir evoliucijos dėsniai 21
S-tipo programa
• Programa yra teisinga ta parsme, kad formaliai atitinka savo specifikaciją
• Pvz.:• Matematinės bibliotekos
PĮ keitimas ir evoliucijos dėsniai 22
S-tipo programa
Formal problem
formulation
Solution
PROGRAM
Real world
Manage creation
Provides
Can be related to
Can be interesting to
dominti
S-type
PĮ keitimas ir evoliucijos dėsniai 23
P-tipo programa
• Sprendžia problemas, kur programos vykdymo teisingumą (korektiškumą) apsprendžia vartotojas
• Specifikuoti neįmanoma• Sprendimas gaunamas įteratyviai derinant su
vartotoju
PĮ keitimas ir evoliucijos dėsniai 24
P-type program evolution
Requirement specification
Solution PROGRAM
real world
P-type
Change
Compa- rison
World abstract model
Change
PĮ keitimas ir evoliucijos dėsniai 25
E-tipo programa
• E-tipo programos sprendžia realaus pasaulio problemas
• Sistema yra neatskiriama savo veikimo aplinkos dalis
• Aplinka apsprendžia programos vykdymo rezultatus
• Keičiantis aplinkai, programa turi būti nuolat atnaujinama
PĮ keitimas ir evoliucijos dėsniai 26
E-type program evolution
Requirement specification
Model
Real world
E-type
World abstract model
Change
PROGRAM
PĮ keitimas ir evoliucijos dėsniai 27
Grįžtamasis ryšys
• PĮ evoliucija neįmanoma be grįžtamojo ryšio• PĮ evoliucijos procesai yra daugiaagenčiai,
daugiasluoksniai, daugiacikliai procesai (systemos) su grįžtamuoju ryšiu
PĮ keitimas ir evoliucijos dėsniai 28
PĮ neapibrėžtumo principas
• PĮ pagrista tam tikro ribotu skaičiumi prielaidų, kurios atsispindi programoje
• Pasikeitus aplinkos sąlygooms, prielaidos nustoja galioti
• E-sistema gali būti pagrįsta tam tikru negaliojančių prielaidų skaičiumi
• Todėl E-tipo programos vykdymo rezultatai gali būti neprognozuojami
Programų evoliucijos dinamikaProgramų evoliucijos dinamika
• Nagrinėja sistemų keitimo procesus• Lehman (8-me XX a dešimtmetyje) atliko
empirinį tyrimą ir pasiūlė 5 empirinius dėsnius, • Tinka visoms besivystančioms sistemoms,
tačiau labiau tinka didelių organizacijų kuriamoms didelėms sistemoms
• Vėliau Lehman’as suformulavo dar 3 dėsnius
Programų evoliucijos dėsniai (1)Programų evoliucijos dėsniai (1)
• 1. Nuolatinių pokyčių dėsnis• 2. Augančio sudėtingumo dėsnis• 3. Didelės programos evoliucijos dėsnis• 4. (Organizacinio) stabilumo išsaugojimo dėsnis• 5. Žinojimo (apie pakeitimus) išsaugojimo dėsnis• ***************************************• 6. Didėjančio funkcionalumo dėsnis• 7. Mažėjančios kokybės dėsnis• 8. Tobulinimo procesų grįžtamojo ryšio dėsnis
Lehman‘Lehman‘o dėsniai: 1-asis dėsniso dėsniai: 1-asis dėsnis
– 1. The law of continuing change: A program that is used in a real-world environment necessarily must change or become progressively less useful in that environment
– Reali programa duotoje aplinkoje būtinai privalo keistis arba ji laipsniškai darysis vis mažiau naudinga
Lehman‘Lehman‘o dėsniai: 2-asis dėsniso dėsniai: 2-asis dėsnis
– 2. The law of increasing complexity: As an evolving program changes, its structure tends to become more complex. Extra resources must be devoted to preserving and simplifying the structure.
– Kai tobulinamoji programa keičiama, jos struktūra tampa vis sudėtingesnė. Reikia papildomų resursų, kad būtų galima išsaugoti ir supaprastinti tą struktūrą
Lehman‘Lehman‘o dėsniai: 3-asis dėsniso dėsniai: 3-asis dėsnis
– 3. The law of large program evolution: Program evolution is a self-regulating process. System attributes such as size, time between releases and the number of reported errors are approximately invariant for each system release.
– Programos tobulinimas yra savireguliuojantis procesas: sistemos atributai (dydis, laikas tarp išleidimo versijų, pastebėtų klaidų skaičius) apytikriai yra invariantiški kiekvienai versijai
Lehman‘Lehman‘o dėsniai: 4-asis dėsniso dėsniai: 4-asis dėsnis
– 4. The law of organizational stability: Over a program's lifetime, its rate of development is approximately constant and independent of the resources devoted to system development.
– Programos plėtros greitis per josios gyvavimo ciklą yra apytikriai pastovus ir nepriklauso nuo skiriamų resursų.
Lehman‘Lehman‘o dėsniai: 5-asis dėsniso dėsniai: 5-asis dėsnis
– 5. The law of conservation of familiarity: Over the lifetime of a system, the incremental system change in each release is approximately constant.
– Inkrementinis sistemos keitimas kiekvienoje pateiktyje (versijoje) yra apytikriai pastovus per visą sistemos gyvavimo ciklą.
Lehmano dLehmano dėsnių istorijaėsnių istorija
• I 1974• Continuing Change • E-type systems must be continually adapted else they
become progressively less satisfactory in use• II 1974• Increasing Complexity• As an E-type system is evolved its complexity increases
unless work is done to maintain or reduce it• III 1974• Self Regulation • Global E-type system evolution processes are self-
regulating
Lehmano dLehmano dėsnių istorijaėsnių istorija
• IV 1978 • Conservation of Organisational Stability• Average global activity rate in an E-type process tends to remain
constant over periods or segments of system evolution over its lifetime
• V 1978 • Conservation of Familiarity• In general, the average incremental growth (long term growth rate)
of E-type systems tends to decline• Nauji dėsniai, VI 1991• Continuing Growth • The functional capability of E-type systems must be continually
enhanced to maintain user satisfaction over the system lifetime• Funkcinės sistemų galimybės turi būti nuolatos didinamos
norint patenkinti vartotojo reikalavimus sistemos gyvavimo cikle
TąsaTąsa
• VII 1996• Declining Quality (Kokybės mažėjimo dėsnis) unless rigorously
adapted to take into account changes in the operational environment, the quality of E-type systems will appear to be declining
• Tobulinant sistemą jos kokybė turi tendenciją blogėti. • VIII 1996 • Feedback System (grįžtamojo ryšio dėsnis) (Recognised 1971,
formulated 1996)• E-type evolution processes are multi-level, multi-loop, multi-agent
feedback systems • E-tipo programų tobulinimo procesai yra daugiasluoksnės,
daugiaciklės ir daugiaagentinės grįžtamojo ryšio sistemos (valdomas daugelių agentų)
Lehmano dėsnių suvestinėLehmano dėsnių suvestinė
1) Nuolatinių pokyčių
2) Augančio sudėtingumo
3) Didelės programos evoliucijos
4) Organizacinio stabilumo
5) Žinojimo (apie pakeitimus) išsaugojimo
6) Funkcinių galimybių nuolatinio augimo
7) Kokybės mažėjimo dėsnis
8) Evoliucinių procesų grįžtamojo ryšio dėsnis
Empiriniai Lehmano dEmpiriniai Lehmano dėėsnisniųų tyrimaityrimai
• Dažniausiai tiriamos atviro kodo sistemos, kurių versijų išeities tekstai saugomi atviro kodo saugyklose
• Linux, ...• A. Israeli, D.G. Feitelson. The Linux kernel as a
case study in software evolution. Journal of Systems and Software, 83(3), 2010, 485–501.
PĮ keitimas ir evoliucijos dėsniai 40
LinuxLinux
• Pirma versija – 1994 m• Daugiau nei 800 versijų
– x.0, x.2, x.4 ... – stabilios– x.1, x.3, x.5 ... – testavimo versijos
• Keli tūkstančiai programuotojų• Realizuota C kalba• E-tipo programos pavyzdys
PĮ keitimas ir evoliucijos dėsniai 41
1 dėsnis: Nuolatinis keitimasis 1 dėsnis: Nuolatinis keitimasis
• Failų skaičius
PĮ keitimas ir evoliucijos dėsniai 42
2 dėsnis: Sudėtingumo augimas2 dėsnis: Sudėtingumo augimas
PĮ keitimas ir evoliucijos dėsniai 43
3 dėsnis: savireguliacijos dėsnis 3 dėsnis: savireguliacijos dėsnis
• Interpretuojamas kaip tam tikri augimo šablonai ar tendencijos, pasireiškiančios per ilgą laiką
PĮ keitimas ir evoliucijos dėsniai 44
4 dėsnis: pastangų stabilumo 4 dėsnis: pastangų stabilumo dėsnisdėsnis
PĮ keitimas ir evoliucijos dėsniai 45
6 dėsnis: Nuolatinis augimas6 dėsnis: Nuolatinis augimas
PĮ keitimas ir evoliucijos dėsniai 46
6 dėsnis: Nuolatinis augimas6 dėsnis: Nuolatinis augimas
PĮ keitimas ir evoliucijos dėsniai 47
7 dėsnis: mažėjanti kokybė7 dėsnis: mažėjanti kokybė
PĮ keitimas ir evoliucijos dėsniai 48
Linux ir Lehmano dėsniai: suvestinėLinux ir Lehmano dėsniai: suvestinė
PĮ keitimas ir evoliucijos dėsniai 49
TurskiTurski** modelis modelis
• Aprašomas iteracine lygtimi:
• Lygties sprendinys:čia:
y – sistemos modulių skaičius,
E – sistemos konstanta
• Sistemai didėjant ir sudėtingėjant jos augimas paprastai sulėtėja
PĮ keitimas ir evoliucijos dėsniai 50
21
i
iiy
Eyy
constExy 3 3
* W. M. Turski. Reference model for smooth growth of software systems. IEEE Trans. on Software Engineering, 22(8), August 1996.
PĮ keitimas ir evoliucijos dėsniai 51
Growth trends
declining growth rate trends appropriately modelled by an inverse square model of the form Si+1 = Si + E/S2iwhere Si is the predicted size of the release with sequence number ‘i’, with size measured in appropriate units and E is a model parameter as determined from data on the growth history of the system
Turski modelisTurski modelis
• Tikrovėje: negalioja atviro kodo sistemoms• Pvz., Linux kernelio augimas
PĮ keitimas ir evoliucijos dėsniai 52
PĮ evoliucijos modeliavimas PĮ evoliucijos modeliavimas naudojant tinklų teorijos elementusnaudojant tinklų teorijos elementus
• S. Valverde, R. V. Solé. Logarithmic growth dynamics in software networks. Europhys. Lett., 72 (5), p. 858 (2005) http://iopscience.iop.org/0295-5075/72/5/858/fulltext/
PĮ keitimas ir evoliucijos dėsniai 53
Programa Programa = tinklas= tinklas
• Mazgai – programos komponentai (funkcijos, klasė)
• Ryšiai – komponentų iškvietimas, kintamųjų ir tipų naudojimas, paveldėjimas, ...
PĮ keitimas ir evoliucijos dėsniai 54
Tinklo savybėsTinklo savybės
PĮ keitimas ir evoliucijos dėsniai 55
Evoliucijos modeliavimasEvoliucijos modeliavimas
• XFree86 - provides a client/server interface between the display hardware and the desktop environment for Unix/Linux
PĮ keitimas ir evoliucijos dėsniai 56
Atviro kodo sistemos: 5122 Atviro kodo sistemos: 5122 projektų tyrimasprojektų tyrimas
PĮ keitimas ir evoliucijos dėsniai 57
DESHPANDE, A., AND RIEHLE, D. 2008. The Total Growth of Open Source. In ProceedingsFourth Conference on Open Source Systems (OSS 2008). Springer Verlag, 2008, 197-209.
Evoliucijos vizualizavimasEvoliucijos vizualizavimas
PĮ keitimas ir evoliucijos dėsniai 58
Evoliucijos matricaEvoliucijos matrica
PĮ keitimas ir evoliucijos dėsniai 59
Evoliucijos animavimasEvoliucijos animavimas
• Gource• https://code.google.com/p/gource/ • code_swarm• http://vis.cs.ucdavis.edu/~ogawa/codeswarm/ • http://code.google.com/p/codeswarm
PĮ keitimas ir evoliucijos dėsniai 60
Evoliucijos animacijaEvoliucijos animacija (su Gource) (su Gource)
• Git:http://www.youtube.com/watch?v=GTMC3g2Xy8c
• Python:http://www.youtube.com/watch?v=cNBtDstOTmA
• Symphony2: PHP frameworkhttp://www.youtube.com/watch?v=164Z1gyqk6M
• GNU kompiliatoriushttps://www.youtube.com/watch?v=ZEAlhVOZ8qQ
• LINUXhttps://www.youtube.com/watch?v=pOSqctHH9vY
PĮ keitimas ir evoliucijos dėsniai 61
Evoliucijos animacijos (su Evoliucijos animacijos (su code_swarm)code_swarm)
• Apache• https://vimeo.com/1076588• Python• https://vimeo.com/1093745• Eclipse• https://vimeo.com/1130828
PĮ keitimas ir evoliucijos dėsniai 62
IšvadosIšvados
• Lehman’o dėsniai gėrai aprašo didelių, uždarų, gerai valdomų projektų evoliuciją
• Atviro kodo sistemose veikia kiti dėsniai: socialiniai tinklai, saviorganizacija, vadybos beveik nėra
• Todėl atviro kodo sistemos gali augti žymiai greičiau (eksponentiškai) nei uždaros sistemos
PĮ keitimas ir evoliucijos dėsniai 63
LiteratūraLiteratūra
• Nazim H. Madhavji et al. Software evolution and feedback : theory and practice. John Wiley & Sons Ltd, 2006.
PĮ keitimas ir evoliucijos dėsniai 64