UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 03 PROFª BRUNO CALEGARO Santa Maria, 13 de Setembro de 2013.
Revisão aula anterior Processo de software Um modelo de processo de software consiste em uma representação simplificada de um processo de software, apresentada a partir de uma perspectiva específica Ciclo de Vida Modelo cascata Sequência linear Pouco flexível quanto a mudanças no projeto Modelo de processo incremental Executa uma sequência linear e concorrente ao mesmo tempo Várias partes do sistema são desenvolvidas em paralelo e integradas quando completas Modelo de processo evolucionário Prototipagem: prototipação exploratória Espiral: ênfase na análise de risco e prototipagem
Desenvolvimento em Espiral Modelo Espiral proposto por Boehm (1988) O processo é representado como um espiral Cada loop no espiral representa uma fase do processo de software Não há fases fixas como especificação ou projeto os loops na espiral são escolhidos dependendo do que é necessário Os riscos são explicitamente avaliados e resolvidos ao longo do processo
Desenvolvimento em Espiral Riscos são circunstancias adversas que podem atrapalhar o processo de desenvolvimento e qualidade do produto a ser desenvolvido O problema a ser resolvido não está totalmente entendido A realidade pode mudar enquanto o sistema está sendo desenvolvido A própria solução adotada pode ter algum efeito colateral desconhecido A preocupação esta centrada mais na qualidade e funcionalidade do que se produz Dividi o espiral em quatro quadrantes Definição de objetivos Avaliação e redução dos riscos Desenvolvimento e Validação Planejamento
Desenvolvimento em Espiral
Desenvolvimento Formal de Sistemas Possui alguns pontos em comum com o modelo de cascata Mas é baseado na transformação matemática formal de uma especificação de sistema em um programa executável Correção de programas Definição de Requisitos Especificação Formal Transformação Formal Integração e testes de sistema
Desenvolvimento Formal de Sistemas A especificação de requisitos de software é redefinida em uma especificação formal detalhada expressa em uma notação matemática Os processos desenvolvimento de projeto, implementação e teste de unidade são substituídos por um processo de desenvolvimento transformacional A especificação inicial é refinada por meio de uma séria de transformações até se tornar um programa Definição de Requisitos Especificação Formal Transformação Formal Integração e testes de sistema
Desenvolvimento Formal de Sistemas Transformações formais: Cada etapa acrescenta mais detalhes, mas ainda é matematicamente correta A especificação formal será convertida em um programa equivalente
Desenvolvimento Formal de Sistemas Problemas Requerem perícia especializada e treinamento para aplicar a técnica Dificuldade de especificar formalmente alguns aspectos do sistema Aplicabilidade Cleanroom Criado pela IBM em 1987 Se apoia no desenvolvimento incremental Em que cada estágio é desenvolvido e sua correção é mostrada de uma maneira formal Sistema críticos Especialmente os que tenham rigorosas exigências de segurança e confiança A abordagem formal permite provar que o sistema cumpre os requisitos do programa
Desenvolvimento orientado a reuso Na maioria dos projetos de software já ocorre de modo informal algum reuso de software Existem uma ampla base de componentes de software que podem ser reutilizados Exemplos Módulos de software convencionais Classes orientada a objetos Pacotes de classes (Bibliotecas) Essa abordagem é baseada num reuso sistemático onde os programas são integrados com componentes já existentes ou COTS (Commercial-off-the-shelf)
Desenvolvimento orientado a reuso Estágios: Análise de componentes Modificação de Requisitos Projeto de sistema com reuso Desenvolvimento e Integração Especificação de Requisitos Análise de Componentes Modificação de Requisitos Projeto de sistema com reuso Desenvolvimento e Integração Validação de Sistema
Desenvolvimento orientado a reuso Problemas As adequações nos requisitos são inevitáveis e pode resultar em um sistema que não atenda as necessidades do usuário Novas versões dos componentes reutilizáveis podem não estar sob controle da equipe de desenvolvimento Vantagens Reduz a quantidade de software a ser desenvolvida e assim reduz os custos e risco Entrega rápida de software (geralmente...) Devido a natureza das linguagens orientadas a objetos, essa abordagem tem se popularizado
Referências Engenharia de Software Uma abordagem profissional. 7º Edição. Pressman, R. S. Editora Bookman. Capítulo 2 Engenharia de Software 6º Edição. Sommerville, I. Editora Persson. Capítulo 1,3