Software Process and Life Cycle Drd.ing. Flori Naghiu Murphy s Law: Left to themselves, things tend to go from bad to worse. Principiile de dezvoltare software Principiul Calitatii : asigurarea gasirii si eliminarii defectelor Principiul Managementului : planificarea costurilor, resurselor, si a timpului Principiul tehnologizarii (Engineering) : definirea clara a problemei, selectarea solutiei. Organizarea unei structure pe nivele, care sa asigure anumite straturi: Tool-uri, metode, procese, toate acestea reflectandu-se in calitatea produselor. Aceasta structurare poate fi dobandita si cu ajutorul unor modele, cum ar Capability Maturity Model, model pe 5 nivele: Nivelul 0: Chaos Nivelul 1: Initial Nivelul 2: Repeatable Nivelul 3: Defined Nivelul 4: Managed Nivelul 5: Optimizing Procesele software se bazeaza pe urmatoarele consideratii : ele descriu activitatile majore, folosesc resurse in cadrul unor constrangeri, fiecare activitate este parte dintr-o secventa si are o intrare si o iesire bine determinate. Acestea se bazeaza pe anumite principii. Un proiect software presupune urmatoarele etape: Requirements Analysis & Specification Conceptual/System Design Detailed/Program Design Implementation/Coding Unit & Integration Testing System Testing System Delivery Maintenance
Modalitatea in care aceste etape sunt parcurse tine de software life cycle. [IEEE 1074 Standard for Developing Life Cycle Processes] Figura 1. Life cycle processes [INTERNATIONAL STANDARD ISO/IEC 12207 SOFTWARE LIFE CYCLE PROCESSES, Raghu Singh Federal Aviation Administration Washington, DC, USA]
Modelul Waterfall Dezavantaje: necesitatea unui feedback, care ar putea introduce timpi suplimentari in dezvoltare, cat si posibiliatea propagarii unor erori. Se bazeaza pe o viziune statica cerintelor, iar testarea se face indeosebi pe baza codului folosit, astfel incat utilizatorul nu este implicat pe parcurs in dezvlotarea proiectului. Aceasta metoda este in special folosit in industria aerospatiala si in cea militara. Un alt neajuns este acela ca nu asigura o buna reutilizare. Modelul bazat pe prototipuri [Pressman] Avantaje: o mai buna intelegere a cerintelor clientului, studiul fezabilitatii pentru un design dat, exploararea performantelor sistemului. Dezavantaje: tratarea prototipului ca fiind o solutie, un prototip reprezinta un sistem partial.
Modelul Spiral si WinWin Spiral [Pfleeger] Avantaje: minimizarea riscurilor, imbunatateste estimarile, realizeaza produse conforme, porneste de la particular spre general. Riscurile adoptarii acestui model sunt cele in adoptarea oricarui mix: orientat pe specificatii, pe prototipuri, in dezvolatarea software. Diferente: identificarea stakeholderilor principali, si a conditiilor lor de castigm si a situatiilor de reconciliere. Aceste aspect aduc beneficii in elaborarea obiectivelor, constrangerilor si alternativelor aparute de-a lungul procesului de dezvoltare. Pentru exemplificare va rog sa consultati case study-ul propus:
http://sunset.usc.edu/publications/techrpts/1998/usccse98-512/usccse98-512.pdf Modelul devoltarii in faze DEVELOPERS Build Release 1 Development systems Build Release 2 Build Release 3 Time USERS Use Release 1 Production systems Use Release 2 Use Release 3 [ http://www.progapl.ase.ro/online_course/] Avantaje: abordare incrementala, evitarea unui big-bang in dezvolatre, lesson learn sunt incorporate.
Modelul V Aspecte ce trebuies luate in calcul: exista un truing al constrangerilor: timp, cost si calitate care trebuieste respectat pentru a realize un proiect in conditii optime. Conform cu principiul Icebergului enuntat de catre Pilat-Dodescu, mentenata unui proiect costa mai mult timp si mai multi bani decat partea vizibila a Icebergului, si anume partea de dezvoltare. Pentru exemplificare a fiecarui model si o comparative intre aceste modele, urmati linkul: http://www.giac.org/resources/whitepaper/application/217.php Intrebari si aplicatii 1). Cum se reflecta fiecare proces in modelul Waterfall? 2). Cand se preteaza un model de tip Spirala? 3).Exemplificati o situatie in oportuna pentru a folosi un model de tip incremental. 4). Enumerati avantaje si dezavantaje pentru modelul V. 5). Cu ce ati putea asemana un process software? 5). Ce intelegeti prin Capability Maturity Model (CMM)? 6).Care model asigura calitatea proiectelor? 7).Evidentiati in fiecare model principiile de dezvoltare software.
Informatii suplimentare puteti gasi aici: http://www.augustana.ab.ca/~mohrj/courses/2000.winter/csc220/lecture_notes/lifecycle.html http://www.jodypaul.com/swe/lcm/ http://en.wikipedia.org/wiki/software_lifecycle_processes