98-361: General software development
General software development se referă în principiu la următoarele aspecte:
- Viața unei aplicații software
- Interpretarea specificațiilor unei aplicații
- Înțelegerea algoritmilor și a structurilor de date
Ciclul de viață al unei aplicații software
După cum am învățat și când am urmat cursul de “Joburi vs roluri în IT” de la ProgSquad o aplicație are 5 etape de viață:
- Assess: află ce vrea clientul de la tine, află care este scopul aplicației și ce particularități vrea să aibă.
- Plan: odată ce ai aflat ce urmează să faci e bine să construiești un mock-up pe care să îl arăți clientului. Mock-up-ul se referă la modul cum va arăta interfața aplicației fără ca aceasta să aibă implementată nici o funcție. Poate la fel de bine să fie făcută în photoshop atâta timp cât așa va arăta aplicația la final.
Tot în această etapă faci și estimările în ceea ce privește scopul și resursele pe care le vei folosi. - Develop: după ce ai primit ok-ul de la client, te apuci de partea de development. Împarți sarcinile diverșilor developeri și urmărești cum evoluează lucrurile.
- Testing: aplicația ajungând la forma finală este timpul să fie testată. Fie open test fie closed test. Acum vei descoperi eventuale bug-uri, caz în care ver reveni la punctul 3.
- Maintenance: când aplicația ta a fost lansată nu ți-ai terminat treaba. Cu siguranță or să apară bug-uri sau o să vrei să implementezi noi funcționalități sau să aduci îmbunătățiri. În momentul acela reintri în prima etapă dacă îți cere clientul o nouă funcționalitate, în etapa a 2-a dacă tu vii cu o implementare nouă sau în etapa a 3-a dacă rezolvi eventuale bug-uri.
Ciclul se repetă la infinit sau până când hotărăști că nu mai vrei să oferi asistență pentru aplicația ta.
Înțelegerea algoritmilor și a structurilor de date
Înțelegerea algoritmilor este un termen destul de vag și foarte larg, dar la ceea ce se referă Microsoft aici este la înțelegerea algoritmilor de sortare.
Sunt patru tipuri de date care ar trebui să te intereseze: array, stack, queue și linked lists:
- Array: array-ul este o structură de dată cu indici. Practic poți să inserezi și să ștergi elemente din orice poziție din array.
- Stack: Un stack este un container în care datele sunt introduse și scoase pe principiul LIFO (last-in-first-out). Spun că fac push la un element dacă îl introduc și pop la un element dacă îl stoc din stack.
- Queue: Se mai numește și coada și funcționează pe principiul FIFO (first-in-first-out) asemenea unei cozi de oameni la casa de bilete: primul sosit-primul servit.
- Linked list-ul este o structură de date care constă într-un grup de noduri care împreună formează o secvență. Fiecare element dintr-un linked list are două câmpuri: datum și referința. Datum este partea unde este stocată informați și referință este partea care arată la următorul element din link (lanț).
Nu ești nevoie să cunoști foarte mulți algoritmi de sortare, dar să ai o idee de bază asupra câtorva este excelent însă:
- Bubble sort: Practic algoritmul acest trece prin fiecare element dintr-un array și verifică dacă este mai mare decât colegul din dreapta. Dacă este mai mare cei doi fac schimb de loc.
- Quicksort: Acest algoritm funcționează pe baza principiului divide et impera. Se alege un punct de pivot și toți termenii mai mici decât el se pun în stânga și tot ce este mai mare se pune în dreapta. Se repetă cu alegerea unui nou pivot și aranjarea elementelor până când am obținut i listă ordonată.
- Insertion sort: încep de la al doilea termen și verific dacă este mai mic decât cel din stânga, dacă este mai mic verific dacă este mai mic decât numărul care se află și mai în stânga, dacă ajung la fals atunci îl poziționez pe ultima poziție unde afirmația era adevărată.
By: Adrian Coman