Você está na página 1de 52

2-Gerncia de Projetos de

Software

O Processo

Engenharia de software
O Processo de Software
CMM - Capability Maturity Model
Modelos de Processo de Software
O Modelo Sequencial Linear
O Modelo de Prototipagem
O Modelo RAD
Modelos Evolucionrios
Desenvolvimento Baseado em Componentes
RUP
XP - eXtreme Programming
O Modelo de Mtodos Formais
Tcnicas de Quarta Gerao
Produto e Processo

Engenharia de software
Def. 1: a criao e a utilizao de
princpios de engenharia a fim de obter
software de maneira econmica, confivel e
eficiente.
Def. 2: a aplicao de uma abordagem
sistemtica (disciplinada e quantificvel)
para o desenvolvimento, operao e
manuteno do software.

Engenharia de software
Engenharia de Software uma tecnologia
em camadas
ferramentas
mtodos
processos
foco na qualidade

Engenharia de software
Foco na qualidade
compromisso organizacional com a qualidade
gesto da qualidade total

Processos
estrutura para a efetiva utilizao da tecnologia
base para o controle gerencial do projeto
como os mtodos tcnicos so aplicados
quais produtos do trabalho (modelos, docs, dados,
relatrios)
definem marcos
gerenciam as modificaes

Engenharia de software
Mtodos
tcnica de como fazer
anlise de requisitos, projeto, implementao,
teste e manuteno

Ferramentas
apoio automatizado para o processo e mtodos
CASE, CAD, CAE

Engenharia de software
Viso genrica da Engenharia de Software

qual o problema ?
quais as caractersticas principais ?
como a soluo vai ser realizada/construda ?
como detectar erros no projeto/construo ?
como ser mantido/aperfeioado ?

Podemos dividir em 3 fases


Definio
Desenvolvimento
Manuteno

Engenharia de software
Fase de Definio
O QU ? entrada/funes/sadas
informao, planejamento do projeto, anlise de
requisitos, critrios de validao (testes)

Fase de Desenvolvimento
COMO ? estrutura dos dados/como implementar as
funes/interfaces
detalhes procedimentais, ling. de programao,
testes

Fase de Manuteno
MODIFICAES. correes/adaptaes/melhorias

Engenharia de software
Tipos de Manuteno
CORRETIVA
defeitos

ADAPTATIVA
mudanas no ambiente externo (entradas, hardware, SO)

PERFECTIVA
funes adicionais no previstas originariamente (surgem
com o uso)

PREVENTIVA
software se deteriora com modificaes !
modificaes (reengenharia) para facilitar que sejam
corrigidos, adaptados e melhorados

Engenharia de software
Atividades gerais (guarda-chuva)

Acompanhamento do projeto
Controle do projeto
Revises tcnicas formais
Gesto de configurao
Documentao
Gesto da reutilizao
Medio
Gesto de risco

O Processo de Software
Estrutura comum de processo
Atividades estruturais
Tarefas
Produtos finais
Marcos
Pontos de garantia de qualidade
Atividades guarda-chuva
Estrutura comum: aplicvel a qq tipo de projeto
Estruturais: adaptadas s caractersticas do projeto
Guarda-chuva: ao longo do processo

CMM - Capability Maturity Model


CMM (Capability Maturity Model)
Desenvolvido pela SEI (Software Engineering
Institute)
Nveis de maturidade para o processo de
desenvolvimento uma organizao
avaliao de fornecedores
guia para a melhoria dos processos

Quanto maturidade
organizao imatura - o desenvolvimento improvisado,
os processos especificados no so seguidos

organizao madura - possui capacidade de organizao


para o desenvolvimento e manuteno de software

CMM - Capability Maturity Model


Nvel 1: inicial
poucos processos definidos, sucesso depende do esforo individual

Nvel 2: repetvel
processos bsicos de gesto de projetos (custo, cronograma e
funcionalidade), repete sucessos anteriores em projetos similares

Nvel 3: definido
o processo de software est documentado, padronizado e
integrado; inclui nvel 2

Nvel 4: gerenciado
medidas detalhadas da qualidade do processo e do produto; inclui
nvel 3

Nvel 5: otimizado
melhoria contnua pela realimentao do processo e do teste de
idias e tecnologias inovadoras, preveno de defeitos; inclui nvel
4

CMM - Capability Maturity Model


A SEI define reas chave para o processo
(KPA)
As KPA definem as funes de engenharia
de software para cada nvel

Nvel 2
Repetvel

Nvel 3
Definido

Nvel 4
Gerenciado

Nveis SEI-CMM - KPA

Nvel 5
Otimizado

CMM - Capability Maturity Model


SEI-CMM Nvel 2 - KPA
Gesto de configurao de software
Garantia de qualidade de software
Gesto de subcontratos de software
Acompanhamento e superviso de projeto de
software
Planejamento de projeto de software
Gesto de requisitos

CMM - Capability Maturity Model


SEI-CMM Nvel 3 - KPA

Nvel 2 +
Revises pelos pares
Coordenao intergrupal
Engenharia de produto de software
Gesto integrada de software
Programa de treinamento
Definio do processo da organizao
Enfoque do processo da organizao

CMM - Capability Maturity Model


SEI-CMM Nvel 4 - KPA
Nvel 3 +
Gesto de qualidade de software
Gesto quantitativa de processo

SEI-CMM Nvel 5 - KPA

Nvel 4 +
Gesto de modificao de processo
Gesto de mudana de tecnologia
Preveno de defeitos

Modelos de Processo de Software


Modelos de Processo
estratgias de desenvolvimento abrangindo
processos, mtodos, ferramentas nas fases de
definio, desenvolvimento e manuteno
um modelo escolhido dependendo das
caractersticas do projeto

natureza da aplicao
mtodos e ferramentas a serem empregados
controles
produtos intermedirios

Modelos de Processo de Software


Ciclo de soluo de problema
todo desenvolvimento pode ser caracterizado assim
problem
definition

technical
development

status
quo

solution
integration

situao atual definio do problema


desenvolvimento tcnico integrao da soluo

Modelos de Processo de Software


Fases dentro de fases do ciclo de soluo de
problema
problem
definition

problem
definition

technical
development

status
quo

solution
integration

problem
definition

technical
development

status
quo

technical
development

status
quo

solution
integration

problem
definition

solution
integration

technical
development

status
quo

solution
integration

Modelos de Processo de Software


Modelos de Processo

Sequencial Linear
Prototipagem
RAD
Evolucionrios
Incremental
Espiral

Baseado em Componentes
Mtodos Formais
Quarta Gerao

O Modelo Sequencial Linear

System/information
engineering
analysis

design

code

test

O Modelo Sequencial Linear


ou Ciclo de vida bsico ou Modelo em
Cascata
Atividades

Modelagem e engenharia do sistema/informao


Anlise de requisitos de software
Projeto
Gerao de cdigo
Teste
Manuteno

O Modelo Sequencial Linear


Caractersticas
projetos reais raramente seguem esse modelo
difcil o cliente definir todos os requisitos
explicitamente
dificuldade de acomodar mudanas
cliente precisa ter pacincia !
erros podem ter efeito desastroso

O Modelo de Prototipagem
listen
to
customer

build/revise
prototype

customer
test-drives
prototype

O Modelo de Prototipagem
Caractersticas
apenas os objetivos gerais do sistema so
definidos inicialmente
um projeto rpido desenvolvido (prottipo)
o prottipo avaliado e usado para refinar os
requisitos
interaes permitem entender melhor o desejo
do cliente
prottipo pode gerar uma falsa sensao de que
o sistema ser desenvolvido rapidamente

O Modelo RAD
team #2
team #1

team #3
business
mode ling

business
modeling

business
modeling

dat a
mode ling

process
mode ling

data
modeling

application
generat ion
testing
&
turnover

process
modeling

data
modeling

application
generation

process
modeling

testing
&
turnover

application
generation
testing
&
turnover

60 - 90 days

O Modelo RAD (Rapid Application


Development)
Atividades
Modelagem do negcio
que informao gerada ? quem gera ? quem processa
? para onde vai ?

Modelagem dos dados


objetos de dados: atributos e relacionamentos

Modelagem do processo
processamento dos objetos de dados

Gerao da aplicao
4a. gerao, reuso, ferramentas automatizadas

Teste e entrega
reuso de componentes reduz testes

O Modelo RAD (Rapid Application


Development)
Caractersticas
projetos rpidos
uso de ferramentas CASE
cada funo em menos de 3 meses
cada funo feita por um time RAD distinto e depois
integrada
exige RH suficiente para a criao de times RAD
nem todos os projetos so apropriados para o RAD
(os no-modulares, com poucos componentes, etc.)
riscos tcnicos elevados invalidam o RAD (novas
tecnologias, integrao com outros sistemas, etc.)

Modelos Evolucionrios Incremental


increment 1

System/information
engineering

analysis

design

increment 2

code

analysis

test

design

delivery of
1st increment

code

increment 3 analysis

increment 4

delivery of
2nd increment

test

design

analysis

code

delivery of
3rd increment

test

design

code

test

delivery of
4th increment

calendar time

Modelos Evolucionrios Incremental


Caractersticas
combina sequencial linear com a idia da
prototipagem
cada sequncia linear produz um incremento do
software
primeiro desenvolvido o ncleo do produto
(funes base)
depois, com base nesse ncleo, alteraes e
melhorias so criadas (evoluo)
gera um produto final (operacional) a cada incremento
usa pouca mo-de-obra
desenvolvimento lento, mas minimiza riscos

Modelos Evolucionrios - Espiral


Planning

Risk Analysis

Customer
Communication

Engineering

Customer
Evaluation

Construction & Release

Modelos Evolucionrios - Espiral


Atividades

Comunicao com o cliente


Planejamento
Anlise de Risco
Engenharia
Construo e liberao
Avaliao pelo cliente

Modelos Evolucionrios - Espiral


Caractersticas
a equipe move-se em volta da espiral, no sentido
horrio, a partir do centro
as primeiras iteraes geram especificaes do
produto
passagens subsequentes geram um prottipo
as ltimas iteraes geram verses cada vez mais
sofisticadas e completas
o nmero de iteraes deve ser ajustada para
completar o software
cada projeto tem um ponto de entrada diferente na
espiral: novos produtos comeam mais no centro,
manuteno de produtos comeam mais externamente

Desenvolvimento Baseado em
Componentes
tecnologia de orientao a objetos
Planning

Risk Analysis

Customer
Communication

Engineering

Customer
Evaluation

- identifique as classes adequadas


- procure na biblioteca
- extraia da biblioteca se existirem
Construction &- Release
implemente se no existir
- inclua na biblioteca

Desenvolvimento Baseado em
Componentes
Caractersticas
classes criadas em projetos anteriores so
catalogadas em bibliotecas
as atividades de engenharia, construo e
liberao procuram identificar classes j existentes
na biblioteca, ou criam e incluem na biblioteca as
novas classes implementadas caso contrrio
o fluxo volta para a espiral
reuso de software: reduo no desenvolvimento,
reduo no custo, aumento de produtividade
uso de UML (Unified Modeling Language) linguagem unificada de modelagem

RUP
IBM RUP (Rational Unified Process)
Processo de Engenharia de Software integrado com
ferramentas de desenvolvimento de software
Desenvolvimento iterativo

desenvolva iterativamente
gerencie os requisitos
use arquitetura de componentes
modele graficamente
gerencie as mudanas
verifique a qualidade

Progresso contnuo com releases frequentes


Organizado em disciplinas e fases

RUP - ferramentas
Rational Rose Enterprise - UML
Rational PurifyPlus for Windows - deteco de bugs,
anlise de cdigo/performance

Rational
Rational
Rational
Rational

ClearCase LT - controle de verso


ClearQuest - gerncia de mudanas
RequisitePro - gerncia de requisitos
Unified Process - guia de processo baseado em

Web

Rational TestManager - teste manual/automtico


Rational SoDA for Word - documentao
Rational ProjectConsole - relatrios

RUP - metodologia e ferramentas

RUP - baseado em Web

RUP - best practices


Prticas recomendadas para o
desenvolvimento de software

Develop software iteratively


Manage requirements
Use component-based architectures
Visually model software
Continuously verify software quality
Control changes to software

RUP - desenvolvimento iterativo

Eixo horizontal: progresso do ciclo de vida no tempo


Eixo vertical: disciplinas (atividades)

RUP - foco nas disciplinas varia com


o tempo

XP - eXtreme Programming
O que ?
uma disciplina de desenvolvimento de software

Quando usar ?
em projetos arriscados com requisitos dinmicos
e uma equipe pequena (2 a 12 pessoas)

Outra metodologia para desenvolvimento


de sw ?
XP tem uma mentalidade diferente: enfatiza o
envolvimento do cliente e promove o trabalho
em equipe

XP - eXtreme Programming
4 focos principais
comunicao - ao extremo entre cliente e equipe,
deciso mtua do que deve ser feito primeiro e o que
pode ser deixado pra depois

simplicidade - manter a simplicidade atravs do reuso


de cdigo e minimizando a construo de cdigo

feedback - pequenos releases e testes contnuos como


mecanismo de retroalimentao

coragem! - ser honesto em dizer o que pode ser feito e


o que no pode ser feito

XP - eXtreme Programming
Cliente conta suas user-stories
Equipe extrai requisitos e cenrios de teste
Equipe combina com cliente a ordem das
features
Planos de releases e testes de aceitao so
definidos
Pequenos releases com as primeiras features
so gerados, testados e aprovados pelo cliente
Processo iterativo de novas features gerando
novos releases (testadas e aprovadas) at o fim
do projeto

XP - eXtreme Programming

spike - a very simple program to explore potential solutions (~prototype)

XP - eXtreme Programming
12 prticas
1) The planning game - definio das features da
prxima verso

2) Small releases
3) Metaphor - uma user story
4) Simple design - KISS
5) Testing - teste das user stories
6) Refactoring - remoo de cdigo (tamanho e
complexidade)

XP - eXtreme Programming
12 prticas (cont.)
7) Pair programming
8) Collective ownership - todos devem possuir a habilidade
de alterar qualquer parte do cdigo

9) Continuous integration - construir e integrar os


componentes de software diariamente

10) Forty-hour week - o stress do overtime contnuo (mais


de 2 semanas) no indicado

11) On-site customer - cliente trabalha no desenvolvimento


definindo o sistema, escrevendo testes e respondendo s
dvidas

12) Coding standards

O Modelo de Mtodos Formais


Abrange um conjunto de atividades que levam
especificao formal do software
Permite especificar, desenvolver e verificar um
sistema
Software livre de defeitos... !
Software crtico (segurana, vidas humanas,
etc.)
Mas, modelos formais so
lentos, dispendiosos, pouco difundidos, no pode ser
usado como um modelo de comunicao com o
cliente

Tcnicas de Quarta Gerao


Especificao em alto nvel
A ferramenta cria, automaticamente, o
cdigo-fonte (ineficiente e nomanutenvel)
Funes rotineiras

consulta a BDs
relatrios
definio de telas
gerao de pginas Web
etc.

Produto e Processo
Processo ruim Produto ruim
Mas cuidado com nfase excessiva nas
tecnologias de Processo !

Você também pode gostar