Inginerie Software c1
-
Upload
adi-carpinisan -
Category
Documents
-
view
41 -
download
5
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