25
©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1 Introducere în Ingineria Programării

Introducere in Ing Prog

Embed Size (px)

Citation preview

Page 1: Introducere in Ing Prog

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 1

Introducere în Ingineria Programării

Page 2: Introducere in Ing Prog

©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

Page 3: Introducere in Ing Prog

©Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 1 Slide 3

Cuprins

Întrebări frecvente despre ingineria software

Responsabilitate etică şi profesională

Page 4: Introducere in Ing Prog

©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.

Page 5: Introducere in Ing Prog

©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.

Page 6: Introducere in Ing Prog

©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?

Page 7: Introducere in Ing Prog

©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?

Page 8: Introducere in Ing Prog

©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.

Page 9: Introducere in Ing Prog

©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.

Page 10: Introducere in Ing Prog

©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.

Page 11: Introducere in Ing Prog

©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.

Page 12: Introducere in Ing Prog

©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

Page 13: Introducere in Ing Prog

©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.

Page 14: Introducere in Ing Prog

©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.

Page 15: Introducere in Ing Prog

©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

Page 16: Introducere in Ing Prog

©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

Page 17: Introducere in Ing Prog

©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.

Page 18: Introducere in Ing Prog

©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.

Page 19: Introducere in Ing Prog

©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.

Page 20: Introducere in Ing Prog

©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.

Page 21: Introducere in Ing Prog

©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.

Page 22: Introducere in Ing Prog

©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ţă.

Page 23: Introducere in Ing Prog

©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).

Page 24: Introducere in Ing Prog

©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.

Page 25: Introducere in Ing Prog

©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.