utilizarea tehnologiilor colaborative in dezvoltarea de software

12
Universitatea Alexandru Ioan Cuza, Iaşi Facultatea de Economie şi Administrarea Afacerilor Sisteme Informaţionale pentru Afaceri Utilizarea tehnologiilor colaborative în dezvoltarea de software Simciuc Iuliana Burdun Andrei

Upload: ovidiu-costinel-danciu

Post on 03-Jul-2015

201 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

Universitatea Alexandru Ioan Cuza, Iaşi

Facultatea de Economie şi Administrarea Afacerilor

Sisteme Informaţionale pentru Afaceri

Utilizarea tehnologiilor colaborative în

dezvoltarea de software

Simciuc Iuliana

Burdun Andrei

Page 2: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

2

Cuprins

Introducere ...................................................................................................................................... 3

1. Instrumente de colaborare, medii, şi infrastructură .................................................................... 6

1.1 Instrumente de colaborare model-based ................................................................................ 6

1.2 Instrumente de colaborare process-based .............................................................................. 8

1.3 Instrumente de colaborare de tip awareness .......................................................................... 9

1.4 Instrumente de colaborare la nivel de infrastructură ............................................................. 9

2. Direcţii viitoare în utilizarea tehnologiile colaborative în dezvoltarea de software ................. 10

3. Concluzii ................................................................................................................................... 11

Bibliografie ................................................................................................................................... 12

Page 3: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

3

Utilizarea tehnologiilor colaborative în dezvoltarea

de software

Abstract

Collaborative software development is becoming particularly important in the practice of

software delivery. A high level of collaboration is critical because the software development

process remains fundamentally difficult. The difficulty is due, in part, to shifting requirements

and other real-time changes. It is also due to the complexity of the products and services being

delivered.

Today's teams are often geographically or organizationally distributed, adding the

complications of different time zones, corporate policies, and languages to the process. All these

factors require development teams to communicate and monitor progress throughout the

development lifecycle and to work together to find solutions that deliver effective software

shipped on time and on budget.1

Introducere

Ca oameni, avem mai multe limitări care afectează abilitatea noastră de a crea aproape

orice bucată de cod. Când se lucrează la un nivel înalt de abstractizare – ca şi atunci când scriem

cerinţele, codul, cazurile de utilizare – suntem lenţi şi predispuşi la erori. Ca o consecinţă, trebuie

să lucrăm împreună pentru a finaliza proiecte mari, în timp redus şi să avem câteva persoane care

să ne corecteze erorile. Odată ce o să începem să lucrăm împreună, ne confruntăm cu alte

probleme. Limbajul natural pe care-l folosim este bun pentru a comunica, dar, de cele mai multe

ori, este ambiguu. Memoria umană este bună, dar nu atât de precisă încât să-şi amintească detalii

ale unui proiect bogat în detalii. Suntem în imposibilitatea de a urmări tot ceea ce face fiecare

într-un grup mare şi, astfel, riscăm să dublăm munca altora. Sistemele mari pot fi de multe ori

1 http://www-01.ibm.com/software/info/features/collaboration/main.html

Page 4: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

4

realizate în multe moduri şi, prin urmare, dezvoltatorii trebuie să conveargă pe o arhitectură

unică.

Tehnicile colaborative în dezvoltarea de software au scopuri multiple care se întind pe

întreg ciclul de viaţă al dezvoltării:

Stabilirea domeniului de aplicare şi funcţionalităţile unui proiect. Inginerii trebuie să

lucreze cu utilizatorii finali şi cu finanţatorii unui proiect software pentru a descrie ceea

ce ar trebuie să facă atât la nivel înalt cât şi la nivel de cerinţe detaliate. Această formă de

colaborare poate avea un impact profund asupra unui proiect variind de la o negociere up-

front de tip cascada la stilul iterativ de evoluţie a prototipului.

Gestionarea dependenţelor între activităţi şi organizaţii. Aceasta cuprinde o gamă

largă de activităţi de colaborare, invlusiv managementul tipic de împărţire a sarcinilor de

lucru, monitorizarea, evaluarea şi controlul activităţilor. Modularizarea deciziilor

afectează, de asemenea, dependenţele.

Reducerea dependenţelor în rândul dezvoltatorilor. Un important mecanism pentru

gestionarea dependenţelor este încercarea de a le reduce acolo unde este posibil,

micşorând, astfel, nevoia de colaborare. Sisteme pentru managementul dezvoltării

sofware permit dezvoltatorilor să lucreze în spaţii proprii (My Workspace) reducându-se

astfel dependenţele între ingineri. Cu spaţii proprii de lucru, dezvoltatorii nu mai trebuie

să aştepte alţi dezvoltatori pentru a-şi putea compila propriile secvenţe de cod.

Identificarea, înregistrarea şi rezolvarea erorilor. Erorile şi ambiguităţile pot apărea în

toate etapele dezvoltării de software şi multe abordări au fost dezvoltate pentru

identificarea si înregistrarea existantei lor. Printre tehnicile de colaborare se află şi

inspecţiile unde mai multe persoane sunt aduse împreună, perspectivele lor multiple pot

identifica erori, iar întrebările puse de ei pot elimina ambiguitatea. Testarea, în cazul în

care un grup creează teste pentru a descoperi erori în software-ul dezvoltat de alţii este o

altă cale de colaborare pentru identificarea erorilor. Utilizatorii de software colaborează,

de asemenea, în identificarea erorilor fie pentru versiuni beta, fie pentru versiuni finale,

prin raportarea de bug-uri. Raportarea erorilor ajuta dezvoltatorii să înregistreze

problemele şi propune soluţii pentru rezolvarea lor.

Înregistrarea memoriei organizaţiei. În orice proiect derulat pe termen lung, oamenii

pot veni şi pleca. Parte din activitatea de colaborare este gestionarea a “cine ce ştie”,

Page 5: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

5

astfel încât participanţii la proiect să poată acumula cunoştinţele celorlalţi şi utiliza aceste

informaţii în dezvoltarea software.

Inginerii software au adoptat o gamă largă de tehnologii de comunicare şi de colaborare

pentru a ajuta la coordonarea proiectelor. Fiecare tehnologie de comunicare în masă a fost

adoptată de către inginerii software în folosul proiectului, inclusiv telefonul, teleconferinţa,

emailul, voice mail-ul, listele de discuţii, internetul, mesageria, VoIP şi videoconferinţa. Aceste

căi de comunicare sunt utile în fiecare etapă din ciclul de viaţă al proiectului.

Inginerii software colaborează la definirea specificaţiilor, la crearea diagramelor UML, a

codului sursă şi la rapoartele de testare. Fiecare dintre cele enumerate reprezintă modele diferite

ale proiectului în curs. Colaborarea în dezvoltarea software poate fi inţealeasă ca o colaborare

orientată pe modele în care accentul se pune pe crearea de modele noi, împărtăşirea cunoştinţelor

în jurul modelelor şi eliminarea erorilor în cadrul modelelor.

Orientarea către modele în colaborarea dintre inginerii software este importantă datorită

efectului sau de structurare. Modelele oferă un sens comun pe care inginerii îl utilizează când îşi

coordonează muncă, dar şi atunci când, lucrând împreună, consultă specificaţiile pentru a

determina cum să proiecteze o anumită parte de proiect. Dezvoltatorii utilizează modelele şi

pentru a crea un nou mod de a vedea dezvoltarea proiectului atunci când discuta despre o

diagramă UML şi, alstfel, înţeleg mai bine implicaţiile asupra muncii lor. Modelele elimină şi

ambiguitatea, un inginer putând descrie mai bine felul în care el a înţeles sistemul. Fără structura

şi semantica furnizate de model, ar fi mult mai dificil de recunoscut diferenţele de înţelegere

dintre colaboratori.

Inginerii software au dezvoltat o gamă largă de tehnologii orentate pe modele pentru a

sprijini coloaborarea în cadrul proiectelor. Aceste tehnologii se aplică pe întreg ciclul de viaţă,

incluzant instrumentele de colaborare, diagramele UML, sistemele de management software şi

de urmărire a erorilor. Sistemele de modelare a proceselor au fost create pentru a ajuta şi

gestiona întreg ciclul de viaţă, sprijinind managerii şi inginerii în artibuirea taskurilor,

monitorizând progresului actual şi îmbunătăţind procesele. În domeniul comercial există multe

exemple de software pentru managementul proiectelor, inclusiv Microsoft Project şi Raţional

Method Composer. Au fost create, de asemenea, interfeţe standard ca de exemplu

WebDAV/DeltaV sau PCTE. Integrarea mediilor de dezvoltare web-based serversc la integrarea

unor serii de modele de tehnologii colaborative.

Page 6: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

6

1. Instrumente de colaborare, medii, şi infrastructură

Instrumentele create pentru a sprijini colaborarea în dezvoltarea software se încadrează în

patru mari categorii2

Instrumentele de colaborare model-based permit inginerilor să colaboreze în cadrul

reprezentărilor software: diagramele UML, de exemplu. Instrumentele de colaborare process-

based reprezintă toate sau o parte a proceselor dezvoltării software. Sistemele care utilizează

procese explicite de reprezentare permit procese de modelare şi adoptare software. În schimb,

instrumentele care utilizează reprezentări implicite încorporează un proces de muncă specific

precum checkout, edit, checkin. Instrumentele de tip awarness nu suporta taskuri specifice dar,

în schimb, informează dezvoltatorii despre munca altora, în parte pentru a evita conflicte.

Colaborarea infrastructurală a fost dezvoltată pentru a îmbunătăţi interoperabilitatea între

instrumentele de colaborare şi se concentrează, în primul rând, asupra datelor lor şi asupra

controlului integrat.

1.1 Instrumente de colaborare model-based

Dezvoltarea de software implica crearea de multiple componente. Acestea includ

produsul final, codul sursă, dar includ, de asemenea, specificaţiile proiectului, arhitectura,

modelele de proiectare, planurile de testare, etc. Fiecare tip de componentă are semnificaţia sa

proprie, variind de la limbajul natural la limbajul semi-natural al UML-ului sau la semantica

formală a limbajului de programare. Astfel, crearea acestor componente reprezintă crearea

modelelor. Crearea fiecărui dintre aceste componente este un mod inerent de activitate

colaborativa. Mulţi ingineri software contribuie la fiecare componentă, încercând să înţeleagă

„cine” a făcut „ce”, eliminând erorile şi adăugând contribuţia proprie. Dezvoltatorii colaborează

cu clienţii în mod special la definirea specificaţiilor şi la testarea produsului final pentru a se

asigura că modulele dezvoltate reflectă în totalitate ceea ce clientul a dorit. Prin urmare,

colaborarea pentru a crea componente software reprezintă colaborarea pentru a crea modele de

sisteme software. Sistemele proiectate să suporte crearea colaborativa şi de editare a unor

componente specifice suportă, de fapt, crearea de modele specifice şi, deci, suportă colaborarea

2 Jim Whitehead, Collaboration in Software Engineering: A Roadmap

Page 7: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

7

model-based. Instrumentele de colaborare există pentru a sprijini crearea oricărui tip de model

găsit în practica dezvoltării de software.

Specificaţiile. În faza de analiza, există multe instrumente comerciale care sprijină

definirea colaborativă de specificaţii: Raţional RequisitePro, Borland CaliberRM, Telelogic

DOORS. Aceste instrumente permit inginerilor să realizeze cazuri de utilizare şi să definească

cerinţe utilizând limbajul natural în format text, să identifice dependentele printre şi între cerinţe

şi use case-uri. Integrarea cu instrumente de design şi de testare permit dependenţe între

reprezentări. Caracteristicile de colaborare variază în funcţie de instrumentele utilizate. În cadrul

RequisitePro, cerinţele sunt stocate într-o bază de date per proiect şi pot fi editate printr-o

interfaţă web-based prin modificarea unui document Word care interacţionează cu baza de date

cu ajutorul unui plug-in sau prin editarea directă prin interfaţa RequisitePro. Mai mulţi

dezvoltatori pot edita specificaţiile simultan prin aceste interfeţe. Deşi este posibilă şi utilizarea

softului din afară organizaţiei, RequisitePro este proiectat pentru folosirea lui în cadrul

organizaţiei. RavenFlow sprijină colaborarea printr-un proces de check-in/check-out. În timp de

majoritatea instrumentelor pentru definirea specificaţiilor sunt aplicaţii desktop, Gatherspace şi

eRequirements sunt softuri colaborative pentru definirea cerinţelor ce pot fi accesate doar printr-

un browser web.

Cercetările privind instrumentele de colaborare pentru definirea specificaţiilor s-au

concentrat pe sprijinirea discuţiilor dintre finanţatorii proiectelor, utilizarea noilor cerinţe ale

proceselor dezvoltării software şi pe explorarea platformelor şi domeniului new media. WinWin

a fost proiectat să sprijine procesul de definire a cerinţelor de dezvoltare software care sprijină

procesele de negociere explicit în interfaţa softului cu o structură de bază care încurajează

rezolvarea conflictelor. ART-SCENE sprijină o abordare a definirii cerinţelor în care o potenţială

echipă creează use case-uri utilizând o serie de şabloane accesibile printr-o intervafaţă web.

Acestea sunt apoi utilizate pentru a genera automat scenarii care descriu situaţii normale şi

alternative şi care pot apoi fi evaluate de care analişti. Proiectul Software Cinema a examinat

utilizarea unei camere pentru a înregistra dialogurile dinte ingineri şi clienţi, permiţând că aceste

descuţii să fie înregistrate şi utilizate pentru analize în detaliu.

Arhitectura. Deşi crearea unei arhitecturi finale a unui software pentru un proiect este o

activitate colaborativă şi politică, multe dintre aceste colaborări au loc în afara instrumentelor de

asistare a proiectării. Raţional Software Architect este un instrument UML concentrat pe

Page 8: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

8

arthitectura software. Dezvoltatorii pot parcurce o bibliotecă deja existentă şi pot colabora cu alţi

dezvoltatori în crearea de diagrame, această colaborare fiind mediată de către un sistem de

configurare.

Design. Astăzi, ca urmare a adoptării puternice a UML (Unified Modeling Language),

instrumentele de proiectare software sunt sinonime cu editorii UML şi includ Raţional Rose,

ArgoUML, Borland Together, Telelogic Rhapsody, Altova Umodel. Funcţionalităţile de

colaborare ale UML depind, în mare măsură, de capacităţile de configurare software care stau la

baza sistemul de management.

Testarea. Ca şi definirea cerinţelor, testarea implică de multe ori, colaborări substanţiale

între echipa de dezvoltatori şi clienţi. Amploarea testării variază substanţial în proiecte şi

organizaţii. Dezvoltatorii de aplicaţii software utilizează adesea teste publice beta în care

potenţialii utilizatori primesc access la soft şi raportează bug-uri echipei de dezvoltatori. De

asemenea, cele mai bune practici pentru fezabilitatea testării implică mai mulţi oameni care

realizează task-uri specifice sub observaţia altora, această metodă fiind o nouă formă de testare

colaborativă. Într-o organizaţie de dezvoltatori, testarea implică, de obicei, colaborări între testeri

şi dezvoltatori. Instrumentul cheie de colaborare între aceste două entităţi îl reprezintă urmărirea

bug-urilor. Instrumentele de urmărire a bug-urilor permit înregistrarea unei erori iniţiale,

prioritizarea, adăugarea de comentarii, compararea rapoartelor de acelaşi tip şi atribuirea lor spre

rezolvare unui dezvoltator. În momentul în care un bug a fost corectat, acesta este înregistrat în

sistemul de urmărire a bugurilor. Facilităţile de căutare permit o gamă largă de raportare a

erorilor.

1.2 Instrumente de colaborare process-based

Dezvoltatorii care lucrează împreună pentru a dezvolta o aplicaţie de mare anvergură îşi

pot crea avantaj din a avea structuri predefinite pentru secvenţa de paşi care trebuie parcurşi,

rolurile pe care inginerii trebuie să le îndeplinească, precum şi modulele care trebuie create.

Acesta structura predefinită ia forma unui model de proces sofware şi serveşte la reducerea

volumului de coordonare necesar în a iniţia un proiect. Având structura tipică de paşi, roluri şi

componente definite, dezvoltatorii pot începe să lucreze la proiect mai repede decât atunci când

ar fi nevoiţi să renegocieze întreaga structură a proiectului. Beneficiul principal este acela de a

Page 9: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

9

limita timpul necesar de coordonare a muncii din cadrul proiectului prin standardizarea punctelor

de colaborare, dar şi de a creşte predictibilitatea activităţilor viitoare. În măsura în care procesele

software sunt previzibile, mediile software mot media lucrul colaborativ în cadrul unui proiect.

Acestea oferă facilităţi pentru a genera modele de procese sofware într-un limbaj de modelare al

proceselor. În timp ce un model de proces stă la baza mediilor centrate pe procese, acest proces

ghidează activitatea colaborativă a dezvoltatorilor care lucrează la alte componente. De exemplu,

acest mediu poate manageria atribuirea de taskuri inginerilor, monitoriza şi invoca automat

instrumentele necesare: Arcadia, Oz, Marvel, ConversationBuilder.

1.3 Instrumente de colaborare de tip awareness

Sistemele de management a configurări software (SCM) sunt tehnologia primară de

coordonare a colaborării la nivel de fişier între dezvoltatorii software. Mecanismul principal de

colaborare este spaţiul de lucru (workspace). De obicei, fiecare dezvoltator are spaţiul propriu de

lucru şi utilizează metode de checkout, edit, checkin pentru modificarea unei componente a

proiectului. Spaţiile de lucru oferă independenţă faţă de munca celorlalţi dezvoltatori şi, prin

urmare, în timp ce o componentă este verificată, niciun dezvoltator nu-i mai poate verifica starea.

Multe SCM-uri permit o muncă în paralel pe aceleaşi componente, utilizând instrumente de

„merge” pentru a rezolva inconsistenţele. Spaţiile de lucru permit dezvoltatorilor să lucreze mult

mai eficient. Prin creşterea gradului de conştientizare asupra activităţilor realizate de către alţi

dezvoltatori, aceştia sunt capabili de a efectua activităţi de coordonare mai repede şi, potenţial,

de a evita conflicte. Augur este un exemplu de instrument de colaborare de tip awarness. Acesta

oferă o panoramă asupra mai multor aspecte ale dezvoltării proiecului, extras dintr-un depozit al

SCM-ului, astfel, permiţând membrilor echipei de dezvoltare de a fi la curent cu activităţile care

sunt realizate în prezent şi asupra celor din trecut.

1.4 Instrumente de colaborare la nivel de infrastructură

Diferite infrastructuri fac posibilă colaborarea între dezvoltatorii software. Tehnologiile

sotfware de integrare fac posibilă coordonarea muncii inginerilor. Multe forme de integrare

Page 10: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

10

includ integrarea datelor, asigurând că instrumentele să schimbe date şi, de asemenea, anumite

instrumente să fie la curent cu activităţile altor instrumente. De exemplu, în mediul Marvel, în

momentul în care un dezvoltator a terminat de editat o secvenţă de cod, aceasta este stocată într-

un depozit central apoi Marvel apelează automat un compilator.

Pentru controlul integrării, există două abordări principale: invocarea directă a

instrumentelor şi serviciul de notificare e evenimentelor. În primul caz, un instrument principal

apelează un alt tool pentru a realiza o anumită sarcină (de exemplu Eclipse). Când mai multe

instrumente trebuie să fie coordonate, abordarea de a trasmite mesaje este recomandată. În acest

caz, instrumentele trimit mesaje notificatoare cu ajutorul unor formulare.

2. Direcţii viitoare în utilizarea tehnologiile colaborative în dezvoltarea

de software

În eforturile de colaborare în ingineria software există anumite domenii care pot fi

îmbunătăţite.

Medile de dezvoltare desktop-based pot spori nivelul de colaborare dacă sunt integrate cu

platforme web-based, o cerinţă care necesită noi standarde de interoperabilitate. Suportul pentru

multi-proiecte şi medii multi-organizationale nu a fost abordat în mod semnificativ în

comunitatea inginerilor software, dar este o preocupare a lor. Inginerii software şi-au însuşit în

mod constant noi obiective cu privirile la tehnologiile de colaborare, adesea adaptându-se la

nevoile proiectului în cadrul căruia lucreza. Un exemplu este acela al reţelelor de jocuri 3D.

O altă sugestie ar fi aceea de a lărgi aria de colaborare dintre clienţi şi dezvoltatorii de

software. De cele mai multe ori, clienţii sunt implicaţi în dezvoltarea de software doar în faza de

definire a cerinţelor şi, uneori, în faza de testare. Invitarea lor la participarea în faza analizei,

proiectării, chiar şi în etapa de scriere a codului, ar aduce un plus colaborării dintre ei.

Tehnologiile enumerate mai sus pot fi înţelese şi de către clienţii care nu au neapărat cunoştinţe

IT. De exemplu, o diagramă UML poate fi înţeleasă de către o persoană non-IT relativ uşor.

Contribuirea clienţilor nu doar la etapele incipiente sau finale ale dezvoltării unui proiect

software ar aduce un plus de responsabilitate clienţilor, aceştia ar înţelege că schimbarea

cerinţelor definite după ce s-au stabilit deja speciicatiile, nu face decât să mărească timpul de

Page 11: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

11

finalizare al proiectului. De multe ori, clienţii fac proiectele mult mai complexe decât s-a stabilit

la început.

Neînţelegerea faptului că timpul necesar de finalizare necesită a fi prelungit, îi obliga pe

dezvoltatori să termine softul în timpul estimat iniţial, însă având o calitate scăzute – de aici criza

software cu care ne confruntăm în ultima perioadă.

3. Concluzii

Colaborarea între indivizi – de la utilizatori şi până la dezvoltatori – se află în centrul

ingineriei software moderne. Fie că se referă la activitatea colaborativă pentru a rezolva

probleme, la negocierea pentru a aplana conflicte sau la crearea de soluţii partajate, fie utilizată

din perspectiva socială sau tehnică, colaborarea are un impact important asupra activităţii de

dezvoltare software. Înţelegerea importanţei utilizării tehnologiilor colaborative cobinată cu

scăderea costurilor de comunicaţie va conduce la îmbunătăţirea modului în care inginerii

colaborează pentru a crea produse software de mari dimensiuni.

Page 12: Utilizarea Tehnologiilor Colaborative in Dezvoltarea de Software

12

Bibliografie

Articole

1. Adele Goldberg, Collaborative Software Engineering

2. C. R. B. d. Souza, D. F. Redmiles, L.-T. Cheng, D. R. Millen, and J. Patterson, How a

Good Software Practice Thwarts Collaboration - The Mulitple Roles of APIs in Software

Development

3. Schon, Donald A., The Reflective Practitioner: How Professionals Think in Practice

Resurse web

4. ArgoUML

http://argouml.tigris.org/

5. Borland.com, "CaliberRM"

http://www.borland.com/us/products/caliber/index.aspx

6. IBM.com, “Collaborative software development”

http://www-01.ibm.com/software/info/features/collaboration/main.html

7. IBM.com, "Rational RequisitePro"

http://www-01.ibm.com/software/awdtools/reqpro/

8. IBM.com, "Rose",

http://www-01.ibm.com/software/awdtools/developer/rose/

9. Microsoft.com, “Project Professional 2010”

http://www.microsoft.com/project/en/us/project-professional-2010.aspx

10. Ravenflow.com, "RAVEN Product Overview"

http://www.ravenflow.com/products/

11. Wikipedia.org, "List of UML Tools," 2011,

http://en.wikipedia.org/wiki/List_of_UML_tools