1
Fundamentos de Engenharia de Software
Willamys Araújo
2
Processo de Software
• “É um diálogo no qual o conhecimento, que deve se transformar em software, é reunido e incorporado ao software.”
3
Processo de Software
• Processo fornece interação– Usuários e projetistas– Usuários e ferramentas– Projetistas e ferramentas
4
Processo de Software
• É um arcabouço para as tarefas que são necessárias para construir softwares de alta qualidade.
5
Processo de Software - Introdução• Através de uma visão geral um processo de software pode ser considerado
assim:
Uma Visão Genérica: 3 Fases Definição - “o que”
– Engenharia do Sistema– Planejamento do Projeto– Análise de Requisitos
Desenvolvimento - “como”– Projeto– Geração do Código– Teste
Manutenção
Atividades Guarda-Chuva
• Controle e Rastreamento do Projeto• Revisões Técnicas Formais• Garantia de Qualidade• Gerenciamento de Configuração• Produção e Preparação de Documentos• Gerenciamento de Reusabilidade• Medição• Gerenciamento de Risco
6
Processo é sinônimo de Engenharia de software?
7
Processo
Abordagem que é adotada quandoo software é elaborado.
Engenharia de Software
Inclui tbm tecnologias (métodos técnicos e
ferramentas automatizadas)
Quando se elabora um sistema é precisoSeguir uma série de passos previsíveis
Um roteiro– roteiro é chamado de processo de software.
Processo x Engenharia
8
Engenharia de Software
• É o estabelecimento e utilização de saudáveis princípios de engenharia a fim de obter economicamente software que seja confiável e rode eficientemente em máquinas reais.
9
O que falta a esta definição?– Aspectos técnicos de qualidade de software? – Satisfação do usuário? – Cumprimento do cronograma? – Importância de medidas, métricas e indicadores? – Importância de um processo maduro para desenvolvimento? – Como aplicar os saudáveis princípios de engenharia? – Como construir software confiável e econômico? – O que é rodar eficientemente em máquinas reais?
10
Engenharia de Software
• A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção de software; isto é, a aplicação da engenharia ao software. (IEEE - The Institute of Electrical and Electronics
Engineers )
11
Engenharia Software
Tecnologia em Camadas
Processo
Métodos
Qualidade
12
Engenharia de Software
• Métodos e Técnicas: como fazer. Estabelece o contexto no qual os métodos são aplicados, os produtos de trabalho (modelos, documentos, dados) são produzidos, os marcos são estabelecidos, a qualidade garantida.
• Metodologias: como aplicar– Análise de requisitos,– Modelagem de projetos,– Construção, teste e manutenção de programas.
13
Engenharia de Software
• Ferramentas: Automatizam os métodos, dão apoio à utilização dos mesmos.– CASE => (Computer-Aided Software Engineering):
Ferramentas integradas para desenvolver software.
14
Engenharia de Software
• É o “solo” e o porque de utilizarmos um processo de software
“Gerenciamento da Qualidade Total e filosofias similares produzem uma mudança cultural
que permite o desenvolvimento crescente de abordagens mais maduras para a Engenharia
de Software”.(Pressman, 2006)
15
Produto e Processo
• Se o processo de desenvolvimento de um produto é ruim, sem dúvida o produto obtido é ruim. No entanto não se deve focar apenas no processo. O produto é também importante.
16
Produto e Processo
• Contexto, utilização e significado do software deve ser analisado tanto do ponto de vista de processo como de produto. – O desenvolvedor de software deve sentir
satisfação tanto na execução do processo de desenvolvimento como no exame produto final obtido.
17
O processo de Software
• Cinco atividades genéricas– Comunicação– Planejamento– modelagem– Construção– Implantação
18
O processo de Software
• Diferentes projetos necessitam de diferentes conjuntos de tarefas. A equipe de software escolhe o conjunto de tarefas com base no problema e características do projeto.
19
Exemplo
• Projeto pequeno e simples.– Lista de envolvidos no projeto– Convide todos os interessados para reunião– Cada um faz lista de características e funções
desejadas– Discuta requisitos e construa lista final– Priorize requisitos– Observe as áreas de incertezas
20
Exemplo
• Projeto e maior e mais complexo– Lista de envolvidos no projeto– Entrevista cada um individualmente para determinar seus desejos e
necessidades gerais– Construa uma lista preliminar de funções e características– Programe uma série de reuniões para levantamento de requisitos– Realize as reuniões– Produza cenários informais de usuário como parte de cada reunião
21
Exemplo
• Projeto e maior e mais complexo– Refine os cenários com base no feedback dos envolvidos– Construa uma lista revisada dos requisitos– Use técnicas de implantação de função de qualidade para priorizar
requisitos– Empacote requisitos de modo que possam ser entregues
incrementalmente– Anote as restrições e limitações que serão colocadas no sistema– Discuta métodos para validação do sistema.
22
CMMI (Capability Maturity Model Integration)
• Modelo desenvolvido pelo SEI (Software Engineering Institute) baseado em um conjunto de capacidades de engenharia de software que devem estar presentes à medida que as empresas alcançam diferentes níveis de capacidade e maturidade de processo.
http://www.sei.cmu.edu/cmmi/general/index.html
23
CMMI
• Apresenta 2 modelos diferentes de processo:– Modelo contínuo– Modelo em estágios
24
Pesquisa Sobre CMMI
• Formar grupos de 5 pessoas;• Pesquisar sobre os dois tipos de CMMI– Em Estágios – Contínuo– Diferenças entre eles.
• Apresentar na Próxima aula(09/06)
25
Processo de Software – Engenharia de Software
• O objetivo desta aula é dar foco no PROCESSO de desenvolvimento de software e aos MODELOS existentes na literatura;
• Processo de software define uma abordagem;
• Modelo é uma descrição simplificada, uma abstração dessa abordagem;
26
Processo de Software – Modelo de Processo de Software
27
Processo de Software – Modelo de Processo de Software
• Um modelo de processo de software deve ser escolhido com base:
– Na natureza do projeto e da aplicação;
– Nos métodos e ferramentas a serem utilizados;
– Nos controles e produtos que precisam ser entregues;
28
Processo de Software – Modelo de Processo de Software
• Alguns modelos de processo:
Modelo Seqüencial Linear Modelo RAD Modelos Evolucionários
Modelo de Prototipação ( Descartáveis )
Incremental ( Exploratório ) Espiral ( Exploratório )
Técnicas de 4a Geração
29
Processo de Software – Modelo Seqüencial Linear
• Também conhecido como ciclo de vida clássico ou Modelo Cascata:
– Modelo mais antigo e mais usado (idealizado por Royce em 1970 );
– Modelado em função do ciclo de engenharia convencional;
– Requer uma abordagem sistemática e seqüencial para o desenvolvimento de um software;
30
Processo de Software – Modelo Seqüencial Linear
• Muitos aplicam esse modelo de forma estritamente linear, sem volta.
Engenharia de Sistemas / Informação
AnáliseAnálise Projeto Projeto Codificação Codificação Testes Testes
31
Processo de Software – Modelo Seqüencial Linear
• Mas o modelo original prevê a volta:
Engenharia de Sistemas
Engenharia de Sistemas
Análise de Requisitos
Análise de Requisitos
Projeto Projeto
Codificação Codificação
Testes Testes
Manutenção Manutenção
32
Processo de Software – Modelo Seqüencial Linear
Engenharia de Sistemas
Análise de Requisitos
Projeto
Codificação
Testes
Manutenção
ANÁLISE E ENGENHARIA DE SISTEMAS
1. Envolve a coleta de requisitosde todos os elementos do sistema;
2. Essa visão de sistema é essencial quando o software faz interface com outros elementos como HW, pessoas e BD;
33
Processo de Software – Modelo Seqüencial Linear
Engenharia de Sistemas
Análise de Requisitos
Projeto
Codificação
Testes
Manutenção
ANÁLISE DE REQUISITOS DE SOFTWARE
1. processo de coleta dos requisitos é intensificado e concentrado especificamente no software
2. deve-se compreender o domínio da informação, a função, desempenho e interfaces exigidos
3. os requisitos (para o sistema e para o software) são documentados e revistos com o cliente
34
Processo de Software – Modelo Seqüencial Linear
Engenharia de Sistemas
Análise de Requisitos
Projeto
Codificação
Testes
Manutenção
• PROJETO1. tradução dos requisitos do software para um
conjunto de representações que podem ser avaliadas quanto à qualidade, antes que a codificação se inicie
2. se concentra em 4 atributos do programa:
– Estrutura de Dados, – Arquitetura de Software, – Detalhes Procedimentais e – Caracterização de Interfaces
35
Processo de Software – Modelo Seqüencial Linear
Engenharia de Sistemas
Análise de Requisitos
Projeto
Codificação
Testes
Manutenção
CODIFICAÇÃO1. tradução das
representações do projeto para uma linguagem “artificial” resultando em instruções executáveis pelo computador
36
Processo de Software – Modelo Seqüencial Linear
Engenharia de Sistemas
Análise de Requisitos
Projeto
Codificação
Testes
Manutenção
TESTES• Concentram-se:
1. nos aspectos lógicos internos do software, garantindo que todas as instruções tenham sido testadas
2. nos aspectos funcionais externos, para descobrir erros e garantir que a entrada definida produza resultados que concordem com os esperados.
37
Processo de Software – Modelo Seqüencial Linear
Engenharia de Sistemas
Análise de Requisitos
Projeto
Codificação
Testes
Manutenção
MANUTENÇÃO1. o software deverá sofrer mudanças
depois que for entregue ao cliente
38
Processo de Software – Modelo Seqüencial Linear
• Problemas:
– Projetos reais raramente seguem o fluxo de seqüencial proposto;– É difícil estabelecer todos os requisitos no começo do projeto na qual
existe uma incerteza natural quanto a esses requisitos;– Uma versão do software só vai ficar pronta em um ponto tardio do
desenvolvimento;• Assim se houver algum erro não detectado na análise ou projeto o
resultado pode ser desastroso;– Há muitos estágios bloqueantes que permitem a ociosidade dos
desenvolvedores em alguns momentos
39
Processo de Software – Modelo Seqüencial Linear
• Problemas:
– Dificuldade em acomodar mudanças depois que o processo está a ser executado;
– É mais apropriado quando os requisitos são bem compreendidos; – Cliente tem de pacientemente esperar o resultado final; – Os programadores são frequentemente atrasados sem necessidade; – Alto custo de correção das especificações quando nas fases de Teste e
Implantação.
40
Processo de Software – Modelo Seqüencial Linear
Embora o Modelo Seqüencial Linear
ou Ciclo de Vida Clássico tenha
fragilidades, ele é
significativamente melhor do que
uma abordagem casual ao
desenvolvimento de software
41
Exercícios• Desenvolva um conjunto de tarefas para a atividade de
comunicação.• Descreva um arcabouço do processo com suas próprias
palavras. Quando se diz que as atividades de arcabouço são aplicadas a todos os projetos, isso quer dizer que as mesmas tarefas de trabalho são aplicadas a todos os projetos, independentemente do tamanho e da complexidade, explique.
• O que é mais importante: o produto ou o processo?
42
Exercícios
• A figura abaixo coloca as camadas da engenharia de software sobre uma camada denominada “qualidade”. Isso implica um programa de qualidade para toda a organização tal como de qualidade total. Pesquise e faça um esboço dos pontos-chave de um programa de gestão de qualidade total.
Qualidade