Baixe o app para aproveitar ainda mais
Prévia do material em texto
A crise do software e seus mitos Material adaptado do Prof. Dr. Elvio Gilberto da Silva ENGENHARIA DE SOFTWARE I 2 A evolução do Software n O cenário da evolução de sistemas mostra que cada vez mais os softwares construídos exigem maior complexidade em sua construção em face a mudanças de formas de interação com seus usuários e com o surgimento de novas tecnologias. 3 A evolução do Software n Década de 1960 n Sistemas em Batch n Distribuição limitada n Software customizado n Década de 1970 n Multi-usuários n Tempo real n Bancos de Dados n Software Produto n Década de 1980 n Sistemas distribuídos n Inteligência embutida n Hardware barato n Impacto no consumidor n Década de 1990 n Sistema pessoais n Tecnologias OO n Sistemas Especialistas n Redes Neurais n Computação Paralela 4 Desenvolvimento de Software O processo de desenvolvimento também tem apresentado maiores complexidades. Enquanto que anteriormente um sistema poderia ser desenvolvido por apenas uma pessoa, hoje em dia, são necessárias equipes e uma gerência atuante para sua construção. Por outro lado, o software tem ganhado cada vez mais importância na vida social e econômica de pessoas e organizações. Por fim, o usuário tem deixado de ser uma figura passiva, aceitando e se adaptando às funcionalidades de um software para se tornar uma figura mais exigente. O sucesso de um software está em atender às necessidades do cliente. 5 Desenvolvimento de Software Usuário Software Desenvolvedor Software 6 A evolução do Software n Software cada vez n maior n mais funcionalidades n mais complexo n abrangendo mais usuários n exigindo a participação de equipes em seu desenvolvimento 7 Características do Software n Software é desenvolvido e não produzido no sentido clássico (industrial) n custo de software é na engenharia e não na reprodução n Software não ‘gasta’ n custos em sua manutenção n Software precisa se adaptar a novas tecnologias (‘crise do software’) 8 A Crise de Software n Dificuldades no Trabalho com Software n Medidas pobres de eficiência e qualidade n Insatisfação do usuário é frequente n Pouco entendimento dos requisitos n Problemas de comunicação entre o usuário e o analista n A qualidade do software é frequentemente suspeita n Poucas medidas e critérios de qualidade n Software existente é muito difícil de manter n E tem que ser mantido até ser substituído 9 A Crise de Software n Causas n Introdução de erros no processo n Má especificação n Mau projeto n Má implementação n Testes incompletos ou mal feitos n Problemas na comunicação homem-máquina n Problemas na gerência n Falta de treinamento em novas técnicas de desenvolvimento n O processo está evoluindo muito rapidamente em função do aprendizado. É necessário reciclar 10 Problemas n Complexidade n Especificar sistemas é uma atividade bastante complexa. Não se trata apenas de fazer uns “programinhas”. n Insatisfação dos usuários n Usuários sentem-se frustrados com sistemas difíceis de serem operados e/ou cujo desenvolvimento se prolonga por vários anos. n 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.” 11 Problemas n Produtividade n Costuma estar quase sempre aquém do desejado. n Frequentemente, a alocação de recursos e atividades são desbalanceadas. n Algumas questões recebem consideração demasiada, enquanto outras são insuficientemente consideradas. n Custos, tempo e recursos geralmente são subestimados 12 Problemas n Confiabilidade do Sistema n Há diversas estatísticas que provam a pouca confiabilidade de boa parte dos sistemas. n Depende do uso de métodos que possam garantir uma boa qualidade do produto construído n 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” 13 Problemas n Manutenibilidade n Facilidade de se modificar um sistema para adaptar-se a circunstâncias novas, inexistentes à época da implantação. n Sistemas recentemente implantados são substituídos por novos, devido ao alto custo para sua manutenção. 14 Custo de Mudanças Os custos no desenvolvimento de sistemas é maior depois que ele está construído devido à necessidade constante de alterações em sua implementação para corrigir erros ou por não terem sido bem compreendidas às necessidades do usuário. Por isso, acredita-se que a fase mais crítica no desenvolvimento de um sistema corresponde à sua fase de concepção. Um sistema bem concebido e projetado terá menos chances de apresentar erros ou de não satisfazer o usuário final. Além disso, um bom projeto permite que mudanças possam ser incorporadas mais facilmente. 15 Custo de Mudanças Custo 1x 1,5 a 5X 60 a 100 X Definição Projeto Manutenção Fase Crítica 16 Problemas n Porque leva tanto tempo para terminar programas e sistemas? n Porque os custos são tão altos? n Porque temos dificuldade de medir o progresso do desenvolvimento do software? n Porque não conseguimos detectar todos os erros antes de entregar o software aos nossos clientes? n Porque os usuários estão sempre insatisfeitos com o software entregue? 17 Mitos... n da Gerência... Manuais de Regras e Procedimentos Ferramentas modernas de software e hardware são suficientes Estamos atrasados… Vamos alocar mais gente ao projeto! Desatualizados, obsoletos O uso eficiente de ferramental exige conhecimento Custos de treinamento, gerência e entendimento do processo de trabalho 18 Mitos... n do Desenvolvedor/Programador... Programa escrito e testado! Acabei! Até que o programa esteja “rodando” não há como medir sua qualidade O único produto de um projeto de software é o conjunto de programas Quanto mais cedo você 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 Revisões anteriores à codificação Especificação, projeto, plano de trabalho 19 Mitos... n do Cliente... Uma lista de intenções (boas) é suficiente para começar a produzir o software Minhas necessidades vão mudar… Mas mudanças são fáceis de introduzir porque software é bastante flexível Custo de mudanças é muito altoA especificação do software é a fase mais crítica do processo Erros na fase inicial têm um custo muito alto de correção 20 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.” 21 Engenharia de Software n Existe como disciplina há pouco tempo n Estabelece um diferencial entre um engenheiro de software profissional e um “praticante da informática” n Novos profissionais são agentes de mudanças ou de problemas n oportunidades, desafios e perigos 22 Engenharia de Software n Produtividade n linhas de código por dia; n pontos de função por mês n Qualidade n confiabilidade (e.g.: defeitos por KLOC – thousands n of lines of code); e n manutenibilidade (manutenção fácil). 23 Princípios da Engenharia n MÉTODOS n FERRAMENTAS n PROCEDIMENTOS 24 Métodos n Instrumentos n Representação do software durante seu desenvolvimento n Notações n Linguagens n Critérios de Qualidade n Como avaliaro desenvolvimento n Exemplos n UML n Booch n Análise estruturada n Anlaise essencial Como construir o Software? 25 Ferramentas n Suporte automático ou semi-automático aos métodos n CASE - Computer Aided Software Engineering n Ambientes de desenvolvimento n Ferramentas integradas n Hardware + Software (de suporte) + Banco de Dados É preciso muito software para desenvolver software! 26 Procedimentos n Sequência dos métodos n sequência de passos e atividades n Resultados n documentos, relatórios, módulos n Controles n coordenação, critérios de qualidade, pontos de controle n Equipe Quais os passos para construir o software? 27 Software Software deve ser visto não só como o produto final gerado como também como o processo que foi utilizado para sua construção. Ou seja, a forma como se realiza o processo de desenvolvimento (quais métodos, quais instrumentos e quais atividades foram realizadas) influencia a qualidade do produto final. Da mesma forma, dependendo das características do produto que se quer gerar, deve-se escolher um processo adequado para sua construção. 28 Software ProdutoProcesso Software 29 Produto de Software Um software é mais do que seu código fonte. Ele compreende os diversos documentos ou representações que são criadas ao longo do seu processo de desenvolvimento. 30 Produto de Software Plano Especificação Projeto Testes e Validações Programa Fonte Programa Objeto Estrutura de Dados 31 Processo de Construção de Software Durante um processo de desenvolvimento, métodos e instrumentos são utilizados para se construir os diversos produtos. Estes métodos, na maioria dos casos, exigem a utilização de ferramentas para sua realização. Estas ferramentas serão utilizadas pelos membros da equipe escalada para desenvolver o sistema. 32 Processo de Construção de Software Equipe Ferramentas Métodos Passos/Atividades Produtos Instrumentos Processo 33 Ciclo de Vida de Software Definição dos requisitos Análise Projeto Implementação Teste/Avaliação Implantação Manutenção Documentos são gerados a cada fase e servem de entrada para a fase seguinte 34 Ciclo de Vida - Modelo Cascata Intenções Especifica ção do Software Projeto do Software Código do Software Sistema pronto para operar Análise Projeto Implementação Teste Requisitos do Software Definição de Requisitos Documentos gerados durante o ciclo de vida Transformações 35 Definição de Requisitos n Identificar n desejos, intenções, procedimentos atuais e dados; n Organizá-los de forma coerente n Definir de uma forma geral n o que será tratado pelo software n interface com o que fica de fora do software Desejos Intenções Procedimentos Dados Requisitos do Software 36 Análise do Software n Entendimento e Representação n Domínio do problema n Conceitos n Funcionalidades n Casos de uso n Baseado nos fatores críticos de sucesso do software Especificação do Software Requisitos do Software 37 Projeto do Software n Projetar o Software n Arquitetura n Interfaces n Estrutura de Dados n Procedimentos n Independente da Tecnologia onde será “encarnado” o software Especificação do Software Arquitetura Interfaces Estrutura de Dados Detalhes dos Procedimentos Projeto do Software 38 Construção do Código n Implementação n Programação do código n Tecnologia n linguagem n ambiente n etc Arquitetura Interfaces Estrutura de Dados Detalhes dos Procedimentos Projeto do Software Código Software 39 Testes n Estou construindo um sistema correto? n Estou construindo o sistema certo? n Teste de código n Teste de sistema n Testes com usuários 40 Testes n O teste de código tem o objetivo de verificar se um programa ou conjunto de programas não apresentam erros de execução. n Teste de sistema significa verificar se o sistema dá as respostas desejadas de acordo com cada solicitação do usuário. n Testes com usuários são realizados com o objetivo de testar a interface do sistema e se todas as funcionalidades solicitadas foram contempladas pelo sistema. 41 Implantação do Software n Pôr o software em operação n Entrada de dados n Conversões de dados n Treinamento de operadores n Disponibilização de Manuais n Suporte à operação n Help Desk n Acompanhar Software Software Dados Conversões Pronto para operar 42 Manutenção do Software n Manutenção n Tipos n Corretiva n Novos Requisitos n Novas Tecnologias n Alto Custo n Podem requerer mudanças nas fases iniciais do desenvolvimento Software Em Operação Erros Software Nova Versão Requisitos 43 Análise e Projeto OO n Motivação e Benefícios n Enfrentar novos domínios de aplicação n Melhorar a interação entre analistas e especialistas de domínios de aplicação n Proporcionar uma representação básica consistente entre análise e projeto n Reutilização 44 O que impulsionou uma proposta OO n Amadurecimento dos conceitos de orientação a objetos n Aumento da complexidade de sistemas n Maiores n Sujeitos a alterações constantes n Interativos n Voltados para os usuários 45 Métodos para Análise e Projeto OO n Rumbaugh (OMT) – 1989 n Shlaer & Mellor – 1990 n Coad & Yourdon – 1991 n Booch – 1991 n Wirfs-Brock –1991 n Jacobson – 1992 46 Unified Modeling Language n UML – 1995 n Unificação dos trabalhos de Rumbaugh, Booch, Jacobson n Oferece um conjunto de instrumentos para se realizar a análise e projeto OO n Especificação, visualização, documentação e construção de artefatos de um sistema n Linguagem de modelagem OO com maior previsão de utilização no mercado
Compartilhar