Departamento de Engenharia Rural Centro de Ciências Agrárias Engenharia de Software Prof. Bruno Vilela Oliveira bruno@cca.ufes.br http://www.brunovilela.webnode.com.br
Aula 00 Apresentação da disciplina Ementa Avaliação Datas importantes Referências
Definição: Engenharia de Software Fritz Bauer - 1969 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ção: Engenharia de Software IEEE Std 610.12 (1990) A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção do software; isto é, a aplicação da engenharia ao software. Qualquer abordagem de engenharia deve se apoiar num compromisso com a qualidade.
Engenharia de Software A economia de todas as nações desenvolvidas se tornou dependente de software. Mais e mais sistemas são controlados por softwares. Engenharia de software relaciona-se à teorias, métodos e ferramentas para o desenvolvimento profissional de software. Despesas com software representam uma fração significativa do PIB em todos os países desenvolvidos.
Engenharia de Software Custos com software geralmente são os mais altos em sistemas de computação. O custo de um software em um PC é geralmente maior que o custo do hardware. Gasta-se mais para manter o software que para desenvolvê-lo. Nos sistemas de longa vida útil, os custos de manutenção podem ser várias vezes maiores que os custos de seu desenvolvimento. A engenharia de software leva em consideração o desenvolvimento de software com relação custo benefício adequada.
Objetivos: Engenharia de Software Qualidade de software. Produtividade no desenvolvimento, operação e manutenção de software. Qualidade versus Produtividade. Permitir que profissionais tenham controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados.
Engenharia de Software no CCA-UFES
Apresentação da disciplina Programação de computadores
Onde está a computação? Existem diversas possibilidades para se aplicar a computação. Vários negócios bem sucedidos estão relacionados à empresas da tecnologia:
Programas feitos na Universidade Necessidades muito bem definidas 1-10 KLOCS Prazos razoáveis Equipes pequenas Mão de obra gratuita Não entra em produção Não há um cliente real O software não evolui - manutenção
Software mundo real Tipos de software Software de Sistema: Coleção de programas escritos para servir outros programas. Características: Interação intensa com hardware do computador Uso intenso por múltiplos usuários Compartilhamento de Recursos Ex: Compiladores, editores e componentes de sistemas operacionais
Software mundo real Tipos de software Software Comercial: Processamento de Informações comercial Aplicações dessa área reestruturam os dados existentes de modo a facilitar operações comerciais ou tomada de decisão de gestão de negócios Ex: Folha de pagamentos, contas a pagar/receber, controle estoque e outros.
Software mundo real Tipos de software Software Científico e de engenharia: Esse tipo de software é caracterizado por processar números Simulação de sistemas Ex: Astronomia, biologia molecular
Software mundo real Tipos de software Software para Inteligência Artificial Faz uso de algoritmos não numéricos para resolver problemas complexos que não são passiveis de computação ou analise direta. Ex: Sistemas Especialistas, também chamados sistemas baseados em conhecimento, de reconhecimento de padrões (de imagem e de voz)
Software mundo real Tipos de software Outros E-commerce (B2B, B2C, B2M, e outros) Aplicações móveis (iphone, ipad, Tablets em geral, Android) Jogos e entretenimento Robótica Sistemas de Hipermídia (Exemplo: mídias ricas) Redes sociais
Software mundo real Fatores que devem ser considerar no desenvolvimento/evolução de software do mundo real : Escopo Custo Prazo Qualidade Dependendo do tamanho do software, tais fatores se tornam mais difíceis de garantir.
Software mundo real Eclipse Indigo - 46MLoc Facebook - 9.2MLoc Debian 5.0 324MLoc Windows XP: 40 MLOCs 1800 desenvolvedores 2200 testadores
O que representa Assuma que: uma folha A4 tem em torno de 50 linhas. uma pilha de 1000 folhas A4 tem em torno de 10 centímetros de altura Logo, 1.000.000 de LOCs, caso impresso = uma pilha de 2 metros de altura! Caso todo o código do Debian 5.0 fosse impresso, teria a altura de um prédio de ~216 andares = ~1100 metros!!! Torre Burj Dubai (~800m - 160 andares) Maior prédio do mundo (04/01/2010)
Engenharia de Software The Curious Case of the CHAOS Report 2009 1994 1996 1998 2000 2002 2004 2006 2009 Successful 16% 27% 26% 28% 34% 29% 35% 32% Challenged 1 53% 33% 46% 49% 51% 53% 46% 44% Failed 2 31% 40% 28% 23% 15% 18% 19% 24% 1 - (late, over budget and/or with less than the required features and functions) 2 - (cancelled prior to completion or delivered and never used) http://www.projectsmart.co.uk/the-curious-case-of-the-chaos-report-2009.html
Software = arte? Parte arte, parte engenharia... Se o cantor/ator/pintor errar, a audiência fica chateada Se o engenheiro civil errar o prédio pode cair Se o médico errar o paciente pode morrer Caso o desenvolvedor/equipe de software errar(em), o que pode acontecer?
Tragédias envolvendo software 1º Caso real Ariane 5 - Foguete lançador de satélites Problema O foguete se autodestruiu 40 segundos após o lançamento Principais causas Software reutilizado sem ser adaptado para o novo hardware. Ausência de testes em solo deste software; Defeito apresentado em voo. Consequências Prejuízo de mais de US$ 370.000.000,00 em 1996
Tragédias envolvendo software 2º Caso real Therac-25 Therac-25 era uma máquina de radioterapia controlada por computador; Problema Emissão de doses indevidas de radiação; Principais causas O código do software não havia sido revisado/testado; O projeto do software não havia sido documentado com detalhes suficientes para permitir o entendimento dos erros; A documentação do sistema fornecida aos usuários não explicava o significado dos códigos de erro que a máquina retornava...
Tragédias envolvendo software 2º Caso real Therac-25 Principais causas (continuação) O software de modelos mais antigos havia sido reutilizado sem se considerar as diferenças no hardware O software considerava que os sensores sempre funcionavam corretamente, e não havia como verificar isto; O sistema de controle não operava sincronizado com a interface usada pelo operador da máquina, e caso o operador mudasse a configuração da máquina muito rapidamente, o sistema não atribuía os valores digitados para os controles (o que levava a aplicação das doses letais); Consequências Houve uma série de pelo menos 6 acidentes entre 1985 e 1987, nos quais os pacientes receberam overdose de radiação; Pelo menos cinco mortes aconteceram devido aos acidentes;
Tragédias envolvendo software 3º Caso real Desastre com AirBus 320 Problema Navio US Vicennes derrubou um Airbus 320 em 1988 Principais causas Falha no software de reconhecimento, confundindo o avião com um F-14 Consequências 290 mortes
Tragédias envolvendo software 2º Caso real Game - O Rei Leão animado Problema O jogo não funcionava em uma variedade de modelos de computadores Principais causas Os desenvolvedores da Disney testaram o jogo apenas naqueles computadores próximos aos que os eles usaram no desenvolvimento. Consequências Enorme prejuízo para empresa, com devolução de dinheiro aos clientes e reformulação do game.
Outros casos reais http://www.net-security.org/secworld.php?id=12098 22 people wrongly arrested in Australia due to failures in new NZ $54.5 million courts computer system A new NZ $54.5 million ($42.7 million or 26.8 million) computer system linking New South Wales courts and allowing documents to be lodged electronically led to damages claims for unlawful arrest and malicious prosecution, after 3,600 defects in the electronic transfer of data from the courts to the police s database led to the wrongful arrest of 22 individuals. Army computer glitches hinder co-ordinated efforts in insurgent tracking An army computing system designed to share realtime intelligence with troops on the front line has hindered troops by being unable to perform simple analytical tasks. The $2.7 billion cloud-based computing network system runs slowly when multiple users are on the system at the same time and the system s search tool made finding the reports difficult as the information mapping software was not compatible with the army s existing search software.
Desenvolvimento - Problemas de comunicação
Outras definições Pressman, visão em camadas Foco na qualidade: base Processo: alicerce; adesivo Métodos: conjunto de tarefas; como fazer Ferramentas: apoio automatizado ou semi-automatizado para o processo e para os métodos. Ferramentas Métodos Processo Foco na qualidade Pessoas
Ementa Processos de desenvolvimento de software. Modelos de processo de software. Planejamento e gerenciamento de projeto de software. Condições de contingência (Riscos). Análise de requisitos. Garantia da qualidade de software. Normas de qualidade de produtos e processos de software. Modelos de melhoria de processo de software. Gerência de configuração. Validação, verificação e testes de programas e sistemas. Manutenção e implantação de sistemas de software.
Objetivos Conhecer Ciclo de Vida e Modelos de processo de software Adaptar e definir modelos de processo de software aderentes à sua realidade Ter uma visão geral de planejamento, gerenciamento, riscos, projeto, engenharia de requisitos e qualidade de software PSP - Processo pessoal de software Selecionar soluções de ferramentas de apoio para o trabalho com Engenharia de Software Ter uma visão geral dos tipos de testes e seu desenvolvimento Conhecer o framework CMMI Conhecer os principais conceitos de gerência de configuração e manutenção de software Criar e Adaptar atividades gestão de configuração e manutenção em modelos de processo de software
Bibliografia Pressman, R. S.; Engenharia de Software. 6ed, Ed. McGraw Hill, 2006. ISBN: 8586804576. Sommerville, I.; Engenharia de Software. 8ed, Ed. Addison Wesley, 2007. ISBN: 9788588639287. Pfleeger, S. L.; Atlee, J. M.; Software Engineering. 3ed, Ed. Prentice Hall, 2005. ISBN: 9780131469136. Rosenberg, D.; Stephens, M.; Use Case Driven Object Modeling with UML: Theory and Practice. Ed. Apress, 2007. ISBN: 9781590597743. Fox, C.; Introduction to Software Engineering Design: Processes, Principles and Patterns with UML2. 1ed, Ed. Addison Wesley, 2006. ISBN: 9780321410139
Critérios de avaliação 2 provas totalizando 60% (30% cada) n Trabalhos práticos e teóricos totalizando 40% Datas sugeridas Prova 1-04/05/2012 Prova 2-29/06/2012 Data definida Prova final 12/07/2012
Local das aulas Quinta-feira 10:00 as 12:00 Sala 10 - Prédio Novo Quinta-feira 13:30 as 15:30 LAB3 - Chiuchiu
Engenharia de Software O que é Software? O que é engenharia de software? Qual a diferença entre engenharia de software e ciência da computação? Qual a diferença entre engenharia de software e engenharia de sistemas? O que é um processo de software? O que é um modelo de processo d
Engenharia de Software Quais são os custos da engenharia de software? Quais são os métodos de engenharia de software? O que é uma CASE ( Engenharia de Software Apoiada por Computador) Quais são os atributos de um bom software? Quais são os principais desafios da engenharia de software?