Upload
lavinia-pop
View
216
Download
0
Embed Size (px)
Citation preview
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1
Introducere în Ingineria Programării
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 2
Obiective
De a face o introducere în ingineria software şi de a explica importanţa ei
De a prezenta răspunsuri la întrebările cheie legate de ingineria programării
De a prezenta aspecte etice şi profesionale ce sunt legate de inginerii software
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 3
Cuprins
Întrebări frecvente despre ingineria software
Responsabilitate etică şi profesională
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 4
Ingineria programării
Economiile TUTUROR ţărilor dezvoltate depind de software.
Tot mai multe sisteme sunt controlate de programe.
Ingineria software se ocupă cu teorii, metode şi instrumente pentru dezvoltarea software profesională.
Cheltuielile legate de software reprezintă un procent semnificativ în toate ţările dezvoltate.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 5
Costuri software
Costurile software de cele mai multe ori depăşesc costurile hardware.
Costurile de întreţinere a unui program de obicei sunt mai mari decât costurile de dezvoltare. Pentru sistemele cu o viaţă lungă, costurile de mentenanţă pot depăşi de câteva ori costurile de dezvoltare.
Ingineria programării se ocupă cu dezvoltarea eficientă a programelor.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 6
Întrebări frecvente despre ingineria software
Ce este software-ul? Ce este ingineria software? Care este diferenţa dintre ingineria software şi
ştiinţa calculatoarelor? Care este diferenţa dintre ingineria software şi
ingineria sistemelor? Ce este un proces software? Ce este un model al procesului software?
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 7
Întrebări frecvente despre ingineria software
Care sunt costurile în ingineria software? Ce sunt metodele ingineriei software? Ce este CASE (Computer-Aided Software
Engineering) Care sunt atributele unui software de calitate? Care sunt provocările esenţiale ale ingineriei
software?
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 8
Ce este software-ul?
Programele de calculator şi documentaţia legată de ele cum ar fi cerinţe, modele de proiectare şi manuale de utilizare.
Produsele software pot fi dezvoltate pentru un client particular sau pentru o piaţă generală.
Produsele software pot fi• Generice – dezvoltate pentru a fi vândute unei game largi de
utilizatori (cum ar fi Excel sau Word).• Dedicate – dezvoltate pentru un singur client în conformitate cu
cerinţele clientului. Software nou poate fi creat prin dezvoltarea de noi
programe, configurând sisteme software generice sau reutilizând software existent.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 9
Ce este ingineria software?
Ingineria software este o disciplină de inginerie ce se ocupă de toate aspectele producţiei software.
Inginerii software trebuie să adopte o abordare sistematică şi organizată şi să folosească instrumente şi tehnici potrivite cu problema de rezolvat, cu constrângerile de dezvoltare şi cu resursele disponibile.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 10
Care este diferenţa dintre ingineria software şi ştiinţa calculatoarelor?
Ştiinţa calculatoarelor se ocupă cu partea de teorie şi fundamente; ingineria software se ocupă cu părtile practice de dezvoltare şi livrare a programelor utile.
Teoriile ştiinţei calculatoarelor nu sunt suficiente pentru ingineria software.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 11
Care este diferenţa dintre ingineria software şi ingineria sistemelor?
Ingineria sistemelor se ocupă cu toate aspectele de dezvoltare ale sistemelor bazate pe calculator incluzând hardware, software şi ingineria proceselor. Ingineria software este parte a acestui proces ce se ocupă cu dezvoltarea infrastructurii software, control, aplicaţii şi baze de date în sistem.
Inginerii de sistem sunt implicaţi în specificarea sistemelor, proiectarea arhitecturii, integrare şi instalare.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 12
Ce este un proces software? Este o mulţime de activităţi ale căror scop este
dezvoltarea sau evoluţia unui software. Activităţile generice prezente în toate procesele
software sunt:• Specificare – ce ar trebui să facă sistemul şi care sunt
constrângerile de dezvoltare• Dezvoltare – producţia sistemului software• Validare – verificarea dacă sistemul software este ceea
ce doreşte clientul• Evoluţie – schimbarea sistemului software ca răspuns
la cerinţele clientului
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 13
Ce este un model al procesului software?
Este o reprezentare simplificată a unui proces software, prezentată dintr-o perspectivă specifică.
Exemple de perspective prin care putem privi un process• Perspectivă Workflow – secvenţă de activităţi;• Perspectivă Data-flow – fluxul informaţiei (de date);• Perspectivă Rol/acţiune – cine ce face.
Modele generic de proces• Waterfall (cascadă);• Dezvoltare iterativă;• Dezvoltare bazată pe componente.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 14
Care sunt costurile în ingineria software?
Aproximativ 60% din costuri sunt costuri de dezvoltare, iar 40% sunt costuri de testare. Dar pentru software dezvoltat pentru un client particular, costurile de evoluţie de cele mai multe ori depăşesc costurile de dezvoltare.
Costurile variază în funcţie de tipul sistemului dezvoltat şi în funcţie de cerinţele sistemului mai ales cele de performanţă şi fiabilitate.
Distribuţia costurilor depinde mult de modelul de dezvoltare folosit.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 15
Distribuţia costurilor pe activitateWaterfall model
Iterative development
Component-based software engineering
Development and evolution costs for long-lifetime systems
System evolution
10 200 30 4000
System development
Specification Design Development Integration and testing
25 50 75 1000
Specification Development Integration and testing
25 50 75 1000
Specification Iterative development System testing
25 50 75 1000
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 16
Costurile de dezvoltare a unui produs
Specification Development System testing
25 50 75 1000
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 17
Ce sunt metodele ingineriei software?
Sunt abordări structurate ale dezvoltării software care includ modele de sistem, notaţii, reguli, sfaturi de proiectare şi ghid de proces.
Diagrame de model• Descrieri grafice ale modelului de sistem;
Reguli• Constrângeri aplicate modelelor de sistem;
Recomandări• Sfaturi de bună proiectare;
Ghid de proces• Ce activităţi ar trebui efectuate.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 18
Ce este CASE (Computer-Aided Software Engineering)
Sunt sisteme software care oferă suport pentru activităţile proceselor software.
Sistemele CASE sunt deseori folosite pentru a realiza o metodologie de dezvoltare.
Upper-CASE• Aplicaţii care vin în ajutorul activităţilor de început ale
procesului de dezvoltare cum ar fi specificarea cerinţelor, analiză şi proiectare;
Lower-CASE• Aplicaţii care ajută activităţi ulterioare cum ar fi
programare, depanare şi testare.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 19
Care sunt atributele unui software de calitate?
Un software de calitate trebuie să ofere funcţionalitatea şi performanţa cerută de client şi să fie mentenabil, fiabil şi acceptat de client.
Mentenabilitate• Software-ul trebuie să evolueze pentru a fi în pas cu schimbările;
Fiabilitate• Software-ul trebuie să fie “de încredere”;
Eficienţă• Software-ul nu trebuie să abuzeze de resursele sistemului;
Acceptanţă• Software-ul trebuie să fie acceptat de utilizatorii pentru care a fost
proiectat. Acest lucru înseamnă că trebuie să fie uşor de înţeles, utilizabil şi compatibil cu alte sisteme.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 20
Care sunt provocările esenţiale ale ingineriei software?
Eterogenitate, promptitudine şi încredere. Eterogenitate
• Tehnicile de dezvoltare software trebuie să facă faţă platformelor şi mediilor de execuţie eterogene;
Promptitudine• Tehnicile de dezvoltare trebuie să ducă la o mai
rapidă dezvoltare a programelor; Încredere
• Tehnicile de dezvoltare trebuie să demonstreze utilizatorii pot folosi cu încredere produsul software.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 21
Responsabilităţi profesionale şi etice
Ingineria software implică mai multe responsabilităţi decât punerea în practică a unor aptitudini tehnice.
Inginerii software trebuie să aibă un comportament onest şi etic dacă vor să fie respectaţi ca profesionişti.
Comportamentul etic înseamnă mai mult decât a respecta legea.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 22
Elemente de responsabilitate profesională
Confidenţialitate• Trebuie respectată confidenţialitatea angajaţilor şi a
clienţilor indiferent dacă a fost semnat sau nu un contract de confidenţialitate.
Competenţă• Nu trebuie prezentat greşit nivelul de competenţă.
Nu trebuie acceptată o lucrare care depăşeşte nivelul de competenţă.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 23
Elemente de responsabilitate profesională
Proprietatea intelectuală• Trebuie avute în vedere legile locale legate de
patente, copyright, etc. Trebuie de asemnea luate măsuri pentru protejarea proprietăţilor intelectuale ale angajaţilor şi clienţilor.
Întrebuinţare iresponsabilă a calculatorului• Aptitudinile de lucru cu calculatorul nu trebuie
folosite iresponsabil asupra calculatoarelor altor persoane. Folosirea iresponsabilă variază de la lucruri relativ triviale (jucarea unor jocuri pe calculatoarele clientului) până la lucruri extrem de serioase (virusarea calculatoarelor).
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 24
Concluzii
Ingineria software este o disciplină de inginerine ce se ocupă cu toate aspecte de producţie software.
Produsele software constă din programele dezvoltate şi documentaţia corespunzătoare. Atributele esential ale produselor software sunt maintainabilitate, fiabilitate, eficienţă şi utilitate.
Procesul software constă din activităţile implicate în dezvoltarea produselor software. Activităţile de bază sunt specificare software, dezvoltare, validare şi evoluţie.
Metodele sunt moduri organizate de producţie software. Ele includ sugestii pentru procesul ce trebuie urmat, notaţii folosite, reguli ce guvernează descrierile sistemului ce este produs şi sfaturi de proiectare.
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 25
Concluzii
Aplicaţiile CASE sunt sisteme software proiectate să ajute activităţile de rutină din procesul de dezvoltare software cum ar fi editarea diagramelor, verificarea consistenţei lor şi evidenţa testelor rulate.
Inginerii software au responsabilităţi profesionale şi sociale care depăşesc elementele tehnice.