Sei sulla pagina 1di 67

AN INTRODUCTION TO SOFTWARE ENGINEERING

Ian Sommerville, 8 edio Captulo 1


Aula de Luiz Eduardo Guarino de Vasconcelos

"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

O projeto ficava na cabea do desenvolvedor


No havia documentao O que acontecia se um desenvolvedor pedisse demisso?

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

A manuteno passou a absorver muitos

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

Sistemas crticos (trfego areo) de funcionamento estranho no so substitudos


No h sistemas para substitui-los

Curva de falhas para o hardware

Curva de falhas para o software

Curva de falhas real para o SW

Mitos do software - Gerente


Temos um manual repleto de padres e procedimentos que oferecer tudo o que os desenvolvedores precisam saber Ele usado? As tcnicas so adequadas ao software sendo desenvolvido? Ele completo? Temos os computadores mais modernos do mercado Ferramentas (SW) que auxiliam o desenvolvimento so mais teis Se o cronograma est atrasado adicionaremos mais programadores para tirar o atraso Perda de produtividade na educao dos novos programadores

Mitos do software - Cliente


Uma declarao geral dos objetivos suficiente para comear a escrever o programa. Os detalhes podem ser preenchidos mais tarde. Definio inicial ruim Principal causa do fracasso de projetos de desenvolvimento de software Os requisitos modificam-se continuamente, mas as mudanas podem ser facilmente acomodadas. Pouca ateno definio inicial dos requisitos O impacto negativo das mudanas maior conforme o projeto vai se desenvolvendo Definio (1x) Implementao (1,5x a 6x) Manuteno (60x a 100x) Pode ser mais barato desenvolver outro SW

Mitos do software - Desenvolvedor


Depois de escrever e colocar o programa em funcionamento nosso trabalho estar terminado De 50% a 70% do esforo gasto depois de entregar a primeira verso do sistema ao cliente Enquanto no tiver o programa funcionando no posso medir sua qualidade A qualidade no deve ser garantida por testes, mas por todas as atividades de desenvolvimento A nica coisa a ser entregue em um projeto bem-sucedido o programa funcionando A documentao bem feita crucial para as manutenes futuras

No estabelea prazos audaciosos demais

Sempre oua o mercado

Usurios odeiam bugs

Experincia em simulao ajuda

Nem toda apresentao ser um sucesso

O que serve para um cliente pode no servir para outro

Busque solues eficientes

SUPORTE! Ferramentas diferentes para situaes diferentes

Ajuda On-Line pode ser til

Previso e otimizao podem ser complexas

Observe os atributos significativos do seu cliente

Observe os atributos significativos do seu cliente

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 %

Denver International Airport


Custo do projeto: US$ 4.9 bilhes
100 mil passageiros por dia 1,200 vos 53 milhas quadradas 94 portes de embarque e desembarque 6 pistas de pouso / decolagem

Erros no sistema automtico de transporte de bagagens (misloaded, misrouted, jammed):


Atraso na abertura do aeroporto com custo total estimado em US$360 Milhes

86 milhes para consertar o sistema

Ariane 5
Veculo Lanador de Satlites Projeto da Agncia Espacial Europia que custou:
10 anos. US$ 8 Bilhes.

Capacidade 6 toneladas. Garante supremacia europia no espao.

Resultado = Fogos de Artifcio


Explode 37 segundos aps seu lanamento. Falha no sistema (software) que calculava a trajetria e atitude, leva a uma pane nos sistemas adjacentes. Estes, enviam sinais de diagnstico para os motores que os interpreta como dados comuns......... Destruio do foguete e carga avaliada em US$ 500 milhes Falha de Teste ......BOOM.

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?

Engenharia de Software - Resumo


As economias de todos os pases dependem de sistemas complexos baseado em computadores. Mais e mais sistemas so controlados por software Engenharia de Software se concentra nas teorias, mtodos e ferramentas para desenvolvimento de software profissional. Despesas com software representam uma frao significativa dos gastos de todos os pases desenvolvidos Crise de software 1968. Apresentao do conceito de Eng. Software. Softwares complexos, altos custos, atrasos necessidade de tcnicas, processos, teorias ES

Custos com Software


Custos com software geralmente dominam os custos com sistemas computacionais. O custo de software em um PC normalmente maior que o custo de hardware. Custos para manter softwares so maiores do que para desenvolver. Em sistemas com longo ciclo de vida os custos com manuteno podem ser muito maiores do que os custos de desenvolvimento. Engenharia de software foca no custo efetivo do desenvolvimento do software, atravs de tcnicas ...

FAQs sobre Engenharia de Software


O que software? O que engenharia de software? Qual a diferena entre engenharia de software e cincia da computao? Qual a diferena entre engenharia de software e engenharia de sistemas? O que um processo de software? O que um modelo de processo de software?

FAQs about software engineering


Quais so os custos da engenharia de software? Quais so os mtodos da engenharia de software? O que CASE (Computer-Aided Software Engineering)? Quais so os atributos de um bom software? Quais so os desafios-chave da engenharia de software?

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.

O que engenharia de software?


Eng. Software uma disciplina da engenharia que esta concentrada em todos os aspectos da produo de software (Sommerville, 2007) Disciplina que integra processo, mtodos e ferramentas para o desenvolvimento de software. (Pressman, 95) Engenheiros de Software devem adotar uma abordagem sistemtica e organizada para trabalhar e usar ferramentas e tcnicas apropriadas dependendo de cada problema a ser solucionado (considerar plataforma, SO, escopo, imediatismo, etc). (Sommerville, 2007) O estabelecimewnto e uso de slidos princpios de engenharia para que se possa obter economicamente um software que seja confivel e que funcione eficientemente em mquinas reais. (Fritz Bauer, 1969)

Qual a diferena entre engenharia de software e cincia da computao?


Cincia da computao se concentra nas teorias e mtodos fundamentais da computao; Eng. Software se concentra nos problemas prticos da produo de software. Ideal que engenheiros de software se apoiassem nas teorias da computao, mas na realidade isso complicado.

Qual a diferena entre engenharia de software e engenharia de sistemas?


Engenharia de sistemas se concentra em todos os aspectos de sistemas baseados em computadores como hardware, software, polticas e processos de engenharia. Engenharia de Software parte deste processo voltado ao desenvolvimento de software , das aplicaes, dos bancos de dados, das UIs. Engenheiros de software so envolvidos na especificao de sistemas, projeto arquitetural, integrao e distribuio.

O que um processo de software?


Conjunto de atividades com o objetivo de desenvolver ou evoluir um software. As atividades genricas de todos os processos de software so: Especificao o que p sistema dever fazer e quais as restries de desenvolvimento Desenvolvimento produo do sistema de software, projetado e programado Validao verifica se o software o que o cliente deseja Evoluo mudanas do software em funo da demanda, que podem ser requisitos dos clientes ou do mercado

O que um modelo de processo de software?


Uma representao simplificada do processo de software que apresenta a viso do mesmo. Exemplos de perspectivas/modelos de processos so Modelo de Workflow sequncia de atividades; Modelo de fluxo de dados fluxo da informao, como entrada transformada numa sada; Modelo de papel/ao quem faz o que. Modelos de processos genricos Cascata; Desenvolvimento iterativo; Engenharia de software baseada em componente.

Quais so os custos da engenharia de software?


Aproximadamente 60% do custo para desenvolvimento, 40% para testes, mas isso pode variar. Para softwares personalizados os custos com evoluo podem exceder os custos de desenvolvimento e so difceis de planejar. Custos variam e dependem do processo e do tipo de sistema a ser desenvolvido, alm dos atributos (imediatismo, performance, plataforma, segurana, disponibilidade, etc). Distribuio do custo depende do modelo que est sendo usado.

Distribuio de custo nas atividades de ES

O que so mtodos de engenharia de software?


Abordagem estuturada para desenvolvimento do software que incluem modelos de sistemas, notaes, regras, , guias de processos, recomendaes, etc. Descries de Modelos de sistemas Descries de modelos grficos que devem ser produzidos. Ex.: Modelo de objetos, fluxo de dados, mquina de estado; Regras Restries aplicadas aos modelos. Ex.: toda entidade deve ter um nico nome; Recomendaes Heursticas que caracterizam boa prtica de projeto nesse mtodo. Ex: nenhum objeto deve ter mais que sete subobjetos; Guia de processo Quais atividades devem ser seguidas. Ex.: atributos de objetos devem ser documentados antes de definir as operaes do mesmo.

O que CASE (Computer-Aided Software Engineering)


Sistemas de Software que so usados para dar apoio s atividades do processo de software. Sistemas CASE so usados em mtodos de ES, como editores, geradores de cdigo, etc. Upper-CASE Ferramentas que suportam as atividades iniciais do processo dos requisitos ao projeto; Lower-CASE Ferramentas que suportam atividades finais do processo como programao, debugging e testes.

Quais so os atributos de um bom software?


O software deve dispor das funcionalidades requeridas, alm de performance para o usurio e fcil manuteno, usabilidade e confiana. Maintainability / Fcil manuteno Software deve ser escrito de modo que possa evoluir de acordo com as mudanas necessrias; Dependability /Confiana Software deve ter trustworthy (confiana). No deve causar danos fsicos ou econmicos em caso de falhas (COMPLICADO); Efficiency / Eficincia Software no deve desperdiar os recursos do sistema; Acceptability / Usabilidade Software deve ser usvel, sem esforo excessivo, pelo tipo de usurio para o qual foi projetado

Quais so os desafios-chave da engenharia de software?


Heterogeneidade, entrega e confiana. Heterogeneity Desenvolver tcnicas para operar em sistemas distribudos em plataformas e ambientes de execuo diferentes; Delivery Desenvolver tcnicas para diminuir os tempos de entrega dos sistemas grandes e complexos sem comprometer a qualidade; Trust Desenvolver tcnicas que demonstrem que o software pode ter a confiana dos usurios.

Responsabilidade tica e profissional


Engenharia de software limita a liberdade dos engenheiros que implicam em responsabilidades mais amplas do que a aplicao de habilidades tcnicas. Engenheiros de software devem se comportar de forma honesta, reponsvel tica e moralmente para serem respeitados como profissionais Comportamento tico no est limitado por leis

Caractersticas da responsabilidade profissional


Confidencialidade
Devem respeitar a confidencialidade dos clientes ou funcionrios, independente de ter ou no assinado um acordo formal.

Competncia
No deve aceitar trabalho que esteja fora do seu alcance.

Caractersticas da responsabilidade profissional


Direitos sobre propriedade intelectual Deve estar ciente das leis locais que regem o uso de propriedade intelectual tais como patentes e direitos autorais, para assegurar a devida proteo a funcionrios e clientes. Mau uso de computadores No deve usar suas habilidades tcnicas para mau uso (ex.: execuo de jogos nas mquinas de funcionrios e clientes at disseminao de vrus).

ACM/IEEE Cdigo de tica


http://www.acm.org/ http://www.ieee.org.br/ As sociedades profissionais tem cooperado para produzir um cdigo de tica e de prtica profissional. O Cdigo contm 8 Princpios que relacionam comportamento e decises sobre o engenheiro de software profissional que inclui educadores, gerentes, supervisores, desenvolvedores de poltica, estagirios e estudantes

Cdigo de tica - Prembulo


Prembulo A verso resumida do cdigo apresenta as aspiraes em um alto nvel de abstrao: as clusulas que esto includas na verso completa fornecem exemplos e detalhes de como essas aspiraes mudam a maneira como agimos como profissionais de engenharia de software. Sem essas aspiraes, os detalhes podem se tornar muito especficos e tediosos; sem os detalhes, as aspiraes podem se tornar aparentemente importantes, mas vazias; juntos, aspiraes e detalhes formam um cdigo coeso. Os engenheiros de software devem se comprometer a fazer da anlise, especificao, desenvolvimento, testes e manuteno de software uma profisso benfica e respeitada. De acordo com seu comprometimento com a sade, segurana e bem-estar do pblico, os engenheiros de software devem aderir aos seguintes Oito Princpios:

Cdigo de tica - Princpios


PBLICO Engenheiros de software devem agir consistentemente com o interesse pblico. CLIENTE E EMPREGADOR Os Engenheiros de software devem agir dentro dos melhores interesses de seu cliente e empregador, de forma consistente com o interesse pblico. PRODUTO Engenheiros de software devem assegurar que seus produtos e modificaes a eles relacionadas atendam aos mais altos padres profissionais possveis.

Cdigo de tica - Princpios


JULGAMENTO Engenheiros de software devem manter a integridade e a independncia do seu julgamento profissional. GERENCIAMENTO Gerentes e lderes de engenharia de software devem aceitar e promover uma abordagem tica no gerenciamento de desenvolvimento e manuteno de software. PROFISSO Engenheiros de software devem promover a integridade e a reputao da profisso de forma consistente com o interesse pblico.

Cdigo de tica - Princpios


COLEGAS Engenheiros de software devem ser honestos e colaborativos com seus colegas. INDIVDUO Engenheiros de software devem participar, ao longo da vida, aprendendo, respeitando e promovendo uma abordagem tica na prtica da profisso

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

Potrebbero piacerti anche