O desenvolvimento de um software não é um processo simples e que por muitas vezes pode se tornar ainda mais complicado devido a falhas no gerenciamento do projeto e na especificação do produto, tendo dados incorretos como duração do projeto e custo esperado. Antigamente a grandes maioria dos projetos iniciados terminavam – quando terminavam - atrasados, custando mais do que orçado inicialmente e com as funcionalidades incorretas ou incompletas. Atualmente esse quadro melhorou, mas ainda continua com um grande número de projetos “problemáticos”, muito dessa melhora deve-se ao surgimento da engenharia de software.
A engenharia de software tem como objetivo melhorar a qualidade do software e aumentar a produtividade e satisfação profissional nesse meio. A engenharia de software faz uso da combinação de métodos para as fases de desenvolvimento e de ferramentas para automação desses métodos para assegurar a qualidade dos softwares. Um dos tópicos da engenharia de software está relacionado às fases de desenvolvimento de softwares e se chama ciclo de vida.
O ciclo de vida de um software pode ser definido como um conjunto de passos que descreve as fases pelas quais o software passa desde a sua concepção até ficar sem uso algum. As macro-fases no desenvolvimento de qualquer software são basicamente: levantamento de requisitos, análise, projeto, implementação e testes. E os principais ciclos de vida são: modelo clássico(em cascata), prototipação, evolucionário, incremental e espiral.
O modelo clássico segue um fluxo seqüencial e linear onde cada fase apenas começa ao final da fase anterior. O ciclo em cascata apenas deve ser utilizado quando os requisitos forem bem compreendidos, pois sua inflexibilidade por torná-lo bastante complicado.
O modelo de prototipação é um modelo incremental que se utiliza de protótipos para uma melhor avaliação e refinamento do software a ser desenvolvido, tornando-o mais fácil de ser adaptado às necessidades do usuário.
O modelo evolucionário consiste na especificação e desenvolvimento de uma versão inicial e a partir desta, realizar verificações e validações gerando versões intermediárias, através de protótipos, até chegar à versão final do sistema.
O modelo incremental trata-se de uma abordagem intermediária que combina as vantagens dos paradigmas em cascata e evolucionário, sendo identificadas as funções do sistema, estabelecendo incrementos e prioridades. Cada incremento pode utilizar-se de um paradigma de desenvolvimento diferente.
O modelo espiral é o mais realístico, sendo um modelo incremental que conta com análise de riscos e prototipagem. Suas principais fases são: planejamento, análise de riscos, desenvolvimento e avaliação. Essas etapas se repetem em círculos até que se chegue na versão final do software.
Para o desenvolvimento do acordeon foi escolhido como modelo base o ciclo de vida em espiral. Além disso, a adoção de boas práticas de outros ciclos de vida será utilizada à medida que forem necessárias, caso haja a necessidade. A escolha desse ciclo de vida ocorreu de forma unânime entre os componentes do grupo de desenvolvimento Versão Beta, pois este ciclo consiste de um modelo incremental e iterativo, que adota as boas práticas do modelo clássico (em cascata) e do modelo de prototipação. A falta de experiência dos componentes na especificação de sistemas grandes e o curto tempo para o desenvolvimento foram fatores considerados no momento da decisão, pois através das iterações e das versões que surjam ao decorrer do projeto, requisitos e vulnerabilidades do sistema poderão ser identificados/validados mais facilmente.
Por se tratar de um grupo de desenvolvimento pequeno que conta apenas com 4 desenvolvedores, foi decidido entre os membros do grupo que além do ciclo de vida em espiral, algumas técnicas de metodologias ágeis serão estudadas e caso venham a auxiliar no desenrolar do projeto também poderão vir a ser utilizadas.
Referências:
- http://engenhariadesoftware.blogspot.com/2007/02/ciclo-de-vida-do-software-parte-1.html
- http://www.inf.ufpr.br/silvia/ES/SweES/SweESalunos.pdf
- Material disponibilizado para a matéria de Engenharia de Software na Uneb no semestre 2010.1
A descrição sobre o ciclo de desenvolvimento está muito boa e ajudará bastante na condução do projeto durante toda a disciplina.
ResponderExcluir