Inginerie Software c1

65
Inginerie software Curs 1 Instructor : Conf. dr. Cristina Mndruª [email protected] Sites: http://sites.google.com/site/ingswcm http://web.info.uvt.ro/~cmindruta/Curs_IS_SwEng

Transcript of Inginerie Software c1

  • Inginerie softwareCurs 1

    Instructor : Conf. dr. Cristina [email protected]

    Sites: http://sites.google.com/site/ingswcmhttp://web.info.uvt.ro/~cmindruta/Curs_IS_SwEng

    id16390928 pdfMachine by Broadgun Software - a great PDF writer! - a great PDF creator! - http://www.pdfmachine.com http://www.broadgun.com

  • Site : https://sites.google.com/site/ingswcm

    Acces cu

    Google account : ingsw.student.uvt Password : ingswuvt

  • Subiecte tratate

    Probleme ale dezvoltrii i asigurrii de suport pentru produsele software

    Un program simplu Mrimea i complexitatea unui sistem Probleme tehnice i non-tehnice Probleme ale aplicaiilor de dimensiuni mari Eforturi de coordonare proces, produs i persoane

  • Fiind dat o colecie de linii de text (iruri) memorate ntr-un fiier, sortai-le n ordine alfabetic, i scriei-le n alt fiier.

    Un program simplu

    Care este formatul datelor?

    Cum trebuie stocate datele?

    Sortare ascendent sau descendent?

    Ce facem cu caracterele nealfabetice?

    Cum tratm liniile vide i fiierele vide?

    Cum trebuie tratatecondiiile de eroare?

    Ct de rapid trebuie s fie sortarea?

    Se estimeaz extinderea n viitor a programului?

    Ce fel de interfa trebuie s aib programul?

    Care este dimensiunea datelor de intrare?

    Pe ce platforme trebuie s poat fi executat programul?

    Cnd are clientul nevoie de program i ct e dispus s plteasc?

  • CerineClarificai CERINELE.

    Cerine program : declaraii are definesc i calific ce trebuie s fac programul. Cerine funcionale : Ceea ce trebuie s fac programul.

    Atribute de calitate (cerine extra-funcionale) : Maniera n care trebuie ndeplinite cerinele funcionale.

    Constrngeri de proiectare : Declaraii care restricioneaz modurile n care software-ul poate fi proiectat i implementat.

    Sortare ascendent sau descendent?Ce facem cu caracterele nonalfabetice?Cum tratm liniile vide i fiierele vide?

    Ct de rapid trebuie s fie sortarea?Se estimeaz extinderea n viitor a programului?

    Ce fel de intefa trebuie s aib programul?Care este dimensiunea datelor de intrare?Pe ce platforme trebuie s poat rula programul?

  • CerineCerine funcionale : Ce trebuie s fac programul.Definesc funcionalitatea programului.

    Atribute de calitate (cerine extra-funcionale) : Maniera n care cerinele funcionale trebuie ndeplinite.

    Exemple tipice: performan, modificabilitate, utilizabilitate, configurabilitate, fiabilitate, disponibilitate, securitate, scalabilitate.

    Decizii i constrngeri de proiectare : Declaraii care restricioneaz modurile n care software-ul poate fi proiectat i implementat.

    Alegerea: Limbajului de programare Platformelor pe care ruleaz sistemul Interfeelor cu utilizatorul i cu sistemele externe Instrumentelor ce se vor utiliza etc.

  • Un program simplu procesul de gndireCerine funcionale : Ce trebuie s fac programul. Definesc funcionalitatea programului.

    Formate de intrare: Care este formatul datelor? ASCII, UNICODE, hibrid?Cum trebuie stocate datele: cum sunt separate liniile unui fiier? Decizie: ASCII; CR+LF

    Sortare:Sortare ascendent sau descendent?Ce facem cu caracterele nonalfabetice? Numerele nainte sau dup litere? Minuscule i

    majuscule. Decizie: sortarea caracterelor n odine numeric, sortarea fiierului n ordine ascendent.

    Cazuri speciale, limite, condiii de eroare:Cum tratm liniile vide i fiierele vide?Cum trebuie tratate condiiile de eroare?Decizie: liniile vide nu au un tratament special; pentru fiiere de intrare vide se creaz

    fiiere de ieire vide; toate erorile sunt semnalate utilizatorului; premiz: fiierele de intrare nu sunt corupte.

  • Un program simplu procesul de gndireAtribute de calitate (cerine extra-funcionale) : Maniera n care trebuie ndeplinite

    cerinele funcionale.Exemple tipice: performan, modificabilitate, utilizabilitate, configurabilitate, fiabilitate,

    disponibilitate, securitate, scalabilitate.

    Performan:: Ct de rapid trebuie s fie sortarea?R: Mai puin de 1 min. Pentru sortarea unui fiier de 100 linii a cte 100 caractere.Decizie: un algoritm cu timp de rspuns corespunztor, selectat pe baza analizei

    algoritmilor de sortare existeni.

    Modificabilitate :: Se estimeaz extinderea programului n viitor?R: E posibil ca n viitor s apar cereri de modificare a ordinii de sortare.Decizie: Pregtirea programului pentru modificri ulterioare ale ordinii de sortare.

  • Un program simplu procesul de gndire

    Decizii i constrngeri de proiectare : Declaraii are restricioneaz modurile n caresoftware-ul poate fi proiectat i implementat.

    Platforme:Decizii referitoare la arhitectur, SO, biblioteci disponibile.Portabilitate relativ limitat extracost implicat de suportarea unei noi platforme

    compromis ntre dezvoltare pentru portabilitate i necesitatea anticipat pentru o viitoare portabilitate.

    Cerine de planificare (grafic de timp) :Personalul tehnic informeaz despre fezabilitatea i costul diferitelor termene de realizare.Clientul stabilete termenul final.

    Interfaa utilizator: CLI, GUI, Web-based ?Decizie: Evitare operaii de upload i download nu Web-based Permiterea automatizrii i reutilizrii programului ca modul n programe viitoare invocabil din cadrul unui script CLI

  • Un program simplu procesul de gndireDecizii i constrngeri de proiectare : Declaraii care restricioneaz modurile n care

    software-ul poate fi proiectat i implementat.

    Dimensiuni tipice i maxime pentru intrare:Mici orice algoritm de sortare cel mai simplu de implementatMari, ncap n RAM un algoritm eficientMari, nu ncap n RAM algoritm specializat pentru sortare pe disc.

    Limbajul de programare:Poate fi o constngere de proiectare.Poate fi o decizie de proiectare bazat pe tipul de programare necesar, pe cerinele de

    performan i portabilitate, pe expertiza tehnic a dezvoltatorilor.

    Algoritmi:Pot fi dai sub form de constrngeri de proiectare sau ca cerine funcionale.Pot fi decizii de proiectare influenate de: Limbajul utilizat i biblioteca disponibil putem utiliza o facilitate standard oferit de

    limbajul de programare Performana cerut compromis cu efortul necesar pentru implementare i expertiza

    dezvoltatorilor

  • Un program simplu TestareTestare verificarea dinamic a codului.

    Nivele de testare- Unit testing- Testare la integrare- Testare de acceptare

    Unit testing procesXUPDWGHXQSURJUDPDWRUSHQWUXDWHVWDILHFDUHSLHVVDXunitate de software.

    Programatorul:- Scrie codul- Scrie testele pentru verificarea fiecrui modul, funcie sau metod.

    XP programatorii scriu testele nainte de a scrie codul.

  • Un program simplu Estimare efortEstimare efort aspect important n cadrul unui proiect software.

    Estimare efort estimare cost, estimare timp.

    Test 1 minut:Estimai de ct timp avei nevoie pentru a scrie un program care citete linii dintr-un fiier i

    scrie liniile sortate ntr-un alt fiier. Trebuie s implementai algoritmul de sortare i s oferii o GUI cu dou casete text i dou butoane n care utilizatorul poate selecta fiierul de intrare i fiierul de ieire utiliznd dialogul File Open. Presupunei c putei lucra fr ntrerupere la aceast program.

    Presupunerea de a lucra fr ntrerupere la acest program este realist?

  • Un program simplu Estimare efortDivizare task n subtask-uri: Creare clas StringSorter cu trei metode publice: Read, Write, Sort Implementare rutin de sortare utiliznd un algoritmFDUHLPSOLFJVLUHDFHOXLPDL

    mare element, plasare lui la sfritul array-lui, i sortarea restului array-lui utiliznd acelai mecanism crearea unei metode IndexOfBiggest care returneaz indexul celui mai mare element dintr-un array.

    Tem :Estimai un timp ideal (asap) i un timp calendaristic pentru fiecare task din lista urmtoare:

    IndexOfBiggest Sort Read Write GUI Testare

    Implementai soluia i comparai timpul estimat cu cel real.

  • Un program simplu Estimare efort

    Concluzie: Estimarea este mai corect dup divizarea lucrului n task-uri

    Estimarea difer mai mult sau mai puin de timpul necesar n realitate Estimarea beneficiaz de experiena anterioar Estimarea este mai puin corect la nceputul proiectului.

    Estimare problem important n managementul proiectelor software.

  • Un program simplu ImplementareReguli independente de limbaj: Fii consisteni n privina numelor,XWLOL]ULLOLWHUHORUPDUL, conveniilor de

    programare ncercai s respectai conveniile limbajului de programare existente(ex. Java:QXPHFODVFXOLWHUPDUH, nume variabil cu liter mic, separare cuvinte cu

    liter mare; C: utilizare litere mici i separare cuvinte cu underscore) Alegei nume descriptive; lungi pentru elemente care au domeniu global (ex. clase,

    metode publice), scurte pentru referine locale (ex. variabile locale, nume private). Metodele/procedurile/funciile utilizate n modulele pe care le dezvoltai

    trebuie s fie funcionale o posibil problem se datoreaz modulului vostru.

    Cunoatei i utilizai ct mai mult posibil biblioteca standard oferit de limbaj mbuntirea timpului de dezvoltare, (re)uutilizarea de cod depanat i optimizat.

    Revzuii codul, dac e posibil cu alte persoane. (dar nu i temele de cas individuale)

  • Un program simplu ImplementareModelul de baz al aplicaiei exemplu de implementat:

    Decizii:1. Bune practici : separai funcionalitatea de sortare de interfaa cu utilizatorul

    posibilitatea de a schimba independent fie UI fie funcionalitatea de sortare.

    2. Clasa: StringSorterMetode: Read iruri dintr-un fiier Sort colecia de iruri Write iruri ntr-un fiier Preia numele fiierului de intrare i pe cel al fiierului de ieire i

    combin metodele anterioare

    Excepii: transferate claselor UI.

    3. Mai multe clase UI, cte una pentru fiecare tip de UI.

  • Un program simplu Implementareimport java.io.*;import java.util.*;public class StringSorter {ArrayList lines;... }

    Unit testare pentru aplicaia exmplu:

    Decizie: Utilizare JUnitScrierea unei clase ce conine toate unit testele(motenete clasa junit.framework.TestCase, conine

    metode testXXX(), folosete assertEquals()pentru a compara valorile ateptate cu cele obinute).

  • Un program simplu Implementareimport java.io.*;import java.util.*;public class StringSorter {ArrayList lines;

    public void readFromStream(Reader r) throws IOException{BufferedReader br=new BufferedReader(r);lines=new ArrayList();while(true) {String input=br.readLine();if(input==null)break;

    lines.add(input);}

    }}

    public class TestStringSorter extends TestCase {private ArrayList make123() {ArrayList lst = new ArrayList();lst.add("one"); lst.add("two"); lst.add("three");return lst;

    }public void testReadFromStream() throws IOException{

    Reader in=new FileReader("in.txt");StringSorter ss=new StringSorter();ArrayList lst= make123();ss.readFromStream(in);assertEquals(lst,ss.lines);

    }}

    Pentru a verifica implementarea metodei se va aplica testul utiliznd un Test Runner.

    in.txt onetwothree

  • Un program simplu Implementare

    Algoritmul ales : Gsirea celui mai mare element din array Interschimbarea lui cu ultimul element Repetarea procedurii cu restul array-lui.

    Metode suport: Interschimbarea a dou elemente din array Gsirea indexului celui mai mare element dintr-un subarray dat

  • Un program simplu Implementare

    static void swap(List lst, int i1, int i2) {Object tmp=lst.get(i1);lst.set(i1, lst.get(i2));lst.set(i2, tmp);

    }

    public class TestStringSorter extends TestCase {private ArrayList make123() {...}public void testReadFromStream() throws IOException{...}public void testSwap() {ArrayList lst1=make123();ArrayList lst2=new ArrayList();lst2.add("one"); lst2.add("three"); lst2.add("two");StrinSorter.swap(lst1,1,2);assertEquals(lst1,lst2);

    }}

    Pentru a verifica implementarea metodei se va aplica testul utiliznd un Test Runner.

  • Un program simplu Implementare

    static void findIdxBiggest(List lst, int from, int to) {String biggest=(String)lst.get(from);int idxBiggest=from;for(int i=from+1; i

  • Un program simplu Implementare

    public class TestStringSorter extends TestCase {private ArrayList make123() {...}public void testReadFromStream() throws IOException{...}public void testSwap() {...} public void testFindIdxBiggest() {...}public void testSort1() {StringSorter ss = new StringSorter();ss.lines=make123();ArrayList lst2=new ArrayList();lst2.add("one"); lst2.add("three"); lst2.add("two");ss.sort();assertEquals(lst2,ss.lines);

    }}

    import java.io.*;import java.util.*;public class StringSorter {ArrayList lines;

    public void readFromStream(Reader r) throws IOException{...}public void sort() {for(int i=lines.size()-1; i>0; --i) {int big=findIdxBiggest(lines,0,i);swap(lines,i,big);

    }}

    }

    Pentru a verifica implementarea metodei se va aplica testul utiliznd un Test Runner.

  • Un program simplu Implementare

    import java.io.*;import java.util.*;public class StringSorter {ArrayList lines;

    public void readFromStream(Reader r) throws IOException{...}void sort() {java.util.Collections.sort(lines);

    }}

    Mai mult eficien dac cunoatem biblioteca standard a limbajului: Nu avem nevoie de clasele statice swap i findIdxBig Codul clasei StringSorter este mai simplu.

  • import java.io.*;import java.util.*;public class StringSorter {ArrayList lines;

    public void readFromStream(Reader r) throws IOException{...}public void sort() {...}public void writeToStream(Writer w) throws IOException {PrintWriter pw=new PrintWriter(w);Iterator i=lines.iterator(i);while(i.hasNext()) {pw.println((String)(i.next()));

    }}

    Un program simplu Implementare

    public class TestStringSorter extends TestCase {private ArrayList make123() {...}public void testReadFromStream() throws IOException{...}public void testSort1() {...}public void testWriteToStream() throws IOException {StringSorter ss1 = new StringSorter();ss1.lines=make123();Writer out=new FileWriter(test.out);ss1.WriteToStream(out);out.close();Reader in=new FileReader(test.out);StringSorter ss2=new StringSorter();ss2.readFromStream(in);assertEquals(ss1.lines,ss2.lines);

    }}

    Pentru a verifica implementarea metodei se va aplica testul utiliznd un Test Runner.

  • import java.io.*;import java.util.*;public class StringSorter {ArrayList lines;

    public void readFromStream(Reader r) throws IOException{...}public void sort() {...}public void writeToStream(Writer w) throws IOException {...}public void sort(String inputFileName, String outputFileName) throws IOException{Reader in=new FileReader(inputFileName);Writer out=new FileWriter(outputFileName);readFromStream(in);sort();writeToStream(out);in.close();out.close();

    }}

    Un program simplu Implementare

    public class TestStringSorter extends TestCase {private ArrayList make123() {...}public void testReadFromStream() throws IOException{...}

    public void testSort1() {...}public void testWriteToStream() throws IOException {...}public void testSort2() throws IOException {StringSorter ss1=new StringSorter();ss1.sort(in.txt,test2.out);ArrayList lst= new ArrayList();lst.add("one"); lst.add("three"); lst.add("two");Reader in=new FileReader(test2.out);StringSorter s2=new StringSorter();ss2.readFromStream(in);assertEquals(lst,ss2.lines);

    }}

    Pentru a verifica implementarea metodei se va aplica testul utiliznd un Test Runner.

  • Un program simplu Interfee utilizator

    Pn acum : implementare, testat ca unitate (dar nu complet), a claseiStringSorter.

    Interfaa utilizator un program care va permite accesul la funcionalitatea clasei StringSorter.

    Variante : CLI GUI

  • Un program simplu Interfee utilizatpr

    import java.io.IOException;public class StringSorterCommandLine {public static void main(String args[]) throws IOException {if(args.length!=2) {System.out.println(Use: cmd inputfile outputfile);

    }else{StringSorter ss=new StringSorter();ss.sort(args[0],args[1]);

    }}

    }

    Linia de comand pentru utilizare StringSorter arat astfel:

    java StringSorterCommandLine a.txt a_sortat.txt

    Cnd este util o astfel de interfa?Care sunt avantajele scrierii unei astfel de interfee?

  • Un program simplu Interfee utilizator

    import java.io.IOException;public class StringSorterGUI1 {public static void main(String args[]) throws IOException {try{StringSorter ss=new StringSorter();String inputFileName=JOptionPane.showInputDialog(Please enter input file name);String outputFileName=JOptionPane.showInputDialog(Please enter output file name);ss.sort(inputFileName,outputFileName);

    }finally{System.exit(1);

    }}

    }V place acest GUI ?Propunei unul mai prietenos!

  • Rezumat; concluzii

    Un singur program Dezvoltat de o singur persoan Puini utilizatori

    Probleme: Cerine funcionale i atribute de calitate Constrngeri i decizii de proiectare Testare Estimare efort Detalii de implementare

    Activiti: nelegerea cerinelor Estimarea efortului i posibil planificarea dezvoltrii Proiectarea soluiei Implementarea soluiei Testarea corectitudinii i a acceptrii de ctre utilizator

    Un process (simplu).Documentaie minimal.

    Dar dac ?Sistem complex cu componente multiple.

  • TerminologieProblema ce trebuie rezolvat de un sistem software.Spaiul problemei domeniul business n care este definit problema.

    Specificat de cerinele utilizator.Modelul domeniului entitile i relaiile din domeniul business care definesc

    problema de rezolvat.Rezultat al analizei cerinelor.

    Spaiul soluiei domeniul software n care va fi implementat soluia.Rezultat al deciziilor i constrngerilor de proiectare.

    Modelul proiect (design) reprezentare a entitilor i relaiilor din spaiul soluiei care definesc sistemul software soluie nainte de a fi codificat (implementat).Rezultat al procesului de proiectare.

    Soluia un sistem softwareFDUHUH]ROYSUREOHPD.Rezultat al procesului de dezvoltare de software.

  • Subiecte tratate

    Probleme ale dezvoltrii i asigurrii de suport pentru prdusele software

    Un program simplu Mrimea i complexitatea unui sistem Probleme tehnice i non-tehnice Probleme ale aplicaiilor de dimensiuni mari Eforturi de coordonare proces, produs i persoane

  • Mrime i complexitate

    Mrime : numrul de funcii majore trsturi din cadrul fiecrei arii funcionale interfee cu sisteme externe utilizatori simultani tipuri de date i de structuri de date

    Complexitate : legturi (partajare date, transfer de control, ambele) relaii (ierarhic, sevenial, bucl, recursiv, etc.)

  • Mrime i complexitate exemplu de expansiune a unei componente software (modul)

    6 task-uri i relaii secvenial, decizional i repetitiv3 task-uri i relaie secvenial

    Dar n cazul creterii mrimii i complexitii unei probleme rezolvate cu un sistem software ?

  • Subiecte tratate

    Probleme ale dezvoltrii i asigurrii de suport pentru prdusele software

    Un program simplu Mrimea i complexitatea unui sistem Probleme tehnice i non-tehnice Probleme ale aplicaiilor de dimensiuni mari Eforturi de coordonare proces, produs i persoane

  • Probleme tehnice

    Manipularea mrimii i complexitii:

    Descompunerea problemei Modularizarea soluiei Separare tematici Dezvoltare n iteraii incrementale

    Discuie: Divizarea problemei n segmente mai mici

    Ex. dup funcie i trstur Divizm soluia de-a lungul liniilor de divizare stabilite de segmentele

    problemei ?

  • Probleme tehnice

    Technologie i unelte

    Alegeri tehnice: Limbajul de programare:... Unelte de dezvoltare : IDEs, Infrastructur : SGBD, reea, middleware,... Unelte de management : controlul versiunilor,

    Diversitatea pregtirii i experienei membrilor echipei acord asupra deciziilor, planuri de instruire, etc.

  • Probleme tehnice

    Proces i metodologie

    Procesul de dezvoltare de software (ciclul de via al dezvoltrii de software SDLC) = Setul de activiti, fluxulDODFHVWRUDFWLYLWi, intrrile i ieirileacestor activiti, i precondiiile i postcondiiile fiecrei activiti implicate n producerea de software.

    Conine activitile necesare dezvoltrii i ntreinerii software-lui. Utilizat n ghidarea i n coordonarea i managementul proiectelor complexe

    ce implic mai multe persoane.

    Metodologie o procedur particular sau un set de proceduri.

  • Probleme tehnice

    Proces i metodologieActiviti comune n procesul de dezvoltare de software.

    Culegerea i specificarea cerinelor

    ModelareCodare / unit test

    Sprijinire utilizator i remediere probleme

    Integrare i testare

    Exist o metodologie pentru culegerea cerinelor? Ce se ntmpl daca sunt implicate mai multe persoane?

    Din ce este constituit sprijinul pentru utilizator ?Ce fel de probleme trebuie remediate?

    n ce relaie se afl aceste activiti? (secvene, suprapuneri, condiii de lansare,...)

  • Probleme tehniceProces i metodologie o abordare posibil a procesului:

    Cerine

    Model

    Integrare

    Cerine Cerine

    Cod

    Model ModelArhitectur

    Cod Cod Cod

    Test FixTest Fix Test Fix

    Cteva ntrebri referitoare la o parte a procesului:Exist un grup de testare separat i independent ? Cum i cui i este raportat o problem gsit?Ct informaie trebuie s conin descrierea unei probleme? Cine decide nivelul de severitate al unei probleme?Cum este returnat la tester remedierea unei probleme? Trebuie ca toate remedierile s fie re-testate?Cum sunt integrate remedierile napoi n cod? &HWUHEXLHIFXWFX problemele care nu sunt remediate?

    Dezvoltare incremental (problema isoluia divizate n incremente) i integrare continu.

  • Probleme nonTehnice

    Estimare efort i planificare

    Probleme: Dificil nainte de nelegerea cerinelor. Necesit cunotine despre productivitile individuale ale membrilor echipei. Dificultatea n relaie direct cu mrimea i complexitatea problemei. Mai corecte pe msur ce proiectul avanseaz. Mai corecte dac exist experien cu proiecte similare.

  • Probleme nonTehnice

    Asignare i comunicare

    Asignare persoane la sarcini. Competene Disponibilitate

    Obiectiv : asignarea celor mai eficiente i potrivite persoane la sarcinile corespunztoare.

    Comunicare. Numrul cilor de comunicare directe crete prin Cn2 cu numrul de persoane

    implicate n dezvoltarea de software. Probabilitatea de eroare n comunicare crete cu numrul persoanelor implicate

    nevoia de structuri i protocoale de comunicare i de semnificaii standardpentru mesaje.

  • Subiecte tratate

    Probleme ale dezvoltrii i asigurrii de suport pentru prdusele software

    Un program simplu Mrimea i complexitatea unui sistem Probleme tehnice i non-tehnice Probleme ale aplicaiilor de dimensiuni mari Eforturi de coordonare proces, produs i persoane

  • Sistem stat de plat ipotetic Cerine

    Cerine funcionale: (exemple) Adugare, modificare, tergere nume i informaii personale asociate ale tuturor angajailor Adugare, modificare, tergere toate beneficiile asociate cu toi angajaii Adugare, modificare, tergere toate taxele i alte deduceri asociate tuturor angajailor Adugare, modificare, tergere toate veniturile brute asociate tuturor angajailor Adugare, modificare, tergere toi algoritmii relativi la calcularea plii nete pentru fiecare

    angajat Generarea unui cec de plat sau a unui depozit bancar direct pentru fiecare angajat

    Care sunt informaiile asociate?Pe cine s ntreb? Utilizator, client, manager proiect?Trebuie s documentez rspunsurile?

    Ce nseamn toate beneficiile?Ce implicaii are posedarea unui beneficiu asupra plii unui angajat?Exist o list cu toate beneficiile posibile? Va fi aceasta modificat n viitor?

    Pentru a gestiona corect Cerinele funcionale trebuie nelese cunotinele specifice domeniului aplicaiei relative la problem.

  • Sistem stat de plat ipotetic Cerine

    Care este ciclul de realizare a statului de plat?Care este termenul de transmitere a informaiilor (ex. cretere de salariu).

    Pentru a gestiona corect Cerinele funcionale trebuie nelese cunotinele specifice domeniului aplicaiei relative la problem.

    Cerine funcionale: (exemple) Adugare, modificare, tergere nume i informaii personale asociate ale tuturor angajailor Adugare, modificare, tergere toate beneficiile asociate cu toi angajaii Adugare, modificare, tergere toate taxele i alte deduceri asociate tuturor angajailor Adugare, modificare, tergere toate veniturile brute asociate tuturor angajailor Adugare, modificare, tergere toi algoritmii relativi la calcularea plii nete pentru fiecare

    angajat Generarea unui cec de plat sau a unui depozit bancar direct pentru fiecare angajat

  • Sistem stat de plat ipotetic Cerine

    Cerine extra-funcionale: (exemple) Performan

    Utilizabilitate

    Care este volumul tranzaciilor de plat?Care este viteza de procesare pentru o tranzacie?

    Pentru a gestiona corect cerinele extra-funcionale sunt necesare cunotine despre sistemul tehnic i informaii de interfa.

    Ce experien are utilizatorul n folosirea de interfee grafice?Care sunt profilele utilizatorilor? Cum se anuleaz i reproceseaz un cec de plat bazat pe o nregistrare incorect?

  • Sistem stat de plat ipotetic Cerine

    Aprox 15% din defectele software-lui se datoreaz erorilor din cerine.

    Erorile din cerine sunt foarte dificil de remediatGDFVXQWGHVFRSHULWHtrziu.

    REVIZUIREA specificaiilor cerinelor cu clienii / utilizatorii.

    Revizuiri graduale pe specificaii de cerine dezvoltate incremental. Revizuire a cerinelor finale integrate.

  • Sistem stat de plat ipotetic Proiectare

    Cerinele funcionale adaugare, actualizare, tergere trebuie grupate ntr-o singur component numit funcii administrative stat?

    Trebuie s grupez funciile de procesare(calcularea tuturor deducerilor i a sumei nete de plat) ntr-o singur component numitprocesare stat?

    Trebuie s fiu pregtit s gestionez erorile i excepiile. S adun rutinele de tratare a acestora ntr-o component de procesare a excepiilor?

    S plasez toate funciile de interfa cu sisteme externe ntr-o component numit interfee stat.

    DA ! - grupare funcii nrudite n componente

  • Sistem stat de plat ipotetic Proiectare

    Avantajele gruprii funciilor nrudite n componente: Ofer un grad de coeziune n cadrul componentei Corespunde fluxului business i contextului de procesare a statului Ofer o potenial asignare pe componente a sarcinilor de lucru Permite mpachetarea mai simpl a software-lui, pe componente.

    Proiectanii trebuie s considere att caracteristicile de coeziune ct i de cuplare ale unui model proiect software, urmrind coeziune puternic n cadrul fiecrei componente i cuplare slab ntre componente.

  • Sistem stat de plat ipotetic Proiectare

    Servicii business : grupate n componente coezive.Servicii comune (ex. help, ecrane comune) : utilizate de mai multe componente

    grupate ntr-o component de servicii.

    Vedere bidimensional a entitilor modelului proiect

  • Sistem stat de plat ipotetic Proiectare

    Prototipul interfeei utilizator : Arhitectura ecranului

    Layout i stil Coninut Relaii de navigare

    Obs. Nu e o preocupare central de proiectare deoarece aplicaia este puternic orientat pe procesare n loturi de lucrri i slab interactiv.

    Proiectarea bazei de date : tabele chei

    Obs. Preocupare central de proiectare deoarece aplicaia lucreaz intensiv cu multe date.

  • Sistem stat de plat ipotetic Proiectare

    Competene de proiectare din perspectiva mrimii : Baz de date Reea Interfee de transmisie Interfee de imprimare Interfee cu sisteme de operare Medii de dezvoltare Domeniul aplicaiei stat de plat

    Competente de proiectare din perspectiva complexitii : Performan Procesare erori Tratarea nregistrrilor angajat ce nu pot fi procesate includere exit-uri ctre

    procesare manual i reconcilierea nregistrrilor procesate manual cu sistemul stat de plat automat.

    Tratarea informaiilor conflictuale

  • Sistem stat de plat ipotetic Proiectare

    Tehnici aplicate: Descompunere funcional Sintez Definirea interaciunilor dintre componente Definirea interaciunilor din componente

    Diferene fa de proiectarea unui program cu un singur modul: Disciplin superioar Principii de ghidare suplimentare Echipe cu mai muli membri

  • Sistem stat de plat ipotetic Codificare module

    Pentru fiecare unitate funcional dintr-o component dat construii una sau mai multe uniti de programare (module):

    Codificai layout-ul exact al interfeei ecran ntr-un limbaj de programare dat Codificai logica exact de funcionare ntr-un limbaj de programare dat Codificai logica exact de acces la date i de stocare a acestora, ntr-un

    limbaj de programare dat Codificai logica exact de interfa ntr-un limbaj de programare dat

    Stabilii standarde n cazul mai multor uniti de programare, pentru: Convenii de numire pentru identificarea unic a modulului ntr-o ierarhie de

    componente i module Comentarii pentru descriere : condiii de intrare i de ieire din modul, date vitale

    pentru procesare, funcie urmrit. Mesaje de eroare

  • Sistem stat de plat ipotetic Testare module

    Dezvoltatorul modulului:

    Testeaz fiecare unitate de programare (modul) : Setarea condiiilor modulului Alegerea datelor de intrare potrivite Rularea modulului i observarea comportamentului su prin verificarea

    ieirilor.

    Remediere eroare descoperit

    Re-testare modul

  • Sistem stat de plat ipotetic Integrare i testare funcionalitate

    Integrarea (compilare i editare de legturi) tuturor modulelor testate n cadrul unitii funcionale corespunztoare.

    Aplicarea cazurilor de testare1 asupra unitii funcionale.Remedierea erorilor n modulele specifice.Re-testarea unitii funcionale.

    Dup ce testarea funcional a fost trecut, blocarea modulelor din unitatea funcional fa de modificri ulterioare.

    Aplicarea unui mecanism de management al configuraiilor. Acesta poate fi automatizat utiliznd unelte pentru managementul configuraiilor (ex. CVS, Subversion,)

    1Cazurile de testare (scenarii) sunt proiectate pe baza cazurilor de utilizare (scenarii) care sunt derivate din cerinele funcionale ale sistemului.

  • Sistem stat de plat ipotetic Lansare

    Integrarea tuturor componentelor i testarea pentru a ne asigura c ntreg sistemul funcioneaz ca ansamblu i n contextul de la utilizatorul final.

    Detectarea problemelor la interfaa sistemului.Detectarea problemelor de interaciune ntre componente.Remedierea problemelor descoperite. Re-testareaILHFUXL modul modificat, unitii funcionale corelate cu acesta i

    sistemului n ansamblu.

    Cnd nu mai apar probleme, protejarea acestei versiuni a sistemului (release) fa de modificri ulterioare.

  • Sistem stat de plat ipotetic Lansare

    Educarea utilizatorilor pentru utilizarea sistemului: Pregtirea materialului de instruire Instruirea utilizatorilor

    Pregtirea personalului ce asigur suport utilizatorilor instruit n: Sistemul stat de plat Contexte utilizator Instrumente necesare n acordare de asisten utilizatorilor

    LANSARE (RELEASE) sistem stat de plat.

  • Sistem stat de plat ipotetic Suport i ntreinere

    Aplicaie simpl : nu constituie o problem major.

    Aplicaie complex : poate necesita un set foarte complex de activiti.

    Pe cine apeleaz utilizatorul (dup ce a consultatmanualul utilizator) cnd aplicaia se oprete i afieaz un mesaj cu mai multe opiuni pentru utilizator nainte de ca sistemul s poat continua procesarea?

    Pe cine apeleaz utilizatorul cnd banca a modificat interfaa de transfer direct a sumelor pltite?

    Pe cine apeleaz utilizatorul cnd sistemul stat de plat expune o problem de comportament dup remedierea unei probleme anterioare?

  • Sistem stat de plat ipotetic Suport i ntreinere

    Estimarea i alocarea resursei umane, bazat pe: Numrul ateptat de clieni i utilizatori Numrul i tipurile problemelor cunoscute ce existau la lansarea sistemului Estimarea numrului de probleme ce vor fi descoperite de utilizator Gradul instruirii utilizatorilor Gradul instruirii personalului de asisten utilizator Numrul personalului de dezvoltare edetermint s se implice n asigurare de asisten utilizator Numrul estimat de lansri pentru remediere probleme i pentru modificri funcionale.

    Se consider cel puin dou grupuri de personal de suport: Un grup pentru a rspunde i a gestiona utilizarea sistemului i a rezolva problemele

    simpleCompetene: comunicare, cunoaterea utilizrii sistemului

    Un grup pentru remedierea problemelor dificile i implementarea modificrilor ulterioare.

    Competene: proiectare, codificare

    Obs. Organizaia de suport i ntreinere este comparabil n dimensiune i complexitate cu echipa original de dezvoltare.

  • Subiecte tratate

    Probleme ale dezvoltrii i asigurrii de suport pentru prdusele software

    Un program simplu Mrimea i complexitatea unui sistem Probleme tehnice i non-tehnice Probleme ale aplicaiilor de dimensiuni mari Eforturi de coordonare proces, produs i persoane

  • Eforturi de coordonare

    Ultimul exemplu demonstreaz necesitatea mai multor activiti ale ingineriei software (specificarea i analiza cerinelor, proiectarea, implementatarea, testarea i integrarea, suport,).

    Sisteme mari i complexe scalare a: Procesului necesar Structurii de proiectare i coninutului produsului Personalului necesar

  • Eforturi de coordonare

    Proces:

    anii 1990 - mbuntit (extins, complicat) prin: Mai multe revizuiri, inspecii, testri, ntruniri de lucru Eforturi mari pentru asigurarea calitii i realizarea de msurtori cu

    scopul de a preveni, detecta i corecta problemele, a mbunti calitatea software-lui i a crete productivitatea dezvoltatorilor desoftware.

    anii 2000 simplificat pentru a rspunde provocrilor referitoare la vitez i cost ale pieii de produse software.

    Nu exist un proces valabil n orice situaie !!!

  • Eforturi de coordonare

    Produs:Produsul software conine: Codul executabil Documentaie: specificaiile cerinelor, modelul proiect, scenariile testelor

    funcionale, manualul utilizator Kit instruire utilizator (optional) Suport (optional)

    Motivaie coordonare modificri: O coeziune iniial puternic i o cuplare slab se vor eroda pe msur ce

    se aplic modificri. Crete complexitatea cresc eforturile de testare

    Cum s proiectm modificrile ?Cum s coordonm modificrile ?

  • Eforturi de coordonare

    Persoane:

    Resursa uman este crucial n dezvoltarea i asigurarea de suport pentru produse software !!!

    Industria de software este nc labor intensive (! Munc intelectual de nalt calificare !)

    Cum s coordonm activitile persoanelor implicate n dezvoltarea produsului software ?

    Cum gestionm resursa uman ?

  • Ce ?INGINERIA SOFTWARE !

    De ce?

    Cum?

    Cine?

    Cnd?

    Q&A