Buscar

EXERCÍCIOS Engenharia de Software Introdução Resolvido

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

Exercícios de fixação extraídos do livro Sommerville, Ian. Engenharia de Software. 9ª ed. Recomenda‐se a leitura antecipada dos capítulos indicados.
Capítulo 1 – Introdução à Engenharia de Software - Resolvido
2 - Qual a diferença mais importante entre o desenvolvimento de um produto genérico de software e o desenvolvimento de software sob demanda? O que isso pode significar na prática para usuários de produtos de software genérico?
A diferença essencial é que, no desenvolvimento genérico de produtos de software, a especificação é propriedade do desenvolvedor do produto. Para o desenvolvimento de produtos personalizados, a especificação é de propriedade e controlada pelo cliente. As implicações disso são significativas - o desenvolvedor pode rapidamente decidir mudar a especificação em resposta a algumas mudanças externas (por exemplo, um produto concorrente), mas, quando o cliente possui a especificação, as mudanças devem ser negociadas entre o cliente e o desenvolvedor e podem tem implicações contratuais. Para os usuários de produtos genéricos, isso significa que eles não têm controle sobre a especificação do software, portanto, não podem controlar a evolução do produto. O desenvolvedor pode decidir incluir / excluir recursos e alterar a interface do usuário. Isso pode ter implicações para os processos de negócios do usuário e adicionar custos adicionais de treinamento quando novas versões do sistema estiverem instaladas. Também pode limitar a flexibilidade do cliente para mudar seus próprios processos de negócios.
3 - Quais são os quatro atributos importantes que todo software profissional deve possuir? Sugira outros quatro atributos que, às vezes, podem ser significantes.
Quatro atributos importantes são a capacidade de manutenção, confiabilidade, desempenho e usabilidade. Outros atributos que podem ser significativos podem ser reutilizáveis (pode ser reutilizado em outras aplicações), distribuibilidade (pode ser distribuído por uma rede de processadores), portabilidade (pode operar em várias plataformas, por exemplo, laptop e plataformas móveis) e interoperabilidade (pode funcionar com uma grande variedade de outros sistemas de software).
Decomposições dos quatro atributos chave, e. A confiabilidade se decompõe à segurança, proteção, disponibilidade, etc. também é uma resposta válida para esta questão.
4 - Além dos desafios de heterogeneidade, mudanças sociais e corporativas, confiança e proteção, identifique outros problemas e desafios que a engenharia de software provavelmente enfrentará no século XXI (Dica: pense no meio ambiente).
Problemas e desafios para engenharia de software.
Existem muitos possíveis desafios que podem ser identificados. Esses incluem:
1. Sistemas de desenvolvimento que são eficientes em termos energéticos. Isso os torna mais utilizáveis em dispositivos móveis de baixa potência e ajuda a reduzir a pegada de carbono global do equipamento de TI.
2. Desenvolver técnicas de validação para sistemas de simulação (o que será essencial para prever a extensão e planejamento para mudanças climáticas).
3.Desenvolvendo sistemas para uso multicultural.
4. Sistemas de desenvolvimento que podem ser adaptados rapidamente às novas necessidades do negócio.
5. Sistemas de design para desenvolvimento terceirizado.
6. Sistemas de desenvolvimento resistentes ao ataque.
7. Desenvolvimento de sistemas que podem ser adaptados e configurados pelos usuários finais.
8. Encontrar formas de testar, validar e manter sistemas desenvolvidos pelo usuário final.
5 - Baseado em seu conhecimento de alguns tipos de aplicações discutidos na Seção 1.1.2, explique, com exemplos, por que tipos de aplicações diferentes requerem técnicas especializadas de engenharia de software para apoiar seu projeto e desenvolvimento.
Diferentes tipos de aplicativos exigem o uso de diferentes técnicas de desenvolvimento por vários motivos: 
1.Custos e frequência de mudança. Alguns sistemas (como sistemas embutidos em dispositivos de consumo) são extremamente caros de mudar; outros, devem mudar frequentemente em resposta a requisitos em mudança (por exemplo, sistemas de negócios). Os sistemas que são muito caros de mudar precisam de extensas análises avançadas para garantir que os requisitos sejam consistentes e extensos para garantir que o sistema atenda às suas especificações. Isso não é econômico para sistemas que mudam muito rapidamente.
2. Os requisitos mais "não funcionais". Diferentes sistemas têm prioridades diferentes para requisitos não funcionais. Por exemplo, um tempo real o sistema de controle em uma aeronave tem segurança como principal prioridade; Um jogo interativo tem capacidade de resposta e usabilidade como prioridade. As técnicas utilizadas para alcançar a segurança não são necessárias para jogos interativos; O extenso UI design necessário para jogos não é necessário sistemas de controle críticos de insatisfação.
3. A vida útil do software e o cronograma de entrega. Alguns sistemas de software têm um tempo de vida relativamente curto (muitos sistemas baseados na web), outros têm uma vida de dezenas de anos (grandes sistemas de comando e controle). Alguns sistemas devem ser entregues rapidamente se forem úteis. As técnicas utilizadas para desenvolver sistemas de entrega rápidos de curta duração (por exemplo, uso de linguagens de script, prototipagem, etc.) são inadequadas para sistemas de longa duração que requerem técnicas que permitam suporte a longo prazo, como modelagem de design.
8 - Discuta se os engenheiros profissionais devem ser certificados da mesma forma que médicos e advogados.
Estes são possíveis pontos de discussão - qualquer discussão sobre isso tenderá a ser ampla e tocar em outras questões, como a natureza do profissionalismo, etc.
Vantagens da certificação:
• A certificação é um sinal para os empregadores de algum nível mínimo de competência. 
• A certificação melhora a imagem pública da profissão. 
• A certificação geralmente significa estabelecer e verificar padrões educacionais e, portanto, é um mecanismo para garantir a qualidade do curso. 
• A certificação implica responsabilidade em caso de disputa. É provável que o organismo de certificação seja aceito a nível nacional e internacional como "falando para a profissão". 
• A certificação pode aumentar o status de engenheiros de software e atrair pessoas particularmente capazes para a profissão. 
Desvantagens da certificação:
• A certificação tende a conduzir ao protecionismo, onde os membros certificados não procuram proteger os outros das críticas. 
• A certificação não garante competência apenas que um padrão mínimo foi alcançado no momento da certificação. 
• A certificação é dispendiosa e aumentará os custos para indivíduos e organizações. 
• A certificação tende a esconder a mudança. Este é um problema particular em uma área onde a evolução tecnológica é muito rápida.

Outros materiais