Você está na página 1de 14

Engenharia de Software

Captulo 1 Introduo

Slides do Livro do Sommerville, 2000


Disponveis em ingls em www.software-engin.com

Traduzidos por Jacinta Pereira


Graduando do Curso de Letras da UFC

Apresentados por Rossana Andrade


Ph.D, SITE, University of Ottawa, Canad
Profa. Departamento de Computao, Centro de Cincias,
Universidade Federal do Cear

rossana@lia.ufc.br
http://great.ufc.br

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 1

Tpicos abordados
 FAQs sobre engenharia de software
 Responsabilidade profissional e tica

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 2


Engenharia de Software
 As economias de TODAS as naes
desenvolvidas so dependentes de software
 Cada vez mais os sistemas so controlados por
software
 A engenharia de software se preocupa com
teorias, mtodos e ferramentas para o
desenvolvimento profissional de software
 O custo da engenharia de software representa
uma frao significativa do PIB em todos os
pases desenvolvidos
Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 3

Custos do Software
 Os custos do software geralmente dominam os
custos do sistema total.
Os custos de software em um PC so geralmente maiores que o
custo do hardware
 Softwares so mais caros para manter do que
para desenvolver.
Para sistemas com uma vida longa, os custos com manuteno
podem ser muitas vezes maiores que os custos de
desenvolvimento
 Engenharia de software preocupa-se com o
desenvolvimento de softwares rentveis

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 4


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?

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 5

FAQs sobre engenharia de


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

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 6


O que software?
 Programas de computador e documentao
associada
 Produtos de Software podem ser desenvolvidos
para um cliente em particular ou para um
mercado geral
 Produtos de Software podem ser
Genricos desenvolvidos para serem vendidos para uma rede
de clientes diferentes
Sob medida (personalizados) - desenvolvidos para um nico
cliente de acordo com suas especificaes

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 7

O que engenharia de software?


 Engenharia de software uma disciplina da
engenharia que se preocupa com todos aspectos
da produo de software
 Engenheiros de software devem adotar uma
postura sistemtica e organizada para seus
trabalhos e utilizar ferramentas e tcnicas
apropriadas, dependendo do problema a ser
resolvido, dos obstculos no desenvolvimento e
dos recursos disponveis

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 8


Qual a diferena entre engenharia de
software e Cincia da Computao?
 A Cincia da Computao preocupa-se com
teorias e fundamentos; a engenharia de software
est preocupada com a viabilidade de
desenvolvimento e entrega de softwares teis
 As teorias da Cincia da Computao so
atualmente insuficientes para atuar como um
apoio completo para a engenharia de software

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 9

Qual a diferena entre engenharia de


software e engenharia de sistemas?
 Engenharia de sistema preocupa-se com todos os
aspectos do desenvolvimento de sistemas
baseados em computadores, incluindo hardware,
software e engenharia de processo. Engenharia de
software parte deste processo
 Os engenheiros de sistema envolvem-se na
especificao do sistema, no design arquitetural,
na integrao e na implantao

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 10


O que um processo de software?
 Um conjunto de atividades cuja meta o
desenvolvimento ou evoluo do software
 As atividades genricas em todos os processos de
software processes so:
Especificao o que o sistema deve fazer e os obstculos de
seu desenvolvimento
Desenvolvimento produo do sistema de software
Validao verificar se o software o que o cliente quer
Evoluo mudar o software em resposta s necessidades de
mudanas

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 11

O que um modelo de processo de


software?
 Uma representao simplificada de um processo
de software, apresentada de uma perspectiva
especfica
 Exemplos de perspectivas de processo so
Perspectiva de fluxo de trabalho - seqncia de atividades
Perspectiva de fluxo de dados - fluxo de informao
Perspectiva de papel/ao - quem faz o qu
 Modelos de processos genricos
Cascata
Desenvolvimento Evolucionrio
Transformao Formal
Integrao de componentes reutilizveis
Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 12
Quais os custos da engenharia de software?
 Cerca de 60% dos custos so de desenvolvimento, 40%
so custos de teste. Para software personalizado, os custos
de evoluo geralmente excedem os custos de
desenvolvimento
 Os custos variam dependendo do tipo de sistema a ser
desenvolvido e dos requisitos dos atributos de sistema
como performance e confiabilidade do sistema
 Distribuio de custos depende do modelo de
desenvolvimento que usado

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 13

Quais os mtodos de engenharia de


software?
 Abordagens estruturadas para o desenvolvimento de
software que incluem modelos de sistema, notaes,
regras, conselhos de projeto e guia de processo
 Descrio dos modelos
Descrio de modelos grficos que devem ser produzidos
 Regras
Limitaes aplicadas aos modelos de sistema
 Recomendaes
Conselhos sobre a boa prtica de projetos
 Guia de processo
Que atividades seguir

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 14


O que CASE (Computer-Aided
Software Engineering)
 Sistemas de Software que devem prover um
suporte automatizado para atividades do processo
de software. Sistemas CASE so geralmente
utilizados para suporte de mtodo
 CASE de nvel alto
Ferramentas para dar suporte s atividades iniciais de requisito e
projeto
 CASE de nvel baixo
Ferramentas para dar suporte s atividades posteriores como
programar, depurar e testar

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 15

Quais os atributos de um bom software?


 O software deve fornecer as funcionalidades e
performance requeridas para o usurio e deve ser fcil de
manter, confivel e utilizvel
 Manutenibilidade
O software deve evoluir para atender s necessidades de mudana
 Confiabilidade
O software deve ser confivel
 Eficincia
O software no deve fazer uso desnecessrio de recursos do sistema
 Usabilidade
O software deve ser utilizvel pelos usurios para os quais ele foi
projetado

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 16


Quais os principais desafios enfrentados
pela engenharia de software?
 Lidando com sistemas legados, lidando com a
diversidade crescente e lidando com a demanda
de tempos para entrega reduzidos
 Sistemas legados
Sistemas antigos e de valor devem ser mantidos e atualizados
 Heterogeneidade
Os sistemas so distribudos e incluem um misto de hardware e
software
 Entrega
Existe uma presso crescente para agilizar a entrega de software

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 17

Responsabilidade tica e profissional


 A engenharia de software envolve
responsabilidades maiores do que simplesmente a
aplicao de habilidades tcnicas
 Engenheiros de software devem comportar-se de
uma forma honesta e eticamente responsvel se
quiserem ser respeitados como profissionais
 Comportamento tico mais que simplesmente
manter a lei.

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 18


Questes de responsabilidade
profissional
 Confiabilidade
Engenheiros devem normalmente respeitar a
confidencialidade de seus patres ou clientes
independente de ter ou no um acordo formal
de confiabilidade assinado.
 Competncia
Engenheiros no devem falsear seus nveis de
competncia. No devem deliberadamente
aceitar trabalhos que estejam fora de suas
competncias.

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 19

Questes de responsabilidade
profissional
 Direitos de propriedade intelectual
Engenheiros de software devem conhecer as regras locais que
governam o uso de propriedade intelectual como as patentes,
copyright, etc. Eles devem ser cuidadosos para garantir que a
propriedade intelectual de seus patres e clientes esteja
protegida.

 Mau-uso do Computador
Engenheiros de software no devem usar suas habilidades
tcnicas para fazer mau uso do computador de outras pessoas. O
mau uso do computador vai de relativamente trivial (brincar
com jogos na mquina do patro, vamos dizer assim) a
extremamente srios (disseminao de vrus).

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 20


Cdigo de tica da ACM/IEEE
 As sociedades profissionais nos EUA tm cooperado
para produzir cdigo de prtica tica.
 Membros destas organizaes assinam o cdigo de
prtica quando eles entram.
 O Cdigo contm oito princpios relacionados com o
comportamento e decises tomadas pelo engenheiro
de software profissional, incluindo praticantes,
educadores, gerentes, supervisores e responsveis
pelas diretrizes polticas, bem como estagirios e
estudantes da profisso.

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 21

Cdigo de tica - prembulo


 Prembulo
A verso curta do cdigo resume as aspiraes em um alto nvel
de abstrao; as clusulas que esto includas na verso completa
do exemplos e detalhes de como estas aspiraes mudam a
forma como agimos enquanto profissionais de engenharia de
software. Sem as aspiraes, os detalhes podem se tornar
legalistas e tediosos; sem os detalhes, as aspiraes podem se
tornar ressonantes, porm vazias; juntos, as aspiraes e os
detalhes formam um cdigo coeso.
Engenheiros de software devem se comprometer a fazer a anlise,
especificao, projeto, desenvolvimento, teste e manuteno do
software, uma profisso benfica e respeitada. De acordo com seu
comprometimento sade, segurana e bem-estar do pblico,
engenheiros de software devem aderir aos Oito Princpios a
seguir:

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 22


Cdigo de tica- princpios
 1. PBLICO
Engenheiros de software devem agir em consistncia com o
interesse do pblico.

 2. CLIENTE E PATRO
Engenheiros de software devem agir de modo a visar os
melhores interesses de seus clientes e patres e consistente com
o interesse do pblico.

 3. PRODUTO
Engenheiros de software devem assegurar que seus produtos e
modificaes relacionadas atendam aos mais altos padres
profissionais possveis.

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 23

Cdigo de tica - princpios


 4. JULGAMENTO
Engenheiros de software devem manter a integridade e
independncia em seu julgamento profissional.
 5. GERENCIAMENTO
Gerentes e lderes de engenharia de software devem assinar e
promover uma abordagem tica em relao ao gerenciamento de
desenvolvimento e manuteno de software.

 6. PROFISSO
Engenheiros de software devem adiantar a integridade e
reputao da profisso consistente ao interesse do pblico.

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 24


Cdigo de tica - princpios
 7. COLEGAS
Engenheiros de software devem ser justos e apoiar seus colegas.

 8. SI
Engenheiros de software devem participar de um aprendizado
durante toda sua vida no que diz respeito prtica de sua
profisso e devem promover uma abordagem tica prtica da
profisso.

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 25

Dilemas ticos
 Desacordo em princpio com as polticas da
gerncia snior
 Seu patro age de maneira no-tica e lana um
sistema de segurana crtica sem terminar os
testes do sistema
 Participao no desenvolvimento de sistemas de
armas militares ou sistemas nucleares

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 26


Pontos-chave
 A engenharia de software uma disciplina da engenharia que se
preocupa com todos os aspectos da produo de software.
 Produtos de software consistem em programas desenvolvidos e
documentao associada. Atributos essenciais dos produtos so
manutenibilidade, dependncia, eficincia e usabilidade.
 O processo do software consiste em atividades que esto envolvidas
no desenvolvimento de produtos de software. Atividades bsicas so
especificao, desenvolvimento, validao e evoluo de software.
 Os mtodos so modos organizados de produzir software. Eles
incluem sugestes para o processo a serem seguidas, as notaes a
serem utilizadas, as regras que governam as descries do sistema
que so produzidas e o projeto de pautas.

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 27

Pontos-chave
 Ferramentas CASE so sistemas de software projetados para suportar
atividades rotineiras no processo do software como editar diagramas
de design, verificar consistncia do diagrama e manter rastro de
testes de programas que foram executados.
 Engenheiros de software tm responsabilidades para com a profisso
de engenheiro bem como para com a sociedade. Eles no devem
preocupar-se somente com assuntos tcnicos.
 Sociedades profissionais publicam cdigos de conduta que
estabelecem os padres de comportamento esperado de seus
membros.

Ian Sommerville 2000 Software Engineering, 6th edition. Captulo 1 Slide 28