Prévia do material em texto
ENGENHARIA DE SOFTWARE Modelos de processos de software fornecem diretrizes gerais para o desenvolvimento do software e devem ser escolhidos e utilizados de acordo com características específicas do projeto de desenvolvimento do software que envolve informações da equipe a desenvolver o software e também do cliente. Imagine a situação abaixo. Um escritório de advocacia deseja contratar os seus serviços para apoiar no suporte automatizado de tarefas jurídicas comumente realizadas por seus advogados. Dentre as atividades tem-se a elaboração de documentos a serem protocolizados em diferentes tribunais de justiça de esfera estadual e federal; o acompanhamento de movimentações processuais de processos judiciais sob os cuidados dos advogados do escritório; e o gerenciamento de prazos jurídicos para manifestação em processos judiciais acompanhados pelo escritório. Você, como bom engenheiro de software, percebe que muito tem a aprender sobre a área jurídica e também sobre a forma de trabalho dentro do escritório cujo processo de negócio deverá ser apoiado pelo software solicitado. Ao visitar o escritório e conhecer um pouco mais da empresa, você percebe que todo o acompanhamento de processos judiciais é realizado ainda em papel e pilhas e mais pilhas de papel podem ser vistas nas mesas dos advogados da empresa. Duas coisas você consegue deduzir disso: 1) a empresa parece ser bem sucedida e os advogados devem ser bastante ocupados já que a quantidade de processos judiciais é bem alta; 2) o sistema trará economia para a empresa de milhares de reais, hoje gastos com impressão. Você percebe que a agenda lotada dos advogados do escritório pode se mostrar um desafio para uma comunicação mais efetiva de levantamento do problema e também do processo de negócio. Para a sua sorte, o principal advogado do escritório que iniciou o contato com você está bastante engajado no projeto e se mostra disposto a participar de quantas interações com a equipe de desenvolvimento forem necessárias para a captura das necessidades da empresa quanto ao software. Ele deseja também que sejam entregues versões intermediárias do software final contendo funcionalidades prioritárias e estratégicas para o negócio; uma vez que ele não tem certeza de todas as funcionalidades que serão necessárias para compor o software no inícío do projeto, ele quer garantir que as mais importantes sejam implementadas primeiro. Do seu lado, você tem uma equipe reduzida de analistas, desenvolvedores e testadores, porém bem coesa e comunicativa, com a ressalva de nunca terem trabalhado com a construção de nenhum sistema para a área jurídica. Considerando o cenário acima, identifique que modelo de processo de desenvolvimento de software você escolheria para apoiar o desenvolvimento do software solicitado. Justifique sua escolha associando as características do cenário acima com as do modelo selecionado. Resposta correta: Diante dos fatos expostos, podemos concluir: - Destaca-se que a empresa possui uma grande condição financeira, assim como, a indisponibilidade de alguns de seus colaboradores, excluindo-se o advogado principal. - Logo, o modelo escolhido deveria ser o de Entrega Evolutiva, considerando a eficiência na mão de obra do software. Especialmente, em relação à análise e ao desenho arquitetônico, resultando no melhor desempenho das outras etapas. - Portanto, as vantagens expostas e o modelo mais adequado, temos a permissão de que o projeto pode ser apresentado ao cliente antes mesmo da sua conclusão, como também a possibilidade de uma melhor comunicação entre os desenvolvedores e os usuários do software. - Nesta vertente, podemos ressaltar o modelo de processo de desenvolvimento de software, como a solicitação do cliente é receber versões intermediárias do produto final, conforme estudamos a *melhor opção, seria o modelo espiral, O ciclo de vida espiral tem como característica básica, o formato de divisões de um determinado sistema em módulos funcionais. - Dessa forma, o cliente tem a possibilidade de utilizar os módulos (partes) já liberados e, com isso, a fábrica de software tem maior facilidade de fidelização do cliente, que é exatamente o que o nosso cliente deseja, e na maioria dos casos, quase todos clientes desejam. Abaixo está a figura onde podemos ver o modelo espiral e sua dinâmica de iteração: A) Planejamento (estimativa de risco); B) Modelagem (análise de projeto); C)Construção; D)Implantação (entrega - feedback); E) Comunicação - Sendo assim, para melhor esclarecimento, o motivo de escolha do modelo espiral é dividido em 5(cinco) fases: * Comunicação - primeiro contato com o cliente e entendimento das necessidades, nesse primeiro contato tivemos a oportunidade de conhecer o advogado mais engajado, onde ele nos informou suas necessidades, que sejam entregues versões intermediárias do software final contendo funcionalidades prioritárias e estratégicas para o negócio; uma vez que ele não tem certeza de todas as funcionalidades que serão necessárias para compor o software no início do projeto, ele quer garantir que as mais importantes sejam implementadas primeiro, também debatemos sobre as atividades que eles desejam sobre a elaboração de documentos que devem ser protocolizados em diferentes tribunais de justiça de esfera estadual e federal, o acompanhamento de movimentações processuais de processos judiciais sob os cuidados dos advogados do escritório, e o gerenciamento de prazos jurídicos para manifestação em processos judiciais acompanhados pelo escritório. * Planejamento - abstração das necessidades, momento de aplicação do brainstorming e ativação de uma nova unidade de gerenciamento ou módulo Nesse momento, vamos estimar o cronograma, já que Do meu lado, tenho uma equipe reduzida de analistas, desenvolvedores e testadores, porém bem coesa e comunicativa, mesmo que nunca trabalharam com a construção de nenhum sistema para a área jurídica, utilizando o framework adequado, conseguimos fazer também uma análise de risco que podemos entender como um “grande problema” é dividido em partes menores, tornando o gerenciamento mais eficaz. * Modelagem - consolidação e especificação dos requisitos;Com a consolidação do projeto, podemos analisar o projeto usando o olhar analítico, fazendo uma junção do que podemos notar ao que o sistema trará economia para a empresa de milhares de reais, hoje gastos com impressão e as principais funções que o escritório deseja por hora, assim planejamos e consolidamos os requisitos, de forma que saberemos o que entrará para essa entrega. * Construção - construção das telas, codificação e testes, e Nesse momento trataremos toda a parte da construção da tela, o famoso front end, a tela em que o cliente irá interagir, e claro o back end, toda a estrutura que trabalhará por trás dessa interação tela/cliente, e por último e muito importante os testes de funcionalidades que dirão se o que foi implementado condiz com a solicitação/planejamento; * Implantação - transição dos artefatos funcionais do servidor de homologação para o de produção. Aqui faremos a homologação do produto (geralmente versionado), recebendo assim o feedback do cliente sobre o que foi solicitado/planejado/implantado. Finalizando assim a primeira entrega, o produto inicial/parcial em funcionamento, o cliente tem a possibilidade de utilizar os módulos (partes) já liberados e, com isso, temos uma maior facilidade de fidelização do cliente. Outro ponto interessante é que este modelo possui a possibilidade de abstrações de novos requisitos, tanto para o analista quanto para o cliente, permitindo que o cliente passe uma informação mais refinada para os próximos módulos. - O modelo escolhido seria a Entrega Evolutiva, pela eficiência na mão de obra do software, e com a atenção do principal advogado teremos mais chances de sucesso na análise e no desenho arquitônico como consequência o melhor desempenho das demais etapas a seguir, sendopossível fazer fazer ou refazer de acordo com as exigências do cliente.