Ciclul de viață se termină în acest moment. Rezumat: Ciclul de viață al software-ului

Bună ziua, dragi locuitori din Khabrovsk! Cred că va fi interesant ca cineva să-și amintească ce modele de dezvoltare, implementare și utilizare software a existat anterior, ce modele sunt utilizate în principal acum, de ce și ce este de fapt. Acesta va fi micul meu subiect.

De fapt, ce este ciclul de viață al software-ului- o serie de evenimente care apar cu sistemul în timpul creării și utilizării ulterioare. Cu alte cuvinte, acesta este timpul de la momentul inițial al creării oricărui produs software, până la finalul dezvoltării și implementării acestuia. Ciclu de viață software-ul poate fi reprezentat sub formă de modele.

Modelul ciclului de viață al software-ului- o structură care conține procese de acțiune și sarcini care sunt efectuate în timpul dezvoltării, utilizării și întreținerii unui produs software.
Aceste modele pot fi împărțite în 3 grupuri principale:

  1. Abordare inginerească
  2. Ținând cont de specificul sarcinii
  3. Tehnologii moderne de dezvoltare rapidă
Acum să ne uităm la modelele (subclasele) existente și să evaluăm avantajele și dezavantajele acestora.

Model de codificare și eliminare a erorilor

Absolut model simplu, tipic pentru studenții universitari. În conformitate cu acest model, majoritatea studenților dezvoltă, să spunem, lucrări de laborator.
Acest model are următorul algoritm:
  1. Formularea problemei
  2. Performanţă
  3. Verificarea rezultatului
  4. Dacă este necesar, treceți la primul punct
Model de asemenea teribilînvechit. Este tipic pentru anii 1960-1970, deci practic nu are avantaje față de următoarele modele din recenzia noastră, dar dezavantajele sunt evidente. Face parte din primul grup de modele.

Modelul ciclului de viață al software-ului în cascadă (cascada)

Algoritmul acestei metode, pe care îl arăt în diagramă, are o serie de avantaje față de algoritmul modelului anterior, dar are și o serie de semnificativ neajunsuri.

Avantaje:

  • Implementarea succesivă a etapelor proiectului într-o ordine strict fixă
  • Vă permite să evaluați calitatea produsului în fiecare etapă
Defecte:
  • Fără feedback între etape
  • Nu corespunde condițiilor reale de dezvoltare a produsului software
Face parte din primul grup de modele.

Model în cascadă cu control intermediar (vârtej)

Acest model este aproape echivalent ca algoritm cu modelul anterior, dar are feedback-uri cu fiecare etapă a ciclului de viață, dând în același timp la un dezavantaj foarte semnificativ: Creșterea de 10 ori a costurilor de dezvoltare. Face parte din primul grup de modele.

Model V (dezvoltare bazată pe teste)

Acest model este mai aproape de metode moderne Cu toate acestea, algoritmul are încă o serie de deficiențe. Este una dintre practicile principale ale programării extreme.

Model bazat pe dezvoltarea prototipului

Acest model se bazează pe dezvoltarea de prototipuri și prototiparea produselor.
Prototiparea utilizate în primele etape ale ciclului de viață al software-ului:
  1. Clarificarea cerințelor neclare (prototip UI)
  2. Alegeți una dintre o serie de soluții conceptuale (implementarea scenariilor)
  3. Analizați fezabilitatea proiectului
Clasificarea prototipurilor:
  1. Orizontală și verticală
  2. De unică folosință și evolutiv
  3. hârtie și storyboard-uri
Orizontală prototipuri - modelează exclusiv UI fără a afecta logica de procesare și baza de date.
Vertical prototipuri - testarea solutiilor arhitecturale.
De unică folosință prototipuri - pentru dezvoltare rapidă.
Evolutiv prototipurile sunt prima aproximare a unui sistem evolutiv.

Modelul aparține celui de-al doilea grup.

Modelul ciclului de viață al software-ului în spirală

Modelul în spirală este un proces de dezvoltare software care combină atât designul, cât și prototipul incremental pentru a combina beneficiile conceptelor de jos în sus și de sus în jos.

Avantaje:

  • Obțineți rapid rezultate
  • Creșterea competitivității
  • Schimbarea cerințelor nu este o problemă
Defecte:
  • Lipsa regulamentului de etapă
Al treilea grup include modele precum programare extremă(XP) SCRUM, model incremental(RUP), dar aș vrea să vorbesc despre ele într-un subiect separat.

Mulțumesc foarte mult pentru atenție!

Adnotare.

Introducere.

1. Ciclul de viață al software-ului

Introducere.

Etapele procesului de programare Riley

Introducere.

1.1.1. Formularea problemei.

1.1.2. Proiectarea soluției.

1.1.3. Codarea algoritmului.

1.1.4. Suport program.

1.1.5. Documentația software.

Concluzie la clauza 1.1

1.2. Determinarea LCPO conform lui Lehman.

Introducere.

1.2.1 Definirea sistemului.

1.2.2. Implementarea.

1.2.3. Serviciu.

Concluzie la clauza 1.2.

1.3. Fazele și lucrul LCPO conform lui Boehm

1.3.1. Model în cascadă.

1.3.2. Justificarea economică a modelului în cascadă.

1.3.3. Îmbunătățirea modelului în cascadă.

1.3.4. Determinarea fazelor ciclului de viață.

1.3.5. Lucrarea principală a proiectului.

Literatură.

Introducere

Utilizarea industrială a computerelor și cererea în creștere pentru programe au pus provocări urgente pentru a crește semnificativ productivitatea dezvoltării software, dezvoltarea metodelor industriale de planificare și proiectare a programelor, transferul tehnicilor, modelelor și metodelor organizatorice, tehnice, tehnice, economice și socio-psihologice din sfera producției materiale în sfera utilizării computerului. O abordare complexă proceselor de dezvoltare, operare și întreținere a software-ului, el a prezentat o serie de probleme presante, a căror soluție va elimina blocajele în proiectarea programelor, va reduce timpul de finalizare a lucrărilor, va îmbunătăți selecția și adaptarea programelor existente și poate determina soarta sistemelor cu calculatoare încorporate.

În practica dezvoltării de proiecte software mari, adesea nu există abordare unificată la evaluarea costurilor cu forța de muncă, a termenelor de lucru și a costurilor materiale, ceea ce împiedică creșterea productivității dezvoltării software și, în cele din urmă, gestionarea eficientă a ciclului de viață al software-ului. Deoarece un program de orice tip devine un produs (cu excepția, poate, a programelor educaționale, prototip), abordarea producției sale ar trebui să fie în multe privințe similară cu abordarea producției de produse industriale, iar problemele de proiectare a programelor devin extrem de importante. Această idee se află în centrul cărții lui B.W. „Ingineria software” a lui Boehm pe care am folosit-o pentru a scrie asta munca de curs. În această carte, proiectarea software se referă la procesul de creare a unui design pentru un produs software.

1 Ciclul de viață al software-ului

INTRODUCERE

LCPO este un proces continuu care începe din momentul în care se ia o decizie cu privire la necesitatea de a crea software și se termină în momentul în care acesta este complet scos din serviciu.

Există mai multe abordări pentru a determina fazele și activitățile ciclului de viață al software-ului (SLC), etapele procesului de programare, modelele în cascadă și spirală. Dar toate conțin componente fundamentale comune: enunțarea problemei, proiectarea soluției, implementarea, întreținerea.

Cel mai faimos și complet, poate, este structura procesului ciclului de viață conform lui Boehm, care include opt faze. Va fi prezentat mai detaliat în viitor.

Una dintre opțiunile posibile ar putea fi o descriere de nivel superior conform lui Lehman, care include trei faze principale și reprezintă o descriere a ciclului de viață în cel mai general caz.

Și, pentru varietate, vă prezentăm etapele procesului de programare prezentate de D. Riley în cartea „Using the Modula-2 Language”. Această idee, în opinia mea, este foarte simplă și familiară și să începem cu ea.

1.1 Etapele procesului de programare Riley

Introducere

Procesul de programare presupune patru pași (Figura 1):

enunţarea problemei, de ex. obținerea unei înțelegeri adecvate a sarcinii pe care trebuie să o îndeplinească programul;

proiectarea unei soluții la o problemă deja enunțată (în general, o astfel de soluție este mai puțin formală decât programul final);

codificarea programului, adică traducerea soluției proiectate într-un program care poate fi executat pe o mașină;

suport de program, de ex. procesul continuu de depanare a programului și adăugarea de noi funcții.

Orez. 1.Patru pași de programare.

Programarea începe din momentul în care utilizator, adică cineva care are nevoie de un program pentru a rezolva o problemă afirmă problema analist de sisteme. Utilizatorul și analistul de sistem definesc împreună declarația problemei. Acesta din urmă este apoi transmis algoritmist, care este responsabil pentru proiectarea soluției. O soluție (sau algoritm) reprezintă o succesiune de operații, a căror execuție duce la rezolvarea unei probleme. Deoarece algoritmul nu este adesea potrivit pentru execuție pe o mașină, ar trebui tradus într-un program de mașină. Această operație este efectuată de codificator. Menținătorul este responsabil pentru modificările ulterioare ale programului. programator. Și analistul de sistem, și algoritmistul, și codificatorul și programatorul care îl însoțește - toți sunt programatori.

În cazul unui proiect software mare, numărul de utilizatori, analiști de sistem și algoritmi poate fi semnificativ. În plus, poate fi necesară revenirea la pașii anteriori din cauza unor circumstanțe neprevăzute. Toate acestea servesc ca un argument suplimentar pentru proiectarea atentă a software-ului: rezultatele fiecărui pas ar trebui să fie complete, precise și ușor de înțeles.

1.1.1 Declarația problemei

Unul dintre cei mai importanți pași în programare este definirea problemei. Funcționează ca un contract între utilizator și programator(i). La fel ca un contract prost redactat din punct de vedere legal, o declarație de problemă scrisă prost este inutilă. Cu o declarație bună a problemei, atât utilizatorul, cât și programatorul reprezintă în mod clar și fără ambiguitate sarcina care trebuie efectuată, de exemplu. în acest caz, sunt luate în considerare atât interesele utilizatorului, cât și ale programatorului. Utilizatorul poate planifica să utilizeze software care nu a fost încă creat, pe baza cunoștințelor pe care le poate. O enunțare bună a problemei servește drept bază pentru formularea soluției acesteia.

Formularea problemei (specificarea programului); în esență înseamnă o descriere precisă, completă și de înțeles a ceea ce se întâmplă atunci când este executat un anumit program. Utilizatorul privește de obicei computerul ca pe o cutie neagră: pentru el, nu contează cum funcționează computerul, dar important este ce poate face computerul care îl interesează pe utilizator. În acest caz, atenția principală se concentrează pe interacțiunea omului cu mașina.

Caracteristicile unei declarații bune de problemă:

Precizie, adică eliminând orice ambiguitate. Nu ar trebui să existe nicio întrebare cu privire la ceea ce va fi rezultatul programului pentru orice intrare dată.

Completitudine, adică luarea în considerare a tuturor opțiunilor pentru o intrare dată, inclusiv intrarea eronată sau neintenționată și determinarea ieșirii corespunzătoare.

Claritate, adică trebuie să fie de înțeles atât pentru utilizator, cât și pentru analistul de sistem, deoarece enunțul problemei este singurul contract între ei.

Adesea, cerințele pentru acuratețe, completitudine și claritate sunt în conflict. Da, multe documente juridice este greu de înțeles, deoarece sunt scrise într-un limbaj formal, ceea ce permite formularea anumitor prevederi cu o precizie extremă, excluzând orice discrepanțe minore. De exemplu, unele întrebări din lucrările de examen sunt uneori formulate atât de precis încât studentul petrece mai mult timp înțelegând întrebarea decât răspunzând la ea. Mai mult, studentul poate să nu înțeleagă sensul principal al întrebării din cauza numărului mare de detalii. Cea mai bună formulare a problemei este cea care realizează un echilibru între toate cele trei cerințe.

Forma standard de enunțare a problemei.

Luați în considerare următoarea afirmație a problemei: „Introduceți trei numere și scoateți numerele în ordine.”

O astfel de afirmație nu îndeplinește cerințele de mai sus: nu este nici exactă, nici completă, nici de înțeles. Într-adevăr, numerele trebuie introduse câte unul pe linie sau toate numerele pe o singură linie? Expresia „în ordine” înseamnă ordonarea de la cel mai mare la cel mai mic, de la cel mai mic la cel mai mare, sau aceeași ordine în care au fost introduse.

Evident, o astfel de afirmație nu răspunde la multe întrebări. Dacă luăm în considerare răspunsurile la toate întrebările, atunci enunțul problemei va deveni pronunțat și greu de înțeles. Prin urmare, D. Riley sugerează utilizarea forma standard, care oferă maximă acuratețe, completitudine, claritate și include:

numele sarcinii (definiție schematică);

descriere generală (scurt rezumat al sarcinii);

erori (opțiunile de intrare neobișnuite sunt enumerate în mod explicit pentru a arăta utilizatorilor și programatorilor ce acțiuni ar întreprinde mașina în astfel de situații);

exemplu ( bun exemplu poate transmite esența problemei, precum și ilustra diferite cazuri).

Exemplu. Enunțarea problemei într-o formă standard.

NUME

Sortarea a trei numere întregi.

DESCRIERE

Intrarea și ieșirea a trei numere întregi, sortate de la cel mai mic la cel mai mare număr.

Se introduc trei numere întregi, câte un număr pe linie. Un număr întreg este una sau mai multe cifre zecimale consecutive, care pot fi precedate de un semn plus „+” sau de un semn minus „–”.

Cele trei numere întregi introduse sunt tipărite, toate trei fiind tipărite pe aceeași linie. Numerele adiacente sunt separate printr-un spațiu. Numerele sunt afișate de la cel mai mic la cel mai mare, de la stânga la dreapta.

1) Dacă sunt introduse mai puțin de trei numere, programul așteaptă introducerea suplimentară.

2) Liniile de intrare altele decât primele trei sunt ignorate.

Să luăm în considerare ciclul de viață al software-ului, de exemplu. procesul de creare și aplicare a acestuia de la început până la sfârșit. Ciclul de viață începe cu momentul recunoașterii apariției acestui software și se termină cu momentul învechirii sale complete. Acest proces constă din mai multe etape: definirea cerințelor și specificațiilor, proiectarea, programarea și întreținerea.

Prima etapă, care definește cerințele și specificațiile, poate fi numită etapa de analiză a sistemului. Este instalat pe el Cerințe generale Software: în ceea ce privește fiabilitatea, fabricabilitatea, corectitudinea, versatilitatea, eficiența, consistența informațiilor etc.

Ele sunt completate de cerințele clienților, inclusiv restricții spațiu-timp, funcții și capabilități necesare, moduri de operare, cerințe de precizie și fiabilitate etc., adică o descriere a sistemului este dezvoltată din punctul de vedere al utilizatorului.

La determinarea specificații(un set de cerințe și parametri pe care software-ul trebuie să-i îndeplinească) se face o descriere precisă a funcțiilor software, se dezvoltă și se aprobă limbaje de intrare și intermediare, forma informațiilor de ieșire pentru fiecare dintre subsisteme, posibilă interacțiune cu alt software sunt descrise sistemele, sunt specificate mijloacele de extindere și modificare a software-ului, sunt dezvoltate interfețele de service și principalele subsisteme, problemele de baze de date sunt rezolvate și algoritmii de bază sunt aprobați.

Rezultatul acestei etape sunt specificații operaționale și funcționale care conțin o descriere specifică a software-ului. Elaborarea specificațiilor necesită munca atentă a analiștilor de sisteme care sunt în contact permanent cu clienții, care în majoritatea cazurilor nu sunt capabili să formuleze cerințe clare și realiste.

Specificațiile operaționale conțin informații despre viteza software-ului, consumul de memorie, necesare mijloace tehnice, fiabilitate etc.

Specificațiile funcționale definesc funcțiile pe care software-ul trebuie să le îndeplinească, de ex. ei definesc ce trebuie să facă sistemul, nu cum să o facă.

Specificațiile trebuie să fie complete, precise și clare. Completitudinea elimină nevoia dezvoltatorilor de software de a obține informații de la clienți în procesul muncii lor, altele decât cele conținute în specificații. Precizia nu permite interpretări diferite. Claritatea implică ușurință de înțelegere atât de către client, cât și de către dezvoltator atunci când este interpretată fără ambiguitate.

Valoarea specificațiilor:

1. Specificațiile sunt o sarcină pentru dezvoltarea de software și implementarea lor este legea pentru dezvoltator.

2. Specificațiile sunt utilizate pentru a verifica gradul de pregătire al software-ului.

3. Specificațiile sunt parte integrantă a documentației software și facilitează întreținerea și modificarea software-ului,


A doua etapă este proiectarea software-ului. În această etapă:

1. Se formează structura software și se dezvoltă algoritmi specificați prin specificații.

2. Se stabilește componența modulelor, împărțindu-le pe nivele ierarhice pe baza studiului diagramelor algoritmice.

3. Se selectează structura matricelor de informații.

4. Interfețele intermodule sunt fixe.

Scopul acestei etape este împărțirea ierarhică a sarcinilor complexe de creare a software-ului în subsarcini de mai puțină complexitate. Rezultatul muncii în această etapă este specificațiile pentru module individuale, a căror descompunere ulterioară nu este practică.

Etapa a treia - programare. În această etapă, modulele sunt programate. soluţiile de proiectare obţinute în etapa anterioară sunt implementate sub formă de programe. Blocuri separate sunt dezvoltate și conectate la sistemul care se creează. Una dintre sarcini este alegere informată limbaje de programare. În această etapă, toate problemele legate de caracteristicile tipului de computer sunt rezolvate.

Etapa a patra - depanare software constă în verificarea tuturor cerințelor, a tuturor elementelor structurale ale sistemului pe câte combinații diferite de date le permit bunul simț și bugetul. Această etapă presupune identificarea erorilor din programe, verificarea funcționalității software-ului și conformitatea cu specificațiile.

Etapa a cincea - acompaniament, acestea. procesul de corectare a erorilor, coordonarea tuturor elementelor sistemului în conformitate cu cerințele utilizatorului, efectuarea tuturor corecțiilor și modificărilor necesare.

Înainte de a începe dezvoltarea software-ului, marketingul trebuie făcut.

Marketing conceput pentru a studia cerințele pentru produsul software creat (tehnic, software, utilizator). Sunt studiate și analogii existenți și produsele concurente. Materialul, manopera si resurse financiareși stabilește, de asemenea, termene aproximative de dezvoltare. Etapele dezvoltării software-ului sunt descrise de GOST 19.102-77. În conformitate cu acesta, dăm numele și scurta descriere fiecare etapă (vezi Tabelul 1). Acest standard stabilește etapele de dezvoltare a programelor și documentația programului pentru calculatoare, complexe și sisteme, indiferent de scopul și scopul lor.

tabelul 1

Etapele de dezvoltare, etapele și conținutul muncii pentru crearea de software

Ciclu de viață este un model pentru crearea și utilizarea unui sistem software. Ea reflectă diferite stări sistem software, începând din momentul în care apare necesitatea acestui sistem software și se ia decizia de a-l crea, și terminând cu retragerea completă a sistemului software din exploatare.

Standardul internațional ISOIES 12207 definește un cadru de ciclu de viață care conține procesele, activitățile și sarcinile care trebuie efectuate în timpul creării software-ului. Conform acestui standard, ciclul de viață al software-ului se bazează pe trei grupuri de procese:

    principalele procese ale ciclului de viață, adică achiziția, livrarea, dezvoltarea, operarea și întreținerea;

    procese auxiliare care asigură implementarea proceselor principale, adică documentarea, verificarea, certificarea, evaluarea calității și altele;

    procesele organizatorice, adică management de proiect, crearea infrastructurii proiectului și instruire.

Dezvoltarea include toate lucrările pentru a crea software în conformitate cu cerințele specificate. Aceasta include pregătirea documentației de proiectare și operaționale, pregătirea materialelor necesare pentru a testa funcționalitatea și calitatea produselor software.

Etapele principale ale procesului de dezvoltare:

    analiza cerințelor clienților;

    proiecta;

    implementare (programare).

Procesul de operare include lucrări de punere în funcțiune a software-ului, inclusiv configurarea stațiilor de lucru, instruirea personalului, localizarea problemelor operaționale și eliminarea cauzelor apariției acestora, modificarea software-ului în cadrul reglementărilor stabilite și pregătirea propunerilor de modernizare a sistemului.

Fiecare proces este caracterizat de anumite sarcini și metode de rezolvare a acestora, precum și de date și rezultate inițiale.

Ciclul de viață al software-ului este, de regulă, de natură iterativă, adică sunt implementate etapele, începând de la cele mai timpurii, care se repetă ciclic în conformitate cu cerințele în schimbare ale condițiilor externe și cu introducerea restricțiilor.

Modele ciclului de viață al software-ului

Există mai multe modele de ciclu de viață care determină ordinea de execuție a etapelor de dezvoltare și criteriile de trecere de la etapă la etapă. Până în prezent, două modele de ciclu de viață au devenit cele mai răspândite: cascadăȘi spirală.

În omogene existente anterior sisteme de informare ah, fiecare aplicație era un singur întreg. Pentru a dezvolta astfel de aplicații a fost folosit un model de ciclu de viață în cascadă, numit și clasic sau cascadă.

Când se folosește modelul cascadă, dezvoltarea a fost privită ca o secvență de etape, tranziția la următoarea etapă inferioară având loc numai după ce toate lucrările din etapa actuală au fost complet finalizate. Implicația este că în modelul în cascadă, dezvoltarea începe la nivel de sistem și continuă prin analiză, proiectare, codificare, testare și întreținere.

Figura 1 – Principalele etape ale dezvoltării unui model în cascadă

1. Analiza sistemului specifică rolul fiecărui element într-un sistem informatic și interacțiunea elementelor între ele. Deoarece software-ul este considerat parte a unui sistem mai mare, analiza începe cu determinarea cerințelor pentru toate elementele sistemului. Necesitatea analizei sistemului se manifestă clar atunci când se formează interfața software-ului cu alte elemente, adică. cu hardware sau baze de date. În aceeași etapă, începe soluționarea problemelor de planificare a proiectelor. În timpul planificării proiectului, se determină volumul lucrărilor proiectului și riscul acestuia, costurile cu forța de muncă necesare, se formează sarcinile de lucru și se formează un program de lucru.

Analiza cerințelor se referă la un singur element software. În această etapă, funcțiile fiecărui element, caracteristicile și interfața acestuia sunt clarificate și detaliate. În aceeași etapă, soluția problemei de planificare a proiectului este finalizată.

2. Designul constă în crearea:

    arhitecturi software;

    structură software modulară;

    structura algoritmică a software-ului;

    structuri de date;

    interfață de intrare/ieșire (formulare de date de intrare/ieșire).

La rezolvarea problemelor de proiectare, atenția principală este acordată calității viitorului produs software.

3. Codarea sau dezvoltarea constă în traducerea rezultatelor de proiectare în cod de program.

4. Testarea este executarea unui program pentru identificarea defectelor în funcțiile, logica și forma de implementare a unui produs software.

5. Întreținerea face modificări la software-ul de operare pentru a:

    corectarea erorilor;

    adaptarea la schimbările din mediul extern software-ului;

    îmbunătățirea software-ului în conformitate cu cerințele clienților.

Avantajele utilizării modelului în cascadă:

    oferă un plan și un calendar pentru toți etapele proiectului, eficientizând astfel progresul dezvoltării;

    la fiecare etapă, se generează un set complet de documentație de proiectare, verificată pentru completitudine și coerență;

    etapele de lucru efectuate într-o succesiune logică fac posibilă planificarea calendarului de finalizare a tuturor lucrărilor și a costurilor corespunzătoare.

Modelul în cascadă s-a dovedit bine în construcția sistemelor informaționale, pentru care chiar la începutul dezvoltării este posibil să se formuleze destul de precis toate cerințele din sistem, de exemplu, sisteme complexe de calcul, diverse sisteme în timp real etc. .

Dezavantajele modelului în cascadă:

    proiectele reale necesită adesea abateri de la succesiunea standard de pași;

    modelul în cascadă se bazează pe formularea precisă a cerințelor software inițiale, dar în realitate, într-un număr de cazuri, la începutul proiectului, cerințele clientului sunt doar parțial determinate;

    rezultatele proiectului sunt disponibile clientului numai după finalizarea tuturor lucrărilor.

Datorită necesității în procesul de creare a software-ului de a reveni constant la etapele anterioare și de a clarifica sau revizui deciziile luate anterior, procesul real de dezvoltare a software-ului bazat pe modelul cascadă poate fi reprezentat prin următoarea diagramă (Fig. 2).

Figura 2 – Procesul de dezvoltare software bazat pe modelul cascadă

Ciclul de viață al software-ului include șase etape:

- analiza cerințelor;

– determinarea caietului de sarcini;

– proiectare;

– codificare;

– testare;

– acompaniament.

Analiza cerințelor. Este extrem de important în dezvoltarea de software. Erorile făcute în această etapă, chiar dacă etapele ulterioare sunt efectuate fără cusur, pot duce la faptul că produsul software dezvoltat nu va îndeplini cerințele practicii și domeniul de aplicare al acestuia. Pentru a crea produse competitive, această etapă trebuie să ofere răspunsuri clare la următoarele întrebări:

– Ce ar trebui să facă programul?

– Care sunt problemele reale pe care ar trebui să le ajute să le rezolve?

– Care sunt datele de intrare?

– Care ar trebui să fie datele de ieșire?

– Ce resurse are designerul?

Definirea specificațiilor. Specificație– o descriere formală exactă și completă a proprietăților, caracteristicilor și funcțiilor unui program, element de date sau alt obiect. Într-o anumită măsură, această etapă poate fi considerată ca fiind formularea concluziilor rezultate din rezultatele etapei precedente. Cerințele programului trebuie să fie exprimate ca un set de specificații care definesc în mod explicit caracteristicile de performanță ale viitorului program. Astfel de caracteristici pot include viteza de execuție, cantitatea de memorie consumată, flexibilitatea de utilizare etc.

Proiecta. În această etapă se creează structura de ansamblu a programului, care trebuie să satisfacă specificațiile; sunt determinate principii generale managementul și interacțiunea dintre diversele componente ale programului.

Codificarea. Constă în traducerea structurilor scrise într-un limbaj de proiectare într-un limbaj de programare.

Testare. În această etapă, se efectuează o verificare completă a programelor.

Escorta. Aceasta este etapa de funcționare a sistemului. Indiferent cât de sofisticată ar fi testarea programelor, din păcate, în sistemele software mari este extrem de dificil să eliminați absolut toate erorile. Eliminarea erorilor descoperite în timpul funcționării este sarcina principală a acestei etape. Cu toate acestea, acest lucru nu este tot ceea ce se realizează în timpul asistenței. O analiză a experienței de operare a programului, efectuată în timpul întreținerii, permite detectarea blocajelor sau nereușite solutii de proiectareîn anumite părți pachete software. Ca urmare a unei astfel de analize, se poate lua decizia de a efectua lucrări de îmbunătățire a sistemului dezvoltat. Asistența poate include, de asemenea, consultări, instruire a utilizatorilor sistemului, furnizarea promptă a utilizatorilor cu informații despre noile versiuni ale sistemului. Calitatea fazei de întreținere determină în mare măsură succesul comercial al unui produs software.

Testare. Există trei aspecte pentru verificarea unui program pentru:

– corectitudinea;

– eficiența implementării;

- complexitate de calcul.

Validarea asigură că un program face exact ceea ce a fost conceput pentru a face. Perfecțiunea matematică a unui algoritm nu garantează corectitudinea traducerii acestuia într-un program. De asemenea, nici absența mesajelor de diagnosticare a compilatorului și nici aspectul rezonabil al rezultatelor obținute nu oferă o garanție suficientă a corectitudinii programului. De obicei, validarea implică dezvoltarea și rularea unui set de teste. În plus, pentru a calcula programe, uneori este posibil să se compare soluțiile rezultate cu o soluție deja cunoscută. În general, nu poți da solutie generala pentru a verifica corectitudinea programului.

Testarea complexității computaționale, de regulă, constă într-o analiză experimentală a complexității unui algoritm sau o comparație experimentală a doi sau mai mulți algoritmi care rezolvă aceeași problemă.

Testarea eficacității unei implementări are ca scop găsirea unei modalități de a face programul potrivit să ruleze mai rapid sau să utilizeze mai puțină memorie. Pentru a îmbunătăți programul, rezultatele implementării sunt revizuite în timpul procesului de construire a algoritmului. Fără a lua în considerare totul opțiuni posibileși domenii de optimizare a programelor, vă prezentăm aici câteva metode utile care vizează creșterea vitezei de execuție a programului.

Prima metodă se bazează pe următoarea regulă. Adunarea și scăderea sunt mai rapide decât înmulțirea și împărțirea. Aritmetica întregului este mai rapidă decât aritmetica reală. Astfel, X+X este mai bun decât 2*X, unde * este semnul înmulțirii. Când efectuați operații pe numere întregi, amintiți-vă că, datorită utilizării sistemului de numere binar, înmulțirea cu multipli de doi poate fi înlocuită cu numărul corespunzător de deplasări la stânga.

A doua modalitate este eliminarea calculelor redundante.

O a treia modalitate de a testa eficacitatea unei implementări se bazează pe capacitatea unor compilatori de a construi cod pentru evaluarea expresiilor booleene, astfel încât evaluarea să se oprească atunci când rezultatul devine evident. De exemplu, în expresia A sau B sau C, dacă A este adevărat, atunci variabilele B și C nu mai sunt verificate. Astfel, puteți economisi timp plasând variabilele A, B, C astfel încât prima variabilă să fie cea care este cel mai probabil să fie adevărată, iar ultima să fie cea care este cel mai puțin probabil să fie adevărată.

A patra tehnică este eliminarea ciclurilor.

A cincea tehnică este desfășurarea ciclurilor.

Aceasta nu este o listă completă a metodelor de optimizare. Doar cele mai evidente dintre ele sunt date aici. De asemenea, trebuie remarcat faptul că nu merită întotdeauna să te lași dus în căutarea vitezei, deoarece aceasta deteriorează cel mai adesea lizibilitatea programelor. În cazul în care câștigul este „minor”, ​​nu merită să îl preferați clarității și lizibilității programului.