Sie sind auf Seite 1von 42

Engenharia de Software II

Processos de Software

Prof Luciana Bolan Frigo

Objetivos
Conhecer os modelos de processos de software,

suas vantagens e desvantagens

Tamanho de Software

Retirado de prof. Anderson Cavalcanti UFRN

Tamanho de Software
Michael Cusumano, na revista Communications of the ACM

de Julho de 2006
Um dado interessante a progresso do tamanho da base

de cdigo do Windows : a verso 95 possua 15 milhes de linhas de cdigo, o Windows XP possui 35 milhes. J o Windows Vista deve possuir acima de 50 milhes (4.000 programadores).

Processos de Software
Um processo uma srie de etapas envolvendo

atividades, restries e recursos, tendo em vista a produo de determinado produto.

Processo de Software:
Especificao Projeto e implementao

Validao
Evoluo

Modelo
Um modelo de processo de software uma

representao abstrata de um processo de software.

Apresenta uma descrio do processo sob uma

perspectiva em particular.

Desenvolvimento de Software
Definio: qual o problema?

Desenvolvimento: quais as possveis solues e como

implement-las?

Manuteno: mudanas para correo de erros e

melhoria

Fase de Definio
O que ser desenvolvido?
Quais as funes e desempenhos desejados?

Qual o comportamento esperado do sistema?


Quais os critrios de validao para definir se o

sistema foi bem definido? Quais informaes sero processadas? Que interfaces sero estabelecidas? Que restries existem?

Fase de Desenvolvimento
Como o software ser desenvolvido?
Como os dados sero estruturados? Como os detalhes procedimentais sero

implementados? Como sero as interfaces? Como sero feitos os testes? Como o projeto ser traduzido para uma linguagem de programao?

Modelagem
Podem ser estruturais (organizao do sistema) ou

comportamentais (dinmica do sistema)

Fase de Manuteno
Focaliza as mudanas no software aps a liberao

para o uso operacional

Repete os passos das fases de definio e

desenvolvimento, mas no contexto de um software existente

Processo de desenvolvimento Software ou Ciclo de Vida de Software


Apresenta um conjunto de atividades que vai desde a

concepo at a morte do software.

A transio entre as fases marcada por algum evento.

A escolha do modelo depende da complexidade do

problema e da soluo, da frequncia esperada de mudanas, da utilidade das funcionalidades parciais.

Processo de Software ou Ciclo de Vida de Software


Todos os processos de software existentes

conduzem a uma soluo de software.

A cada novo projeto, um processo deve ser

definido, baseado no tipo de aplicao, prazos, custos, recursos e riscos.

O que processo?
Uma receita um processo? Ela pode ser executada de formas diferentes? Uma torta para diabticos ou para que tem

intolerncia a lactose so executadas da mesma forma?

Escolha do processo de desenvolvimento de software


Caractersticas da aplicao (domnio do problema,

tamanho, complexidade, etc.)


Tecnologia a ser adotada na sua construo (paradigma

de desenvolvimento, linguagem de programao, etc.)


Organizao onde o produto ser desenvolvido

Caractersticas da equipe
Estabilidade dos requisitos Outros

Atividade
Desenvolva um modelo de processo de software e aponte as

principais vantagens e desvantagens do modelo.


Tempo: 15 min.

Modelos de Processo de Software

Um processo de software formado por um conjunto de atividades, mtodos, prticas e transformaes que guiam as pessoas no desenvolvimento do software.

Um processo deve considerar as relaes entre as atividades, os artefatos produzidos, as ferramentas e procedimentos necessrios e as habilidades e treinamento das pessoas envolvidas.
Para cada atividade de um processo tem-se:

Pr-atividades; Artefatos de entrada (insumos) e de sada (produtos); Recursos necessrios (humanos, hardware, software, etc.) Procedimentos (mtodos, tcnicas, modelos de documento etc.)

Categorias de Modelos de Processo


Os modelos de processo, de maneira geral, contemplam

as fases Anlise e Especificao de Requisitos, Projeto, Implementao, Testes e Entrega e Implantao.


O modelo de processo escolhido depende fortemente

das caractersticas do projeto.


Categorias:

Sequencial Incremental Evolutivo

Modelo Sequencial
Organizam o processo em uma sequencia linear de

fases.
O principal modelo desta categoria o modelo em

cascata, a partir do qual diversos outros modelos foram propostos, inclusive a maioria dos modelos incrementais e evolutivos.

Modelo Clssico ou Cascata


Proposto na dcada de 70

Requisitos so estabelecidos para todos os elementos do sistema


As atividades esto organizadas em forma sequencial O trabalho anterior deve estar finalizado, verificado e aprovado antes

de se iniciar a prxima fase. Reflete o que mais usado em outros projetos de engenharia.

Modelo de Processo Cascata

Vantagens do Modelo Cascata


Documentao produzida em cada fase e sua aderncia

a outros modelos de processo de engenharia;


Pode parecer atraente por no exigir nenhuma

sofisticao gerencial;
Torna o processo de desenvolvimento estruturado; Indicado para problemas pequenos e bem definidos,

onde os desenvolvedores conhecem bem o domnio do problema e os requisitos podem ser claramente estabelecidos.

Desvantagens do Modelo Cascata


Falta de flexibilidade em separar o projeto em

etapas distintas

Dificuldades em responder as mudanas de

requisitos solicitadas pelo cliente requisitos esto bem definidos

Este modelo apropriado nas situaes onde os

Alto risco, difcil de gerir


Projetos reais raramente seguem o fluxo sequncial Verso executvel em etapa avanada de

desenvolvimento

Modelo V
Similar ao cascata, mas com planejamento de testes

nas fases de desenvolvimento


Engenharia de Sistemas Teste de Sistemas

Anlise

Teste de Validao
Teste de Integrao Teste de Unidade

Projeto

Codificao

Modelo V
A ligao entre os lados direito e esquerdo do

modelo V implica que, caso sejam encontrados problemas em uma atividade de teste, a correspondente fase do lado esquerdo e suas fases subsequentes podem ser executadas novamente para corrigir ou atenuar esses problemas.
Os modelos sequenciais pressupem que o sistema

e entregue completo, aps a realizao de todas as atividades do desenvolvimento.

Modelo Incremental
Ha muitas situaes em que os requisitos so

razoavelmente bem definidos, mas o tamanho do sistema a ser desenvolvido impossibilita a adoo de um modelo sequencial, sobretudo pela necessidade de disponibilizar rapidamente uma verso para o usurio;
No desenvolvimento incremental, o sistema dividido

em subsistemas ou mdulos, tomando por base a funcionalidade.


A cada ciclo ou iterao, uma verso operacional do

sistema ser produzida e entregue para uso ou avaliao detalhada do cliente.

Entrega Incremental
Modelo Cascata + Prototipagem

Cliente identifica os servios (+ importantes e

importantes) definindo o nmero de incrementos de software e as funcionalidades de cada etapa


Difere da prototipao pois a cada incremento produz

uma verso operacional do software

Entrega Incremental

Entrega Incremental
Vantagens:
Os clientes no precisam esperar at a entrega do

sistema inteiro para se beneficiarem dele O risco de falha geral do projeto menor Partes mais importantes so entregues primeiro e tendem a serem mais testadas

Desvantagens:
Os incrementos devem ser relativamente pequenos

(20 mil linhas de cdigo) podendo ser difcil mapear os requisitos do cliente em tamanho adequado

Mtodos geis (XP: programao em pares e

aprimoramento constante do cdigo)

Evolutivos

Surgem para minimizar os pontos fracos do processo Cascata. Permitem que se trabalhe com um subconjunto de requisitos do produto completo os quais so incrementados, gradualmente e entregues aos clientes. Enquanto modelos incrementais tem por base a entrega de verses operacionais desde o primeiro ciclo, os modelos evolutivos no tem essa preocupao.

Na maioria das vezes, os primeiros ciclos produzem prottipos ou at mesmo apenas modelos. A medida que o desenvolvimento avana e os requisitos vo ficando mais claros e estveis, prottipos vo dando lugar a verses operacionais, at que o sistema completo seja construdo.
Quando o problema no bem definido e ele no pode ser totalmente especificado no incio do desenvolvimento, deve-se optar por um modelo evolutivo.

Prototipao
Possibilita que o desenvolvedor crie um modelo

(prottipo) do software que deve ser construdo

Apropriado quando:
O cliente tem uma viso geral do software mas no

identificou os requisitos de entrada, processamento e sada com detalhes Desenvolvedor no tem certeza da eficincia de um algoritmo, forma de interao homem- mquina

Prottipo serve para identificar os requisitos

Prototipao
Investigatrio ou Exploratrio
Objetivo trabalhar com o cliente para explorar os

requisitos e entregar um sistema final. Implementao inicial e refinamento de verses


Evolucionria
Desenvolve o prottipo e valida os requisitos e,

medida em que novos requisitos so fornecidos.

Prototipao

Prototipao
Desvantagens
O processo no visvel Sistemas so mal estruturados Cliente fora a utilizao do prottipo como produto final

Vantagens
Recomendado para sistemas:
De pequeno e mdio porte (at 500 mil linhas) Com ciclo de vida curto

Modelo Espiral
Modelo evolutivo mais difundido. Novo elemento: Anlise de riscos

Processo representado como uma espiral, tem-se em

cada loop:

Definio dos objetivos Avaliao e reduo de riscos Desenvolvimento e validao Planejamento

No tem fases especficas para especificao e projeto

Reconhecimento explcito dos Riscos

Modelo espiral

Modelo Espiral

O produto resultante do primeiro ciclo pode ser uma especificao do produto ou um estudo de viabilidade. As passadas subsequentes ao longo da espiral podem ser usadas para desenvolver prottipos, chegando progressivamente a verses operacionais do software, ate se obter o produto completo. a abordagem mais realista para o desenvolvimento de software Capacita o desenvolvedor e o cliente a entender e reagir aos riscos em cada etapa evolutiva De cada iterao ao redor da espiral derivam verses mais completas: concepo, desenvolvimento, melhoria, manuteno

Integram gerenciamento de projetos com engenharia


O cliente est sempre envolvido

Outros Modelos

Modelo de Mtodos Formais


Descrio Matemtica Precisa No ambgua Permite verificar propriedades (ex. consistncia, ambiguidade, completude) a base para Documento contratual Documentao do produto Referncia para etapas seguintes

Desenvolvimento Formal de Sistemas


Desvantagens
Necessita de treinamento para aplicar a tcnica

Consome muito tempo (caro)


Dificuldade em especificar formalmente alguns

aspectos do sistema como a interface do usurio

Vantagens
Usado em sistemas crticos em termos de segurana

(equipamentos mdicos, sistemas para avies, foguetes)

Desenvolvimento baseado em Componentes


Baseado em componentes reusveis ou em COTS

(Commercial-off-the-shelf)
Etapas do Processo
Anlise do Componente Modificaes dos requisitos Projeto de sistema com reuso Desenvolvimento e integrao

Exerccios
1.

Sugira e justifique o modelo mais apropriado para o desenvolvimento dos seguintes sistemas:

Um sistema para controlar um antibloqueador de freios em um automvel Um sistema de contabilidade de universidade que substitui um sistema existente Um sistema interativo que permite aos passageiros encontrar o horrio dos trens por terminais nas estaes

2.

Explique porque um sistema de software usado em um ambiente real deve mudar sob pena de tornar-se progressivamente menos til.

Referncias
SOMMERVILLE, Ian, Software Engineering, AddisonWesley , 9th Edition, 2011

PRESSMAN, Roger, Engenharia de Software, Makron Books, 2002

Das könnte Ihnen auch gefallen