Вы находитесь на странице: 1из 34

Engenharia de Software

Tema da Aula Modelos de Ciclos de Vida de Software 2 Outros Modelos

Prof. Cristiano R R Portella


portella@widesoft.com.br

Engenharia de Software

Ciclos de Vida de Software

As duas primeiras dcadas da ES foram dominadas pelo paradigma do desenvolvimento linear (engenharia progressiva do produto de software). Em seguida aparece o modelo evolucionrio (ou evolutivo) que se baseia num desenvolvimento de um produto inicial que vai sendo submetido a avaliaes do usurio e sendo simultaneamente refinado atravs de sucessivas verses, at que alcance a funcionalidade desejada.

Engenharia de Software

Ciclos de Vida de Software

Assim, atividades de desenvolvimento e de validao so realizadas paralelamente, com um rpido feedback entre elas. O modelo evolucionrio requer iteratividade (repetir fases do processo) e interatividade (trabalho conjunto entre usurio e desenvolvedor). Inicialmente o modelo evolucionrio previa ciclos lineares (paradigma do desenvolvimento linear no modelo incremental); depois o modelo ganhou a forma de espiral.

Engenharia de Software

Ciclos de Vida de Software Mudana de Paradigma

Modelo cascata (desenv. Linear puro). Paradigma Desenvolvi/o linear Modelo incremental (linear que cada etapa, porm com iteratividade e desenvolvimento/teste durante todo o processo) Modelo Evolutivo (ou exploratrio) Modelo por Prototipao

Paradigma desenv. evolutivo

Engenharia de Software

Ciclos de Vida de Software

Modelo Incremental

Engenharia de Software

Ciclos de Vida de Software Modelo Incremental

Criado pela European Space Agency em 1991, uma adaptao da forma de pensar o desenvolvimento de software como um desenvolvimento linear, pois trata-se de um arranjo de vrios pequenos ciclos em cascata. A diferena que cada verso do produto de software tem uma nova funcionalidade (incremento), definida no incio desse ciclo. Depois de desenvolvida cada verso, ser entregue ao usurio para testes. Cada verso implementa uma nova funcionalidade (incremento).

Engenharia de Software

Ciclos de Vida de Software Modelo Incremental

1. Identificar (grosso modo) requisitos e conceitos do novo sistema. 2. Desenvolver um projeto do produto (ser o projeto bsico). 3. Construir o produto. A primeira verso bsica e ser o ncleo do produto (funcionalidade bsica). 4. Essa verso entregue para o usurio testar. 5. A partir dessa verso, o usurio vai detectar a prxima funcionalidade necessria no sistema. O ciclo volta para a fase 1, porm o projeto agora ir se restringir apenas nova funcionalidade.

Engenharia de Software

Ciclos de Vida de Software Modelo Incremental

Engenharia de Software

Ciclos de Vida de Software Modelo Incremental

Problemas: 1. Parte da falsa premissa de que os requisitos iniciais sero mantidos (primeira verso ncleo do produto). Pela prpria experincia do usurio eles iro mudar (alm de mudanas na organizao, no processo, no produto, na tecnologia etc). 2. Em razo das mudanas de requisitos (item 1), o escopo total do projeto s conhecido aos poucos, portanto as estimativas de prazo/custo estaro erradas.

Engenharia de Software

Ciclos de Vida de Software Modelo Incremental

Problemas: 3. Aps o primeiro ciclo, o usurio dever descobrir sozinho os requisitos do prximo incremento. Na prtica ele precisa de suporte do desenvolvedor para formular esses requisitos.

Engenharia de Software

Ciclos de Vida de Software

Modelo Evolutivo

Engenharia de Software

Ciclos de Vida de Software Modelo Evolutivo

Modelo Evolutivo ou Desenvolvimento Exploratrio, tem como objetivo promover um desenvolvimento conjunto (desenvolvedor trabalhando junto com o usurio) a fim de descobrir os requisitos de maneira incremental. Diferente do desenvolvimento incremental, esse modelo volta sempre fase de definio de requisitos, num movimento exploratrio de conceitos do produto e necessidades do usurio.

Engenharia de Software

Ciclos de Vida de Software Modelo Evolutivo (Exploratrio)

Engenharia de Software

Ciclos de Vida de Software

Modelo de Prototipao

Engenharia de Software

Ciclos de Vida de Software Prototipao

Modelo de Prototipao, tambm chamado de Prottipo Descartvel, tem como objetivo obter uma melhor definio dos requisitos do sistema. Todavia, diferente do modelo Incremental e Evolutivo, que fazem essa explorao enquanto constroem o produto final, a prototipao exploratria usa os prottipos apenas para descobrir a funcionalidade desejada e os riscos implcitos. Depois ele descartado e inicia-se a construo do produto final.

Engenharia de Software

Ciclos de Vida de Software Prototipao

Como o prottipo no ser usado como produto final, pode-se (deve-se) omitir aspectos de esttica, performance, segurana etc assim como deve-se trabalha com ferramentas adequadas rpida gerao de cdigo. O prottipo no precisa conter toda a funcionalidade do produto final; apenas os aspectos sobre os quais havia alto nvel de incerteza, como por exemplo detalhes das entradas ou sadas do sistema, a exatido de um algoritmo ou a correta aplicao de uma nova tecnologia.

Engenharia de Software

Ciclos de Vida de Software Prototipao

Vendo o que o prottipo apresenta, o usurio descobre novas necessidades (vendo o que ele tem, descobre o que falta). O desenvolvimento comea com uma verso preliminar, aps rpida interao desenvolvedorusurio.

Aps o desenvolvimento dado aos usurios a oportunidade de brincar com o prottipo. Baseado nessa experincia o usurio opina sobre o que est certo, o que est errado, o que est faltando e o que est sobrando.

Engenharia de Software

Ciclos de Vida de Software Prototipao

Aps essa interao, o prottipo modificado e novamente entregue ao usurio. Esse ciclo se repete at que seja possvel definir os requisitos do produto a ser desenvolvido.

Engenharia de Software

Ciclos de Vida de Software Prototipao

Engenharia de Software

Ciclos de Vida de Software Prototipao

Problemas: A prototipao (e em geral todos os modelos evolucionrios) mais efetiva quanto a desenvolver produtos que atendem melhor os requisitos do usurio, em relao ao modelo em cascata. Todavia esses modelos criam um processo no gerencivel do ponto de vista do prazo (quando a prototipao acaba ?, qual a viabilidade do projeto todo ?)

10

Engenharia de Software

Ciclos de Vida de Software Prototipao

Problemas: Tambm existe um custo extra, pelo perodo de prototipao, que s se justifica se o nvel de incerteza quanto aos requisitos muito alto. O usurio geralmente quer usar o prottipo como produto (at que o produto seja desenvolvido). Se aceito, aparecero problemas como: fazer pequenas adaptaes, questes de segurana, performance etc.

Engenharia de Software

Ciclos de Vida de Software

Modelo Espiral

11

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

O modelo espiral (Boehm, 86) comea uma nova tendncia na modelagem, atravs de ciclos repetitivos em espiral. A espiral inicia de um centro onde o movimento ainda pouco acentuado (o produto est em sua verso inicial; apenas um cerne do que ser o prottipo final). Com o passar dos ciclos, o movimento fica maior em cada quadrante e isso simboliza bem o fato de que, medida que a espiral cresce, o trabalho num determinado quadrante aumenta.

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral


modelo espiral tradicional, existem quatro quadrantes, onde se executa prioritariamente as seguintes tarefas:
1o quadrante 2o quadrante 3o quadrante 4o quadrante Planejar Analisar riscos Construir Avaliar

No

12

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

O modelo mantm as caractersticas positivas de documento associado a fases do ciclo (cascata) com fases sobrepostas (incremental) e uso de prototipao (aproveitando o prottipo para produto final). Parte da premissa de que a forma de desenvolvimento de software no pode ser completamente determinada de antemo (centro da espiral). Assim, atravs de fases sucessivas e algumas atividades-chave (anlise de risco, prototipar, simular, validar etc) chegamos a um projeto detalhado de software e a construo simultnea do produto final.

13

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

Boehm caracteriza seu modelo como um gerador de modelo de processo. Cada ciclo do modelo em espiral possui quatro momentos principais, com as seguintes atividades: 1o) Elaborar os objetivos do projeto, restries e alternativas para as entidades de software. 2o) Avaliar as alternativas com relao aos objetivos e restries e identificar as principais fontes de risco. Se necessrio, criar prottipo para simular o software real.

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

3o) Elaborar a definio das entidades de software atravs de um projeto. No ltimo ciclo, quando o projeto detalhado estiver pronto, ele ser construdo, testado e implantado, numa srie de atividades iguais ao modelo em cascata. 4o) Planejar o prximo ciclo da espiral (objetivo, atividades, ferramentas etc).

14

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

Anlise de Riscos: O modelo espiral trouxe uma nfase Anlise de Riscos no desenvolvimento de software (gerncia segura). Um risco um problema potencial em um sistema, ou a probabilidade de ocorrer um evento perigoso ou indesejado em determinado momento ou circunstncia. Atravs da Anlise de Riscos, podemos escolher caminhos com as melhores chances de sucesso, dentro de prazos razoveis.

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

Anlise de Riscos: 1o) Probabilidade da ocorrncia de um evento. 2o) Conseqente perda estimada (exposio ao risco) 1o) Probabilidade p de que um determinado evento ocorra (1=< p >= 0) Se existir probabilidade do evento ocorrer (> 0), ser um evento aleatrio e deve ser estimado.

15

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

Probabilidade de um evento ocorrer pr(E):


pr ( E ) = no _ de _ eventos _ favorveis no _ de _ eventos _ possveis

Por exemplo, o rob Sojourner (misso Nasa em Marte) estava exposto ao risco do congelamento de um sensor de impacto (temperatura ambiente de 58C) e caso isso ocorresse, o impacto poderia danificar esse sensor. Nesse caso, equipes de Terra teriam que modificar o cdigo para que o programa executasse sem esse sensor.

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

No de falhas em instrues de comando, em razo da perda do sensor pr(E) = ________________________ No total de instrues de comando que necessitam de entrada do sensor pr(E) = 6.552 / 18.820 = 0,35

16

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

Assumindo que uma falha no mdulo de comando resulte uma perda de $ 45.000 (custo de homens/ms necessrios para modificar o mdulo de comando de forma que ele volte a funcionar sem o sensor quebrado .. Exposio ao Risco Er = (0,35 * 45.000)/10 = 1.575 O coeficiente 1.575 indica risco excessivo ou pode ser bancado ?

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

Se for risco excessivo, o que precisar ser feito no projeto para eliminar esse risco ?
Reforar o sensor Colocar sensor reserva Proteger o sensor Mudar projeto do sensor Criar mdulo de software flexibilizado para executar sem falhas, com e sem o sinal do sensor. etc

17

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral

Assim, o modelo em espiral preconiza o desenvolvimento de software atravs da avaliao de riscos obtidos atravs de sucessivas prototipagens (e/ou simulaes e benchmarking). Desvantagem: Aumento de prazo

custos no projeto.

Justificativa para isso:


Complexidade do projeto Incerteza nos requisitos

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral Atualizado

O modelo em espiral tem uma verso atualizada, com as seguintes alteraes: 1. Passou de 4 para 6 quadrantes:
Solicitao do cliente Planejamento Anlise de risco Modelagem Construo, teste, instalao e suporte para o cliente testar Avaliao do cliente

18

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral Atualizado

Outra alterao do modelo espiral atualizado em relao ao tradicional a diviso do curso do desenvolvimento (curva) em 4 tempos (a espiral est dividia em 4 tempos, que definem quatro objetivos diferentes para o trabalho), que so:
Projeto de concepo de desenvolvimento Projeto de desenvolvimento do novo produto Projeto de melhoria do produto Projeto de manuteno do produto

Como cada fase tem um objetivo diferente, gera um produto diferente no seu trmino (vide figura a seguir).

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral Atualizado

19

Engenharia de Software

Ciclos de Vida de Software

Modelo Espiral para Desenvolvimento Baseado em Componentes

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral e Componentes

O desenvolvimento baseado em componentes, uma conseqncia da adoo da Orientao a Objeto.

'

Sistemas baseados em componentes COTS (Commercial Systems). (vide desenvolvimento baseado em COTS e Mtricas COTS) Off-The-Shelf de prateleira) reusveis em larga escala ou CBS (COTS Based

20

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral e Componentes

Trata-se de uma variao do modelo de desenvolvimento em espiral atualizado, onde as fases 4 e 5 (modelagem e construo-testeinstalao-suporte para teste) tem duas possveis formas de desenvolvimento: 1. Identificar componentes:
Identificar componentes candidatos (produtos de software que tem a funcionalidade requerida) Procurar o componente (bibliotecas, outros projetos, mercado, internet etc)

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral e Componentes

2. Obter e disponibilizar componentes:


Caso no existam componentes prontos, a fase ser desenvolvida como no modelo espiral adaptado (neste ciclo da espiral), com a construo do componente necessrio. Se existirem componentes, eles sero recuperados e catalogados na biblioteca do projeto. Em seguida sero aplicados na construo do produto, encerrando essa fase. O ciclo continua na fase de avaliao do cliente).

21

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral e Componentes

Engenharia de Software

Ciclos de Vida de Software

Modelo Espiral WIN-WIN

22

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral WIN-WIN

O dilogo usurio-desenvolvedor tem caractersticas de negociao, onde o usurio quer a mxima funcionalidade e o desenvolvedor deve lembra-lo sobre prazo/custo/performance decorrentes do tamanho do projeto (existem muitas outras situaes de negociao entre interesses do usurio e restries do desenvolvedor). A melhor negociao (para a organizao) aquela dirigida para resultados Ganha-Ganha, onde o cliente ganha por obter um produto que satisfaa a maioria de suas necessidades e o desenvolvedor possa trabalhar com oramentos e prazos realistas.

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral WIN-WIN

O modelo Espiral Win-Win (Boehm, 98) define um conjunto de atividades de negociao que se iniciam a cada ciclo da espiral. Essas atividades so assim definidas: 1. Identificar os interessados (*) na prxima rodada de negociaes. (*) Interessados: pessoas da organizao que tm interesse no sucesso do sistema, ou sero criticadas se ele falhar.

23

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral WIN-WIN

2. Determinar as condies favorveis (de ganho) para esses interessados. 3a.Negociar as solicitaes e restries e, ao final, reconciliar as opes dentro de uma situao ganha-ganha para todos os envolvidos (todos os interessados e toda a equipe de projeto). 3b.Estabelecer os objetivos negociados, as restries e as alternativas como metas para o prximo ciclo de desenvolvimento do produto. 4. Avaliar riscos e alternativas.

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral WIN-WIN

5. Definir qual ser o prximo incremento do sistema (prximo nvel do produto e do processo). 6. Validar as definies ou apurar incorrees. 7. Revisar as eventuais comprometimento. incorrees e obter

24

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral WIN-WIN

O modelo Win-Win ainda acrescenta 3 milestones de processo chamados pontos-ancora, cuja finalidade ajudar a encerrar um ciclo na espiral. Esses 3 pontos representam vises diferentes do progresso como se fosse um corte transversal na espiral. 1. Objetivo do Ciclo de Vida (LCO)- Define um conjunto de objetivos para cada atividade principal do ciclo de vida.
Por exemplo, cjto. de objetivos para serem alcanados com uma definio de alto nvel dos requisitos do produto de software.

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral WIN-WIN

2. Arquitetura do Ciclo de Vida (LCA) Estabelece objetivos que precisam ser realizados no projeto de arquitetura.
Por exemplo, estabelecer como objetivo que no projeto de arquitetura foi analisada a possibilidade da aplicao de componentes reutilizveis e considerados seus impactos sobre a arquitetura do produto.

3. Conjunto de Objetivos relacionados com a preparao do software para a instalao, distribuio e suporte.

25

Engenharia de Software

Ciclos de Vida de Software Modelo Espiral WIN-WIN

Engenharia de Software

Ciclos de Vida de Software

Modelo RAD Rapid Application Development

26

Engenharia de Software

Ciclos de Vida de Software Modelo RAD

Segue o padro incremental, porm enfatiza um desenvolvimento rpido (geralmente 60 a 90 dias). Trata-se de uma adaptao do modelo linearseqencial (cascata) no qual a velocidade obtida pela aplicao de componentes reutilizveis (COTS) e mltiplas equipes de desenvolvimento. Adequado para casos em que os requisitos e escopo esto bem definidos. Fases: Inicialmente o projeto dividido em sub-projetos. Todos os sub-projetos que podem iniciar juntos so designados para equipes diferentes.

Engenharia de Software

Ciclos de Vida de Software Modelo RAD

Cada sub-projeto executar as seguintes fases: 1. Modelagem de Negcio:


Modelar o fluxo da informao fluindo atravs da organizao (negcio), a fim de responder as seguintes questes: Que informaes dirigem o processo de negcio ? Que informaes so geradas ? Quem (rea/processo) gera as informaes ? Para onde a informao vai ?

27

Engenharia de Software

Ciclos de Vida de Software Modelo RAD

2. Modelagem de Dados: O fluxo definido no item 1 agora transformado num conjunto de objetos de dados. 3. Modelagem do Processo:
Analisa as transformaes nos objetos de dados, atravs de adio, modificao, excluso ou recuperao de dados, a fim de implementar uma funcionalidade de negcio.

4. Gerao da Aplicao:
O modelo RAD pressupe o uso de tcnicas L4G (por exemplo a gerao automtica de cdigo)

Engenharia de Software

Ciclos de Vida de Software Modelo RAD

5. Testar e concluir o desenvolvimento. Em seguida a equipe dissolvida para iniciar outro sub-projeto ou mesmo reintegrar-se em equipes que esto com o trabalho em desenvolvimento. L4G Tcnicas de linguagens de Quarta Gerao: Linguagens no-procedurais (definir o que e no como). Linguagens de query para manipulao de bases, gerao de relatrios e consultas, telas, manipulao de dados e gerao de cdigo.

28

Engenharia de Software

Ciclos de Vida de Software Modelo RAD

Desvantagens: Para grandes projetos, precisa de um nmero maior de pessoas. O produto tem que ser apto a ser modularizado (sub-projetos) e permitir a aplicao de componentes reutilizveis. No adequado a projetos de alto risco ou com grande interao com softwares j existentes.

Engenharia de Software

Ciclos de Vida de Software Modelo RAD

29

Engenharia de Software

Ciclos de Vida de Software

Modelo RUP RATIONAL UNIFIED PROCESSING

Engenharia de Software

Ciclos de Vida de Software Modelo RUP

Desenvolvimento de software a partir de um framework genrico, que pode ser especializado para diferentes aplicaes, organizaes, nveis de competncia e tamanho de projetos.

' ' ' ' '

Caractersticas: Baseado em componentes reutilizveis Usa UML para modelar o produto Dirigido a casos de uso (Use Case) Centrado na arquitetura Iterativo e Incremental

30

Engenharia de Software

Ciclos de Vida de Software Modelo RUP

Recomenda o uso de Use Cases para capturar a funcionalidade do produto. Um modelo de Casos de Uso formado pelo conjunto de diagramas de Caso de Uso. Vantagem: est dirigido a cada usurio (ator). A arquitetura de software deve contemplar seus aspectos esttico e dinmico.

Engenharia de Software

Ciclos de Vida de Software Modelo RUP

31

Engenharia de Software

Ciclos de Vida de Software Modelo RUP

Engenharia de Software

Ciclos de Vida de Software

Outros Modelos de Ciclo de Vida

32

Engenharia de Software

Ciclos de Vida de Software Modelo de Desenvolvimento Concorrente

(Davis e Sitaran-94)

Em todas as fases do projeto existem atividades que podem ser desenvolvidas em paralelo (de forma concorrente). Esse modelo adequado para projetos com software e hardware ou ainda cliente/servidor.

Engenharia de Software

Ciclos de Vida de Software Modelo para Embedded Software (DoD)

33

Engenharia de Software

Ciclos de Vida de Software Modelo Sincronizar e Estabilizar

Modelo Sincronizar e Estabilizar -Microsoft Modelo incremental com prototipao rpida e testes de regresso automtica (Cusimano e Selby-97). medida em que o projeto progride, os incrementos de software so periodicamente estabilizados (tirar defeitos graves. Microsoft: cada desenvolvedor tem um Build dirio (empreitada), indicando o incremento de software a ser desenvolvido.

Engenharia de Software

Ciclos de Vida de Software Modelo Sincronizar e Estabilizar

Fases: 1. Planejar:
Viso, especificao (incremento). e cronograma do projeto

2. Projetar e Construir:
Com prototipao rpida. Depois desenvolver o produto definitivo.

3. Estabilizar:
Testes internos (na empresa) e externo (sites Beta).

34

Вам также может понравиться