in-theory.info

Analiza cerinţelor software. Introducere


Această serie de articole este destinată tuturor persoanelor implicate în proiecte de dezvoltare de software: şefi de departament, şefi de proiect, analişti (în primul rând lor), arhitecţi software, programatori sau specialişti în asigurarea calităţii.
Un prim argument pentru a fi citite (dar şi pentru a fi scrise :-)) este acela că, în universităţile occidentale aceste lucruri sunt predate tuturor studenţilor care se pregătesc pentru o carieră în IT. Cartea conţine, inevitabil, numeroase elemente de Inginerie software, utile oricărui specialist IT: despre ciclul de dezvoltare în proiectele software, despre interacţiunile dintre disciplinele implicate în proiect etc.

Un al doilea argument este acela că Analiza software este una dintre disciplinele cu impact foarte mare asupra succesului sau insuccesului proiectului software. Statisticile arată peste 60-80% din costurile non-calităţii sunt cauzate de înţelegerea, culegerea şi managementul inadecvate ale cerinţelor. Conform Software Engineering Institute (SEI), primii doi factori care contribuie la eşecul proiectelor, în privinţa respectării bugetelor şi termenelor sunt: specificaţiile inadecvate ale cerinţelor şi schimbările necontrolate ale acestora. Aşa cum vom vedea mai departe, de aceste lucruri se ocupă, în cea mai mare măsură, Analiza.


Argumente

În România, deşi domeniul IT este recunoscut ca fiind unul dintre cele mai dinamice din economie, şi ne place să credem că reprezentăm o forţă pe piaţa de IT, singura disciplină în care excelăm este programarea. Ori programarea nu reprezintă decât maximum 30 – 50% din efortul necesar într-un proiect software.
Bunele practici recomandă ca efortul consumat pentru Analiză să fie între 10 şi 30% din efortul total consumat într-un proiect. Pentru aceasta, la nivel de ţară, este desigur nevoie de foarte mulţi oameni specializaţi în domeniul Analizei, este nevoie de cursuri de specialitate, de cărţi sau de articole în revistele de specialitate.
Cu toate acestea, în România cărţile despre Inginerie Software, Analiză, Project Management sau Asigurarea calităţii în software se pot număra pe degete, în unele dintre domenii nefiind publicată chiar nici-o carte. Cursuri, despre aceste domenii în facultăţile de specialitate, nu există deloc.

Spre comparaţie, în Statele Unite, lucrurile scrise în această carte se studiază la facultate. Americanii au chiar un standard care conţine recomandări privind specificaţiile software: IEEE Std 830-1993: IEEE Recommended Practice for Software Requirements Specifications.

În 2005, Center for National Software Studies a lansat un raport, în urma celui de-al doilea summit naţional pe probleme legate de domeniul software, denumit „Software 2015: A National Software Strategy to Ensure U.S. Security and Competitiveness”, care arată rolul major al software-ului şi al inovaţiei software asupra succesului economiei americane: „Software-ul şi inovaţia software au o importanţă mare în succesul producţiei de automobile, telecomunicaţii şi de asemenea, asupra tuturor celorlalte industrii. Din perspectiva securităţii naţionale, sistemele militare [...] sunt toate dependente de software-ul inovativ, de înaltă calitate.”
Strategia propusă prevede sarcini concrete precum: motivarea tinerilor pentru dezvoltarea carierei în software, educarea în domeniul Ingineriei Software, identificarea priorităţilor cercetării şi dezvoltării, creşterea câştigurilor financiare pentru performanţa în inovare.

Vorbind de România, această situaţie poate fi o oportunitate: suntem în faţa unui teren liber, pe care avem ocazia de a construi aşa cum trebuie.

Prin urmare, aceaste articole au fos scrise, în primul rând, pentru că în România există un gol imens în acest domeniu. Au fost scrise cu gândul ca oricine este interesat de domeniu să poată afla de aici:
- ce este Analiza, ce sunt cerinţele, specificaţiile, ce sunt Use Case-urile, User Stories şi care este rostul lor;
- care sunt principiile care stau la baza acestei discipline şi cum se lucrează efectiv în Analiză;
- de ce dau companiile bani pe software, ce se aşteaptă să primească şi ce se întâmplă să primească uneori.


De ce trebuie sa ne preocupe intelegerea problemei clientului

Cel mai important lucru din acest articol

Aşa cum ne arată statisticile principala cauză a eşecului proiectelor software este insuficienta implicare a clienţilor.
Buna înţelegerea a problemelor clientului, neapărat legată de împărtăşirea unei viziuni comune între echipa de dezvoltare şi client sunt două faţete de bază ale implicării clientului.

Fără ele, echipa de dezvoltare nu are referinţele de bază pentru a putea şti dacă ceea ce dezvoltă este corespunzător sau nu şi, prin urmare, implicarea puternică a clientul în proiect şi înţelegerea comună a problemelor lui este vitală.

Altfel, este ca şi cum te-ai deplasa într-o direcţie oarecare, fără să ştii unde vrei să ajungi.

Mesajul acesta este adesea (şi cel mai bine!) ilustrat printr-o caricatură despre diferenţa care apare adesea în practică, între problema clientului, înţelegerea problemei şi ceea ce se realizează de fapt (vezi imaginea din dreapta!)

Adrian Ionescu





Colecția:  🏅 Analiza cerinţelor software

Articolul următor:  Despre Analiza cerinţelor



👍 Topul celor mai citite articole

1. Analiza cerinţelor software. Introducere
Această serie de articole este destinată tuturor persoanelor implicate în proiecte de dezvoltare de software: şefi de departament, şefi de proiec...

2. Despre Analiza cerinţelor
Analiza cerinţelor software (pe care o vom numi în continuare Analiza de business sau Analiză software) este aceea dintre disciplinele existente î...

3. Axiomele dezvoltării software
Adevăruri ale dezvoltării software care susțin nevoia Analizei cerințelor. Unul dintre ele este: "Întotdeauna, într-un proiect software apar si...

4. Ciclul de dezvoltare al produsului software (SDLC)
Deşi în limba engleză este denumit Software Development Life Cycle (SDLC) am ales traducerea „Ciclul de dezvoltare al produsului software”, chi...

5. Ciclul de dezvoltare iterativ
Asumarea realităţii că întotdeauna, în decursul proiectului, cerinţele se vor schimba a condus la apariţia unui model de dezvoltare realist, ca...

6. Locul Analizei în proiectul de dezvoltare software
Analiza Software este o disciplină care se află în relaţie de dependenţă cu celelalte discipline din proiect. Concret, task-urile din proiectul ...

7. Modele teoretice de abordare a problemelor. Decompoziţia
Modalităţile teoretice de abordare a problemelor sunt universale şi pot fi folosite oriunde însă pentru domeniul nostru, este important să le co...

8. Modele teoretice de abordare a problemelor. Sinteza
Sinteza este o modalitate, prin care, din manifestări punctuale se determină problema reală. Cel mai simplu şi clar exemplu este acela al mediculu...

9. Modele teoretice de abordare a problemelor. Crearea unui trunchi de bază
De foarte multe ori, în viaţa reală, o problemă nu poate fi punctată decât cu un efort substanţial sau chiar deloc. Pur şi simplu, obţinerea ...

10. Modele teoretice de abordare a problemelor. Abordarea iterativă
Metoda iterativă presupune rezolvarea unei probleme cunoscute printr-o abordare iterativă, la fiecare iteraţie făcând un pas către rezolvarea pr...



📜 Căutare după etichetă:

Analiza Business
Baze de date
C#
Cerințe software
CSS
Dictionar IT
HTML
MySQL
PHP
Riscuri
SDLC
Specificații software
SQL
UML