universidade federal do espírito santo centro ... · processo de software 3. ... - processos de...
TRANSCRIPT
1
Universidade Federal do Espírito Santo
Centro Tecnológico
Departamento de Informática
Prof.: Monalessa Perini Barcellos
Disciplina: INF 09289 – Engenharia de Software
Conteúdo
1. Introdução
2. Processo de Software
3. Especificação e Análise de Requisitos
4. Projeto de Sistema
5. Implementação e Testes
6. Entrega e Manutenção
7. Gerência da Qualidade
8. Gerência de Projetos de Software
9. Tópicos Avançados em Engenharia de SoftwareEngenharia de Software Monalessa Perini Barcellos
2
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
• Estudos mostram que a qualidade do produto de software
depende diretamente da qualidade dos processos adotados no
seu desenvolvimento (FUGGETTA, 2000).
• Cada vez mais, as organizações têm despendido esforços
significativos na melhoria contínua de seus processos de
software.
• Algumas iniciativas:
Normas e modelos de qualidade de processo
Processos de software padrão
Desenvolvimento por meio de processos ágeis
Apoio automatizado ao processo de software.
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
• Estudos mostram que a qualidade do produto de software
depende diretamente da qualidade dos processos adotados no
seu desenvolvimento (FUGGETTA, 2000).
• Cada vez mais, as organizações têm despendido esforços
significativos na melhoria contínua de seus processos de
software.
• Algumas iniciativas:
Normas e modelos de qualidade de processo
Processos de software padrão
Desenvolvimento por meio de processos ágeis
Apoio automatizado ao processo de software.
3
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
Auxiliam a “rechear” o arcabouço fornecido pelo modelo de ciclo de vida.
Fases Atividades Responsáveis Produtos
Análise
Realizar levantamento de requisitos.
Elaborar especificação de requisitos.
Avaliar especificação de requisitos.
Analista.
Usuários.
Especificação de requisitos do
sistema.
Projeto
Elaborar projeto de dados.
Elaborar projeto de arquitetura.
Elaborar projeto de interface.
Avaliar projeto.
Projetista de
sistemas.Projeto do sistema.
Codificação
Implementar a base de dados.
Implementar cada unidade de
software do sistema.
Programador. Sistema codificado.
Testes
Preparar planejamento de testes.
Realizar testes de codificação.
Realizar testes funcionais.
Analista.
Programador.
Usuário.
Planejamento de casos de
testes.
Relatório de testes realizados.
ManutençãoRealizar correção/evolução.
Realizar testes de manutenção.
Analista.
Programador.
Usuário.
Relatório de manutenções
realizadas.
Algumas normas e
modelos podem
ajudar a definição de
processos.
A) Normas e Modelos de Apoio à Definição de Processos
Engenharia de Software Monalessa Perini Barcellos
Normas e Modelos de Apoio à Definição de Processos
A Série ISO 9000:2000
Desenvolvida para apoiar organizações, de todos os tipos e tamanhos, na
implementação e operação de sistemas eficazes de gestão da qualidade.
• NBR ISO 9000: descreve os fundamentos de sistemas de gestão da qualidade e
estabelece a terminologia para esses sistemas;
• NBR ISO 9001: especifica os requisitos para um sistema de gestão da qualidade
com enfoque na satisfação do cliente. Para uma organização ser certificada ISO
9001, ela precisa demonstrar sua capacidade para fornecer produtos que atendam
aos requisitos do cliente (explícitos e implícitos) e os requisitos regulamentares
aplicáveis;
• NBR ISO 9004: fornece diretrizes que consideram tanto a eficácia como a
eficiência do sistema de gestão da qualidade. Amplia os requisitos estabelecidos
pela ISO 9001, buscando melhoria contínua de desempenho.
• NBR ISO 19011: fornece diretrizes sobre auditoria internas e externas de sistemas
de gestão da qualidade.
9. Tópicos Avançados em Engenharia de Software
4
1. A empresa estabelece o seu sistema da qualidade.
2. A empresa faz uma solicitação formal a um órgão certificador.
3. O órgão certificador faz uma primeira visita à empresa para colher mais
dados e explicar o processo de certificação.
4. O órgão certificador verifica se a documentação do sistema da qualidade está
de acordo com a ISO.
5. O órgão certificador envia uma equipe à empresa com fins de auditoria.
Podem ocorrer três situações:
Qualificada sem discrepâncias
Qualificada com pequenas discrepâncias, que devem ser corrigidas em um
prazo pré-estabelecido antes da certificação
Não qualificada
6. O órgão certificador realiza visitas periódicas à empresa para assegurar que
o sistema continua sendo efetivo.
ISO 9001 - Processo de Certificação
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
ISO 9001:2000 - Certificado
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
Certificado ISO 9001:2000 entregue ao
Club Atletico Boca Juniors
(Argentina)
Escopo da certificação: Eventos Esportivos
5
ISO 12207 - Tecnologia de Informação - Processos de Ciclo de Vida de Software
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
• 43 processos + um processo de adaptação.
• 7 categorias:
- Processos relacionados a Acordos (Contratos)
- Processos relacionados à Habilitação Organizacional para Projetos
- Processos de Projeto
- Processos Técnicos
- Processos de Implementação do Software
- Processos de Apoio ao Software
- Processos de Reúso de Software
ISO /IEC 12207 :2008 - Processos
Contratos
Aquisição
Fornecimento
Habilitação Organizacionalpara Projetos
Gerência do MCV
Gerência de Infraestrutura
Gerência de Portfólio
Gerência de RH
Gerência da Qualidade
Projetos
Planejamento de Projetos
Acompanhamento e Controle de
Projetos
Gerência de Decisão
Gerência de Riscos
Gerência da Configuração
Gerência da Informação
Medição
Técnicos
Definição dos Requisitos dos Stakeholders
Análise de Requisitos do
Sistema
Arquitetura do Sistema
Implementação
Teste de Qualificação do
Sistema
Instalação do Software
Apoio à Aceitação do Software
Integração
Operação do Software
Manutenção do Software
Descontinuação do Software
Implementação do Software
Implementação do Software
Análise de Requisitos do
Software
Projeto da Arquitetura do
Software
Projeto Detalhado do Software
Construção do Software
Integração do Software
Teste de Qualificação do
Software
Apoio
Gerência de Documentação do
Software
Gerência de Configuração do
Software
Garantia da Qualidade do Software
Verificação do Software
Validação do Software
Revisão do Software
Auditoria do Software
Resolução de Problemas do Software
Reúso de Software
Engenharia deDomínio
Gerência dos Ativos de Reúso
Gerência do Programa de Reúso
Processos Específicos de SoftwareProcessos para o Contexto de Sistemas
6
• Definido pelo Software Engineering Institute (SEI) - Carnegie Mellon University, com o
intuito de quantificar a capacidade de uma organização produzir produtos de
software de alta qualidade, de forma previsível e consistente.
• Descreve princípios e práticas dos quais depende a maturidade do processo de
software.
• Define 5 níveis de maturidade para o processo de desenvolvimento que são
caracterizados por PA’s (Process Areas).
• Tem como objetivo auxiliar as organizações a aumentarem a maturidade de seus
processos por um caminho evolutivo.
• Pode ser usado por empresas contratantes para identificar as características do
processo utilizado por seus fornecedores.
• Oferece duas abordagens para melhoria de processos: contínua ou por estágios.
CMMI - Capability Maturity Model Integration
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
CMMI - Capability Maturity Model Integration
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
1Processo imprevisível, fracamente controlado e reativo
2Processo caracterizado para projetos e muitas vezes reativo
3Processo caracterizado para a organização e pró-ativo
4Desempenho do processo controlado estatisticamente
5Foco na melhoria contínua do processo
Inicial
Gerenciado
Definido
Gerenciado Quantitativamente
Em Otimização
7
• Originalmente: SPICE (Software Process Improvement and Capability dEtermination) - é
um padrão internacional ISO para avaliação de processos de software.
• É composta de cinco partes:
i. Part 1 – Concepts and Vocabulary (Conceitos e Vocabulário);
ii. Part 2 – Performing an Assessment (Realizando uma Avaliação);
iii. Part 3 – Guidance on Performing an Assessment (Orientações para se Realizar uma
Avaliação);
iv. Part 4 – Guidance on use for Process Improvement and Process Capability Determination
(Orientações para Uso em Melhoria de Processo e Determinação da Capacidade de
Processo);
v. Part 5 – An exemplar Process Assessment Model (Um Exemplo de Modelo de Avaliação de
Processo).
A Norma ISO/IEC 15504 - Information Technology – Process Assessment
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
• Baseou-se na ISO 15504 e no CMMI.
• Possui 3 componentes: Modelo de Referência (MR-MPS), Método de
Avaliação (MA-MPS) e Modelo de Negócio (MN-MPS).
• Define sete níveis de maturidade: A (Em Otimização), B (Gerenciado
Quantitativamente), C (Definido), D (Largamente Definido), E (Parcialmente
Definido), F (Gerenciado) e G (Parcialmente Gerenciado).
MR MPS.BR - Modelo de Referência para Melhoria de Processo de Software Brasileiro
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
8
MR MPS-SW - Modelo de Referência para Melhoria de Processo de Software Brasileiro
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
Nível ProcessosA Análise de Causas de Problemas e Resolução
B Gerência de Projetos (evolução)
C Análise de Decisão e Resolução
Desenvolvimento para Reutilização
Gerência de Riscos
Gerência de Reutilização (evolução)
D Desenvolvimento de Requisitos
Projeto e Construção do Produto
Integração do Produto
Verificação
Validação
E Avaliação e Melhoria de Processo Organizacional
Definição do Processo Organizacional
Gerência de Recursos Humanos
Gerência de Reutilização
Gerência de Projetos (evolução)
F Medição (para monitoração e controle)
Gerência de Configuração
Aquisição
Garantia da Qualidade
Gerência de Portfólio
G Gerência de Requisitos
Gerência de Projetos
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
• Embora diferentes projetos requeiram processos com características específicas
para atender às suas particularidades, é possível estabelecer um conjunto de
ativos de processo* a ser utilizado na definição de processos de software de
uma organização.
• As normas e modelos preconizam a definição e institucionalização de processos
padrão nas organizações.
* Subprocessos, atividades, subatividades, artefatos, recursos e procedimentos, dentre outros.
Processo PadrãoNormas e Modelos de Qualidade
Cultura Organizacional, Política Organizacional,
Características da Organização etc
B) Definição de Processos de Software em Níveis
9
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
Processo Padrão
Normas e Modelos de Qualidade, Cultura Organizacional,
Características da Organização
Tipo de Software, Domínio do Problema, Paradigma e
Tecnologia de Desenvolvimento
Particularidades do Projeto, Modelo de Ciclo de Vida
Definição
Especialização
Processo Especializado 1 Processo Especializado n
Instanciação
Processo de Projeto mProcesso de Projeto 1
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
C) Processos Ágeis
O Manifesto Ágil
“Estamos descobrindo maneiras melhores de desenvolver software fazendo-o nós
mesmos e ajudando outros a fazê-lo. Através deste trabalho, passamos a valorizar:
Indivíduos e interação entre eles mais que processos e ferramentas
Software em funcionamento mais que documentação abrangente
Colaboração com o cliente mais que negociação de contratos
Responder a mudanças mais que seguir um plano
Ou seja, mesmo havendo valor nos itens à direita, valorizamos mais os itens à
esquerda.”
(http://manifestoagil.com.br/)
10
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
XP – eXtreme Programming
• Abordagem para desenvolvimento de software que busca assegurar que o cliente
receba o máximo de valor a cada dia de trabalho da equipe de desenvolvimento.
• Parte da premissa de que o cliente aprende sobre suas necessidades na medida em que é capaz de manipular o sistema sendo produzido. Com base no uso do sistema,
o cliente reavalia suas necessidades e prioridades, gerando mudanças que devem ser incorporadas ao software pela equipe de desenvolvimento.
• XP é voltado para:
Projetos cujos requisitos são vagos e podem mudar com frequência Desenvolvimento de sistemas orientados a objetos
Equipes pequenas (até 12 desenvolvedores) Desenvolvimento iterativo/incremental (o sistema começa a ser
implementado logo no início e vai ganhando novas funcionalidades ao longo do tempo).
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
• XP é organizado em torno de um conjunto de valores e práticas que devem atuar
de maneira coesa e harmônica.
• Valores do XP:
Feedback: quando o cliente aprende com o sistema que utiliza, ele reavalia
as suas necessidades e dá feedback para a equipe de desenvolvimento.
Comunicação: a comunicação entre o cliente e a equipe permite que todos
os detalhes do projeto sejam tratados com a atenção e agilidade que
merecem.
Simplicidade: a simplicidade advoga que só deve ser implementado aquilo
que é suficiente para atender as necessidades do cliente.
Coragem: a equipe precisa ter coragem e acreditar que, usando as práticas e
valores do XP, será capaz de fazer o software evoluir com segurança e
agilidade.
11
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
• O XP não possui uma figura padrão que represente a metodologia como um
processo (sequência de passos).
• A figura clássica do XP é conhecida como 3 loops e apresenta suas 13 práticas.
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
• Método ágil para gerenciamento de projetos, cuja aplicação não está limitada a
projetos de software.
• O nome foi inspirado em um trabalho publicado na Harward Business Review em
1986, intitulado “The New New Product Development Game” , de Hirotaka
Takeuchi e Ikujiro Nonaka, que propunha uma abordagem e a comparava com a
formação Scrum no rugby.
• Foi formalmente criado no artigo “Scrum and the Perfect Storm”
(www.controlcaos.com/my-articles) escrito por Ken Schwaber na década de 90, baseado
no desenvolvimento iterativo e incremental e novas estratégias de criação de
produtos.
• O nome foi inspirado em uma jogada de Rugby. Após uma reunião (agrupamento
em torno da bola), o objetivo é retirar os obstáculos à frente do jogador que correrá
com a bola, para que possa avançar o máximo possível no campo e marcar pontos.
SCRUM
12
Ciclo do SCRUM
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
Como funciona:
1. Os projetos são divididos em ciclos (tipicamente mensais) chamados de Sprints. A Sprint representa uma
janela de tempo dentro da qual um conjunto de atividades deve ser executado. Normalmente uma sprint
dura de 2 a 4 semanas.
2. As funcionalidades a serem implementadas em um projeto são mantidas em uma lista chamada Product
Backlog.
3. No início de cada Sprint, faz-se uma reunião de planejamento inicial (Sprint Planning Meeting) na qual
Product Owner prioriza os itens do Product Backlog e a equipe seleciona as atividades que ela será capaz de
implementar durante a Sprint que se inicia.
4. As atividades alocadas em uma Sprint são transferidas do Product Backlog para o Sprint Backlog.
5. A cada dia de uma Sprint, a equipe faz uma breve reunião (normalmente de manhã), chamada Daily Scrum
(também é conhecida como Stand up Meeting) para disseminar conhecimento sobre o que foi feito no dia
anterior, identificar impedimentos e priorizar o trabalho do dia que se inicia.
6. Ao final de uma Sprint, a equipe apresenta as funcionalidades implementadas em uma Sprint Review
Meeting.
7. Finalmente, faz-se uma Sprint Retrospective e a equipe parte para o planejamento da próxima Sprint.
9. Tópicos Avançados em Engenharia de Software
13
9. Tópicos Avançados em Engenharia de Software
Engenharia de Software Monalessa Perini Barcellos
• Com o aumento da complexidade dos processos de software, tornou-se
imprescindível utilizar ferramentas e ambientes de apoio à realização de suas
atividades, visando, sobretudo, a atingir níveis mais altos de qualidade e
produtividade.
• Ferramentas CASE (Computer Aided Software Engineering) apoiam a realização de
atividades específicas, tais como planejamento e análise e especificação de
requisitos.
• Atualmente, o elevado número e a variedade de ferramentas CASE levou os
engenheiros de software a pensarem em trabalhar com diversas ferramentas que
interajam entre si e forneçam suporte a todo ciclo de vida do desenvolvimento,
dando origem aos Ambientes de Desenvolvimento de Software (ADSs).
D) Automatização de Processo de Software
Universidade Federal do Espírito Santo
Centro Tecnológico
Departamento de Informática
Prof.: Monalessa Perini Barcellos
Disciplina: INF 09289 – Engenharia de Software