Documente Academic
Documente Profesional
Documente Cultură
Domeniul general al
ingineriei software
Sumar
Criza software.
Probleme legate de software. Exemple
Complexitatea sistemelor software
“Produs” şi “producţie” software: domeniul
ingineriei software
“Procese” de dezvoltare software (SDP)
Metodele formale ale ingineriei software
Instrumente CASE
Criza software
Inca inainte de 1970 a devenit clar ca:
Hardware-ul nu mai reprezinta o restricție importantă;
el permite dezvoltarea de programe tot mai complexe
Aceasta ridica mari probleme: efortul creste mai mult
decat liniar in comparatie cu dimensiunea programului
Programul nu e o entitate statica, ci evolueaza in timp
datorita schimbarii cerintelor si a mediului de utilizare
De aceea el trebuie facut usor de inteles si adaptat
pentru persoane diferite de cele ce l-au dezvoltat
Metodele de dezvoltare si intretinere existente sunt
inadecvate dezvoltarii de programe mari
Mai ales in conditiile in care productia software devine
o industrie de sine statatoare
Probleme de bază în dezvoltarea software
Sisteme “moştenite”
Fiindcă sunt importante,valoroase, dar și pentru că
există o comunitate de utilizatori, trebuie menţinute și
actualizate
Sisteme eterogene
Distribuite și mixte – “hardware si software”
Cerinţe si termene de livrare
Există o presiune crescuta privind rafinarea cerintelor
și scurtarea termenelor
Toate aceste probleme pot fi legate
• de ex., poate fi necesar să schimbăm rapid un sistem
moștenit și să-l facem accesibil în rețea
Câteva “mituri” legate de software
(cf. Roger Pressman, Software Engineering: A Practitioner's Approach)
degradării software-ului
Mitul nr.2: “putem remedia rămânerile in urmă prin
angajarea de noi programatori”
Realitate: poate, dar aceasta mărește eforturile de
Modificării, etc.
Procese
Metode
Instrumente
Focus pe calitate
Procese software
Un proces software este un set de activităţi ce au ca scop
dezvoltarea si evoluţia de software, văzute ca un mod de
producţie, deopotrivă repetabil cât şi controlabil
Activităţi generice in procesele software:
Specificarea: ce trebuie sa facă sistemul si care sunt
constrângerile sale de dezvoltare?
Dezvoltarea , sau “Producţia” sistemului software
Validarea, verificarea ca software-ul sa corespundă cu
cerinţele clientului
Evoluţia: modificarea software-ului ca răspuns la
schimbarea cerinţelor
Modele de procese software
Reprezentari simplificate de procese software,
proiectate dintr-o perspectiva specifica
“Workflow” – ca secvenţe de activităţi
“Dataflow” – ca fluxuri de informatii
“Rol/actiune” – “who does what?” (prezintă rolurile
celor implicaţi si activităţile de care sunt responsabili)
Modele de procese software generice
Modelul in cascada (Waterfall)
Dezvoltare evolutivă
Transformări formale
Integrare din componente reutilizabile
Metodele ingineriei software
Sunt moduri “organizate” de producţie software, ce
includ: sugestii, notaţii, reguli, indicaţii etc.
Abordări structurate, inclusiv modele de sistem
Modele descriptive
Includ descrieri ale modelelor grafice produse
Metode formale
Reguli si constrângeri aplicate modelelor sistem
Recomandări privind practicile de proiectare
Indicaţii privind fluxul proceselor
Descrierea succesiunii activităţilor
Metodele formale
Sunt aplicabile tuturor fazelor de dezvoltare:
Analiza
Modelare (specificare)
Proiectare
Implementare
Validare (verificare, testare)
... folosind:
Limbaje/notatii cu semantica precisa, matematica
Tehnici bazate pe logica matematica
Instrumente (CASE)
Utilitatea metodelor formale (1)
Importante pentru:
Sistemele agregate (ce se bazeaza pe componente
software)
Sistemelor complexe, cu software inglobat
Necesare pentru:
Mentinerea fiabilitatii sistemelor
Obtinerea sistemelor software de calitate
Atingerea unei productivitati cat mai mari
Reducerea costurilor – paradoxal, dar cat se poate de
adevarat!
Exemplele urmatoare vor clarifica acest aspect
Utilitatea metodelor formale (2)
In faza de analiza si specificare:
Specificatiile formale pot fi ne-ambigue
Pot fi verificate pentru consistenta
Pot fi folosite pentru a deduce anumite proprietati
La proiectare si implementare:
Se pot aplica tehnici de verificare si analiza
Se poate face sinteza automata a programelor, prin
transformari formale ale specificatiilor
La validarea si mentenanta programelor:
Se poate aplica generarea automata a cazurilor de test
Poate fi asigurata echivalenta codului vechi cu cel nou
Instrumente CASE
(Computer-Aided Software Eng.)
Sunt sisteme software ce asigura suport automat pentru
metodele/activităţile rutiniere din procesele software,
precum: editarea diagramelor de proiectare, verificarea
consistentei diagramelor, evidenta testelor executate
Upper-CASE
Instrumente de suport ale activităţilor de proces
initiale (analiza cerinţelor, design)
Lower-CASE
Instrumente de suport ale activităţilor de proces
finale (programare, depanare si testare)
Există componente de înregistrare si estimare a
costurilor
Zone de cunoștințe
Conform IEEE Computer Society “Software Engineering
Body of Knowledge” (http://www.swebok.org), putem
identifica 10 zone de cunoștințe cheie ale domeniului IP:
1. Cerințele 6. Managementul configurației
2. Proiectarea 7. Managementul proiectului
3. Construcția 8. Procesul
4. Testarea 9. Instrumente și metode
5. Mentenanța 10. Calitatea
Cerinţe şi specificaţii software
Documente/ nivele de specificare
Sumar
Cerinţe software și specificații. Analiza cerinţelor
Tipuri de cerinţe
Cerinţe funcţionale şi non-funcţionale
Cerinţe din domeniul aplicaţiei
Cerinţe utilizator şi cerinţe sistem
Studiu de caz: sistemul LIBSYS
Modalităţi de formulare a specificaţiilor
Formate: Șabloane de specificații
Organizarea cerinţelor într-un document
Formate: Standardul IEEE 830-1993 (1998)
Concluzii
Cerințele software
Cerințele sunt caracteristici ale viitorului sistem/
descrieri ale capabilităților sale pentru atingerea
unui anumit obiectiv în funcționarea sa
Descriu “ce” va face sistemul (nu și “cum”)
Procesul determinării cerințelor: Definirea și
Descoperirea și analiza cerințelor specificarea
cerințelor
Analiza Descrierea Prototipizare Documentare
problemei problemei și testare și validare
sistemul
Pot fi fraze abstracte ce descriu ceea ce face sistemul
ale sistemului
Dinamica cerinţelor (non-funcţionale)
Distincţia între cerinţe nu este atât de clară, de ex.
O cerinţă de securitate poate părea non-funcţională ,
*