Aula Info (8)

33
Processo do Software Grupo de atividades coerentes para especificação, projeto, implementação e teste de sistemas de software.

Transcript of Aula Info (8)

  • Processo do SoftwareGrupo de atividades coerentes para especificao, projeto, implementao e teste de sistemas de software.

  • ObjetivosIntroduzir os processos de modelagem de softwareDescrever alguns modelos de processos e quando eles devem ser usadosDescrever em linhas gerais o processo modelo para os requisitos de engenharia, de desenvolvimento de softare, seu teste e evoluoIndroduzir a tecnologia CASE para o auxlio dos processos de software

  • Tpicos cobertosModelos do processo de softwareIterao entre os processosEspecificao de softwareProjeto e implementao de softwareValidao do softwareEvoluo do softwareProcessos automatizados de desenvolvimento

  • O processo do softwareUm conjunto estruturado de atividades necessrias para desenvolver um sistema de softwareEspecificaoProjetoValidaoEvoluoUm modelo de processo de software uma representao abstrata do processo. Ela apresenta uma descrio do processo de algumas perspectivas particulares

  • Modelos genricos de processos de softwareO modelo cascata (waterfall)Fases separadas e distintas de especificao e desenvolvimentoDesenvolvimento evolucionrio (ou prototipao)Especificao e desenvolvimento so intercaladosModelo de sistema formalUm modelo de sistema matemtico formalmente transformado numa implementaoDesenvolvimento baseado em reusoO sistema construdo a partir de componentes existentes

  • Waterfall model

  • Modelo CascataSistemtico e seqencial

  • Waterfall model phasesAnlise de requisitos e definiesProjeto do sistema e do softwareImplementao e teste de unidadesIntegrao e testes do sistemaManuteno e operaoUma deficincia do modelo cascata a dificuldade em acomodar mudanas depois que o processo se inicia.

  • Anlise e Engenharia de SistemasEstabelecer os requisitos bsicos para todos os sistemas que envolvem o software, como hardware, pessoas e bancos de dados.Envolve a coleta dos requisitos em nvel do sistema, com uma pequena quantidade de projeto e anlise de alto nvel.

  • Analise de Requisitos de SwConcentra a coleta de requisitos no sw.Leva compreenso do domnio da informao, a funo, desempenho e interfaces exigidos.Os requisitos para o sistema e para o sw so documentados e revistos com o cliente.

  • ProjetoEstrutura de dadosArquitetura de swDetalhes procedimentaisCaracterizao da interface avaliado antes de comear a ser implementadoJunto com as etapas anteriores torna-se parte da documentao do sistema

  • CodificaoProjeto traduzido para a linguagem do computador.Se o projeto for executado detalhadamente, a codificao pode ser executada mecanicamente?

  • TestesConcentra-se nos aspectos lgicos internos do sw.Garante que todas as instrues tenham sido testadas.A entrada definida produz os resultados exigidos?Garbage in, garbage out?

  • ManutenoSw embutido nem sempre tem esta parte.Erros encontrados.Mudanas no ambiente externo.Acrscimos funcionais.Desempenho

  • Problemas com a CascataO mais antigo e amplamente usado.Projetos reais raramente seguem o fluxo seqencial que ele prope. Ocorrem iteraes que trazem problemas na aplicao do paradigma. difcil para o cliente declarar todas as exigncias explicitamente. difcil acomodar as incertezas naturais que existem no comeo de muitos projetos.O cliente deve ter pacincia. Uma verso do sw s estar disponvel em um ponto tardio do cronograma. Um erro crasso, pode ser desastroso.S apropriado quando os requisitos so bem conhecidos.

  • Desenvolvimento evolucionrioDesenvolvimento exploratrio O objetivo trabalhar com o cliente e desenvolver um sistema final a partir das especificaes iniciais. Deve iniciar com requisitos bem compreendidos.Jogar fora a prototipaoO objetivo entender os requisitos do sistema. Deve iniciar com requisitos pouco compreendidos.

  • Desenvolvimento evolucionrio

  • PrototipaoColeta e refinamentodos requisitosRefinamento do prottipoEngenharia do produtoAvaliao do prottipopelo clienteConstruodo prottipoProjeto rpidoFimIncio

  • Desenvolvimento evolucionrioProblemasFalta de visibilidade sobre o processo.Sistema geralmente pouco estruturado.Habilidades especiais (ex. em linguagens para uma rpida prototipao) so requeridas.AplicabilidadePara sistemas interativos pequenos ou mdios.Para partes de de grandes sistemas (ex. A interface com o usurio).Para sistemas com pouco tempo de vida.

  • Modelo de desenvolvimento formalBaseado na transformao de uma especificao matemtica atravs de diferentes representaes em um programa executvel.As transformaes preservam a corretude das especificaes, sendo fcil demonstrar que que o programa segue estas ltimas.Baseado na abordagem Cleanroom para o desenvolvimento de software.

  • Modelo de desenvolvimento formal

  • Transformaes formais

  • Desenvolvimento formalProblemasSo necessrias habilidades especiais e treinamento para aplicar a tcnica.Dificuldade para formalizar especificamente alguns aspectos do sistema, como a interface com o usurio.AplicabilidadeSistemas crticos, especialmente aqueles em que uma verso segura deve ser feita antes do sistema entrar em operao.

  • Desenvolvimento orientado a reutilizaoBaseado na sistemtica do reuse, onde os sistemas so integrados a partir de componentes existentes ou sistemas COTS (Commercial-off-the-shelf).Estgios do processoAnlise dos componentesModificao dos requisitosProjeto do sistema com reutilizaoDesenvolvimento e integraoEsta abordagem est se tornando mais importante, porm ainda h pouca experincia com ela.

  • Reuse-oriented development

  • Processo de iteraoOs requisitos do sistema sempre evoluem ao longo do projeto, ento o processo de iterao dos estgios anteriores retrabalhado e vira parte do processo para grandes sistemas.Iterao pode ser aplicada a qualquer modelo genrico de ciclo de vida.Duas abordagens semelhantes:Desenvolvimento incrementalDesenvolvimento espiral

  • Desenvolvimento incrementalAo invs de entreagar o sistema uma nica vez, o desenvolvimento e a entrega so partidos em incrementos, que fornecem parte das funcionalidades requeridas.Os requisitos do usurios so dispostos hierarquicamente, e os requisitos de prioridades mais altas so includos nas primeiras entregas.Quando o desenvolvimento de um incremento iniciado, os requisitos so congelados de forma que os requisitos para incrementos posteriores possam continuar a evoluir.

  • Incremental development

  • Vantagens do desenvolvimento incrementalValor ao cliente tende a ser entregue a cada incremento, ento a funcionalidade dos sistema tende a ser avaliada mais cedo.Os primeiros incrementos funcionam como um prottipo para ajudar a esclarecer os requisitos para os prximos incrementos.Baixo risco de o projeto falhar completamente.As tarefas de mais alta prioridade, tendem a receber mais testes.

  • Extreme programming (XP)Nova abordagem de desenvolvimento baseada no desenvolvimento e entrega de pequenos incrementos de funcionalidade.Funciona com melhorias contnuas no cdigo, envolvimento do usurio no time de desenvolvimento e programao em pares.Os testes aparecem antes da codificao.

  • Desenvolvimento em espiralO Processo representado como um espiral ao invs de uma sequncia de atividades com voltas para trs.Cada volta no espiral representa uma fase no processo. No h fases fixas como especificao ou projeto. As voltas no espiral so escolhidas dependendo do que requisitadoOs riscos so explicitamente avaliados e resolvidos durante todo o processo

  • Spiral model of the software process

  • Setores do modelo espiralDefinio dos objetivosOs objetivos especficos para a fase so identificados.Avaliao e reduo de riscosOs riscos so avaliados e as atividades organizadas para reduzir os riscos chave.Desenvolvimento e validaoUm modelo de desenvolvimento para o sistema escolhido, que pode ser qualquer um dos modelos genricos.PlanejamentoO projeto revisto e a prxima fase da espiral planejada.