Engenharia de Software Profa. Dra. Lúcia Filgueiras Profa. Dra. Selma S. S. Melnikoff Ciclos de Vida do Software 1. Sistemas 2. Crise do software 3. Caracterização do software 4. Ciclos de vida do software 1. Sistemas Definição 1. Conjunto de elementos, entre os quais haja alguma relação. 2. Disposição das partes ou dos elementos de um todo, coordenados entre si, e que formam estrutura organizada. (Aurélio)
Sistemas automatizados SOFTWARE USUÁRIOS SISTEMA HARDWARE DADOS PROCEDIMENTOS Exemplos de tipos de sistemas Sistemas on-line entrada de dados remota processamento de transações Sistemas de tempo real recebe dados do ambiente modifica o ambiente a tempo Sistemas de apoio à decisão regras de avaliação coletam dados de outros sistemas Características comuns de sistemas 1. Especialização X adaptação Quanto mais especializado o sistema, menor sua capacidade de adaptação a mudanças. 2. Manutenção Quanto maior o sistema, mais recursos são necessários para sua manutenção 3. Composição Todo sistema pode ser decomposto em sistemas menores 4. Crescimento Os sistemas tendem a crescer.
Software software de sistema sistemas operacionais compiladores gerenciadores de redes software de tempo real management information systems - MIS software científico e de engenharia CAD simuladores software embarcado PC software software de inteligência artificial Evolução do software 1950 1960 1970 1980 1990 2000 1a. fase 2a. fase 3a. fase 4a. fase sistemas batch distribuição limitada software dedicado sistemas multiusuário tempo real base de dados software-produto sistemas distribuídos hardware de baixo custo inteligência local impacto no consumidor desk-tops poderosos tecnologia de objetos computação paralela redes neurais sistemas especialistas 2. Crise do software Crise de tecnologia - hardware caminha mais rápido que o software Crise de oferta - demanda é maior que a capacidade de desenvolvimento Crise de manutenção - mau projeto e recursos escassos não permitem manutenção.
Problemas Por que os programas não ficam prontos rapidamente? Por que os custos de desenvolvimento são altos? Por que os erros não são detectados? Por que é difícil medir o progresso durante o desenvolvimento? 3. Caracterização do Software Software é desenvolvido - não manufaturado! produto manufaturado: projeto + produção produto desenvolvido: não existe produção falhas em uma cópia estão em todas não há perda da qualidade devida ao processo produtivo Software não desgasta. MORTALIDADE INFANTIL Taxa de falhas (hardware) DESGASTE Tempo
Software deteriora. curva real Taxa de falhas curva ideal modificações Software não é montagem de partes (ainda...) hardware: montagem de componentes bibliotecas técnicas de 4a. geração reutilização de software Componentes do Software SOFTWARE = CÓDIGO EXECUTÁVEL + DOCUMENTAÇÃO
Engenharia de software O estabelecimento e o uso de princípios sólidos de engenharia, com o intuito de obter, economicamente, software que seja confiável e funcione eficientemente em máquinas reais. Fritz Bauer, 1969 O QUÊ? DEFINIÇÃO COMO? DESENVOLVIMENTO POR QUE NÃO? MANUTENÇÃO Para quê, um ciclo? para definir as atividades a serem conduzidas no projeto. para manter a consistência entre sistemas desenvolvidos em uma mesma empresa. para viabilizar pontos de controle para a gerência.
Modelo de cascata ENGENHARIA DE SISTEMAS ANÁLISE PROJETO CODIFICAÇÃO TESTE MANUTENÇÃO Fase 1: Engenharia de sistema definir o escopo do sistema avaliar sistemas atualmente em uso estabelecer metas e objetivos do sistema decidir a viabilidade de automatizar estimar tempo e recursos decidir a metodologia de projeto identificar hardware e software Resultado: análise de viabilidade e workstatement Fase 2: Análise e especificação modelo essencial (independente de tecnologia): dados e funções uso de ferramentas de modelagem refinamento das relações custo-benefício refinamento das estimativas de recursos especificação dos critérios de aceitação definição do balanceamento entre operação humana e automação Resultado: especificação de requisitos
Fase 3: Projeto definição da arquitetura processadores tarefas módulos de programa. transformação do modelo de dados em base de dados modelo da interface homem-máquina elaboração do plano de testes Resultado: documento de projeto Fase 4: Codificação transformação em linguagem de programação técnica de programação estruturada Resultado: listagens do programa Fase 5: Testes Comparação do sistema com sua especificação Verificação do funcionamento interno e externo do programa Estratégia de teste Ambientes de teste Aceitação Instalação (simples ou gradual) Resultado: sistema instalado
Fase 6: Manutenção correção de erros mudanças de software mudanças no hardware evolução no ambiente de utilização Resultados: modificações (programa e documentos) Problemas com ciclo clássico fluxo seqüencial é quebrado pelas múltiplas iterações é difícil acomodar incertezas do início do desenvolvimento o software produto só é visível ao final do ciclo Prototipação modelo da interface de usuário (em papel ou tela) implementação de parte das funções (protótipo de trabalho) programa ou sistema existente
Ciclo de vida com prototipação FIM INÍCIO engenharia de produto identificação de requisitos refinamento do protótipo projeto breve avaliação do protótipo pelo cliente construção do protótipo Problemas com ciclo de prototipação cliente acha que protótipo é produto projetista incorpora soluções inadequadas convergência do protótipo Modelo da espiral ANÁLISE DE RISCO SISTEMA COMPLETO AVALIAÇÃO
Modelo da espiral Planejamento: determinação dos objetivos, alternativas e restrições Análise de riscos: análise de alternativas e identificação/resolução dos problemas Engenharia: desenvolvimento do produto do nível seguinte Avaliação do cliente: avaliação do produto Técnicas de 4a. geração ferramentas de descrição do software em nível alto tipos de ferramentas gerenciadores de bancos de dados linguagens de consulta não-procedurais geradores de relatórios construtores de telas geradores de código cada ferramenta tem a sua linguagem Ciclo com técnicas de 4a. geração IDENTIFICAÇÃO DE REQUISITOS ESTRATÉGIA DE PROJETO IMPLEMENTAÇÃO TESTES
Problemas comtécnicas de 4a. Geração número de ferramentas é explosivo evolução das ferramentas x obsolescência dependência do fornecedor royalties na distribuição confiabilidade auto-documentação