UFU Universidade Federal de Uberlândia ANÁLISE E PROJETO DE SISTEMAS INTRODUÇÃO A ENGENHARIA DE SOFTWARE Professora: Fabíola Gonçalves.
AGENDA Introdução à Engenharia de Software Características do Software Comunicação no desenvolvimento de Software O que é Engenharia de Software Qualidade versus Incidentes Aplicações Importância do Software Princípios de Engenharia de Software
O QUE É SOFTWARE? Programas de computador, juntamente com as estruturas de dados e documentação associada. Software de computador é o produto que os profissionais de software constroem e, depois, mantém ao longo do tempo. Abrange desde programas que executam em computadores de qualquer tamanho e arquitetura a sistemas embutidos.
O QUE É SOFTWARE? Onipresença / DEPENDÊNCIA de computadores Computador "=" Software Quem o faz/desenvolve? Qual sua importância? Qual o produto do trabalho dos elaboradores de um software?
SOFTWARE Primeiras décadas da era do computador.. Hoje o problema é diferente, o principal desafio desta década é melhorar a qualidade e reduzir o custo das soluções baseadas em computador, ou seja, que são resolvíveis com softwares de computador.
SOFTWARE Evolução do Software...
CARACTERÍSTICAS DO SOFTWARE Pontos chaves: Comunicação entre o clientes e desenvolvedores Devemos entender o que o cliente quer e quais são as suas necessidades, antes de começarmos a construir um sistema que o ajude a resolver seus problemas. Número de pessoas trabalhando em um projeto?
CARACTERÍSTICAS DO SOFTWARE Boa Comunicação? Por quê? QUALIDADE..
PROBLEMAS COM SOFTWARE *
FALHAS EM SOFTWARE Ariane Custo: $500 milhões Desastre: Ariane 5, o mais novo foguete da Europa nãotripulado, foi intencionalmente destruído segundos após seu lançamento em seu vôo inaugural. Também foram destruídos quatro satélites científicos para estudar como o campo magnético da Terra interage com os ventos solares. Causa: O desligamento ocorreu quando o computador de orientação tentou converter a velocidade do foguete de 64- bits para um formato de 16 bits. O número era muito grande, o que resultou em erro de estouro. Quando o sistema de orientação desligou, o controle passou para uma unidade idêntica redundante, que também falhou porque nele estava correndo o mesmo algoritmo.
FALHAS EM SOFTWARE 3ª Guerra Mundial (Quase!) (1983) Custo: Quase toda a humanidade Desastre: O sistema de alerta soviético falsamente indicou que os Estados Unidos tinham lançado cinco mísseis balísticos. Felizmente, o oficial de serviço soviético tinha uma sensação esquisita no estômago e fundamentalmente, se os EUA estavam realmente atacando, eles lançariam mais de cinco mísseis, por isso ele relatou o aparente ataque como um alarme falso. Causa: Um bug no software soviético falhou ao detectar reflexos solares como falsos mísseis.
QUALIDADE?
CARACTERÍSTICAS DO SOFTWARE O software é um elemento de um sistema lógico e não de um sistema físico.. O software é desenvolvido; não é fabricado no sentido clássico. O software não se desgasta: o software não é suscetível aos males ambientais que causam desgastes. Natureza MUTÁVEL do SW
ATRIBUTOS DE UM BOM SOFTWARE Facilidade de manutenção: um software deve ser escrito de modo que possa evoluir para atender as necessidades mutáveis dos clientes. Nível de confiança: incluem confiabilidade, proteção e segurança. Um software confiável não deve ocasionar danos físicos ou econômicos, no caso de defeito no sistema. Eficiência: inclui rapidez de resposta, o tempo de processador, a utilização da memória, entre outros. Facilidade de uso: deve dispor de interface apropriada com o usuário e de documentação adequada.
APLICAÇÕES DE SOFTWARE industrial automation business software video games telecommunications (i.e., the Internet and everything that flows on it) databases educational software medical software image editing simulation software, word processing e Decision making software
IMPORTÂNCIA DO SOFTWARE 98% dos microprocessadores não estão nos computadores, mas embutidos em produtos
MERCADO DO SOFTWARE 2008: U$303bi 2013: U$457bi 40% em 5 anos!!! Carros modernos da GM possuem 100 milhões de linha de código e mais de 30 microprocessadores. Modernos celulares possuem 20 milhões de linha de código.
CRISE DO SOFTWARE Conferência da NATO (1968) Crise de Software Preço do hardware cai Maior demanda por software Baixa produtividade e qualidade: Projetos abandonados, Módulos que não operam corretamente quando combinados, Sistemas tão difíceis de usar que são descartados, Sistemas que simplesmente param de funcionar., etc. Resultado: Software entregue fora do prazo e com maior custo Grandes falhas
CRISE DO SOFTWARE - SOLUÇÃO Métodos e técnicas: como fazer (processo de software). Combinar métodos para a fase de desenvolvimento. Ferramentas para automatizar estes métodos. Técnicas para assegurar qualidade (Engenharia de Software). Interesse do governo em treinamentos e educação
POR QUE ENGENHARIA DE SOFTWARE? Termo criado em 1968 Ideia de usar processos e métodos bem definidos, quantificáveis, formais, para desenvolvimento de software Aplicação de conceitos de engenharia ao desenvolvimento de software Definições:
ENGENHARIA DE SOFTWARE Aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção do software. IEEE
ENGENHARIA DE SOFTWARE Engenharia é a aplicação sistemática de conhecimentos científicos na criação e construção de soluções com um bom custo-benefício para a resolução de problemas práticos da sociedade. SEI
ÁREAS DA ENGENHARIA DE SOFTWARE
PRODUTO E PROCESSO DE SOFTWARE A engenharia de software abrange um conjunto de elementos Métodos: fornecem os detalhes de como fazer para construir softwares... Ferramentas: apoio automatizado ou semi-automatizado. Procedimentos: definem a sequência em que os métodos são aplicados, os produtos a serem disponibilizados, controles de qualidade e avaliação. Paradigmas: abordagem ou filosofia em particular para a construção de software.
RESPONSABILIDADE E ÉTICA
RESPONSABILIDADE E ÉTICA Dilemas/Pontos de vista divergentes Discordar políticas da alta gerência? Relatar problemas com o software? Liberação de sw sem testes? SW militares/nucleares?
MITOS DO SOFTWARE? Se nos atrasarmos no planejamento, podemos adicionar mais programadores. O estabelecimento geral de objetivos é suficiente para iniciar o desenvolvimento do software podemos fornecer os detalhes posteriormente.
MITOS DO SOFTWARE Quando escrevemos um programa e o fazemos funcionar, nosso trabalho está completo. Até que eu esteja com o programa funcionando não tenho como avaliar sua qualidade.
PRINCÍPIOS DE SOFTWARE Objetivo SUCESSO no desenvolvimento Envolve tanto PRODUTO quanto PROCESSO GENÉRICOS INDEPENDENTES de linguagem/bd/so e etc Princípios de Software: declarações gerais e abstratas que descrevem as propriedades desejadas dos processos de desenvolvimento e dos produtos de software.
PRINCÍPIOS DE SOFTWARE
PRINCÍPIOS DE SOFTWARE Rigor e Formalismo Desenvolvimento SW artesanal CRIATIVO INSPIRAÇÃO RIGOR Complemento à criatividade
PRINCÍPIOS DE SOFTWARE Modularização Modular?? Dividir complexidade Facilitar manutenção Bastante COESÃO Pouca INTERRELAÇÃO
PRINCÍPIOS DE SOFTWARE Abstração Acompanha todo e qualquer processo de implementação ou programação. As linguagens de programação que utilizamos nada mais são do que construções abstratas para representar soluções ou interagir com o hardware.
PRINCÍPIOS DE SOFTWARE Generalização versus Decomposição Focar na descoberta de um problema mais geral que possa existir por trás do problema. Capacidade de solucionar problemas mais e associa-los em módulos comuns. Reusabilidade (outro príncipio)
PRINCÍPIOS DE SOFTWARE Incrementabilidade A incrementabilidade é o princípio que busca a perfeição ou a obtenção dos objetivos através de passos que evoluem (ou são incrementados) ao longo do tempo.