Núcleo de Computação Eletrônica Curso de Programação de Computadores Maio a Setembro/2000 Análise e Projeto de Sistemas Engenharia de Software Renata Araujo Ricardo Storino A evolução do Software Década de 1960 Multi usuários Tempo real Bancos de Dados Software Produto Década de 1980 Sistemas em Batch Distribuição limitada Software customizado Década de 1970 Década de 1990 2 Sistemas distribuídos Inteligência embutida Hardware barato impacto no consumidor Sistema pessoais Tecnologias OO Sistemas Especialistas Redes Neurais Computação Paralela Desenvolvimento de Software Software Usuário Desenvolvedor Software 3 A evolução do Software Software cada vez 4 maior mais funcionalidades mais complexo abrangendo mais usuários exigindo a participação de equipes em seu desenvolvimento Características do Software Software é desenvolvido e não produzido no sentido clássico (industrial) Software não ‘gasta’ 5 custo de Software é na engenharia e não na reprodução custos em sua manutenção Software precisa se adaptar a novas tecnologias (‘crise do software’) A Crise de Software Dificuldades no Trabalho com Software Medidas pobres de eficiência e qualidade Insatisfação do usuário é frequente A qualidade do software é frequentemente suspeita Poucas medidas e critérios de qualidade Software existente é muito difícil de manter 6 Pouco entendimento dos requisitos Problemas de Comunicação entre o usuário e o analista E tem que ser mantido até ser substituído A Crise de Software Causas Introdução de erros no processo Problemas na comunicação homem-máquina Problemas na gerência 7 Má especificação Mau projeto Má implementação Testes incompletos ou mal feitos Falta de treinamento em novas técnicas de desenvolvimento O processo está evoluindo muito rapidamente em função do aprendizado. É necessário reciclar Problemas Complexidade Especificar sistemas é uma atividade bastante complexa. Não se trata apenas de fazer uns “programinhas”. Insatisfação dos usuários usuários sentem-se frustrados com sistemas difíceis de serem operados e/ou cujo desenvolvimento se prolonga por vários anos. usuário precisa de sistemas funcionando de acordo com suas necessidades “O valor de um sistema está em atender com precisão as necessidades de seus usuários.” 8 Problemas 9 Produtividade Costuma estar quase sempre aquém do desejado. Freqüentemente, a alocação de recursos e atividades são desbalanceadas. Algumas questões recebem consideração demasiada, enquanto outras são insuficientemente consideradas. Custos, tempo e recursos geralmente são subestimados Problemas Confiabilidade do Sistema Há diversas estatísticas que provam a pouca confiabilidade de boa parte dos sistemas. depende do uso de métodos que possam garantir uma boa qualidade do produto construído Não basta que o sistema produza resultados solicitados pelo usuário.Mas que também tenha o desempenho adequado. “Não é suficiente que o sistema seja eficiente. É necessário ainda que ele seja eficaz” 10 Problemas 11 Manutenibilidade Facilidade de se modificar um sistema para adaptar-se a circunstâncias novas, inexistentes à época da implantação. Sistemas recentemente implantados são devido ao alto custo para sua manutenção substituídos por novos, Custo de Mudanças Custo 1,5 a 5X 60 a 100 X 1x Definição 12 Fase Crítica Projeto Manutenção Problemas 13 Porque leva tanto tempo para terminar programas e sistemas? Porque os custos são tão altos? Porque temos dificuldade de medir o progresso do desenvolvimento do software? Porque não conseguimos detectar todos os erros antes de entregar o software aos nossos clientes? Porque os usuários estão sempre insatisfeitos com o software entregue? Mitos... da Gerência... Desatualizados, obsoletos Manuais de Regras e Procedimentos Ferramentas modernas de software e hardware são suficientes O uso eficiente de ferramental exige conhecimento 14 Estamos atrasados… Vamos alocar mais gente ao projeto! Custos de treinamento, gerência e entendimento do processo de trabalho Mitos... do Desenvolvedor/Programador... O único produto de um projeto de software é o conjunto de programas Até que o programa esteja “rodando” não há como medir sua qualidade Revisões anteriores à codificação 15 Especificação, projeto, plano de trabalho Programa escrito e testado! Acabei! Quanto mais cedo voce escrever o código, mais tempo irá demorar para completá-lo De 50 a 70 % do custo de produção de um software vai ser gasto para operacionalizá-lo para o usuário Mitos... do Cliente... Uma lista de intenções (boas) é suficiente para começar a produzir o software A Especificação do Software é a fase mais crítica do processo Erros na fase inicial têm um custo muito alto de correção 16 Minhas necessidades vão mudar… Mas mudanças são fáceis de introduzir porque software é bastante flexível Custo de mudanças é muito alto O que é Engenharia de Software? Estudo e aplicação de Métodos e Técnicas com o objetivo de tornar o desenvolvimento de software mais “eficiente”. “O estabelecimento e uso de princípios de engenharia de forma a obter economicamente software confiável e que funcione eficientemente em máquinas reais.” 17 Engenharia de Software Existe como disciplina há pouco tempo Estabelece um diferencial entre um engenheiro de software profissional e um “praticante da informática” Novos profissionais são agentes de mudanças ou de problemas 18 oportunidades, desafios e perigos Engenharia de Software Produtividade Qualidade 19 linhas de código por dia; pontos de função por mês confiabilidade (e.g.: defeitos por KLOC); e manutenibilidade (manutenção fácil). Princípios da Engenharia 20 MÉTODOS FERRAMENTAS PROCEDIMENTOS Métodos Como construir o Software? Instrumentos representação do software durante seu desenvolvimento Notações Linguagens Exemplos Critérios de Qualidade 21 Como avaliar o desenvolvimento UML Booch Análise estruturada Anlaise Essencial Ferramentas É preciso muito software para desenvolver software! Suporte automático ou semi-automático aos métodos Ambientes de desenvolvimento 22 CASE - Computer Aided Software Engineering ferramentas integradas Hardware + Software (de suporte) + Banco de Dados Procedimentos Quais os passos para construir o software? Seqüência dos métodos Resultados 23 documentos, relatórios, módulos Controles sequência de passos e atividades coordenação, critérios de qualidade, pontos de controle Equipe Software Software Processo 24 Produto Produto de Software Plano Estrutura de Dados Especificação Programa Objeto Projeto 25 Programa Fonte Testes e Validações Processo de Construção de Software Equipe Métodos Ferramentas Passos/Atividades Instrumentos Produtos Processo 26 Ciclo de Vida de Software Definição dos requisitos Análise Documentos são gerados a cada fase e servem de entrada para a fase seguinte Projeto Implementação Teste/Avaliação Implantação Manutenção 27 Ciclo de Vida - Modelo Cascata Definição de Requisitos Intenções Transformações Requisitos do Software Análise Especifica ção do Software Projeto Projeto do Software Documentos gerados durante o ciclo de vida Implementação Código do Software Teste Sistema pronto para operar 28 Definição de Requisitos Desejos Intenções Procedimentos Dados Identificar Organizá-los de forma coerente Definir de uma forma geral Requisitos do Software 29 desejos, intenções, procedimentos atuais e dados; o que será tratado pelo software interface com o que fica de fora do software Análise do Software Entendimento e Representação Requisitos do Software Especificação do Software 30 Domínio do problema Conceitos Funcionalidades Casos de uso Baseado nos fatores críticos de sucesso do software Projeto do Software Especificação do Software Projetar o Software Projeto do Software 31 Arquitetura Interfaces Estrutura de Dados Detalhes dos Procedimentos Arquitetura Interfaces Estrutura de Dados Procedimentos Independente da Tecnologia onde será “encarnado” o software Construção do Código Detalhes Implementação dos Procedimentos Programação do código Estrutura de Dados Arquitetura Interfaces Tecnologia Projeto do Software linguagem ambiente etc Código Software 32 Testes 33 Estou construindo um sistema correto? Estou construindo o sistema certo? Teste de código Teste de sistema Testes com usuários Implantação do Software Pôr o Software em operação Entrada de dados Conversões de dados Treinamento de operadores Disponibilização de Manuais Suporte à operação Software Dados Conversões Help Desk Acompanhar Software Pronto para operar 34 Manutenção do Software Manutenção Em Operação Tipos Corretiva Novos Requisitos Novas Tecnologias Alto Custo Software Erros Requisitos Podem requerer mudanças nas fases iniciais do desenvolvimento Software Nova Versão 35 Análise e Projeto OO 36 Motivação e benefícios Enfrentar novos domínios de aplicação Melhorar a interação entre analistas e especialistas de domínios de aplicação Proporcionar uma representação básica consistente entre análise e projeto Reutilização O que impulsionou uma proposta OO Amadurecimento dos conceitos de orientação a objetos Aumento da complexidade de sistemas 37 Maiores Sujeitos a alterações constantes Interativos Voltados para os usuários Métodos para Análise e Projeto OO 38 Rumbaugh (OMT) – 1989 Shlaer & Mellor – 1990 Coad & Yourdon – 1991 Booch – 1991 Wirfs-Brock –1991 Jacobson – 1992 Unified Modeling Language UML – 1995 Unificação dos trabalhos de Rumbaugh, Booch, Jacobson Oferece um conjunto de instrumentos para se realizar a análise e projeto OO 39 Especificação, visualização, documentação e construção de artefatos de um sistema Linguagem de modelagem OO com maior previsão de utilização no mercado