Análise e Projeto de Sistemas Análise e Projeto de Sistemas Contextualização ENGENHARIA DE SOFTWARE ANÁLISE E PROJETO DE SISTEMAS ENGENHARIA DA INFORMAÇÃO Perspectiva Histórica Engenharia de Software 1940: os computadores foram inventados 1950: linguagem de montagem, Fortran 1960: COBOL, ALGOL, PL/1, Sistemas Operacionais 1969: Primeira conferência sobre ES 1970: Sistemas multi-usuário, Banco de Dados, programação estruturada Perspectiva Histórica 1980: redes, PCs, arquiteturas paralelas 1990: Internet, sistemas distribuídos, Orientação a Objetos 2000: Realidade Virtual, reconhecimento de voz, vídeo-conferência... 1950 1960 1970 1980 1990 2000 1
50-64 Base: Hardware Orientação Batch Software customizado (sob medida) Distribuição Limitada Ausência de Documentação 60-74 Multiusuário Tempo real Bancos de Dados Novos conceitos de IHC Produto de Software Advento das software houses Maior demanda e crescimento de produto de software => necessidade de manutenção CRISE do Software 75-90 Sistemas Distribuídos Inteligência Embutida Hardware de Baixo Custo Impacto de Consumo Maior complexidade dos softwares Gastos com software > gastos com hardware 85 -... Sistemas de Desktop poderosos Tecnologias Orientadas a Objetos Sistemas Especialistas Redes Sistemas Distribuídos Multimídia e Realidade Virtual CRISE? Metodologia Sistemática? Crise do Software Antes... Conjunto de problemas que são encontrados no desenvolvimento de software de computador. Principais problemas: Estimativas de prazo e custos imprecisas Produtividade dos profissionais < demanda de clientes Qualidade do software < desejada Tempo insuficiente para a coleta dos dados Falta de entendimento entre usuário e desenvolvedor Início da era do computador: Engenharia de Hardware administração orientada ao hardware uso de controle, ferramentas e métodos Programação: forma de arte tentativa e erro mundo difícil de entender 2
Hoje... Software: item de maior custo Hardware: mais barato e poderoso Preocupação: Por que demora tanto para a conclusão de um programa? Por que custos tão elevados? Por que não se descobre todos os erros ANTES? Por que a dificuldade em medir o progresso do software enquanto está sendo desenvolvido? Anos 80: A Importância do Software na História Avanços na área de microeletrônica (VLSI); Barateamento do hardware; Disseminação do uso de computadores; Surgimento de novas áreas de aplicação; Resultado: software - fator que diferencia Aumento da procura por software; Aumento da complexidade dos softwares. Aumento nos custos de produção e no preço final. Software Afinal, o que é SOFTWARE? Instruções que, quando executadas, produzem a função e o desempenho desejados Estruturas de dados que possibilitam que os programas manipulem adequadamente a informação Software é formado por programas, documentos e dados Características do Software Software é desenvolvido; não é manufaturado como hardware Software não se desgasta com o uso, porém se deteriora A maioria é construída para o cliente, em vez de ser projetada a partir de componentes => necessidade de reutilização Software é uma oportunidade de negócios Domínios de Aplicação/Software Básico compiladores, editores, sistema operacional Negócios Banco de Dados Engenharia e Ciências CAD Simulação Inteligência Artificial Sistemas Especialistas Tempo Real Controle de máquinas 3
Problemas na Produção do Software Quesitos de Qualidade do Software A sofisticação dos atuais softwares é muito superior à nossa capacidade de construir software que extraia o potencial do hardware; A demanda por novos softwares é muito maior que a capacidade de produzi-los A criação e manutenção de sistemas é comprometida pela ausência ou deficiência nos projetos. Manutenibilidade Confiabilidade Eficiência Testabilidade Compreensibilidade Interface apropriada Adaptabilidade Início: 1969 / Fritz Bauer O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e que funcione eficientemente em máquinas reais Definições atuais: Disciplina tecnológica preocupada com a produção e manutenção sistemática de produtos de software desenvolvidos e modificados dentro de prazos e custos estimados O estudo sistemático e efetivo de processos e tecnologias para suporte de atividades de desenvolvimento e manutenção de software, visando: qualidade e redução de custos Outras definições: Conjunto de teorias, métodos e ferramentas necessárias para desenvolver software para computadores A engenharia de software é a ciência e a arte de com economia, em tempo útil e de forma elegante, especificar, projetar, implementar e manter atualizados e corretos, programas, documentação e procedimentos operacionais para sistemas computacionais de utilidade para a humanidade Métodos: Análise Projeto Codificação Teste Manutenção Procedimentos: Gerenciamento de Projeto Segurança da Qualidade de Software Métricas Inserção de Novas Tecnologias Ferramenta CASE (Computer-Aided Software Engineering): suporte a métodos e procedimentos 4
Engenharia de Software Métodos: Planejamento e estimativa de projeto; Análise de requisitos do software; Projeto das estruturas de dados, arquitetura, algoritmos, codificação, teste e manutenção. Ferramentas: Gerais: editores, linguagens... CASE Diversas finalidades; Automatização dos métodos Procedimentos Estabelecem: Engenharia de Software a seqüência de aplicação dos métodos os produtos a serem entregues em cada aplicação de um método (documentos, relatórios, diagramas, etc.); os controles que ajudam a assegurar a qualidade e a coordenar as mudanças; os marcos de referência (medidas) que possibilitem a avaliação do progresso; o elo de ligação entre os métodos e as ferramentas; Engenharia de Software Abordagem Artesanal Metodologia Sistemática Engenharia da Informação Tríade da ES: métodos + procedimentos + ferramentas Ângulos Gerente de Software: Possibilita o controle do processo produtivo. Profissional: Oferece uma referência para a construção de software de qualidade, produtivamente Informação Engenharia da Informação Bem patrimonial de uma empresa Deve ser utilizada de maneira estratégica para a tomada de decisões Nova realidade de software e hardware SGBD - Data warehouse SIG - CASE Conjunto interligado de técnicas automatizadas nas quais são construídos modelos da organização, modelos de dados e modelos de processos numa abordagem abrangente a fim de serem usados para criarem e manterem sistemas de informação 5
Engenharia da Informação Emprega técnicas estruturadas em um nível organizacional e não a nível de projeto de sistema, compreendendo as seguintes etapas: 1. Planejamento dos sistemas estratégicos da organização 2. Planejamento das informações da organização 3. Análise da Área de Negócios 4. Projeto do Sistema 5. Construção do Sistema Análise e Projeto de Sistemas Análise e Projeto de Sistemas O papel do Analista ENGENHARIA DE SOFTWARE ANÁLISE E PROJETO DE SISTEMAS ENGENHARIA DA INFORMAÇÃO Aumentar a eficiência e qualidade dos fluxos de informações que fluem entre os vários processos; Otimizar e racionalizar tais processos Sistemas de Informações conjuntos de processos e informações interrelacionadas com o objetivo de possibilitar tomada de decisões O papel do Analista Utilizar modernas técnicas para a construção de modelos, dos processos e dados da área alvo Analisar o comportamento dos sistemas existentes e propor soluções Criar métodos para padronização e/ou automação das atividades Planejar, analisar, projetar, programar e manter aplicações computacionais Atividades do Analista Dialogar com o Usuário/Especialista Escolher: Modelo de desenvolvimento (ciclo de vida) Padrões de documentação, codificação, verificação e testes Ambientes de desenvolvimento e/ou linguagens de programação adequadas Métodos para medir e reportar o progresso do desenvolvimento 6
Atividades do Analista Organizar e coordenar as equipes de desenvolvimento de software Indicar e/ou comprar hardware e ferramentas de software necessários ao projeto Avaliar a viabilidade do produto e de seu desenvolvimento Efetuar a estimativa de custos, riscos e preço do produto 7