Managementul dezvoltării software ( ing. Managementul proiectelor software ) este un tip special de management al proiectelor , în cadrul căruia are loc planificarea, urmărirea și controlul proiectelor de dezvoltare software . Cheia pentru gestionarea unui proiect de dezvoltare software este alegerea metodei corecte de dezvoltare.
Datorită creșterii rapide a puterii computerelor în anii 60 și 70 ai secolului XX , problemele care puteau fi rezolvate cu ajutorul lor au devenit mai dificile. Prin urmare, au fost necesare proiecte mai mari , care au inclus coordonarea muncii mai multor oameni și scrierea mult mai mult cod . Cu toate acestea, metodele utilizate pentru gestionarea unor astfel de proiecte au fost concepute pentru a răspunde provocărilor proiectelor mult mai mici. Lipsa metodologiei necesare a dus la un număr mare de proiecte eșuate. Încercările de schimbare a situaţiei în bine au condus la crearea unui nou model al procesului de dezvoltare , concentrându - se mai mult pe conformitatea produsului software final cu cerinţele originale ale clientului .
Studiile proiectelor eșuate au arătat că cele mai frecvente cauze ale eșecului au fost: [1]
De atunci, au fost introduse câteva îmbunătățiri la metodele deja existente ( abordare iterativă ) și complet noi ( dezvoltare bazată pe teste ) de gestionare a dezvoltării software. Cu toate acestea, astăzi există tendința de a trece de la un model în cascadă la un model ciclic care imită etapele dezvoltării software .
GOST 19 „Sistem unificat de documentare software” [2] și GOST 34 „Standarde pentru dezvoltarea sistemelor automate” [3] se concentrează pe o abordare consecventă a dezvoltării software. Dezvoltarea în conformitate cu aceste standarde se realizează în etape, fiecare dintre acestea implicând implementarea unei lucrări strict definite. Respectarea strictă a acestor GOST duce la un model în cascadă. Pe baza acestor standarde, sistemele software sunt dezvoltate pentru comenzi guvernamentale în Rusia.
Acest model a fost dezvoltat la mijlocul anilor 1980 de Institutul de Inginerie Software de la Universitatea Carnegie Mellon pentru a crea un model de referință pentru organizarea dezvoltării software. Se bazează pe verificarea conformității organizației cu anumite cerințe și determinarea nivelului de maturitate a procesului de dezvoltare software.
Procesul unificat a fost dezvoltat de Rational Software ca o completare a UML . Modelul RUP descrie un proces general abstract, pe baza căruia o organizație sau o echipă de proiect ar trebui să creeze un proces specific specializat, concentrat pe nevoile sale.
Microsoft Solutions Framework este construit în jurul dezvoltării iterative. O trăsătură specială a MSF este marea atenție acordată creării unei echipe eficiente și nebirocratice.
Procesul software personal definește cerințele de competență ale dezvoltatorului, astfel încât aceștia să poată dobândi abilitățile necesare pentru Procesul software de echipă. Team Software Process în combinație cu Personal Software Process se bazează pe echipe autogestionate de 3-20 de persoane. Echipele trebuie:
Ideea de bază din spatele tuturor modelelor agile este că procesul de dezvoltare a software-ului ar trebui să fie adaptiv. Ele își propun să se concentreze pe oameni și pe interacțiunile lor, mai degrabă decât pe procese și instrumente. Toate modelele flexibile se bazează pe iterație, incrementalitate, autogestionarea echipei și adaptabilitatea proceselor.
Procesul de gestionare a unui proiect de dezvoltare software include alte procese, mai specifice, care vizează luarea anumitor decizii de afaceri. Multe dintre ele pot fi aplicate și altor tipuri de proiecte. De exemplu:
În general, managementul dezvoltării software, care are multe împrumuturi din managementul proiectelor, poate fi aplicat metodelor din managementul tradițional . Cu toate acestea, datorită unicității industriei, experiența profesioniștilor acumulată în producția de materiale și stabilită, de exemplu, în standardul PMI PMBOK , contribuie puțin la succesul în gestionarea unui proiect software. Există multe opinii despre ce cunoștințe și abilități ar trebui să aibă un manager de proiect de dezvoltare software. De exemplu, faimosul informatician american John Reynolds a scris:
Unii susțin că este posibil să se gestioneze crearea de software fără a avea abilități de programare . Această încredere pare să provină din concepția greșită că dezvoltarea de software este o formă de producție. Dar producția este crearea de obiecte identice care se repetă, în timp ce producția de software este crearea de obiecte unice, adică este una dintre formele creativității . Astfel, producția de software este asemănătoare cu publicarea — un manager de dezvoltare software care nu poate codifica este ca un editor de ziare care nu poate scrie.
Text original (engleză)[ arataascunde] „Unii susțin că se poate gestiona producția de software fără abilitatea de a programa. Această credință pare să apară din punctul de vedere greșit conform căruia producția de software este o formă de fabricație. Dar fabricarea este construcția repetată a obiectelor identice, în timp ce producția de software este construcția de obiecte unice, adică întregul proces este o formă de design.Link rupt