Cunoaște Intuit, curs, problemele de dezvoltare a sistemelor software complexe

Rezumat: Conceptul unui program complex și diferențele de programe complexe de la simplu. Problemele de bază ale dezvoltării unor programe complexe. Atașat la inginerie software-ul cu principalele principii de lucru cu sisteme complexe, care sunt aplicabile unei game largi de sarcini.

Programul „Big“ și „mici“

Tema principală a cursului - modul de a dezvolta „mari“ și complexe programe.

Toată lumea, odată ce a scris un program, se poate foarte bine imagina cum de a dezvolta un program de „mic“, de obicei, un important o sarcină simplă și special concepute pentru a fi utilizate cel mai des de către o singură persoană sau un grup mic de oameni.

Un exemplu este programul. calculeaza suficient (dar nu prea mult, nu mai mult de 30.000), numărul de caractere.

Noi folosim următoarele formule:

Având în vedere programul Java adecvat ar putea arata astfel:

Programul - un „mic“ ca dimensiune (

150 linii) și în alte moduri:

  • Se rezolvă o obiective clare (ieșiri de cifre zecimale?) În limitările bine-cunoscute (nu mai mult de 30000 de caractere), de altfel, nu este foarte importantă pentru orice activități practice sau de cercetare.
  • Nu contează cât de repede funcționează - pentru a calcula 30000 de cifre să nu dureze mai mult de o jumătate de oră, chiar și pe calculatoare mai vechi, și că este de ajuns.
  • Deteriorarea din funcționarea incorectă a programului este aproape de zero (cu excepția posibilității de prăbușirea sistemului său, care sunt realizate și alte sarcini, mai importante).
  • Nu aveți nevoie să completeze programul cu noi caracteristici, practic nimeni nu trebuie să dezvolte noi versiuni, sau pentru a corecta eventualele erori constatate.
  • În legătură cu cele de mai sus, nu într-adevăr nevoie pentru a face programul o documentație detaliată și clară - pentru un om care a interesat, nu fi prea greu să dau seama cum să-l folosească, doar codul sursă.

Complexul sau program de „mare“, de asemenea, denumite sisteme software, sisteme software, produse software. diferit de „mici“ nu este atât de mult în dimensiune (deși ele sunt de obicei mult mai mult), dar prin prezența unor factori suplimentari legate de cererea lor și dorința utilizatorilor de a plăti bani pentru achiziționarea programului, precum și pentru sprijinul său și chiar și pentru o pregătire specială pentru a lucra cu l.

De obicei, un program complex are următoarele proprietăți:

  • Se rezolvă una sau mai multe dintre sarcinile legate, de multe ori la început nu a avut o declarație clară atât de important pentru orice persoane sau entități care sunt din ce în ce beneficii semnificative din utilizarea sa.
  • Este important ca acesta să fie ușor de utilizat. În special, aceasta ar trebui să includă o documentație suficient de cuprinzătoare și clară utilizator, eventual, de asemenea, documentația specifică pentru administratori, precum și un set de documente de formare pentru a lucra cu programul.
  • performanțele sale slabe pe date reale duce la pierderi semnificative pentru utilizator.
  • disfuncționalitate acestuia provoacă daune semnificative utilizatorilor și a altor organizații și persoane fizice, chiar dacă eșecurile nu apar prea des.
  • Pentru a-și îndeplini sarcinile, aceasta trebuie să interacționeze cu alte sisteme software și hardware și software care rulează pe platforme diferite.
  • Utilizatorii care lucrează cu ea, pentru a primi beneficii suplimentare din faptul că programul este dezvoltat, a introdus noi caracteristici și corecta erorile. Trebuie să aveți documentația de proiect, ceea ce permite să-l dezvolte, poate nu dezvoltatorii care au creat, fără costul ridicat de inginerie inversă (reingineria).
  • În dezvoltarea sa implicat un număr semnificativ de persoane (mai mult de 5 persoane). „Big“ este aproape imposibil de a scrie un program de pe prima încercare, cu un pic de efort și singur.
  • număr mult mai mare de potențiali utilizatori, și chiar mai mult acelor persoane ale căror activități vor fi afectate într-un fel sau altul de muncă și rezultatele sale.

Un exemplu al programului „mare“ poate servi ca un standard de bibliotecă de clasă Java. un membru al Java Development Kit [1].

Strict vorbind, nici una dintre aceste proprietăți nu este necesară pentru programul ar putea fi considerat „mare“, dar în cazul în care există două sau trei dintre ele sunt destul de încrezător, vă poate argumenta că acesta este un „mare“.

Pe baza unora dintre aceste proprietăți pot fi încheiate. că sistemul de program sau software-ul „mare“ de multe ori nu este doar un cod sau un fișier executabil. și include, de asemenea, un set de proiectare și documentație pentru utilizator.

Tehnici speciale sunt necesare pentru dezvoltarea sistemelor software - așa cum sa menționat deja, ele nu pot scrie o „obrăznicie“. Studiul de organizare, de inginerie și aspectele tehnice ale software-ului de dezvoltare. inclusiv dezvoltarea de metode implicate într-o disciplină numită inginerie software. Cele mai multe dintre dificultățile întâmpinate în dezvoltarea sistemelor software asociate cu organizarea de colaborare eficientă a multor oameni, ceea ce duce la rezultate practice utile. Acest lucru necesită luarea în considerare a următoarelor aspecte.

Este important de remarcat faptul că utilitatea practică a sistemului software complex nu este neapărat un „drept“.

Majoritatea dezvoltatorilor cu experiență și cercetători cred că sistemele de software, practic, semnificative conțin întotdeauna erori. În tranziția de la programele de „mici“ la conceptul de „mare“ a programului „dreapta“ devine aproape lipsită de sens. Vorbind despre sistemul software-ului (în contrast cu programul de mai sus pentru a calcula numărul?), Nu se poate spune că este „corect“, adică întotdeauna rezolva în mod corect toate sarcinile care îi sunt atribuite. Acest fapt este asociat atât cu imposibilitatea practică a probei complete sau verificarea acest lucru și faptul că rațiunea de a fi a unui sistem software - satisfacerea nevoilor și cerințelor multor părți interesate diferite. Și aceste nevoi sunt nu numai prost definite, diferite pentru diferite grupuri de utilizatori, și uneori contradictorii, dar, de asemenea, sa schimbat în mod semnificativ în timp.

În acest sens, în loc de a considera „dreptul“ și „greșit“ sisteme software, din cauza absenței virtuale a primului, considerat „calitate suficientă“ și „calitate insuficientă“.

Prin urmare, principalele probleme ale dezvoltării sistemelor software complexe, asociate cu găsirea unui compromis rezonabil între costul de dezvoltare și calitatea rezultatelor sale. Costul include toate tipurile de resurse utilizate, dintre care cel mai important timp petrecut, bugetul proiectului și utilizarea de personal. Satisfacția utilizatorilor de a lucra cu programul (și, în consecință, veniturile obținute din vânzările sale și servicii cu valoare adăugată) și a întâlni dezvoltatorii de la crearea sa determinată de calitatea programului, care include aspecte, cum ar fi setul de posibilități oferite, fiabilitate. uzabilitate. flexibilitate, ușurința de a face modificări și corecții ale erorilor. Mai în detaliu conceptul de software de calitate vor fi discutate într-un curs mai târziu.

partea de software (software) nu poate fi vizualizat separat de sistemele de hardware și software, în cazul în care este inclusă ca parte integrantă. Studiul problemelor legate de dezvoltarea și întreținerea sistemelor de software și hardware, o inginerie a sistemelor. În domeniul său de aplicare devine o mulțime de probleme legate de sistemele de hardware și de a asigura nivelul necesar de integrare a componentelor software și hardware. doar ocazional vom ridica probleme legate de inginerie a sistemelor, în general, limitate în principal la aspectele legate în mod direct la software-ul.

Acest curs va fi luate în considerare abordări diferite pentru rezolvarea problemelor de dezvoltare asociate cu ambele componente ale dilema „resurse de calitate“ pentru crearea de programe complexe. Pentru prezentarea acestor abordări introduce un sistem de concepte legate de sistemele și procesele de crearea lor de software și de a dezvolta în mod eficient astfel de sisteme, pentru a evalua și planul pentru proprietățile lor. Acestea includ lucruri cum ar fi ciclul de viață al software-ului, software-ul de calitate, procesul de dezvoltare de software, la cerințele software, arhitectura software, modele de design, și așa mai departe.

În plus, o atenție specială este acordată până în prezent cu una dintre abordările la dezvoltarea de software complexe. dezvoltarea componentelor. oferind pentru a construi un astfel de sistem de elemente individuale secvențial - componente, fiecare dintre care poate, la rândul său. Acesta poate fi considerat ca un sistem software separat. Cursul oferă o introducere în dezvoltarea tehnologiei moderne componente de sisteme software bazate pe platforme J2EE. NET.

Problemele asociate cu gestionarea resurselor de dezvoltare, inclusiv planificarea acțiunilor individuale în timp, crearea unor echipe eficiente de dezvoltatori se referă la managementul de proiect. care se va concentra pe ultima prelegere a cursului.

Am dezvoltat așa-numitele procese tehnologice pe baza experienței de proiectare a sistemelor de mari dimensiuni. să conțină o descriere suficient de detaliată a diverselor aspecte ale creației și a funcționării acestora. Aceste descrieri oferă răspunsuri la întrebări cu privire la modul în care ar trebui să fie făcut pentru a dezvolta, ce fel de persoană ar trebui să participe la ea, și în ce etape, care activități și în ce ordine ar trebui să fie efectuate pe care documentele sunt intrările lor și ce documente, modele, alte părți ale programului sistemele trebuie să fie pregătite ca rezultat al fiecărei operațiuni. Elementele acestor tehnici vor fi menționate pe parcursul cursului. De asemenea, standardele industriei pentru a fi considerate dezvoltate care descriu pe baza unui număr mare de proiecte reale abordări pentru construirea de sisteme software complexe.

Protestul împotriva comunității astfel programarea birocratizarea și încercările mecanice de utilizare a recomandărilor teoretice a dus la mișcarea populară este acum o dezvoltare de software plin de viață (Agile Software Development). Un exemplu de „vie“ a procesului de dezvoltare este un set de tehnici, cunoscute sub numele de Extreme Programming (Extreme Programming. XP). Unele aspecte ale acestor abordări vor fi discutate în acest curs.