Păstrați trasabilitatea cerințelor când software-ul se schimbă
TerminatLegați rezultatul pentru utilizator de decizii, criterii de acceptare, implementare și dovezi. Actualizați legăturile când se schimbă ipotezele.
Publicat de TaigaCum scriem
Verificați ce ați înțelesSpecificația se schimbă după pregătirea arhitecturii și a testelor. Ce trebuie să se întâmple?Faceți exercițiul
Ce veți învăța
- Scrieți o cerință observabilă cu limite explicite.
- Urmăriți o cerință printr-o modificare și verificările sale.
- Identificați documentele ulterioare afectate de o ipoteză schimbată.
Descrieți un comportament verificabil
„Creați un export modern de clienți” lasă deschise decizii importante. Nu definește utilizatorii, înregistrările, câmpurile sau comportamentul la eșec. Un agent trebuie fie să întrebe, fie să facă presupuneri. Ipotezele neconsemnate sunt greu de verificat ulterior.
Folosiți o cerință fictivă cu o limită clară: un manager autentificat poate exporta clienții activi din propria organizație. Exportul conține ID-ul clientului și numele afișat. Exclude datele de contact și înregistrările arhivate. Un utilizator fără rol de manager nu primește niciun export.
Sunt încă necesare decizii despre format, volum, timp de răspuns și gestionarea eșecurilor. Marcați explicit necunoscutele. O specificație utilă face vizibilă incertitudinea în loc să o ascundă într-un text categoric.
Separați cerințele de alegerile de implementare
Utilizatorul are nevoie de un set permis de înregistrări într-un format utilizabil. Interogarea bazei de date, biblioteca și structura endpointului sunt alegeri de implementare. Legați-le de cerință fără a trata fiecare alegere actuală ca nevoie permanentă a afacerii.
Consemnați o decizie cu consecințe importante împreună cu contextul, alternativele și motivul său. De exemplu, exportul sincron poate fi potrivit pentru volume mici. Un volum mai mare poate necesita un job de fundal și o verificare separată a autorizării descărcării.
Păstrați cerința stabilă unde este posibil, gestionând versiunile deciziei schimbate. Astfel, evaluatorii pot deosebi o implementare diferită de o promisiune diferită făcută utilizatorilor.
Creați un lanț scurt de dovezi
Folosiți identificatori care rămân ușor de înțeles în verificări. În acest exemplu, EXPORT-01 poate identifica limita organizației. Numele este ilustrativ, nu un sistem obligatoriu de numerotare.
| Legătură | Exemplu |
|---|---|
| Cerință | EXPORT-01: numai înregistrările din organizația managerului |
| Decizie de proiectare | Impuneți condiția de apartenență la organizație pe server, nu în browser |
| Implementare | PR-ul modifică interogarea și calea de autorizare |
| Verificare | Cererea pentru înregistrările altei organizații este refuzată |
| Dovezi de lansare | Rezultatul verificării identifică commit-ul și artefactul acceptate |
Lanțul trebuie să indice dovezi reale. Un nume de test care conține ID-ul cerinței nu dovedește că aserțiunea o verifică. Inspectați testul și calea din codul de producție pe care acesta o execută.
SSDF de la NIST oferă context pentru cerințe și verificare în dezvoltarea sigură. Folosiți trasabilitatea pentru a face aceste activități inspectabile, nu pentru a produce documentație de dragul documentației. Citiți cadrul.
Verificați impactul unei ipoteze schimbate
Să presupunem că afacerea are acum nevoie de clienții arhivați. Modificarea afectează mai mult decât un flag al interogării. Verificați regulile de păstrare, autorizarea, volumul așteptat, explicațiile pentru utilizatori și sensul rapoartelor existente.
Marcați documentele și verificările afectate pentru reevaluare. Păstrați decizia anterioară pentru ca un operator să poată explica o lansare mai veche. Nu rescrieți în tăcere istoricul pentru a face proiectarea recentă să pară inevitabilă.
Un agent poate ajuta la găsirea referințelor și propunerea actualizărilor. Responsabilii trebuie să rezolve cerințele contradictorii și să accepte comportamentul modificat. O listă de fișiere care corespund căutării este un punct de plecare, nu o evaluare completă a impactului.
Păstrați consemnarea suficient de mică pentru a fi folosită
Consemnați deciziile care afectează implementarea, verificarea și operarea. Evitați repetarea aceleiași cerințe în multe documente neconectate. Preferați legături către o singură sursă întreținută.
Înainte de a accepta o modificare, întrebați dacă un evaluator îi poate urmări scopul până la dovezile efective. Înainte de operare, întrebați dacă responsabilul serviciului poate găsi limita relevantă și decizia de recuperare. Acestea sunt teste practice ale trasabilității utile.
Faceți exercițiul
Scrieți o cerință prin care un manager exportă clienții activi. Includeți utilizatorii permiși, limita organizației, câmpurile, comportamentul la eșec și o condiție măsurabilă de terminare. Legați-o de un test și o lansare fictive. Apoi modificați cerința pentru a include clienții arhivați și enumerați deciziile afectate.
Descărcați fișa de lucru (Markdown)Debifarea acestei opțiuni șterge tot progresul salvat în acest browser.
Progresul rămâne în acest browser. Fără cont, fără urmărire.
Surse și lecturi suplimentare
- NIST: Secure Software Development Framework ↗
- Google Engineering Practices: What to look for in a code review ↗