12
PREDMET SE440 Razvoj velikih softverskih sistema Predavanje broj 4 SE440-P04 Evolucija softvera Nedelja Čas Tematska jedinica Predavanja Lekcija ili aktivnost Rezultat – znanja ili veštine koje student treba da dobije 1 Evolucija softvera Evolucija softvera Zakoni evolucije softvera 3 2 Reinženjerstvo softvera, Refaktorisanje softvera Metode reinženjerstva, Tehnika refaktorisanja Copyright © 2010 – UNIVERZITET METROPOLITAN, Beograd. Sva prava zadržana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija, transfer, distribucija ili memorisanje nekog dela ili čitavih sadržaja ovog dokumenta., kopiranjem, snimanjem, elektronskim putem, skeniranjem ili na bilo koji drugi način. Copyright © 2010 BELGRADE METROPOLITAN UNIVERSITY. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, without the prior written permission of Belgrade Metropolitan University. Oktobar, 2013.

SE440-P04

Embed Size (px)

DESCRIPTION

Razvoj velikih softverskih sistema

Citation preview

  • PREDMET

    SE440 Razvoj velikih softverskih sistema

    Predavanje broj 4 SE440-P04

    Evolucija softvera

    Nedelja as Tematska jedinica Predavanja

    Lekcija ili aktivnost Rezultat znanja ili vetine

    koje student treba da dobije

    1 Evolucija softvera

    Evolucija softvera Zakoni evolucije softvera 3

    2 Reinenjerstvo softvera, Refaktorisanje softvera

    Metode reinenjerstva, Tehnika refaktorisanja

    Copyright 2010 UNIVERZITET METROPOLITAN, Beograd. Sva prava zadrana. Bez prethodne pismene dozvole od strane Univerziteta METROPOLITAN zabranjena je reprodukcija, transfer, distribucija ili memorisanje nekog dela ili itavih sadraja ovog dokumenta., kopiranjem, snimanjem, elektronskim putem, skeniranjem ili na bilo koji drugi nain. Copyright 2010 BELGRADE METROPOLITAN UNIVERSITY. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means, electronic, mechanical, photocopying, recording, scanning or otherwise, without the prior written permission of Belgrade Metropolitan University.

    Oktobar, 2013.

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 2/12

    Sadraj

    Contents

    Uvod ........................................................................................................................................................ 3 1] Evolucija softvera uzroci i zakoni evolucije ...................................................................................... 4 2] Vrste softvera ...................................................................................................................................... 6 3] Odravanje softvera ............................................................................................................................ 7 4] Re-inenjerstvo softvera...................................................................................................................... 8 5] Refaktorisanje softvera........................................................................................................................ 9 6] Zakljuci............................................................................................................................................. 10 7] Pitanja/zadaci .................................................................................................................................... 11 8] Reference/linkovi ............................................................................................................................... 12

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 3/12

    Predavanje br. 4

    Evolucija softvera

    Uvod

    U ovom predavanju razmotriemo evoluciju softvera. Takodje prodiskutovaemo softversko reverzibilno inenjerstvo, software re-engineering, softvare refactoring.

    Kljuna pitanja; 1. Koji su uzroci stalne evolucije softvera? 2. Koliki su trokovi evolucije softvera? 3. ta je to software re-engineering? 4. ta je to software refactoring? 5. ta je to design-recovery?

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 4/12

    1] Evolucija softvera uzroci i zakoni evolucije

    Softver se kontinualno menja tj. evoluira tj. modifikuje tokom vremena. Uzroci su viestruki (perfektivne promene, korektivne promene, adaptivne promene, preventivne promene):

    Zahtevi od strane korisnika za unapredjenje softvera (npr. oko 45%) Poboljanje efikasnosti softvera (5%) Korekcije softvera zbog uoenih greaka (npr. oko 20%) Adaptivne korekcije u cilju adaptacije zbog raznih nastalih promena tokom vremena (npr. oko

    25%) Prevencija (5%)

    Moe se navesti nekoliko zakona evolucije softvera:

    Kontinualna promena Uveavajua sloenost Statistika predvidljivost Promene softvera su stabilne Rad i novac potreban za promenu softvera je stablan

    Svaki softver koji opisuje neki spoljnji svet tj. spoljnu realnost se menja tj. mora da evoluira jer se i okolni svet menja, a ako se ne menja tj. adaptira na spoljne promene onda postaje manje koristan. Vri se ekonomska procena da li je jeftinije izvriti parcijalnu izmenu tj. modifikaciju u softveru ili zameniti ceo sistem tj. kupiti/napraviti kompletno novi sistem. Kako se softver razvija, njegova sloenost po pravilu raste, softver postaje sve sloeniji tokom vremena. Iako se softver stalno menja, i ne mogu se predvideti detalji koje e biti potrebno menjati, ipak se moe statistiki predvideti procenat promene softvera (trend promene softvera u procentima). Ove promene softvera u procentima su priblino konstantne u vremenu, i rad potreban da se izvri ta promena je priblino konstantan.

    Slika: uzroci evolucije softvera (unapredjenje 45%, poveana efikasnost 5%, korekcije 20%, adaptacije 25%, prevencije 5%)

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 5/12

    Slika : prikaz rasta funkcionalnosti (korisnikih zahteva) u funkciji od vremena

    Slika : prikaz rasta broja instrukcija u programu (lines of code) u funkciji od vremena

    Slika : prikaz rasta broja fajlova-modula u programu u funkciji od vremena

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 6/12

    2] Vrste softvera

    Postoji nekoliko tipova programa:

    S-tip programi, tj. programi koji se precizno-formalno i kompletno mogu specificirati tj. opisati specifikacijom programa (specifiable programs), i ovde evolucija nije relevantna kod razvoja programa jer nova specifikacija e definisati novi program, i na kraju razvoja programa samo se gleda da li program odgovara specifikaciji

    P-tip programi, tj. programi koji reavaju neki realno postojei problem ali koji se ne mogu precizno i kompletno opisati specifikacijom, ve se na kraju gleda da li program predstavlja prihvatljivo reenje problema (problem-solving programs), a u toku izrade programa dolazi do evolucije zahteva

    E-tip programi, tj. ugradjeni programi (embedded programs), koji su po prirodi evolutivni jer su deo nekog fizikog sistema koji se stalno menja, program utie na okruenje i okruenje utie na program, i prihvatanje programa se obavlja potpuno na osnovu procene i miljenja a ne specifikacije programa

    Slika : S-tip programa

    Slika : P-tip programa

    Slika : E-tip programa

    Formalna specifikacija

    Program

    Nekompletni zahtevi

    Program

    Priblini i abstraktni zahtevi

    Program

    Spoljni svet

    Spoljni svet

    Spoljni svet

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 7/12

    3] Odravanje softvera

    Ako se softver ne menja u cilju promene potreba korisnika, softver postaje prevazidjen tj. zastareo. A korisnik e kupiti novi softver i odbaciti postojei zastareli softver uvaavajui cenu kupovine novog softvera s jedne strane i s druge strane ekonomske koristi koje e imati od novog softvera. Vlasnici zastarelog softvera imaju probleme u poslovanju tj. u konkurenciji na tritu.

    ivot tj. trajnost softvera moe se produiti na sledee naine: Dizajn softvera koji olakava promene tj. modifikacije u softveru (Design for change) Detaljna dokumentacija softvera Preispitivanje dizajna i zahteva od strane onih koji odravaju softver Softversko re-inenjerstvo, refaktorisanje softvera, reverzibilno inenjerstvo

    Redukcija trokova odravanja se postie: Modularnom strukturom Razumljiv tj. itljiv softver Dobrom dokumentacijom Upotreba standarda Dobro testiranje Dizajn softvera koji olakava promene tj. modifikacije u softveru (Design for change) Dobra analiza zahteva

    Iterativni razvoj softvera

    Problemi koji se javljaju kod odravanja su sledei: Lo kvalitet softvera Nedovoljno poznavanje aplikacionog domena Nedostatak dokumentacije

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 8/12

    4] Re-inenjerstvo softvera

    Podmladjivanje softvera se moe uraditi na nekoliko naina Reverzibilno inenjerstvo (re-dokumentovanje, design recovery tj. ponovni dizajn na osnovu

    postojeeg programa) Restrukturisanje (refaktorisanje, bez promene funkcionalnsti programa) Re-inenjerstvo tj. realne promene izvornog koda (cilkus: design recovery+ poboljanje

    dizajna+ ponovna implementacija)

    Postoje alati za podmladivanje; Dokument-generatori, koji dodaju automatski komentare u programu Reformateri programa, koji automatski reformatiraju program da je program itljiviji Alat za Design-recovery, koji automatski pravi klasni dijagram na osnovu programa, ili

    automatski pravi pravi sekvencijalne dijagrame na osnovu programa

    U toku odravanja programa, programeri odravanja studiraju programski kod a ne samo dokumentaciju, i provode vie vremena u studiranju samog programa nego u studiranju dokumentacije. Program moe da se ita sekvencijalno, ali eksperti preskau delove programa pratei medjusobnu zavisnost pojedinih delova programa. esto programi nemaju dovoljno komentara ili nisu formatirani tako da olakavaju itljivost, npr. petlje i grananja nisu formatirani tako da olakavaju itljivost.

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 9/12

    5] Refaktorisanje softvera

    Refaktorisanje softvera je proces promene softverskog sistema tako da on ne menja eksterno ponaanje programskog koda ve se poboljava njegova interna struktura. Refaktorisanje se obino obavlja u malim koracima. Posle svakog ovakvog koraka, funkcionalnost sistema ostaje ista. Dakle, refaktorisanje ne podrazumeva menjanje funkcionalnosti softvera. Tj. vri se rearaniranje programskog koda bez elje da se promeni funkcionalnost programa. Ali, lake je menjati funkcionalnost programa ako ste prvo refaktorisali tj. oistili program.

    Refaktorisanje je vrsta reorganizacije. Refaktorisanje implicira ekvivalenciju poetnog i promenjenog programa, tj. poetni i krajnji program moraju imati istu funkcionalnbost. U praksi, refaktorisanje znai da program pravite jasnijim i jednostavnijim i elegantnijim i istijim. Tj. posle pravljenja programa tj. poeljno ga je oistiti tj. refaktorisati. Npr.

    Reimenovanje arijabli Uvodjenje metode u klasu Prebacivanje programa iz strukturnog programiranja u o.o. programiranje itd

    Refaktorisanje nije ponovno pisanje programa. Npr. u matematici relacija (x-1)*(x+1) i relacija xx-1 daju isti rezultat ali su azliite po eleganciji I komplikovanosti.

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 10/12

    6] Zakljuci

    - Moe se navesti nekoliko zakona evolucije softvera:

    Kontinualna promena Uveavajua sloenost Statistika predvidljivost Promene softvera su stabilne Rad i novac potreban za promenu softvera je stablan

    - Refaktorisanje softvera je proces promene softverskog sistema tako da on ne menja eksterno ponaanje programskog koda ve se poboljava njegova interna struktura. Refaktorisanje se obino obavlja u malim koracima. Posle svakog ovakvog koraka, funkcionalnost sistema ostaje ista. Dakle, refaktorisanje ne podrazumeva menjanje funkcionalnosti softvera. Tj. vri se rearaniranje programskog koda bez elje da se promeni funkcionalnost programa. Ali, lake je menjati funkcionalnost programa ako ste prvo refaktorisali tj. oistili program.

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 11/12

    7] Pitanja/zadaci

    1. Koji su uzroci stalne evolucije softvera? 2. Koliki su trokovi evolucije softvera? 3. ta je to software re-engineering? 4. ta je to software refactoring? 5. ta je to design-recovery?

  • SE440 Razvoj velikih softverskih sistema Predavanje br. 4

    Naziv predavanja: Evolucija softvera 12/12

    8] Reference/linkovi

    1) http://www.cs.toronto.edu/~sme/CS302 2) http://c2.com/cgi/wiki?WhatIsRefactoring