1. Introduzione
  2. Autori
  3. Come contribuire
  4. Convenzioni di stile e contenuto
  5. Prodotto e processo
  6. 1. Ingegneria, qualità e processi
    ❱
    1. 1.1. Informazioni logistiche
    2. 1.2. Ingegneria del software
    3. 1.3. Qualità del software
    4. 1.4. Processo di sviluppo
  7. 2. Modelli di ciclo di vita del software
    ❱
    1. 2.1. Modelli sequenziali
    2. 2.2. Modelli iterativi
    3. 2.3. Modelli incrementali
    4. 2.4. Metodologie Agile
  8. 3. eXtreme Programming
    ❱
    1. 3.1. Test Driven Development
    2. 3.2. Fondamenti
    3. 3.3. Tecniche
      ❱
      1. 3.3.1. Planning game
      2. 3.3.2. Brevi cicli di rilascio
      3. 3.3.3. Uso di una metafora
      4. 3.3.4. Presumere la semplicità
      5. 3.3.5. Testing
      6. 3.3.6. Refactoring
      7. 3.3.7. Pair programming
      8. 3.3.8. Proprietà collettiva
      9. 3.3.9. Integrazione continua
      10. 3.3.10. Settimana da 40 ore
      11. 3.3.11. Cliente sul posto
      12. 3.3.12. Standard di codifica
      13. 3.3.13. They're just rules
    4. 3.4. Raggruppamento in fasi
    5. 3.5. Documentazione
    6. 3.6. Criticità
  9. 4. Open source
    ❱
    1. 4.1. Letteratura
      ❱
      1. 4.1.1. The Cathedral and the Bazaar
      2. 4.1.2. Care and Feeding of FOSS
      3. 4.1.3. The Emerging Economic Paradigm Of Open Source
      4. 4.1.4. An empirical study of open-source and closed-source software products
    2. 4.2. Sfide
  10. 5. Software Configuration Management
    ❱
    1. 5.1. Storia
    2. 5.2. Meccanismo di base
    3. 5.3. git
  11. 6. Git workflow e strumenti
    ❱
    1. 6.1. GitFlow
    2. 6.2. Hosting centralizzato
    3. 6.3. Gerrit
    4. 6.4. Strumenti dell'opensource
      ❱
      1. 6.4.1. Build automation
      2. 6.4.2. Bug tracking
    5. 6.5. Unified Process
  12. Progettazione e implementazione
  13. 7. Progettazione
    ❱
    1. 7.1. Refactoring
    2. 7.2. Design knowledge
    3. 7.3. Conoscenze preliminari
    4. 7.4. Principio Tell-Don't-Ask
    5. 7.5. Interface segregation
    6. 7.6. Esempio
      ❱
      1. 7.6.1. Interface segregation all'opera
      2. 7.6.2. Collegamento statico e dinamico
      3. 7.6.3. Loose coupling
      4. 7.6.4. Interfacce multiple
      5. 7.6.5. Contract-based design vs programmazione difensiva
      6. 7.6.6. Classi astratte
  14. 8. Patterns
    ❱
    1. 8.1. Discutere di pattern: i meta-patterns
    2. 8.2. Singleton
    3. 8.3. Iterator
    4. 8.4. Chain of responsibility
    5. 8.5. Flyweight
    6. 8.6. NullObject
    7. 8.7. Strategy
    8. 8.8. Observer
    9. 8.9. Adapter
    10. 8.10. Facade
    11. 8.11. Composite
    12. 8.12. Decorator
    13. 8.13. State
    14. 8.14. Factory method
    15. 8.15. Abstract factory
    16. 8.16. Model view controller
    17. 8.17. Model view presenter
    18. 8.18. Builder
  15. 9. UML
    ❱
    1. 9.1. Analisi del testo naturale
    2. 9.2. State diagram
    3. 9.3. Superstate
    4. 9.4. Class diagram
    5. 9.5. Sequence diagram
    6. 9.6. Activity diagram
    7. 9.7. Use cases diagram
    8. 9.8. Component diagram
    9. 9.9. Deployment diagram
  16. 10. Mocking
    ❱
    1. 10.1. Test Double
      ❱
      1. 10.1.1. Dummy objects
      2. 10.1.2. Stub objects
      3. 10.1.3. Mock objects
      4. 10.1.4. Spy objects
      5. 10.1.5. Fake objects
      6. 10.1.6. Riepilogo
    2. 10.2. Mockito
      ❱
      1. 10.2.1. Implementazione test-double
      2. 10.2.2. Injection
      3. 10.2.3. Mocked constructors
      4. 10.2.4. Mocking di Iterable
  17. Verifica e convalida
  18. 11. Verifica e convalida
    ❱
    1. 11.1. Terminologia
    2. 11.2. Tecniche
  19. 12. Testing e criteri di selezione
    ❱
    1. 12.1. Definizioni
    2. 12.2. Proprietà
    3. 12.3. Utilità di un test
    4. 12.4. Criteri di selezione
      ❱
      1. 12.4.1. Criterio di copertura dei comandi
      2. 12.4.2. Criterio di copertura delle decisioni
      3. 12.4.3. Criterio di copertura delle condizioni
      4. 12.4.4. Criterio di copertura delle decisioni e condizioni
      5. 12.4.5. Criterio di copertura delle condizioni composte
      6. 12.4.6. Criterio di copertura delle condizioni e decisioni modificate
      7. 12.4.7. Implicazioni tra criteri di copertura
    5. 12.5. Altri criteri
      ❱
      1. 12.5.1. Criterio di copertura dei cammini
      2. 12.5.2. Criterio di \(n\)-copertura dei cicli
    6. 12.6. Mappa finale implicazioni tra criteri di copertura
  20. 13. Analisi statica
    ❱
    1. 13.1. Compilatori
    2. 13.2. Analisi Data Flow
      ❱
      1. 13.2.1. Regole
      2. 13.2.2. Sequenze
    3. 13.3. Testing
    4. 13.4. Criteri di copertura
      ❱
      1. 13.4.1. Criterio di copertura delle definizioni
      2. 13.4.2. Criterio di copertura degli usi
      3. 13.4.3. Criterio di copertura dei cammini DU
    5. 13.5. Oltre le variabili
  21. 14. Processi di review
    ❱
    1. 14.1. Bebugging
    2. 14.2. Analisi mutazionale
      ❱
      1. 14.2.1. Criterio di copertura dei mutanti
      2. 14.2.2. Generazione dei mutanti
      3. 14.2.3. Automazione
    3. 14.3. Object oriented testing
    4. 14.4. Testing funzionale
      ❱
      1. 14.4.1. Testing delle interfacce
      2. 14.4.2. Classi di equivalenza
      3. 14.4.3. Test di frontiera
      4. 14.4.4. Category partition
      5. 14.4.5. Object orientation e testing funzionale
    5. 14.5. Software inspection
      ❱
      1. 14.5.1. Fagan code inspection
      2. 14.5.2. Automazione
      3. 14.5.3. Pro e contro
      4. 14.5.4. Confronto tra tecniche di verifica e convalida
      5. 14.5.5. Gruppi di test autonomi
    6. 14.6. Modelli statistici
    7. 14.7. Debugging
  22. Reti di Petri
  23. 15. Reti di Petri
    ❱
    1. 15.1. Definizioni
    2. 15.2. Macchine a stati finiti
    3. 15.3. Relazioni tra transizioni
      ❱
      1. 15.3.1. Sequenza
      2. 15.3.2. Conflitto
      3. 15.3.3. Concorrenza
    4. 15.4. Insieme di raggiungibilità
    5. 15.5. Limitatezza
    6. 15.6. Vitalità di una transizione
    7. 15.7. Capacità dei posti
    8. 15.8. Archi inibitori
    9. 15.9. Eliminazione pesi sugli archi
    10. 15.10. Conservatività
    11. 15.11. Stato base e rete revertibile
  24. 16. Analisi di reti di Petri
    ❱
    1. 16.1. Albero di raggiungibilità
    2. 16.2. Albero di copertura
    3. 16.3. Rappresentazione matriciale
    4. 16.4. Analisi statica
      ❱
      1. 16.4.1. \(P\)-invarianti
      2. 16.4.2. \(T\)-invarianti
    5. 16.5. Controllori con specifica a stati proibiti
    6. 16.6. Reti con priorità
  25. 17. Reti di Petri temporizzate
    ❱
    1. 17.1. Modelli temporali
    2. 17.2. Reti Time Basic
    3. 17.3. Evoluzione
      ❱
      1. 17.3.1. Semantica temporale debole
      2. 17.3.2. Semantica temporale monotonica debole
      3. 17.3.3. Semantica temporale forte
      4. 17.3.4. Semantica temporale mista
    4. 17.4. Analisi delle reti Time Basic
      ❱
      1. 17.4.1. Reti TB come reti ad alto livello?
      2. 17.4.2. Analisi di raggiungibilità temporale

Ingegneria del software

Criteri di copertura derivati dall’analisi statica

  • Criterio di copertura delle definizioni
  • Criterio di copertura degli usi
  • Criterio di copertura dei cammini DU