Nome: Gustavo de Oliveira Sato Curso: ADS – noturnoS
2.1 Justificando sua resposta com base no tipo de sistema a ser
desenvolvido, sugira o modelo genérico de processo de software mais adequado para ser usado como base para a gerência do desenvolvimento dos sistemas a seguir: 1. Um sistema para controlar o antibloqueio de frenagem de um carro. R: O modelo mais adequado seria o modelo em cascata. Esse modelo é adequado para sistemas com requisitos bem definidos e estáveis e com muita previsibilidade.
2. Um sistema de realidade virtual para dar apoio à manutenção de software.
R: O modelo mais adequado seria o modelo de prototipação. Esse modelo é adequado para sistemas em que os requisitos não são totalmente compreendidos ou mudam frequentemente e para o desenvolvimento de sistemas de software que envolvem muita interação com o usuário e requisitos dinâmicos.
3. Um sistema de contabilidade para uma universidade, que substitua um
sistema já existente. R: O modelo mais adequado seria o modelo de evolução incremental. Esse modelo é adequado para sistemas que precisam ser desenvolvidos rapidamente e que podem ser aprimorados com o tempo.
4. Um sistema interativo de planejamento de viagens que ajude os usuários a
planejar viagens com menor impacto ambiental. R: O modelo mais adequado seria o modelo de desenvolvimento ágil. Esse modelo é adequado para sistemas que precisam ser desenvolvidos rapidamente e que podem mudar com frequência.
2.2 Explique por que o desenvolvimento incremental é o método mais
eficaz para o desenvolvimento de sistemas de software de negócios. Por que esse modelo é menos adequado para a engenharia de sistemas de tempo real? R: O modelo de desenvolvimento incremental é um método eficaz para o desenvolvimento de sistemas de software de negócios porque permite que os requisitos do sistema evoluam ao longo do tempo e permite que o sistema seja entregue em partes funcionais, permitindo que os usuários vejam resultados tangíveis e deem feedback à equipe de desenvolvimento. Isso ajuda a garantir que o sistema atenda às necessidades do usuário final.
Porém, o modelo de desenvolvimento incremental pode ser menos adequado para a
engenharia de sistemas de tempo real. Pois sistemas de tempo real são sistemas que precisam responder a eventos ou estímulos externos em tempo hábil, com pouca ou nenhuma tolerância atrasos ou erros, dessa forma não sendo a melhor abordagem para a engenharia de sistemas de tempo real, pois ele pode aumentar a complexidade do sistema e aumentar o tempo de resposta do sistema a eventos críticos.
2.3 Considere o modelo de processo baseado em reúso da Figura 2.3.
Explique por que, nesse processo, é essencial ter duas atividades distintas de engenharia de requisitos. R: Nesse modelo de processo, é essencial ter duas atividades distintas de engenharia de requisitos, pois a reutilização de componentes de software existentes tem um impacto significativo na definição dos requisitos do sistema. Dessa forma, ter duas atividades distintas de engenharia de requisitos é essencial para garantir que todos os requisitos do sistema sejam identificados e definidos corretamente, tanto para os componentes reutilizados quanto para os requisitos específicos do sistema.
2.4 Sugira por que é importante, no processo de engenharia de requisitos,
fazer uma distinção entre desenvolvimento dos requisitos do usuário e desenvolvimento de requisitos de sistema. 2.5 Descreva as principais atividades do processo de projeto de software e as saídas dessas atividades. Usando um diagrama, mostre as possíveis relações entre as saídas dessas atividades. R: Entre as principais atividade estão:
1. Identificação e análise dos requisitos do sistema: Os requisitos do sistema são
analisados e definidos em detalhes para que possam ser convertidos em um design do sistema. As saídas dessa atividade incluem um conjunto de requisitos do sistema documentados e uma especificação de requisitos. 2. Projeto arquitetural: A arquitetura do sistema é projetada, incluindo a definição dos componentes do sistema, as interfaces entre os componentes e o comportamento do sistema. As saídas dessa atividade incluem um modelo de arquitetura do sistema e um conjunto de especificações de interface. 3. Projeto detalhado: Os componentes individuais do sistema são projetados em detalhes. As saídas dessa atividade incluem um modelo de design detalhado para cada componente e um conjunto de especificações de interface detalhadas. 4. Implementação: O design detalhado é implementado em código. As saídas dessa atividade incluem o código-fonte do sistema e uma documentação técnica detalhada. 5. Teste: O sistema é testado para garantir que atenda aos requisitos especificados e que funcione corretamente. As saídas dessa atividade incluem um conjunto de casos de teste documentados e um relatório de teste. 6. Manutenção: O sistema é mantido e atualizado ao longo do tempo. As saídas incluem documentação de manutenção e um conjunto de atualizações do sistema. 2.6 Explique por que, em sistemas complexos, as mudanças são inevitáveis. Exemplifique as atividades de processo de software que ajudam a prever as mudanças e fazer com que o software seja desenvolvido mais tolerante a mudanças (desconsidere prototipação e entrega incremental). R: Porque esses sistemas são geralmente desenvolvidos para resolver problemas complexos e dinâmicos, que podem mudar com o tempo. Além disso, os sistemas são desenvolvidos em um ambiente em constante evolução, em que as necessidades e expectativas dos usuários, estão em constante mudança.
2.7 Explique por que os sistemas desenvolvidos como protótipos
normalmente não devem ser usados como sistemas de produção. R: Pois eles são projetados para serem soluções temporárias e incompletas. Os protótipos são criados para explorar conceitos, testar funcionalidades e receber feedback dos usuários, e não são desenvolvidos com a mesma qualidade, rigor e robustez que os sistemas de produção.
2.8 Explique por que o modelo em espiral de Boehm é um modelo
adaptável, que apoia tanto as atividades de prevenção de mudanças quanto as de tolerância a mudanças. Na prática, esse modelo não tem sido amplamente usado. Sugira as possíveis razões para isso.
2.9 Quais são as vantagens de proporcionar visões estáticas e dinâmicas
do processo de software, assim como no Rational Unified Process? R: As visões estáticas e dinâmicas do processo de software fornecem uma compreensão clara do processo, facilitam a comunicação, oferecem flexibilidade e permitem a melhoria contínua do processo. Isso ajuda a garantir o sucesso do projeto e a qualidade do produto final.
2.10 Historicamente, a introdução de tecnologia provocou mudanças
profundas no mercado de trabalho e, pelo menos temporariamente, deixou muitas pessoas desempregadas. Discuta se a introdução da automação extensiva em processos pode vir a ter as mesmas consequências para os engenheiros de software. Se sua resposta for não, justifique. Se você acha que sim, que vai reduzir as oportunidades de emprego, é ética a resistência passiva ou ativa, pelos engenheiros afetados, à introdução dessa tecnologia?