Ingineria Sistemelor de Programe

Documentatie suplimentara, ISP, Seria B si SM

View on GitHub

Introducere în SDLC

Ciclul de Dezvoltare Software (Software Development Life Cycle - SDLC) reprezintă procesul complet de creare, dezvoltare, testare și menținere a aplicațiilor software. Este o metodologie structurată care ghidează transformarea unei idei sau cerințe în un produs software funcțional și stabil. SDLC oferă un cadru organizat pentru dezvoltarea de software de înaltă calitate, cu costuri minime și în termene reduse.

Importanța SDLC în Ingineria Software

SDLC joacă un rol crucial în ingineria software deoarece:

  1. Structurează procesul de dezvoltare - Oferă o abordare sistematică și ordonată pentru dezvoltarea software.
  2. Îmbunătățește calitatea - Prin definirea clară a etapelor și verificărilor, asigură că produsul final îndeplinește standardele de calitate.
  3. Reduce riscurile - Identifică și gestionează potențialele probleme din fazele timpurii.
  4. Optimizează resursele - Ajută la planificarea eficientă a resurselor umane, de timp și financiare.
  5. Facilitează colaborarea - Clarifică rolurile și responsabilitățile în echipă.
  6. Permite adaptabilitatea - Diferite modele SDLC (Waterfall, Agile, DevOps) pot fi alese în funcție de specificul proiectului.

Etapele Fundamentale ale SDLC

Indiferent de metodologia specifică adoptată, SDLC include în general următoarele etape esențiale:

  1. Planificare și Analiză Cerințe:
    • Definirea scopului proiectului
    • Colectarea și analizarea cerințelor utilizatorilor
    • Evaluarea fezabilității și restricțiilor
    • Planificarea resurselor și calendarului
  2. Design și Arhitectură:
    • Proiectarea arhitecturii sistemului
    • Definirea interfețelor și componentelor
    • Stabilirea standardelor de design
    • Elaborarea specificațiilor tehnice
  3. Implementare (Dezvoltare):
    • Scrierea codului sursă
    • Implementarea funcționalităților
    • Integrarea componentelor
    • Revizuirea și refactorizarea codului
  4. Testare:
    • Testarea unitară, de integrare și de sistem
    • Testarea funcțională și nefuncțională (performanță, securitate)
    • Validarea conformității cu cerințele
    • Remedierea defectelor identificate
  5. Deployment:
    • Pregătirea mediului de producție
    • Migrarea datelor (dacă este cazul)
    • Instalarea și configurarea aplicației
    • Activități de tranziție și go-live
  6. Mentenanță și Monitorizare:
    • Suport pentru utilizatori
    • Rezolvarea problemelor apărute după lansare
    • Actualizări și îmbunătățiri
    • Monitorizarea performanței și stabilității

Tabel SDLC și Unelte Software Engineering

Etapă SDLC Descriere Unelte Categorii de Unelte
1. Planificare și Analiză Cerințe Colectarea și analizarea cerințelor, definirea scopului - Jira
- Trello
- Confluence
- Microsoft Project
- Managementul proiectelor
- Documentație
- Diagrame și modelare
- Comunicare
2. Design și Arhitectură Crearea specificațiilor tehnice, arhitectură software - Draw.io
- Lucidchart
- Enterprise Architect
- Visual Paradigm
- Figma
- Adobe XD
- InVision
- Sketch
- Modelare UML
- Wireframing
- Prototipare
- Design UI/UX
3. Implementare (Dezvoltare) Scrierea și implementarea codului - IDE-uri (VS Code, IntelliJ, Eclipse)
- Git/GitHub/GitLab/Bitbucket
- Docker
- Kubernetes
- NPM/Maven/Gradle
- Jenkins
- Travis CI
- CircleCI
- Medii de dezvoltare
- Control versiune
- Containerizare
- Gestionare dependențe
- CI/CD
4. Testare Verificarea calității și funcționalității software-ului - Selenium
- JUnit/TestNG
- Postman
- SoapUI
- JMeter
- LoadRunner
- Cucumber
- TestRail
- qTest
- Testare automată
- Testare API
- Testare de performanță
- BDD/TDD
- Managementul testelor
5. Deployment Lansarea software-ului în mediul de producție - Jenkins
- GitLab CI/CD
- GitHub Actions
- AWS CodeDeploy
- Azure DevOps
- Terraform
- Ansible
- Docker
- Kubernetes
- CI/CD
- Cloud deployment
- Infrastructură ca cod
- Containerizare
- Orchestrare
6. Mentenanță și Monitorizare Suport continuu, rezolvare bug-uri, îmbunătățiri - Grafana
- Prometheus
- New Relic
- Datadog
- Sentry
- PagerDuty
- Monitorizare
- Logging
- Alertare
- APM (Application Performance Monitoring)
- Analiza log-urilor

Unelte Transversale (Folosite în Multiple Etape)

Categorie Unelte
Managementul Codului - Git/GitHub/GitLab/Bitbucket
- SonarQube
- Veracode
- BlackDuck
- Fortify
Colaborare - Slack
- Microsoft Teams
- Zoom
- Confluence
- Notion
- Google Workspace
DevOps - Jenkins
- Docker
- Kubernetes
- Terraform
- Ansible
- Chef/Puppet
- GitLab CI/CD
- GitHub Actions
Cloud - AWS
- Microsoft Azure
- Google Cloud Platform
- Heroku
- DigitalOcean
Metodologii Agile - Jira
- Trello
- Azure DevOps
- Monday.com
- Asana