Respostas Capitulo 03 - Engenharia de Software Sommerville
Por: Regis Lima • 2/10/2019 • Trabalho acadêmico • 1.135 Palavras (5 Páginas) • 7.275 Visualizações
RESPOSTAS: CAPÍTULO 02
SOMMERVILLE - ENGENHARIA DE SOFTWARE
3.1. Explique por que, para empresas, a entrega rápida e implantação de novos sistemas frequentemente é mais importante do que a funcionalidade detalhada desses sistemas:
Entregas rápidas tem foco no negócio e não no processo. As empresas tem que responder rapidamente as mudanças constantes de um mundo globalizado, assim, novos softwares devem ser desenvolvidos rapidamente para agregar valor ao negócio. Funcionalidade detalhadas demais atrasam o projeto e pode vir, quando o software for entregue, já está desatualizado forçando retrabalho.
3.2 Explique como os princípios básicos dos métodos ágeis levam ao desenvolvimento e implantação de software acelerados.
O software não é desenvolvido como uma única unidade, mas como uma série de incrementos. Processos, projeto e implementação são intercalados. A cada incremento os usuários finais avaliam cada versão e propõe novas funcionalidades, gerando um feedback rápido sobre a evolução dos requisitos. Assim a documentação é minimizada, focando mais na interação informal.
3.3 Quando você não recomendaria o uso de um método ágil para o desenvolvimento de um sistema de software.
Primeiro, para projetos grandes, onde diversas equipes estão dispersas geograficamente. Segundo, para projetos que necessitam de um grau de segurança elevado.
3.4 Extreme Programming expressa os requisitos dos usuários como histórias, com cada história escrita em um cartão. Discuta as vantagens e desvantagens dessa abordagem para a descrição de requisitos.
Como vantagem, cada história pode ser dividia em tarefas, sendo que cada tarefa tem um esforço estimado de desenvolvimento. O cliente então seleciona as histórias mais urgentes para serem implementadas, assim uma funcionalidade útil estará pronta no próximo release do sistema. Como desvantagem, a maior parte do tempo é dedicada a implementação de uma nova funcionalidade ou história, isso significa que a refatoração será postergada ou uma nova característica exige modificações profundas no sistema.
3.5 Explique por que o desenvolvimento test-first ajuda o programador a desenvolver um melhor entendimento dos requisitos do sistema. Quais são as potenciais dificuldades com o desenvolvimento test-first?
Nessa abordagem, os implementadores das tarefas precisam entender as especificações completamente antes de escrever os testes para o sistema. A grande desvantagem é contar sempre com o apoio do cliente no desenvolvimento de testes.
3.6 Sugira 4 razões pelas quais a taxa de produtividade de programadores que trabalham em pares pode ser mais que a metade da taxa de produtividade de dois programadores que trabalham individualmente.
Primeiro: Pares discutem o software antes do desenvolvimento gerando menos retrabalho.
Segundo: A inspeção informal reduz o tempo gasto consertando defeitos descobertos durante o processo de teste.
Terceiro: Compartilhamento de conhecimento, reduzindo os riscos quando um membro deixa a equipe.
Quarto: Toda a equipe é responsável pelo código. Existe uma rotatividade de pares em que todos participam e resolvem os problemas.
3.7 Compare e contraste a abordagem Scrum para o gerenciamento de projetos com abordagens convencionais dirigida a planos, como discutido no capitulo 23. As comparações devem ser baseadas na eficácia de cada abordagem para o planejamento da alocação das pessoas nos projetos, estimativa de custos de projetos, manutenção da coesão da equipe e gerenciamento de mudanças no quadro da equipe do projeto.
Sem resposta.
3.8 Você é um gerente de software em uma empresa que desenvolve softwares críticos de controle para aeronaves. Você é responsável pelo desenvolvimento de um sistema de apoio ao projeto de software que dá suporte para tradução de requisitos de software em uma especificação formal de software (discutido no capítulo 13). Comente sobre as vantagens e desvantagens das estratégias de desenvolvimento a seguir:
a) Coletar dos engenheiros de software e stakeholders externos (como autoridade regulatória de certificação) os requisitos para um sistema desse tipo e desenvolver o sistema usando uma abordagem dirigida a planos.
Softwares críticos necessitam ter uma especificação detalhada antes da implementação. Essa documentação vai servir para aprovação por um regulador externo e de entrada para as fases do desenvolvimento. Como desvantagem tem o alto custo do projeto e documentação pesada.
b) Desenvolver um protótipo usando uma linguagem de script, como Ruby ou Python, avaliar esse protótipo com engenheiros de software e outros stakeholders e, em seguida, revisar os requisitos do sistema. Desenvolver novamente o sistema final, usando java.
...