engenharia de software -...
TRANSCRIPT
29/04/13 2
Engenharia de Software
Agenda
– Software
– Engenharia de Software
– Sistema
– Engenharia de Sistemas
29/04/13 3
Engenharia de Software
Importância do Software no mundo moderno
– Infraestrutura e serviços são controlados por sistemas computacionais.
●Ex. Produtos elétricos possuem um hardware e um software que o controla.
– Sistemas de software são abstratos, intangíveis, e não são restringidos pelas propriedades dos materiais, nem governadas pelas leis da física ou pelos processos de manufatura.
● Não há limites naturais para o potencial do software.
● Entretanto sistemas de software podem se tornar extremamente complexos.
● Criar software é uma tarefa puramente intelectual
●Então!?!?!? Como criar algo intangível? Dar valor($$)? Evoluir?
– Perguntas que deverão ser respondidas pela disciplina!!!
29/04/13 4
Engenharia de Software
Importância do Software no mundo moderno
– Vários sistemas são controlados por software[1]:
● O sistema de aviação dos caças F-22 Raptor, da força aérea americana, consiste de aproximadamente 1.7 milhão de linhas de código.
● O Boeing 787 Dreamliner contém 6.5 milhão de linhas de código de software.
● Um simples celular contém cerca de 2 milhões de linhas de código de software(Imagine um smarthphone!!!)
– Exemplos de componentes de carros em que há software embutido:
● Sistema Air-bag; controle de alarme; sistema de entretenimento; ABS, sistema de navegação; monitoramento da pressão dos pneus; sistema ignição; sistema de comunicação; sistema eletrônico de estabilidade; sistema de navegação; controle da temperatura; etc.
29/04/13 5
Engenharia de Software
Definição de software
– Programas de computador, documentação associada e dados de configuração [4].
– Pode ser criado de várias formas diferentes:
●Pelo desenvolvimento de novos programas
●Pela configuração de sistemas de software genéricos
●Pelo reuso de software existente
– Fato: Podemos construir uma casa sem um projeto! Mas e o software?
– A abordagem "codificar e testar" (code & test) é suficiente?
–Vocês já criaram software?
29/04/13 6
Engenharia de Software
Importância do Software no mundo moderno
– Softwares representam custos nos produtos:
●No caso de carros, por exemplo, os custos de software e eletrônicos foram de 5% em 1970 para 15% em 2005. Em alguns carros atualmente estes custos chegam a 45%. Estima-se que em 10 anos estes custos subam para 80% [1]
– Quem custa mais, software ou hardware?:
●Licença do AutoCAD 2012 [2] – $4.195 ~ R$ 8.000
●Notebook Lojas MM.com [3] – R$ 999,87
29/04/13 7
Engenharia de Software
Atributos de Software
–Atributos essenciais:
●Manutenibilidade: software evolui, os requisitos mudam.
●Confiança e Proteção: software não deve causar prejuízos e deve ser seguro.
●Eficiência: capacidade de resposta, tempo de processamento e memória.
●Aceitabilidade: compreensível, usável e compatível com outros sistemas.
–Atributos de qualidade diferenciam o desenvolvimento de software profissional do amador:
● Adequação ao propósito; Zero defeito (É possível?); Conformidade e segurança; Atendimento à necessidade definida e implícita do cliente
–Atributos podem conflitar! Ex. Eficiência x Segurança
29/04/13 8
Engenharia de Software
Tipos de Software (alguns tipos)
Software básico – dão apoio a outros programas
Software de tempo real – monitora, analisa e controla eventos, sob restrição de tempo
Software comercial – propósitos comerciais e tomadas de decisões administrativas
Software científico e de engenharia – propósitos científicos
Software embarcado – projetado para um determinado hardware
Software aplicativo ou de uso pessoal – pessoal, gedit, paciência, LibreOffice
Software de IA – uso de técnicas da IA
Software para Web (WebApps) – utilizam a infraestrutura da Internet
–Como construir cada um dos tipos de software? Pode-se usar o mesmo processo de desenvolvimento?
29/04/13 9
Engenharia de Software
Evolução do Software [7]
29/04/13 10
Engenharia de Software
Evolução do Software [7]
29/04/13 11
Engenharia de Software
Evolução do Software [7]
Estimativas imprecisasInsatisfação do cliente
Baixa Qualidade
Engenharia de Software
29/04/13 12
Engenharia de Software
Evolução do Software [7]
29/04/13 13
Engenharia de Software
Evolução do Software [7]
DSOA, MDD, Nuvem,Computação Ubíqua, etc
29/04/13 14
Engenharia de Software
Guerra dos Software [8]
29/04/13 15
Engenharia de Software
Definição de Engenharia de Software
– É uma disciplina (abordagem sistemática) de engenharia cujo foco está em todos os aspectos da produção de software, desde os estágios iniciais da especificação do sistema até a sua manutenção, quando o sistema já está sendo usado. [4]
– (1) “The application of a systematic, disciplined and quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software” [5]
– (2) “The study of approaches as in (1)” [5]
29/04/13 16
Engenharia de Software
Processo de Software
–A abordagem sistemática é, às vezes, chamada de processo de software.
–Processo de software é uma sequência de de atividades que leva à produção de um produto de software.
–Atividades são definíveis, repetíveis e mensuráveis que levam a um resultado útil.
–Existem vários modelos de processos, pois existem formas diferentes de se fazer a mesma coisa! Existem tipos diferentes de software.
29/04/13 17
Engenharia de Software
Processo de Software
–Não existe um processo de software que se aplique a todos os software!
–Existem quatro atividades fundamentais comuns a todos os processo de software [4]:
●Especificação - necessidades do usuário são reunidas e convertidas em requisitos de software
●Desenvolvimento – projeto, codificação e teste
●Validação – o software atende a necessidade do cliente?
●Evolução – refletir a mudanças nos requisitos do usuário e do mercado
29/04/13 18
Engenharia de Software
Motivação
29/04/13 19
Engenharia de Software
Motivação
–Hall da vergonha de Software [6]
●FBI
–Início do projeto em 2001: Base de dados com suspeitos de terrorismo.
–Em Janeiro de 2005: Gastos de US$ 170 milhões: “not even close to having a working system”
●McDonald's
–Início em 1999: Projeto Innovate, com orçamento previsto de US$ 1 bilhão
–Cancelado em 2002, após gastos de US$ 170 milhões
●Windows :P
29/04/13 20
Engenharia de Software
Engenharia de Software, Ciência da Computação e Engenharia de Sistemas
–Ciência da Computação - Teorias e métodos que sustentam sistemas computacionais e de software. Aplicáveis para programas relativamente pequenos. (Ex. BD, estrutura de dados, linguagens de programação)
–Engenharia de Software - Se preocupa com os problemas práticos de produção de software útil. (Ex. Cronogramas, requisitos)
–Engenharia de Sistemas – foco em todos os aspectos do desenvolvimento e evolução de sistemas complexos em que o software tem o papel principal. (Ex. Hardware, software, processos e pessoas)
29/04/13 21
Engenharia de Software
Definição de Sistema
–Coleção de componentes inter-relacionados que trabalham em conjunto para atingir um objetivo
29/04/13 22
Engenharia de Software
Sistema Técnicos Baseado em Computador (SBC)
–Arranjo de elementos organizados para atingir, através do processamento de informações, uma meta predefinida.
–Incluem componentes de Hardware e Software, mas não procedimentos e processos.
29/04/13 23
Engenharia de Software
Sistemas Sociotécnicos
–Incluem um ou mais sistemas técnicos, mas, principalmente, também pessoas que entendem o propósito do software dentro do sistema.
–Processos e pessoas são partes inerentes do sistema, regulados por políticas e regras organizacionais.
–São sistemas corporativos destinados a contribuir para o cumprimento de uma meta de negócio. Ex. Aumentar as vendas, arrecadar impostos, segurança do espaço aéreo.
29/04/13 24
Engenharia de Software
Processo de desenvolvimento de sistemas
29/04/13 25
Engenharia de Software
Engenharia de Sistemas
–Engloba todas as atividades envolvidas na aquisição, especificação, projeto, implementação, validação, implantação, operação e manutenção dos sistemas sociotécnicos.
–O Engenheiro de Sistemas define a organização e interação dos elementos (hardware, pessoas, softwares e procedimentos) de um sistema baseado em computador.
–Deve-se enxergar a floresta, pois não se vê as florestas pelas árvores.
–Inicia-se com a clara compreensão do contexto!
29/04/13 26
Engenharia de Software
Leitura complementar
–Capítulo 1. Sommerville – Introdução à engenharia de software
–Capítulo 10. Sommerville – Sistemas Sociotécnicos
–No silver bullet: Essence and accidents of software engineering. Brooks, F. P. – Problemas da engenharia de software.
–Hall da Vergonha de Software. http://spectrum.ieee.org/computing/software/why-software-fails - Casos de fracassos em projetos de desenvolvimento de sistemas.
29/04/13 27
Engenharia de Software
Referências
[1] - This Car Runs on Code. Último acesso em Abril de 2013. http://www.spectrum.ieee.org/feb09/7649
[2] - AutoDesk – AutoCAD. Último acesso em Abril de 2013. http://www.autodesk.com/products/autodesk-autocad/buy
[3] - Lojas MM.com. Último acesso em Abril de 2013.http://www.lojasmm.com
[4] – Ian Sommerville. 9. ed. 2011. Engenharia de Software.
[5] - IEEE 610.12 (1990) – IEEE Standard Glossary of Software Engineering Terminology.
[6] Hall da Vergonha de Software. Último acesso em Abril de 2013. http://spectrum.ieee.org/computing/software/why-software-fails
[7] Engenharia de Software. Prof. Ricardo Argenton. Último acesso em Abril de 2013. www.univasf.edu.br/~ricardo.aramos/disciplinas
[8] Software Wars. Último acesso em Abril de 2013.http://www.mshiltonj.com/software_wars/current/