Академический Документы
Профессиональный Документы
Культура Документы
Engenharia 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
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
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
Engenharia de Software
Modelo Incremental
Engenharia de Software
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
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
Engenharia de Software
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
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
Modelo Evolutivo
Engenharia de Software
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
Engenharia de Software
Modelo de Prototipao
Engenharia de Software
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
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
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
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
Engenharia de Software
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
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
Modelo Espiral
11
Engenharia de Software
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
No
12
Engenharia de Software
Engenharia de Software
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
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
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
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
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
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
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
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
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
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.
Engenharia de Software
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
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
19
Engenharia de Software
Engenharia de Software
'
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
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
21
Engenharia de Software
Engenharia de Software
22
Engenharia de Software
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
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
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
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
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
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
Engenharia de Software
26
Engenharia de Software
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
27
Engenharia de Software
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
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
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
29
Engenharia de Software
Engenharia de Software
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
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
31
Engenharia de Software
Engenharia de Software
32
Engenharia de Software
(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
33
Engenharia de Software
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
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