CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula 12 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 1 AGENDA Projeto de software Arquitetura Reuso Validação de sistemas críticos Bibliografia 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 2 Projeto de software - Arquitetura “A organização fundamental de um sistema, materializada em seus componentes, nos relacionamentos entre si e com o ambiente, e nos princípios que dirigem seu desenho e evolução” Padrão : IEEE std. 1471-2000 IEEE Recommended Practice for Architectural description of software-Intensive systems, in [IEEE03]. O Modelo de solução procura documentar a arquitetura de um sistema ou produto, descrevendo-a em visões consistentes. O modelo de solução é descrição arquitetônica primária 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 3 Projeto de software - Arquitetura Visões são instancias de pontos de vista, onde um ponto de vista existe para descrever a arquitetura na perspectiva de um conjunto de stakeholders. Visões são uma representação de um sistema inteiro segundo a perspectiva de um conjunto corrlato de preocupações. Cada visão expressa a arquitetura do sistema segundo um ponto de vista, cada ponto de vista determina convenções para criação, representação e analise da visão. 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 4 Projeto de software - Arquitetura Visões principais : Visão de Uso - produzida pelos desenhistas de interface com o usuário, descreve o desenho externo do produto, ou seja estrutura e comportamento externamente visíveis. Visão lógica – Feita por desenhistas lógicos, descreve o desenho interno, principais aspectos de organização, estrutura de colaboração das classes 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 5 Projeto de software - Arquitetura Visão de testes - Produzida pelos desenhistas, descreve o comportamento dos testes necessários para verificar a visão de uso desenhada 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 6 Projeto de software - Arquitetura Outras visões – dependendo do tipo de sistema a ser produzido outras visões podem ser necessárias : Visão de implementação - modela a estrutura logica exatamente como implementada, ou seja um retrato do código Visão de dados – estrutura fisíca dos dados persistentes acessíveis ao sistema. Visão de componentes – modela a estrutura física estática do sistema usando diagrama de componentes. Visão de implantação – modela a estrutura dinamica através de dispositivos, processos, usando diagramas de implantação 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 7 Projeto de software - reuso Reuso em projetos trata do reaproveitamento de todos os itens do patrimonio de software de uma organização, de forma estratégica a considerar a organização como um todo e no longo prazo. Os itens reutilizáveis abragem não só código, desenho e testes, como tambem requisitos, especificações planos e outros artefatos. O reaproveitamento de todos os artefatos supera o reaproveitamento de itens isolados quanto a produtividade. 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 8 Projeto de software - reuso Custo de desenvolvimento de itens reutilizaveis custa o triplo de um item normal, por isso o planejamento para reuso é essencial para justificar o investimento necessário. Um plano de reutilização estratégica pode incluir: Metas Responsáveis e equipes Procedimentos de partida Ferramentas Patrimonio existente Beneficios potenciais limitações 29/06/2017 Padrões Estratégias de comunicação Estratégia de evolução e crescimento. Métricas Suporte ao uso Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 9 Projeto de software - reuso Estratégia deve incluir: Aquisição de intens de fontes externas. Avaliação de prós e contras de desenvolvimento interno. Itens devem ter proprietarios responsaveis por manutenção e evolução. Gestão de configuração e alteração. Publicação dos itens em repositorio e disponibilidade comunicada 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 10 Projeto de software - reuso Gestão de porfólio – Coleção de todos os projetos em andamento, concluidos e propostas de projetos. Muito util no reuso de projetos, deve considerar as interdependencias entre projetos, a concorrecia por recursos escassos, como pessoal especializado, tecnologia e arquitetura utilizados e finalmente a possibilidade de reutilização. 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 11 Projeto de software - reuso Problemas com o reuso Aumento nos custos de manutenção Falta de ferramentas de apoio Sindrome do 'não-foi-inventado-aqui' Manutenção de uma biblioteca de componentes Encontrar e adaptar componentes reutilizáveis Padrões de projeto Forma de reusar conhecimento abstrato sobre um problema e sua solução. Descrição do problema e a essência de sua solução Deve ser abstrato o suficiente para ser reutilizado em diferentes casos Frequentemente dependem de característica de objeto, tal como herança e polimorfismo 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 12 Projeto de software - reuso Exercicios: 1.Leia o material de apoio e descreva os pontos de vista de cada uma das principais visões de arquitetura de software. 2.Explique cada um dos cinco problemas com reuso. 3.Explique o plano de liberações no modelo de solução (figura 18.1) 4.Crie um plano de liberações Tabular com 3 iterações, considerando emissão de relatórios de notas fiscais: 1. Diário 2. Semanal 3. Mensal. 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 13 Validação de Sistemas criticos Define-se sistema crítico, como um software em que suas características causam riscos inerentes a danos físicos, pessoal e financeiro. Atualmente, são três os tipos de sistemas críticos, tais como: Sistema crítico de segurança: sua falha pode proceder em prejuízos, danos ambientais e perda da vida humana. Um exemplo de sistema crítico de segurança é um software de controle de uma fábrica de fogos de artifício; Sistema crítico de missão: sua falha pode ocasionar problema em alguma atividade conduzida a metas. Um exemplo de sistema crítico de missão é um software de navegação para uma aeronave Sistema crítico de negócio: sua falha pode resultar em custos elevados para a empresa que trabalha com o software. Um exemplo de sistema crítico de negócio é um software contábil de clientes bancários. 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 14 Validação de Sistemas criticos Técnicas de Validação Técnicas Estáticas Revisão de projeto, inspeção de código Provas e argumentos matemáticos Técnicas Teste estatístico Teste baseado em cenário Verificação (checking) de run-time Validação de Processo Processos de desenvolvimento que minimizem a probabilidade de erros que possam comprometer a confiabilidade do sistema. 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 15 Validação de Sistemas criticos Técnicas de Validação Técnicas de Validação Dinâmicas Testes - analisar o sistema fora de seu ambiente operacional Verificação de run-time - analisar se o sistema está operando dentro de um “envelope” de confiabilidade 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 16 Validação de Sistemas criticos Validação Estática para Segurança Demonstração da segurança através de testes é difícil (deve mostrar o que o sistema faz em todas as situações) Revisões/inspeções devem ser suplementadas com foco em verificar que situações inseguras não acontecem. Pontos importantes Sistemas com aspectos de segurança devem ser desenvolvidos de maneira mais simples possível, utilizando técnicas ‘seguras’de desenvolvimento. Provas de segurança são mais simples do que provas de consistência ou correção. 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 17 Validação de Sistemas criticos Validação de Confiabilidade Exercitar o programa para verificar se atingiu o nível requerido de confiabilidade Não é o mesmo que processo de teste para defeitos Testes estatísticos devem ser usados, baseados em amostra real/simulada de uso Processo de Validação Estabelecer um ‘perfil operacional’ para o sistema Construir dados de teste que reflitam o perfil operacional Testar o sistema e observar o número de falhas e os tempos de ocorrência Computar a confiabilidade após número significativo de falhas terem sido observadas 29/06/2017 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 18 Bibliografia 29/06/2017 BIBLIOGRAFIA BÁSICA ENGHOLM JUNIOR, Helio. Engenharia de software na prática. 1ª Edição. São Paulo: Novatec, 2010. PAULA FILHO, Wilson de Pádua. Engenharia de Software. 3ª Edição. Rio de Janeiro: LTC, 2009. SCHACH, STEPHEN R. Engenharia de Software: Os paradigmas Clássico e Orientado a Objetos. 7ª EdIção. São Paulo: Mcgraw Hill Interamericana, 2009. BIBLIOGRAFIA COMPLEMENTAR KOSCIANSKI, André; SOARES, Michel dos Santos. Qualidade de software: Aprenda as Metodologias e Técnicas mais modernas para o desenvolvimento. 2ª Edição. São Paulo: Novatec, 2007. NOGUEIRA, Marcelo. Engenharia de Software: Um Framework para a Gestão de Riscos em Projetos de Software. 1ª Edição. Rio de Janeiro: Ciência Moderna, 2009. PRESSMAN, Roger S. Engenharia de Software. 6ª Edição. São Paulo: Mcgraw Hill, 2006. SOMMERVILLE, Ian. Engenharia de Software. 8º Edição. São Paulo: Pearson Education, 2007. TONSIG. Sérgio Luiz. Engenharia de Software: Análise e Projeto de Sistemas. 2ª Edição. Rio de Janeiro: Ciência Moderna, 2008. Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 19