Estratégia de Engenharia de Software
Estratégia priorizada
Abordagem de Desenvolvimento de Software: Dirigido a Plano
Ciclo de vida: Sequencial
Processo de Engenharia de Software: Cascata
Quadro comparativo
Característica | Cascata | OpenUP |
---|---|---|
Foco | Sequência linear de fases | Processo iterativo e incremental com foco na colaboração e feedback contínuo. |
Equipe | Estruturada e hierárquica, com papéis bem definidos | Equipes especializadas e com papeis mais bem definidos |
Ciclos de desenvolvimento | Lineares e sequenciais, sem retorno às fases anteriores | Ciclo estruturado e formal, com controle de riscos, priorizando a qualidade e a estabilidade. |
Envolvimento do cliente | Limitado, pouca participação pelo desenvolvimento | Igualmente contínuo porém mais estruturado e com revisões formais. |
Flexibilidade | Baixa flexibilidade, com mudanças raras durante o projeto | Flexível, porém mais limitado em relação às fases de desenvolvimento. |
Justificativa
Depois da troca entre processos de desenvolvimento de software, nos estabelecemos no Cascata, pois é um modelo que inconscientemente todos da equipe seguiram no decorrer do projeto, porém fizemos o uso do OpenUP para a estruturação do nosso cronograma e para guiar outros aspectos do projeto.
Utilização do Processo em Cascata
Adotaremos o modelo de desenvolvimento em cascata, que seguirá uma sequência linear de fases bem definidas, onde cada etapa deve ser concluída antes do início da próxima. O foco será na documentação detalhada, no planejamento rigoroso e em entregas somente ao final do ciclo de desenvolvimento.
Levantamento e Análise de Requisitos: Nesta fase inicial, realizaremos a coleta detalhada de requisitos com o cliente, por meio de entrevistas e análise de documentos. O objetivo é definir claramente as necessidades do projeto, com um escopo bem estabelecido para evitar mudanças ao longo do desenvolvimento.
Design do Sistema: Com os requisitos definidos, passaremos para a elaboração da arquitetura do sistema. Inclui o design de alto e baixo nível, diagramas de arquitetura, modelagem de dados e a definição das tecnologias que serão utilizadas.
Implementação (Codificação): Nesta etapa, o desenvolvimento do software será realizado de acordo com o design previamente definido. A codificação seguirá os padrões estabelecidos na fase anterior, com foco na entrega de um produto funcional completo.
Testes e Validação: Após a implementação, serão realizados testes rigorosos para identificar e corrigir erros. Inclui testes de unidade, integração, sistema e aceitação, garantindo que o software atenda aos requisitos definidos.
Implantação: O software será entregue e implantado no ambiente de produção do cliente. Esta fase inclui atividades de configuração do ambiente, migração de dados (se necessário) e treinamento de usuários.
Manutenção: Após a entrega, serão realizadas correções de erros identificados em produção e ajustes necessários. A manutenção também pode incluir melhorias evolutivas, desde que aprovadas e planejadas adequadamente.
Envolvimento do Cliente: O cliente participará principalmente nas fases de levantamento de requisitos e na validação final do produto, com envolvimento limitado durante o desenvolvimento. O foco estará na entrega de um software completo ao final do ciclo.
~~Utilização do processo OpenUP~~
Nossa divisão de iterações será de acordo com o OpenUP e a partir dele focaremos bastante nas respostas e avaliações do professor Bruno Ribas para prosseguir com o desenvolvimento numa microescala. Também ocorrerá reuniões informais com o cliente para fazer alinhamentos sobre cada incremento que será entregue. Optamos por incorporar o OpenUP (na estrutura de Inception, Elaboration, Construction e Transition) na nossa estratégia de desenvolvimento de software da seguinte forma:
Inception e Elaboração: definição inicial do projeto. Assim como a elicitação e descoberta de requisitos com o cliente, também aplicamos a técnica de brainstorming sobre os problemas e soluções propostas entre o time, além de estabelecermos o documento de visão do produto e posteriormente a análise, consenso e declaração dos requisitos, assim como épicos, temas e histórias de usuário.
Construção e Transição: construção do software propriamente dito. Codificação, testagem e validação do produto com cliente. Aplicaremos técnicas como DoR (Definition of Ready) e DoD (Definition of Done) para fazer validações com o cliente e entre o time a respeito de requisitos e incrementos de software.