Engenharia de Software: Guia Completo

Classificado em Computação

Escrito em em português com um tamanho de 61,79 KB

O que é Engenharia de Software?

É a área da engenharia que se preocupa com todos os aspectos envolvidos na produção de software.

O que é software?

São programas de computador e toda a documentação associada, como requisitos, modelos de design e manuais do usuário.

Quais os tipos de produtos de software?

Existem dois tipos principais:

  • Genéricos / COTS (Commercial Off-The-Shelf): Também conhecidos como software de prateleira, são desenvolvidos para um grande número de clientes, visando um mercado amplo.
  • Sob-encomenda / Personalizado: Desenvolvidos para um único cliente, de acordo com suas necessidades específicas.

O que é um processo de software?

É um conjunto de atividades cujo objetivo é o desenvolvimento ou a evolução de um software.

Quais as atividades genéricas de um processo de software?

  • Especificação: Define o que o software deve fazer e suas restrições de desenvolvimento.
  • Desenvolvimento: Envolve a produção do sistema de software.
  • Validação: Verifica se o software atende às expectativas do cliente.
  • Evolução: Modifica o software em resposta às mudanças nas demandas e necessidades.

Qual o custo da engenharia de software?

Aproximadamente 60% dos custos são destinados ao desenvolvimento e 40% aos testes. Em sistemas customizados, os custos de evolução costumam exceder os de desenvolvimento.

O que é a ferramenta CASE (Computer-Aided Software Engineering)?

É um software que fornece suporte automatizado às atividades do processo de software. Subdivide-se em:

  • Upper-CASE: Suporta as atividades iniciais do processo, como análise de requisitos e projeto.
  • Lower-CASE: Suporta as atividades finais, como programação, depuração e teste.

Quais são os atributos de um bom software?

  • Manutenibilidade: Deve ser possível evoluir o software para atender às novas necessidades.
  • Confiabilidade: O software deve ser confiável e seguro.
  • Eficiência: O software não deve desperdiçar recursos do sistema.
  • Usabilidade: O software deve ser utilizável, sem esforço excessivo, pelos usuários a que se destina.

Quais são os principais desafios da Engenharia de Software?

  • Sistemas Legados: Manter e atualizar sistemas antigos, porém valiosos para o negócio.
  • Diversidade: Desenvolver software para uma ampla gama de plataformas e ambientes.
  • Entrega Acelerada: Reduzir o tempo de entrega do software sem comprometer a qualidade.

Quais as responsabilidades de um profissional de Engenharia de Software?

  • Confidencialidade: Respeitar a confidencialidade de informações.
  • Competência: Não deturpar o próprio nível de competência.
  • Direitos de Propriedade Intelectual: Respeitar os direitos autorais e de propriedade intelectual.
  • Uso Indevido do Computador: Não utilizar habilidades técnicas para uso indevido de computadores de terceiros.

Um sistema é composto por?

Hardware, software e pessoas.

Quais os tipos de propriedades emergentes?

  • Funcional: Ocorrem quando todas as partes de um sistema trabalham juntas para atingir um objetivo.
  • Não Funcional: Relacionam-se ao comportamento do sistema em seu ambiente operacional, como confiabilidade, desempenho, segurança e usabilidade.

Dê exemplos de propriedades emergentes:

  • Peso total
  • Confiabilidade
  • Usabilidade

Como saber se um sistema é confiável?

Um sistema é considerado confiável quando apresenta poucos erros.

Quais os tipos de confiabilidade?

  • Hardware: Probabilidade de um componente falhar e tempo necessário para repará-lo.
  • Software: Probabilidade de um componente de software produzir uma saída incorreta.
  • Operador/Usuário: Probabilidade de um operador cometer um erro.

O ambiente afeta a funcionalidade de um sistema e por quê?

Sim. Por exemplo, a falta de energia elétrica impede o funcionamento do sistema.

Defina os processos da Engenharia de Software (ES):

3tcI+73OdO97rbve1RODubN8b3jPn9YtcMAgA7

  • Definição de requisitos: Definição dos requisitos funcionais abstratos, propriedades do sistema e características indesejáveis.
  • Projeto de sistema: Agrupamento de requisitos, identificação de subsistemas, especificação de funcionalidades e definição de interfaces.
  • Desenvolvimento de subsistemas: Projetos de hardware, software e comunicação são realizados em paralelo.
  • Integração de Sistemas: União de todos os componentes (hardware, software e pessoas).
  • Instalação de Sistema: Implementação do sistema no ambiente do cliente, podendo haver problemas físicos e resistência humana.
  • Evolução de Sistema: Adaptação do sistema às mudanças de requisitos.
  • Desativação de Sistema: Retirada do sistema de serviço após o término de sua vida útil.

Quando devemos adquirir sistemas ou desenvolvê-los?

Depende da necessidade do cliente. Se já existir um sistema no mercado que atenda às suas necessidades, a aquisição é recomendada. Caso contrário, o desenvolvimento de um sistema personalizado é necessário.

Qual a diferença entre contrato e subcontrato?

O contrato é firmado entre o cliente e a empresa desenvolvedora do sistema. O subcontrato é um acordo entre a empresa contratada e outra(s) empresa(s) para a realização de parte do trabalho.

Quais os modelos de processos genéricos de software?

  • Cascata: As fases são executadas de forma sequencial, só se pode passar para a próxima fase se a anterior estiver concluída e sem erros.
  • Evolucionário: Desenvolvimento e especificação ocorrem simultaneamente, sem uma sequência rígida.
  • Formal: Desenvolvimento baseado em métodos matemáticos para garantir a correção do software.
  • Orientado a Reuso: Construção do sistema a partir de componentes pré-existentes.

Qual a vantagem/desvantagem do modelo em cascata?

  • Vantagem: Fases bem definidas, facilitando o gerenciamento e a documentação.
  • Desvantagem: Dificuldade em acomodar mudanças de requisitos após o início do projeto.

Qual a vantagem/desvantagem do modelo evolucionário?

  • Vantagem: Flexibilidade para mudanças, desenvolvimento e entrega rápidos, e menor necessidade de requisitos detalhados inicialmente.
  • Desvantagem: Processo menos visível e software potencialmente mal estruturado.

Qual a vantagem/desvantagem do modelo orientado a reuso?

  • Vantagem: Redução de custos, tempo de desenvolvimento e riscos, devido ao reuso de componentes.
  • Desvantagem: Possível perda de controle sobre a evolução do sistema e o sistema pode não atender completamente às necessidades do cliente.

O que é Interação?

É a evolução dos requisitos durante o processo de desenvolvimento, envolvendo a repetição de uma ou mais atividades.

O que é um desenvolvimento incremental? Quais as vantagens e desvantagens?

O sistema é dividido em subsistemas por funcionalidades, que são desenvolvidos e entregues incrementalmente.

  • Vantagem: Os incrementos iniciais servem como protótipos, o cliente recebe entregas parciais, menor risco de fracasso do projeto e melhor compreensão dos requisitos ao longo do tempo.
  • Desvantagem: Dificuldade em mapear os requisitos no início do projeto e os requisitos não são definidos em detalhes inicialmente.

O que é um desenvolvimento espiral? Quais as vantagens e desvantagens?

O processo é representado por uma espiral, onde cada volta representa uma fase do processo, com ênfase na análise de riscos.

  • Vantagem: Maior qualidade devido ao planejamento e análise de riscos em cada fase, e maior viabilidade na gerência.
  • Desvantagem: Gerenciamento de processos mais complexo e necessidade de maior experiência da equipe de desenvolvimento.

Quais os requisitos da especificação de software?

  • Estudo de viabilidade;
  • Elucidação e análise de requisitos;
  • Especificação de requisitos;
  • Validação de requisitos.

Modelos de desenvolvimento:

QGq0QEwQAOw==

79NxfOHh+uH9Od3w9uUyVewbANVB6+4j0d4laV4m

Lr38Tdd7jgjS4dt3HgFXYXvf8VGBvVq+DYhheu3x

kxfevD4+qSvWp1ua7qqngKK9m9HaAoB+enzEJgVt

9k=

Entradas relacionadas: