Engenharia de Software: conceitos e qualidade

Computação8,93 KB

O que é interface?

Interface é uma superfície entre duas faces. Uma interface pode (e quase sempre é) um mecanismo de mão dupla (canal de comunicação aberto nos dois sentidos). Uma boa interface torna a intenção do usuário com o sistema mais fácil de aprender e usar.

Confiabilidade

Preservação do desempenho e da confiabilidade do software.

  • Maturidade — frequência de falhas.
  • Tolerância a falhas — em caso de falha, o desempenho deve ser mantido.
  • Recuperabilidade — restabelecimento e restauração após uma falha.

Usabilidade

Facilidade para a utilização do sistema.

  • Inteligibilidade — entendimento dos conceitos utilizados.
  • Apreensibilidade — facilidade para o aprendizado.
  • Operacionalidade — facilidade para realizar as operações no software.

Eficiência

Desempenho do produto em relação a tempo e recursos.

  • Comportamento em relação ao tempo.
  • Comportamento em relação a recursos.

Manutenibilidade

Correções, atualizações e alterações no software.

  • Analisabilidade — facilidade para identificar falhas.
  • Modificabilidade — facilidade para remoção de defeitos.
  • Estabilidade — ausência de riscos de falhas.
  • Testabilidade — permite testes com facilidade.

Portabilidade

Utilização em outras plataformas.

  • Adaptabilidade — capacidade de se adaptar a diversos ambientes.
  • Capacidade para ser instalado — facilidade para instalação.
  • Conformidade — estar em acordo com padrões ou convenções de portabilidade.
  • Capacidade para substituir — substituir outro software.

Conceitos básicos: sistema de software

Segundo Bruno Maffeo (1992), um sistema é um conjunto identificável e coerente de elementos que interagem coesivamente, onde cada elemento pode ser um sistema. Quando se trata de sistemas de software, busca-se identificar componentes do sistema que interagem entre si para atender necessidades específicas do ambiente no qual estão inseridos. A escolha de uma fronteira conceitual adequada é um passo decisivo para o êxito do processo de concepção do sistema.

Processo de desenvolvimento de software

O processo de desenvolvimento de software envolve o conjunto de atividades e resultados associados a essas atividades, com o objetivo de construir o produto de software. Existem três atividades fundamentais, comuns a todos os processos de construção de software: desenvolvimento, validação e manutenção.

Os princípios da Engenharia de Software

Processos / Metodologias — orientam como construir software. Incluem a análise de requisitos dos usuários, projeto de estrutura de dados, arquitetura de programas, codificação, teste e manutenção de sistemas. Este conjunto de passos ou atividades também é denominado metodologia de desenvolvimento/manutenção de software.

Métodos / Técnicas

Definem a sequência, a simbologia e os padrões que devem ser aplicados no desenvolvimento/manutenção de software.

Ferramentas

Permitem a automatização das atividades e a construção dos artefatos através de ferramentas do tipo CASE (Computer Aided Software Engineering).

Gerência de projetos

Inclui o planejamento de projetos, controle dos projetos, alocação de recursos, métricas de estimativas e a garantia da qualidade dos produtos confeccionados.

Prototipagem

A prototipagem é um processo que permite ao desenvolvedor criar um modelo do software antes que ele seja construído. Processo largamente utilizado nas outras engenharias. Após o levantamento e definição dos objetivos gerais para o sistema, é desenvolvido um projeto rápido que focaliza os aspectos do software que serão visíveis aos usuários (interface homem × máquina).

Após a construção do protótipo, ele será avaliado e usado pelos usuários para refinar os requisitos para o desenvolvimento do software real. Durante a prototipação ocorre um processo de iteração até que o protótipo seja refinado e satisfaça aos usuários e traga ao desenvolvedor um maior conhecimento do que deve ser feito. Um protótipo serve como um mecanismo para identificar requisitos de software. O protótipo pode servir como o primeiro sistema para o usuário e base de conhecimento para o desenvolvimento do sistema final.

Embora possam ocorrer problemas, o protótipo é um paradigma efetivo da engenharia de software. A chave está na definição precisa das regras do jogo com os usuários. Um protótipo nem sempre pode ser considerado como o sistema final, já que considerações de segurança e performance nem sempre são observadas no modelo.

O modelo espiral

O modelo espiral foi desenvolvido para abranger as melhores características dos dois primeiros paradigmas, o ciclo clássico (ou cascade) e a prototipagem, adicionando um novo elemento chamado análise de risco. O modelo apresenta quatro grandes atividades:

  • Planejamento — determinação dos objetivos, alternativas e requisitos.
  • Análise de risco — análise das alternativas e identificação e resolução dos riscos.
  • Engenharia — desenvolvimento do próximo nível do produto.
  • Avaliação do cliente — aceite dos resultados da engenharia.

Engenharia de Software (Sommerville)

É uma disciplina da engenharia que se ocupa de todos os aspectos da produção do software, desde a especificação até a manutenção desse sistema. Disciplina: os engenheiros fazem os produtos funcionarem. Procuram soluções para os problemas, de acordo com as restrições organizacionais e financeiras. Aspectos da produção: além dos aspectos técnicos de desenvolvimento, engloba o gerenciamento de projetos, métodos e ferramentas de apoio.

Aplicações de software

  • Software de sistemas: coleção de programas escritos para servir outros programas (compiladores, editores etc.).
  • Software de tempo real: monitora, analisa e controla eventos do mundo real.
  • Software comercial: processamento de informação comercial, no âmbito operacional e informacional.
  • Software científico e de engenharia: algoritmos que processam números (astronomia, manufatura automatizada).
  • Software embutido: reside em memórias ROM para leitura; realiza funções limitadas e particulares.
  • Software para computadores pessoais: processadores de texto, planilhas etc.
  • Software para web: páginas web recuperadas por um browser.
  • Software para inteligência artificial: sistemas especialistas ou sistemas baseados em conhecimento.

Visão genérica da Engenharia de Software

  • Fase de definição: concentra-se no quê — identificar que informação deve ser processada, desempenho, restrições etc.
  • Fase de desenvolvimento: focaliza o como — definir a estrutura dos dados, os processos a ser implementados, plano de testes etc.
  • Fase de manutenção: modificações associadas com correção, adaptação, aperfeiçoamento e prevenção.

Software (Pressman)

  • Instruções (programas de computador): quando executadas, fornecem a função e o desempenho desejado.
  • Estruturas de dados: permitem aos programas manipular adequadamente a informação.
  • Documentos: descrevem a operação e o uso dos programas.

Além do programa de computador, o software engloba toda documentação associada e os dados necessários para fazer com que esses programas operem corretamente. É composto de programas, dados e documentos.

A ES pode ser representada em camadas

Mostrando a integração entre processos, métodos e ferramentas para o desenvolvimento de software de computador: ferramentas / métodos / processos / foco na qualidade.

Processos de software

Conjunto de atividades e resultados associados que geram ou mantêm um produto de software.

Especificação

Definição das funcionalidades e restrições.

Desenvolvimento

Deve ser produzido de acordo com as especificações.

Validação

Garantir que é o que o cliente deseja.

Evolução

Atender as necessidades mutáveis do cliente.

Os prazos e resultados variam de acordo com o tipo do produto e da aplicação.

Baixar

PDF Word HTML