Post on 17-Apr-2015
Processo de Software
UNIVERSIDADE ESTADUAL DE MATO GROSSO DO SULSISTEMAS DE INFORMAÇÃO ENGENHARIA DE SOFTWARE
Prof.ª Adriana dos Santos Caparróz Carvalho
O que é um processo?
“Desde que o software, como todo capital, é conhecimento incorporado, e como esse conhecimento está inicialmente disperso, tácito, latente e incompleto na sua totalidade, o desenvolvimento de software é um
processo de aprendizado social. O processo é um diálogo no qual o conhecimento, que deve se transformar em software, é reunido e
incorporado ao software. O processo fornece interação entre usuários e projetistas, entre usuários e ferramentas em desenvolvimento e entre
projetistas e ferramentas em desenvolvimento [tecnologia]. É um processo iterativo no qual a própria ferramenta serve como meio de comunicação, como cada nova rodada de diálogo explicitando mais
conhecimento útil do pessoal envolvido” [BAE98]
Processo de Software
A elaboração de software é um processo interativo de aprendizado.
É a incorporação de conhecimentos coletados, destilados e organizados, à medida que o processo é conduzido.
É o arcabouço das tarefas que são necessárias para construir softwares de alta qualidade [PRE06]
E Engenharia de Software?
Fritz Bauer - 1969
“O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter
economicamente um software que seja confiável e que funcione eficientemente em máquinas
reais”
Engenharia de Software
IEEE, 1993
“A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e
manutenção do software; isto é, a aplicação da engenharia ao software”.
Qualquer abordagem de engenharia deve se apoiar num compromisso com a qualidade.
ES: em camadas
Foco na qualidade: base Processo: alicerce; adesivo Métodos: conjunto de tarefas; “como fazer” Ferramentas: apoio automatizado ou semi-
automatizado para o processo e para os métodos.
Foco na qualidadeProcesso
Métodos
Ferramentas
Arcabouço de Processo
Estabelece o alicerce para um processo de software completo pela identificação de um pequeno número de atividades de arcabouço:ComunicaçãoPlanejamentoModelagem ConstruçãoImplantação
Arcabouço de Processo
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.
Arcabouço de Processo
Um projeto engloba tarefas de trabalhoProjeto de dadosProjeto arquiteturalProjeto de interfaceProjeto de componentes
Tudo isso cria um modelo e/ou uma especificação de projeto.
Arcabouço de Processo
Todos os modelos de processo podem ser caracterizados dentro do arcabouço de processo.
A aplicação inteligente de qualquer modelo de processo de software deve reconhecer que a adaptação (ao problema, ao projeto, à equipe e à cultura organizacional) é essencial para o sucesso.
Modelos de Processo
Os modelos diferem fundamentalmente:No fluxo geral de atividades e tarefasNo grau em que as tarefas de trabalho são
definidas dentro de cada atividade do arcabouçoNa maneira como as atividades de garantia de
qualidade são aplicadasNo grau geral de detalhes e rigorNo grau de envolvimento dos clientesNo nível de autonomia da equipe de
desenvolvimento
Modelos de Processo
Os modelos prescritivos de processo:Enfatizam a definição, identificação e aplicação
detalhada e atividades e tarefas;Objetivo: melhorar a qualidade o sistema para
tornar os projetos mais gerenciáveis, as datas de entrega e os custos mais previsíveis e para guiar equipes de engenheiros de software.
Se aplicados dogmaticamente e sem adaptação,eles podem aumentar a burocracia e criar dificuldades para desenvolvedores e clientes
Modelos de Processo
Os modelos de processo ágil:Enfatizam a agilidade do projeto, a
manobrabilidade e a adaptabilidade;Abordagem mais informal mas não menos efetiva.
Ambas as filosofias têm como objetivo comum criar softwares de alta qualidade que satisfaçam às necessidades do cliente.
CMMI
Cabability Maturity Model Integration
Desenvolvido pelo SEI (Software Engineering Institute)
Metamodelo de processo 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.
CMMI
CMMI Modelo ContínuoDescreve um processo em duas dimensões (nível
de capacitação e área de processo)Nível de capacitação:
• Nível 0: incompleto• Nível 1: Realizado• Nível 2: Gerido• Nível 3: Definido• Nível 4: Quantitativamente gerido• Nível 5: Otimizado
CMMI
CMMI Modelo ContínuoDescreve um processo em duas dimensões (nível
de capacitação e área de processo)Área de Processo
• PP: Planejamento de Projeto• GREQ: Gestão de Requisitos• MA: Mediação de Análise• GC: Gestão de Configuração• GQPP: Gestão de Qualidade de Processo e de Produto
CMMI CMMI Modelo Contínuo
Descreve um processo em duas dimensões (nível de capacitação e área de processo)
0
1
2
3
4
5
PP GREG MA GC GQPP
N0: incompletoN1: RealizadoN2: GeridoN3: DefinidoN4: Quantitativamente geridoN5: Otimizado
PP: Planejamento de ProjetoGREQ: Gestão de RequisitosMA: Mediação de AnáliseGC: Gestão de ConfiguraçãoGQPP: Gestão de Qualidade de Processo e de Produto
CMMI
O CMMI define cada área de processo em termos de “metas específicas” e das “práticas específicas” necessárias para atingir tais metas.
ME 1 Desenvolver um plano de projeto• PE1. 1 Estabeleça o orçamento e o cronograma• PE1. 2 Identifique os riscos de projeto• PE1. 3 Planeje a gestão de dados• PE1. 4 Planeje os recursos de projeto• PE1. 5 Planeje as habilidades e conhecimentos• PE1. 6 Planeje o envolvimento dos interessados
CMMI
CMMI Modelo em estágios Define 5 níveis de maturidade Permite uma seqüência de melhoria onde cada nível serve
de pré-requisito para o próximo Permite comparações entre organizações que utilizam
níveis de maturidade
Avaliação de Processo O processo deve ser avaliado para garantir que ele
satisfaça a um conjunto de critérios básicos de processo que demonstraram ser essenciais para uma engenharia de software bem-sucedida.
SCAMPI
CBA
Norma SPICE (ISSO/IEC 15504)
ISSO 9001:2000 para Software
Avaliação de Processo