Mentre "automazione dello sviluppo" è non un termine comunemente usato e riconosciuto del software dev. industria, l'ho sentito molte volte nella mia vita.
Gli uomini d'affari normalmente lo usano per riferirsi a "tutto ciò che può accelerare il processo di sviluppo e consentire alla società di aggirare la maggior parte, se non tutti, del processo di sviluppo del software, passando da una semplice lista di desideri a livello aziendale a un pronto -per il prodotto sul mercato (scrivendo il meno possibile di codice e assumendo il minor numero possibile di programmatori) ". In altri termini: "qualsiasi tecnologia / metodologia in grado di ridurre lo sviluppo del software alla cosa più complicata che il ragazzo medio può capire: Lego (TM)". ; -)
Data questa definizione, ci sono tre tecnologie / metodologie che si adattano a questo:
- RAD (Rapid Application Development)
- Generazione codice
- MDA / MDD (Architecture / Sviluppo guidato da modelli)
Queste tecniche possono essere utilizzate solo se / quando è possibile formulare alcune forti ipotesi sulla natura del progetto a portata di mano.
Ad esempio, Ruby-on-Rails e Django possono fare un sacco di generazione di codice ("automazione dello sviluppo del software") perché danno per scontato che ciò che il programmatore vuole produrre è un'applicazione web principalmente coinvolta nell'esposizione di un database ( un modello) all'utente finale attraverso un livello di business logic (un controller) e una pagina Web (una vista).
Se puoi fare affermazioni così forti, puoi automatizzare molto. Dai un'occhiata a questi strumenti per avere un'idea:
link
link
link
E, naturalmente, dai un'occhiata ai potenti strumenti di generazione del codice usati da RoR e Django.
BTW: un caso speciale di "generazione di codice" è l'automazione delle build. Cioè: il tipo di trucchi build-time che puoi fare con Maven, Ant, Rake, Scon, Rake, ecc.
Nell'ambito dello sviluppo generale del software, questi strumenti hanno avuto un successo molto scarso perché (normalmente) non non puoi fare tali ipotesi sulla natura del progetto in questione. Quando sviluppi qualcosa di nuovo o qualcosa di strongmente personalizzato, di solito devi lavorare con la migliore "granularità logica" consentita dai tuoi strumenti, che è la stessa granularità consentita dal tuo linguaggio di programmazione. Qualsiasi altra cosa sarebbe semplicemente di massima per il compito a portata di mano.