19
25/04/22 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula 12

15/1/2014 Professor Leomir J. Borba- [email protected] – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

Embed Size (px)

Citation preview

Page 1: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 1

CIÊNCIA DA COMPUTAÇÃO

ENGENHARIA DE SOFTWARE

Aula 12

Page 2: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 2

Projeto de software ArquiteturaReusoValidação de sistemas críticos

Bibliografia

AGENDA

Page 3: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 3

“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

Projeto de software - Arquitetura

Page 4: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 4

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.

Projeto de software - Arquitetura

Page 5: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 5

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

Projeto de software - Arquitetura

Page 6: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 6

Visão de testes - Produzida pelos desenhistas, descreve o comportamento dos testes necessários para verificar a visão de uso desenhada

Projeto de software - Arquitetura

Page 7: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 7

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ódigoVisã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

Projeto de software - Arquitetura

Page 8: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 8

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.

Projeto de software - reuso

Page 9: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 9

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:

Projeto de software - reuso

MetasResponsáveis e equipesProcedimentos de partidaFerramentasPatrimonio existenteBeneficios potenciaislimitações

PadrõesEstratégias de comunicaçãoEstratégia de evolução e crescimento.MétricasSuporte ao uso

Page 10: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 10

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

Projeto de software - reuso

Page 11: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 11

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.

Projeto de software - reuso

Page 12: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 12

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

Projeto de software - reuso

Page 13: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 13

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.

Projeto de software - reuso

Page 14: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 14

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.

Validação de Sistemas criticos

Page 15: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 15

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.

Validação de Sistemas criticos

Page 16: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 16

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

Validação de Sistemas criticos

Page 17: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 17

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 importantesSistemas 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.

Validação de Sistemas criticos

Page 18: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 18

Validação de ConfiabilidadeExercitar o programa para verificar se atingiu o nível requerido de confiabilidadeNão é o mesmo que processo de teste para defeitosTestes 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

Validação de Sistemas criticos

Page 19: 15/1/2014 Professor Leomir J. Borba- professor.leomir@gmail.com – 1 CIÊNCIA DA COMPUTAÇÃO ENGENHARIA DE SOFTWARE Aula

11/04/23 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 19

Bibliografia

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.