630 likes | 838 Views
Program ų keitimas ir evoliucijos dėsniai. Prof. Robertas Damaševičius , robertas.damasevicius@ktu.lt Prof. Vytautas Š tuikys , v ytautas.stuik ys@ktu.lt. Tikslai. Programų keitimo strategijos P rogramų priežiūros principai per keitim o sąvoką Atviro kodo sistem ų evoliucija
E N D
Programų keitimas ir evoliucijos dėsniai Prof. Robertas Damaševičius,robertas.damasevicius@ktu.lt Prof. Vytautas Štuikys,vytautas.stuikys@ktu.lt
Tikslai • 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
Terminija • Keitimas (change) - programinės įrangos sistemos keitimo proceso valdymas • Modifikavimas (modification) • Adaptavimas/priderinimas (adaptation) • 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ū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 neiš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 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 -> paskirstytą) • 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 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 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ų 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 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 į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
Kas yra programa? • Mąstymo sukurtas techninis artefaktas • Vykdomoji matematinė formulė • Įrankis (paslauga) • Tekstas atspindintis tikrovę • Informacija PĮ keitimas ir evoliucijos dėsniai
Kas yra programa? • Software systems are designed, constructed and used by people. • They are components in larger socio-technical IS, which include technological and social structures. • Software design process is not purely a technical task as well, but also a social process embedded within organizational and cultural structures. • Software programmers collaborate in teams and groups embedded within larger organizations. These social structures influence and govern their work behaviour and work products • Open source systems (OSSS): many programmers from different backgrounds interact, share their ideas and contribute towards the development and improvement PĮ keitimas ir evoliucijos dėsniai
PĮevoliucijostyrimai • Source code of a program at any point in time is the result of many different changes performed in the past, usually by several developers • Free, open source software is providing huge quantities of data suitable to be used in the studies of software evolution. • Development process can be studied from the data available in public source code repositories. • Recovery of essential details about an existing software system is sometimes called software archaeology which is an emerging direction in knowledge engineering and program comprehension. PĮ keitimas ir evoliucijos dėsniai
Atvito kodo sistemų evoliucija • Open-source software systems are mostly developed based on a less strict control and management model. • Usually started by a single developer, who wants to solve his problem and makes the solution available to others for free. • It often attracts many users, some of whom may become co-developers by extending or improving the initial system. • Evolution of a system begins in response to the needs of users and is carried out by contributing co-developer • Spontaneous collaboration is promoted and backed by a decentralized developer community using web-based development systems such as SourceForge PĮ keitimas ir evoliucijos dėsniai
Evoliucijos mechanizmai • Evolution process is governed by some basic evolutionary mechanisms that also apply to the natural world. • 1) mechanisms that increase variation in software, and • 2) mechanisms that decrease variation. • All these mechanisms are influenced by psychological, intellectual, social and cultural, economic and business factors, which may act in any direction. • For example, standardization as a business policy decreases variation, whereas product family-based model of software development increases variation. PĮ keitimas ir evoliucijos dėsniai
PĮ evoliucijostyrimotikslai • Establish the presence of stages in software evolution and to determine what exactly triggers them. • Software evolution = slow incremental change ? • Many software evolution phases • Punctuations or transitions = breakpoints (or junction points) between different phases which represent significant changes in the evolving system, and separate two periods of stability (or equilibrium) PĮ keitimas ir evoliucijos dėsniai
Šuolinė evoliucija • Within equilibrium periods, a system’s architecture stays relatively stable, and it remains capable of accommodating forecasted changes in requirements.Changes are small and incremental, and they rarely violate the principles imposed by the architecture. • Architecture may exhibit symptoms of gradual decay, erosion or drift which are normally caused by the accumulating effects of maintenance activities, such as bug fixes and feature modifications. • The system architecture needs to be evolved to counter such erosion. This can occur through gradual software changes such as corrections and code cleanups, or by sudden qualitative change which occurs in a short time. PĮ keitimas ir evoliucijos dėsniai
Evoliucijos etapai (fazės) PĮ keitimas ir evoliucijos dėsniai
Programų klasifikacija evoliucijos požiūriu • S-programos • P-programos • E-programos čia: S – specification; P – problem; E - environment (embedding) PĮ keitimas ir evoliucijos dėsniai
S-tipo programa • Programa yra teisinga ta parsme, kad formaliai atitinka savo specifikaciją • Pvz.: • Matematinės bibliotekos PĮ keitimas ir evoliucijos dėsniai
S-typo programa PĮ keitimas ir evoliucijos dėsniai
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
P-type program evolution PĮ keitimas ir evoliucijos dėsniai
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
E-type program evolution PĮ keitimas ir evoliucijos dėsniai
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
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 PĮ keitimas ir evoliucijos dėsniai
Programų 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) • 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‘o 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‘o 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‘o 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‘o 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‘o 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ą.
Lehmanodė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 increasesunless work is done to maintain or reduce it • III 1974 • Self Regulation • Global E-type system evolution processes are self-regulating
Lehmano dėsnių istorija • IV 1978 • Conservation of Organisational Stability • Average global activity rate in an E-type process tendsto remain constant over periods or segments of systemevolution over its lifetime • V 1978 • Conservation of Familiarity • In general, the average incremental growth (long termgrowth 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 overthe system lifetime • Funkcinės sistemų galimybės turi būti nuolatos didinamos norint patenkinti vartotojo reikalavimus sistemos gyvavimo cikle
Tą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-typesystems 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ų) • Atkreiptinas dėmesys į E-tipo sistemas
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
EmpiriniaiLehmano dėsniųtyrimai • 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
Linux • 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
1 dėsnis: Nuolatinis keitimasis • Failų skaičius PĮ keitimas ir evoliucijos dėsniai
2 dėsnis: Sudėtingumo augimas PĮ keitimas ir evoliucijos dėsniai
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
4 dėsnis: pastangų stabilumo dėsnis PĮ keitimas ir evoliucijos dėsniai
5 dėsnis: PĮ keitimas ir evoliucijos dėsniai
6 dėsnis: Nuolatinis augimas PĮ keitimas ir evoliucijos dėsniai
6 dėsnis: Nuolatinis augimas PĮ keitimas ir evoliucijos dėsniai
7 dėsnis: mažėjanti kokybė PĮ keitimas ir evoliucijos dėsniai
Linux ir Lehmano dėsniai: suvestinė PĮ keitimas ir evoliucijos dėsniai