Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
"Se eu soubesse o que eu estava fazendo, no seria chamada pesquisa." (Albert Einstein)
Objetivos
Entender o que engenharia de software e porque ela importante Saber as respostas para questes-chave que fornecem uma introduo Engenharia de Software Entender questes profissionais e ticas, relevantes para os engenheiros de software
Tpicos abordados
Introduo (Histrico) FAQs sobre Engenharia de Software Responsabilidade profissional e tica
Introduo
Onde os softwares so usados? Qual o impacto do software na sociedade? Quando desenvolver para web ou desktop? Como desenvolver? O que o software produz? O que levar em considerao ao desenvolver um software?
Layout, IHM, Padronizao, LP, BD, Redes, Segurana, Qualidade, Pblico, Plataforma, SO, Multi-usurio Pensar no hoje e no amanh
Pesquisa Captulo 1
Responda as questes e coloque todas as referncias que voc usou para cada uma. Entregar no fim do Captulo 1, talvez seja na prxima aula (Individual) Pesquise alguns, pelo menos 3, problemas causados por erros em software Pesquise, pelo menos, 3 produtos de categorias diferentes onde o software faz a diferena Qual a diferena de um software livre para open source? O que GNU GPL? Que tipos de licenas de software existem? O software livre impacta na sociedade de que forma? Software livre resolve a pirataria? Explique. Voc j comprou algum software? Onde comprou? Como comprar? Voc j pirateou software? Como combater a pirataria? Justifique se um usurio leigo est sujeito s penas da lei de proteo de software, anti-pirataria, etc. Quem responsabilizado quando se pratica pirataria de software em uma empresa? Em quais circunstncias permitido ao usurio duplicar um programa de computador? Posso instalar um programa legalmente adquirido em mais de um microcomputador? Como ganhar dinheiro vendendo software?
Evoluo do sofware
Nos primeiros anos (1950)
Foco no hardware (maior custo) Software desenvolvido sem administrao e mtodos Software projetado sob medida para a aplicao
Quase no havia produto de software Quem desenvolvia, usava e alterava o software
Evoluo do software
Segunda fase (meados dos anos 60)
Interatividade, sistemas de tempo real Uso de diferentes bibliotecas
Necessidade de adaptar (ao cliente ou ao hardware) e manter milhares de linhas de cdigo Surgem as atividades de manuteno de software
Evoluo do software
Terceira fase (anos 70)
Redes, distribuio e concorrncia Generalizao dos computadores pessoais Crescimento das empresas de software
As empresas passaram a vender at 100 vezes mais produtos de software
Muitos passaram a gastar mais dinheiro com software do que com o computador
Evoluo do software
Quarta fase (atualmente)
Tecnologia orientada a objetos Desktops poderosos Redes neurais (IA) A capacidade de construir software no acompanha o ritmo da demanda Projetos ruins e o uso de recursos inadequados ameaam a capacidade de manter os softwares existentes
Evoluo do hardware
Desenvolvimento de hardware
Era o maior custo Uso de padres tcnicos (anlise e projeto) Emprego de controles, mtodos e ferramentas (engenharia de software)
Evoluo do software
Desenvolvimento de software Programao por tentativa e erro Falta de mtodos para o desenvolvimento Hoje seu custo bem maior que o do hardware Lamentaes: Por que demora tanto tempo para que os programas sejam concludos? Por que os custos so to elevados? Por que no descobrimos todos os erros antes de entregarmos o software ao nosso cliente? Porque temos dificuldade em medir o progresso enquanto o software est sendo desenvolvido?
Conseqncias
Aplicaes escritas h 20 anos, modificadas ao longo do tempo, so impossveis de manter. Pequenas alteraes podem fazer o sistema falhar. No h quem conhea estes sistemas
Falta de documentao do desenvolvimento
Dados
Taxa de Sucesso 16,2% Atrasados ou Acima do Oramento Cancelados 31,1 % 52,7 %
Alguns anos depois (Pesquisa em 7500 projetos) Taxa de sucesso 18,1% Atrasados ou Acima do Oramento 51,4% Cancelados 30,5 %
Ariane 5
Veculo Lanador de Satlites Projeto da Agncia Espacial Europia que custou:
10 anos. US$ 8 Bilhes.
Outros
VLS (Alcntara) Famlia Windows Diversos softwares (com atualizaes constantes ... )
Por qu?
Sintomas
Compreenso incompleta ou imprecisa das necessidades do usurio Inabilidade de lidar com requisitos que evoluem Mdulos incompatveis Dificuldades de estender ou manter software Descoberta de defeitos graves no projeto em etapas avanadas de desenvolvimento ou mesmo em poca de implantao ou uso Desempenho inaceitvel do software Falta de coordenao na equipe
Por qu?
Causas frequentes Gerncia de requisitos sem processo definido Comunicao ambgua e imprecisa entre partes envolvidas Complexidade crescente Inconsistncias no detectadas em nvel de anlise, projeto e implementaes Testes insuficientes Dificuldade em lidar e gerenciar riscos Falta de controle sobre propagao de mudanas Automao insuficiente Ubiqidade (disponvel o tempo todo em qualquer lugar) Diversidade de plataformas Comunicao entre o cliente e o desenvolvedor muito fraca.
Mas nem tudo est perdido Sistemas complexos e grandes foram, e esto sendo, desenvolvidos.
Simuladores de aeronaves, veculos Telemetria, processamento em tempo real Geoprocessamento Construo de plataformas, edificaes etc, etc, etc
O que fazer?
O que software?
Programas de computador E documentao associada com os requisitos, modelos de projeto e manuais de usurio, etc. Produtos de software podem ser desenvolvidos para cliente particular ou para mercado geral. Produtos de software podem ser
Genricos desenvolvidos para qualquer cliente. e.g. Software para PC como Excel ou Word. Especificao da organizao. Personalizado (sob encomenda) desenvolvido para um cliente especfico de acordo com as especificaes. Especificao do cliente.
Novo software pode ser criado configurando um software genrico ou reusando softwares existentes. e.g. SAP, web services, etc.
Competncia
No deve aceitar trabalho que esteja fora do seu alcance.
Dilemas ticos
Discordar, em princpio, das polticas da alta gerncia. Seu empregador age sem tica e entrega verses de sistemas crticos sem finalizar os testes. Participao de desenvolvimento militar ou nuclear. Voc deve ter seu entendimento. A posio tica depende inteiramente do ponto de vista dos indivduos envolvidos
Pontos-chave
Engenharia de software uma disciplina relacionada a todos os aspectos de produo de software Os produtos de software consistem em programas desenvolvidos e documentao associada. Os atributos essenciais do produto so: fcil manuteno, confiana, eficincia e aceitao (usabilidade) O processo de software inclui todas as atividades envolvidas no desenvolvimento ou evoluo de software. Especificao, Desenvolvimento, Validao e Evoluo fazem parte de todos os processos de software Mtodos so meios organizados de produo de software.
Pontos-chave
Ferramentas CASE so sistemas de software desenvolvidos para apoiar o desenvolvimento de software Engenheiros de software tem responsabilidades com a profisso e com a sociedade. No devem se preocupar apenas com as questes tcnicas. Sociedades profissionais publicam cdigos de conduta que definem os padres de comportamento esperados de seus membros