You are on page 1of 47

Programų priežiūra ir tobulinimas

(T120M013)

Modulio struktūra ir
Įvadas

Prof. R. Damaševičius
robertas.damasevicius@ktu.lt

1
Modulio tikslai

• Žinoti ir suprasti
– išplėstinį programinės įrangos gyvavimo ciklą
– pagrindines programų priežiūros sąvokas ir rolę PĮ
gyvavimo cikle
– paveldėtinių (liktinių) sistemų problematiką ir
bendrąsias charakteristikas (metrikas),
– programų evoliucijos (Lehman’o) dėsnius

Tema_1: Įvadas ir struktūra 2


Modulio tvarkaraštis

• Paskaitos
– Ketvirtadieniais, 13.30 – 15.00, B21-305
• Laboratoriniai darbai
– Kęstutis Valinčius, kestutis.valincius@ktu.lt

Tema_1: Įvadas ir struktūra 3


Modulio turinys

• Paskaitos
– Programų priežiūros ir evoliucijos (keitimo) teoriniai
aspektai
• Laboratoriniai darbai
– Atviro kodo sistemos prižiūrimumo charakteristikų ir
evoliucijos tyrimas
• Seminaras
– Referato pristatymas

Tema_1: Įvadas ir struktūra 4


Paskaitų turinys (1)

1. Programų priežiūros prielaidos, poreikis, objektas, tikslai,


kontekstas, struktūra ir metodika
2. SWEBOK koncepcijos aprašas programų priežiūrai:
sąvokos, procesai, problemos ir metodai
3. Programų ir jų sistemų vertinimo metrikos
4. Programų prižiūrimumas ir priežiūros matavimai, kokybė
5. Programų priežiūros kaina ir jos įvertinimo metodai
6. Programų keitimas (S-, P-, E-programos) ir Lehman‘o
empiriniai evoliucijos dėsniai, priežiūros planavimas

Tema_1: Įvadas ir struktūra 5


Paskaitų turinys (2)

7. Programų suvokimas ir priežiūra


8. Programų rekonstrukcija ir apgrąžos inžinerija, dokumentacija
priežiūrai
9. Paveldėtosios (liktinės) sistemos. Jų struktūros, įvertinimas ir
priežiūra
10. Pakartotinė panauda, programų šeimynos ir priežiūra.
Konfigūracijų valdymas

Paskaitų skaidrės: MOODLE

Tema_1: Įvadas ir struktūra 6


Laboratorinių darbų turinys

1. Programų kodo prižiūrimumo charakteristikų tyrimas


2. Atviro kodo programų sistemos evoliucinio dėsningumų
tyrimas

Aprašymai ir medžiaga: MOODLE

Tema_1: Įvadas ir struktūra 7


Atsiskaitymai

• Lab. darbai - 20 %
• Referatas - 30 %
• Referato pristatymas (žodinis praqnešimas) - 20 %
• Egzaminas raštu (iš teorinių paskaitų) – 30 %

Tema_1: Įvadas ir struktūra 8


Literatūra

• P. Grubb & A.A Takang: “Software Maintenance Concepts and Practice”;


Second Edition, World Scientific Publishing (UK) Ltd; 2003
• T.M. Picorski. SWEBOK Knowledge Area Description for Software Evolution
and Maintenance http://www.computer.org/portal/web/swebok
• Tripathy, Priyadarshi. Software evolution and maintenance : a practitioner’s
approach, 2015. (KTU biblioteka, D215212)
• Papildomai:
– Tom Mens (Editor), Serge Demeyer (Editor), Software Evolution, Springer, 2008.
– G. Fisher and E. Giaccardi, Meta-Design: A Framework for the Future and End-
User Development. In Liberman, et al. (eds.) End User Development-Empowering
People. Kluwer AP, 2004
– ir papildomi šaltiniai paskaitų skaidrėse ...

Tema_1: Įvadas ir struktūra 9


Programų priežiūra ir tobulinimas
(T120M013)

Įvadas

Prof. R. Damaševičius
robertas.damasevicius@ktu.lt

10
Priežiūra ir tobulinimas

• "There is no such thing as a 'finished'


computer program“
(M. Lehman)

• Programų priežiūra siejama su programinės įrangos (PĮ) sistemų


keitimu po atidavimo eksploatavimui.
• Tokios sistemos paprastai vadinamos paveldėtosiomis arba
liktinėmis (legacy systems). Jos – kurso objektas
• Visi PĮ artifaktai (nuo reikalavimų iki testavimo ir dokumentacijos)
gali būti keičiami
• PĮ produktai yra “lankstūs” (“soft”) ir dėlto lengviau keičiami negu
“nelanksčių” (“hard”) disciplinų objektai (pvz., aparatūros)
• PĮ priežiūra daugiau skirta eliminuoti klaidas negu gerinti
charakteristikas (bet ir tai priklauso priežiūrai)

Tema_1: Įvadas ir struktūra 11


Prgramų priežiūros standartai

• ISO/IEC 14764 “Software Maintenance”


• ISO/IEC 12207 “Information Technology Software Life
Cycle Processes”
• ANSI/IEEE 1042 “Software Configuration Management”
• IEEE 1219 “Software Maintenance”
• ISO/IEC 9126 “Information technology – Software
product evaluation – Quality characteristics and
guidelines for their use”

SWEBOK priežiūros modelis 12


Programų Priežiūros apibrėžimai

• Šaltiniai: standartai
– ISO/IEC 14764-2006, Software Engineering -
Software Life Cycle Processes – Maintenance
– IEEE/EIA 12207-2017 - Systems and software
engineering -- Software life cycle processes

Tema_1: Įvadas ir struktūra 13


1-sis apibrėžimas

• ISO/IEC 14764-2006, the international standard for


software maintenance
• describes an iterative process for managing and
executing software maintenance activities
• emphasizes the Maintenance Process: maintainability of
software products; need for maintenance service
models; and need for a maintenance strategy and plan.
• Šis standartas akcentuoja priežiūros aspektus dar iki
produkto pateikimo galutiniam vartotojui, pvz. priežiūros
planavimą iki produkto pateikimo

Tema_1: Įvadas ir struktūra 14


2-sis apibrėžimas

• IEEE/EIA 12207 standard for software life cycle processes


• applies to the acquisition of software systems, products and
services, to the supply, development, operation, maintenance, and
disposal of software products and the software portion of any
system
• It is seen as a process of “modification to code and associated
documentation due to a problem or the need for improvement. The
objective is to modify the existing software product while preserving
its integrity”
• Kodo ir su juo susijusios dokumentacijos modifikavimas dėl tam
tikros problemos ar dėl kodo pagerinimo poreikio. Modifikavimo
tikslas – keisti esamą PĮ produktą ir tuo pačiu išsaugoti produkto
integralumą

Tema_1: Įvadas ir struktūra 15


Projektavimas prieš priežiūrą

Tema_1: Įvadas ir struktūra 16


Kas yra PĮ priežiūra

• Priežiūros veiklos ir procesai vyksta PĮ vartojimo


(naudojimo) fazėje
• Viena iš programų priežiūros aktualumo
priežasčių yra ta, kad priežiūros kaina yra labai
didelė
– Sistemos darbas turi būti užtikrinamas nepaisant
priežiūros veiksmų

Tema_1: Įvadas ir struktūra 17


Tikroji PĮ kaina

Tema_1: Įvadas ir struktūra 18


Programų priežiūros kaštai

• Priežiūros kaštai sudaro 40 - 80 procentų (vid., 60 %) PĮ kaštų.


Finansiniu požiūriu - svarbiausia PĮ gyvavimo ciklo dalis
• Tobulinimo kaštai sudaro apie 60 procentų visų priežiūros kaštų
– Klaidų taisymas – tik 17 %
• “60/60” programų priežiūros taisyklė
• Dauguma veiksmų susiję su naujų funkcijų (paslaugų) įdiegimu, o
ne su programos klaidų ištaisymu.
• Prieš taisant reikia suprasti – tai sudaro apie 30 % viso programų
priežiūrai skiriamo laiko
• Suprasti kitų programuotojų darbo rezultataą dažnai būna sunkiau
nei pačiam sukurti, todėl programų priežiūra dažnai laikoma
sudėtingesne užduotimi nei programų kūrimas

Robert L. Glass, "Frequently Forgotten Fundamental Facts about Software Engineering“.


IEEE Software May/June 2001.
Programų priežiūros nauda ir
kaštai

[Boehm81] Tema_1: Įvadas ir struktūra 21


Programų priežiūros darbo
poreikis

C. Jones. "The Economics Of Software Maintenance In The Twenty First Century"


Priežiūros pagrindimas: keitimai
yra neišvengiami
• Tai patvirtina laikas ir pastangos, kurių reikia palaikyti
PĮ sistemas darbingomis po jų pateikimo
• Didžiausi iššūkiai tų pakeitimų vadyba ir kontrolė
• Tyrimai atlikti paveldėtųjų sistemų charakteristikoms ir
keitimų kainai nustatyti rodo, kad išlaidos priežiūrai
sudaro 40-70% (o kartais net ir 80%) sistemos viso
gyvavimo ciklo išlaidų

Tema_1: Įvadas ir struktūra 23


Aparatūros sutrikimai

• Statistiškai aprašo Weibull tikimybinis skirstinys


Tema_1: Įvadas ir struktūra 24
Aparatūros priežiūra
Programinės įrangos gedimai (idealiu atveju)

Tema_1: Įvadas ir struktūra 26


Realus programinių sutrikimų
vaizdas

Tema_1: Įvadas ir struktūra 27


Projektavimo ir priežiūros kaštai
PĮ gyvavimo ciklo darbai

Tema_1: Įvadas ir struktūra 29


Priežiūros tipų pasiskirstymas
laike

Tema_1: Įvadas ir struktūra 30


Kodėl reikia priežiūros?
• Ištaisyti kodo klaidas
• Pataisyti projektavimo netikslumus
• Sujungti su kitomis sistemomis
• Patobulinti
• Pagerinti projektą ir dokumentaciją
• Konvertuoti programas taip, kad galėtų būti panaudota
kitokia aparatūra, PĮ, ryšio priemonės

Tema_1: Įvadas ir struktūra 31


Kodėl reikia?

• Užtikrinti paslaugos tęstinumą : .


– Dėl sistemų gedimų gali būti labai sunkios pasekmės:
rimtas nepatogumas, finansinės pasekmės ar pavojai
sveikatai, ar net gyvybei
– Sistemos turi būti naudingos ir veiksmingos
– Priežiūros veiksmais siekiama išlaikyti sistemų
veiksmingumą įskaitant klaidų fiksavimą ir pašalinimą,
atstatymą po gedimų, priderinimą dėl OS ar
aparatūros pakeitimo

Tema_1: Įvadas ir struktūra 32


Kodėl reikia?

• Atlikti būtinus atnaujinimus


– Šio tipo pakeitimai galėtų būti dėl pavyzdžiui tokių
dalykų: dėl vyriausybės teisinių nuostatų pakeitimų
(mokesčių įstatymų) Dėl to keičiasi PĮ kuri naudojama
įstaigose atskaitymams apskaičiuoti.
– Papildomai, būtinumas atlaikyti varžovų
konkurencingumą, taip pat verčia atlikti keitimus

Tema_1: Įvadas ir struktūra 33


Kodėl reikia?

• Dėl vartotojų užklausų (prašymų) pagerinti


sistemą
– reikalavimai geresniam funkcionalumui, našumui,
priderinamumui dėl lokalios darbinės aplinkos
ypatumų
• Palengvinti būsimą priežiūros darbą
– Dažnai finansiškai apsimoka ir komerciškai
pateisinama inicijuoti keitimus tiktai tam, kad
palengvinus būsimą priežiūrą

Tema_1: Įvadas ir struktūra 34


PĮ priežiūros veiklos

• Priežiūros veikla: tyrimas, keitimas (modifikavimas),


valdymas, kokybės užtikrinimas
– Tyrimas – keitimo poveikio analizė
– Modifikavimas – produkto artefaktų elgsenos arba realizacijos
keitimas
– Valdymas – priežiūros procesų arba produkto konfigūracijų
valdymas
– Kokybės užtikrinimas – užtikrinimas, kad keitimas nepaveiks
neigiamai prižiūrimos produkto kokybės
• Testavimas
• Sertifikavimas

Tema_1: Įvadas ir struktūra 35


Kuo projektavimas skiriasi nuo
priežiūros veiksmų?
• Priežiūros veiklos privalo atsižvelgti į realiai
egzistuojančius parametrus ir apribojimus
• Prieš projektuojant sistemą ar atliekant priežiūros
darbus, pirmiausiai turi būti atlikta poveikio analizė
(impact analysis) kad būtų galima nustatyti galimus
pokyčius naujai arba modifikuojamai sistemai atžvilgiu
aplinkos, kurioje ta sistema turi funkcionuoti.
• Priežiūra turi platesnę apimtį su didesniu nuokrypiu į
proceso trasavimą, stebėseną ir valdymą negu
projektavimas

Tema_1: Įvadas ir struktūra 36


Panašumas: nyksta riba tarp
projektavimo ir tobulinimo
• The nature of software evolution now is shifting to ‘a continuous
process, in which there’s no neat boundary between development
and evolution’ (Boehm [Boe10])
• Pavyzdžiai:
– numatantis projektavimas (anticipatory design) – sudėtingų
sistemų projektavimas taip, kad jos būtų lengvai valdomos ir
suprantamos
– meta-projektavimas (meta-design) – sistemų projektavimas
įtraukiant į procesą galutinius sistemos vartotojus
– projektavimas įvertinant keitimą (design for change) – sistemų
projektavimas numatant galimybę jas keisti

Tema_1: Įvadas ir struktūra 37


Tobulinimas: keitimo perspektyva

• Kadangi PĮ priežiūra iš esmės yra projektavimo


veiksmas, ji intelektualiai reikalingesnė ir tuo
pačiu rizikingesnė negu fizinių sistemų priežiūra
• Kaip to pasekmė, daugelis autorių pradėjo
naudoti kitą artimą terminą “programų
tobulinimas” (“software evolution”) kaip
alternatyvą aprašyti įvairius reiškinius,
susijusius su egzistuojančių programinių sistemų
(paveldėtųjų) modifikavimu

Tema_1: Įvadas ir struktūra 38


Evoliucija ir Priežiūra

• Programų priežiūra apima


– Klaidų ištaisymą
– Sistemos pritaikymą naujai aplinkai
– Sistemos funkcijų papildymą arba vidinės struktūros
pagerinimą
Programų evoliucija:
– Yra inovacijos procesas, o ne išsaugojimas: nauja,
geresnė sistema atsiranda (evoliucionuoja) iš senos
sistemos

Tema_1: Įvadas ir struktūra 39


Tobulinimas ar priežiūra?
Evolution vs. Maintenance
1 Tobulinimas apima idėją apie esminius keitimus,
kuriems priežiūra neteikia reikšmės. Priežiūra
siūlo išsaugojimą ir fiksavimą, kai tuo tarpu
tobulinimas siūlo kurti naujus projektus
(sistemas) iš senų.
2 Yra laikoma, kad priežiūra – tai suplanuotų
veiksmų rinkinys. Tobulinimo akcentas toks - kas
atsitiks sistemai laike: be suplanuotų veiksmų
gali pasireikšti ir neplanuoti reiškiniai

Tema_1: Įvadas ir struktūra 40


Priežiūra ir tobulinimas: skirtumai

• Programų priežiūra ir tobulinimas siūlo skirtingus požiūrius


ar perspektyvas keitimų būdui
• PĮ priežiūra kelia praktinius inžinerinius tikslus:
– Ką mes darysime toliau su sistema?
– Kiek tame yra rizikos?
– Kaip mes patikrinsime šią veiklą?
• Tobulinimo tyrimai mato platesnius, bendresnius klausimus:
– Kaip gretai sistema auga (didėja) kol ji pradeda priešintis keitimams?
– Kaip vidinių modulių ribos pasireiškia (daro poveikį) laike?
– Ar atviro kodo projektavimas skiriasi nuo industrinio PĮ projektavimo
ir tą skirtumą galima išmatuoti?

Tema_1: Įvadas ir struktūra 41


Ką akcentuoja priežiūra?

• Priežiūra siekia:
– Atlikti sistemos trumpalaikių funkcijų (day-to-
day functions) kontrolę
– Atlikti sistemos modifikavimo kontrolę
– Pagerinti jau esamas priimtinas sistemos
funkcijas
– Išlaikyti sistemos našumą ir neleisti jam
sumažėti iki neleistino lygmens

Tema_1: Įvadas ir struktūra 42


Baigiamoji pastaba

• “Jei sistema yra naudojama, ji niekada nėra išbaigta,


kadangi ji visada reikalaus patobulinimų, kad būtų
patenkinti besikeičiančio pasaulio, kuriame ji funkcionuoja,
reikalavimai”
[M. Lehman. Program Evolution. 1985]
• Pagal Lehman, kuo priežiūra skiriasi nuo tobulinimo:
– 1) Priežiūra gali būti suvokiama kaip evoliucinis
projektavimas
– 2) Neatsižvelgiant į tam tikrus tų terminų semantinius
skirtingumus, abu terminai (programų priežiūra ir
keitimas/evoliucija) išplečia programų keitimo suvokimą

Tema_1: Įvadas ir struktūra 43


Pagrindinių terminų santrauka

• Priežiūra (Maintenance) – veiksmas išlaikyti objektą esamoje


būsenoje jį pataisant, pagerinant; apsaugoti jį nuo gedimų ar
charakteristikų pablogėjimo
• PĮ priežiūra (SW maintenance) – PĮ modifikavimas po produkto
pateikimo siekiant ištaisyti klaidas, pagerinti našumą (performance)
ar kitus atributus arba adaptuoti produktą dėl pasikeitusios aplinkos
• Prižiūrimumas (Maintainability) – lengvumas ir paprastumas, kurių
dėka priežiūra gali būti atlikta
• Tobulinimas (Evolution) – nuolatinio keitimo procesas iš
žemesnio, paprastesnio ar blogesnio į aukštesnį, sudėtingesnį arba
geresnės būsenos

Tema_1: Įvadas ir struktūra 44


Programų priežiūros
organizavimo sąvokos
• Priežiūros paslaugos sutartis – sutartis tarp priežiūros paslaugos teikėjo ir
jo klientų, apibrėžianti priežiūros tikslus
• Priežiūros valdymas – priežiūros paslaugų (įvykių, konfigūravimo, keitimo)
valdymas
• Įvykių valdymas – priežiūros organizacijos gaunamų įvykių valdymas
• Keitimo valdymas yra keitimo poveikio vertinimas ir produkto
modifikavimas
• Konfigūracijos valdymas yra produkto naujų versijų gamyba ir produkto
integralumo užtikrinimas
• Priežiūros įvykis – kliento (prižiūrimo produkto naudotojo) pranešimas apie
problemą arba keitimo prašymas
• Tyrimo ataskaita – priežiūros įvykio priežasčių ir pasekmių analizės
rezultatas

Tema_1: Įvadas ir struktūra 45


Literatūra

• SWEBOK: Chapter 5. Software Maintenance


• http://swebokwiki.org/Chapter_5:_Software_Mai
ntenance
• klevas.mif.vu.lt/~km/material/se-
sa/SWEBOK%20v3.pdf
Video paskaitos

• Maintenance – Georgia Tech


https://www.youtube.com/watch?v=0Y8YLMJ3ERw

• Software Maintenance: Making Software Maintainable


https://www.youtube.com/watch?v=lmILP0Q7_MU

• Software Maintenance
https://www.youtube.com/watch?v=2ysiRXPTEDw

• The 4 Types Of Software Maintenance


https://www.youtube.com/watch?v=9VDAbFcq96Q

You might also like