Você está na página 1de 51

Captulo 1 Engenharia de

Software

Prof. Ldia Martins da Silva
3 e 4 COP
Engenharia de Software
O objetivo deste captulo introduzir o
assunto de Engenharia de Software.
Depois desse captulo voc poder:
Compreender o que engenharia de
software e por que ela importante.
Saber as respostas de perguntas
importantes que proporcionam uma
introduo engenharia de software, e
Compreender questes profissionais e
ticas relevantes para os engenheiros
de software.


Viso Geral
As economias de todas as naes
desenvolvidas so dependentes de
softwares.
Mais e mais sistemas so controlados
por software.
A engenharia de software se preocupa
com teorias, mtodos e ferramentas
para desenvolvimento de softwares
profissionais.
As despesas de software representam
uma frao significativa do PIB(Produto
interno bruto) em todos os pases
desenvolvidos.

Viso Geral
Os custos de software geralmente dominam
os custos do sistema de computador.
Em um PC, geralmente, os custos de
software so maiores que os custos do
hardware.
Custa mais para se manter um software do
que para desenvolv-lo.
Para sistemas com uma vida longa, os
custos de manuteno podem ser vrias
vezes os custos do desenvolvimento.
A engenharia de software est preocupada
com que o desenvolvimento de software seja
custo efetivo.

Produtos de Software
H dois tipos de produtos de software

Produtos genricos
Sistemas autnomos que so comercializados e
vendidos a qualquer cliente que deseja compr-los.
Exemplos - Pacotes de software. Softwares para
PC tais como programas grficos, ferramentas de
gerenciamento de projetos; software CAD;
software para propsitos especficos, tais como
sistemas de registros odontolgicos.

Produtos de Software
Produtos sob encomenda (ou
personalizados)
O software que encomendado por um
cliente especfico para atender suas
prprias necessidades.
Exemplos - sistemas de controle
integrado, software de controle de trfego
areo, sistemas de monitoramento de
trfego.

Especificao dos produtos
Produtos genricos
A especificao do que o software deve fazer de
propriedade do desenvolvedor de software e as
decises sobre as mudanas de software so feitos
pelo desenvolvedor. A organizao que desenvolve o
software controla sua especificao.

Produtos sob encomenda
A especificao do que o software deve fazer
propriedade do cliente para o software e eles tomam
decises sobre as mudanas necessrias no
software, a especificao usualmente desenvolvida
e controlada pela organizao que est comprando o
software. Os desenvolvedores de software devem
trabalhar de acordo com essa especificao.

Perguntas frequentes sobre a
engenharia de software
Perguntas frequentes sobre a
engenharia de software
Atributos essenciais de um
bom software
Engenharia de Software

A engenharia de software uma disciplina da
engenharia que se preocupa com todos os
aspectos da produo de software desde o
incio da especificao do sistema at a
manuteno do sistema aps esse estar
sendo usado.
Disciplina de engenharia
Utiliza teorias e mtodos adequados para
resolver os problemas tendo em mente as
restries organizacionais e financeiras.
Todos os aspectos da produo de software.
No se preocupa apenas com o processo
tcnico de desenvolvimento, mas tambm com o
gerenciamento de projetos e o desenvolvimento
de ferramentas, mtodos, etc. para dar apoio
produo de software.

A importncia da Engenharia
de Software
Cada vez mais, os indivduos e a sociedade
dependem de sistemas de software
avanados.
Precisamos ser capazes de produzir
sistemas confiveis com economia e
rapidamente.
Geralmente, mais barato, no longo prazo,
usar mtodos de engenharia de software e
tcnicas para os sistemas de software em
vez de apenas escrever os programas como
se fosse um projeto de programao
pessoal.
Para a maioria dos tipos de sistemas, a
maior parte dos custos so os custos de
alterar o software em uso.

Atividades de processo de
software
A especificao de software, onde os
clientes e engenheiros definem o
software que deve ser produzido e as
restries sobre o seu funcionamento.
Desenvolvimento de software, em que
o software projetado e programado.
Validao de software, em que o
software verificado para garantia de
atender ao que o cliente necessita.
Evoluo de software, em que o
software modificado para refletir as
mudanas de requisitos do cliente e do
mercado.

Desafios chaves que afetam a
maioria dos softwares
A engenharia de software, no sculo XXI,
enfrenta alguns principais desafios:

Desafio da Heterogeneidade
Cada vez mais, os sistemas so necessrios
para operar como sistemas distribudos atravs
de redes que incluem diferentes tipos de
computadores e dispositivos mveis.
O desafio da heterogeneidade se refere a
desenvolver tcnicas para construir softwares
confiveis, que sejam flexveis o bastante para
lidar dom essa heterogeneidade.
Segurana e confiana
Como o software est entrelaado com todos os
aspectos de nossas vidas, essencial que possamos
confiar nele.




Desafios chaves que afetam a
maioria dos softwares
Desafio do legado
A maioria dos grandes sistemas de
software em uso atualmente foi
desenvolvida h muitos anos e, contudo,
opera importantes funes corporativas.
O desafio do legado significa poder fazer
a manuteno e a atualizao desses
softwares, para evitar custos excessivos e
prosseguir com a prestao de servios
corporativos essenciais.



Desafios chaves que afetam a
maioria dos softwares
Desafio do fornecimento
Muitas tcnicas de engenharia de software
tradicionais so muito demoradas. O tempo que
elas gastam necessrio para que atinjam a
qualidade de software exigida.
Mudana de negcio e social - Negcio e sociedade
esto mudando com uma rapidez incrvel, na medida em
que as economias emergentes se desenvolvem e as
novas tecnologias se tornam disponveis. Elas precisam
ser capazes de alterar os softwares existentes e
desenvolver novos softwares rapidamente.
O desafio do fornecimento diz respeito a reduzir o tempo
para o fornecimento de sistemas grandes e complexos,
sem comprometer a qualidade.



Desafios chaves que afetam a
maioria dos softwares
Naturalmente, esses desafios no so
independentes.
Por exemplo, pode ser necessrio fazer
mudanas rpidas em um sistema
legado, para torn-lo acessvel por meio
de uma rede.
Para resolvermos esses desafios,
precisaremos de novas ferramentas e
tcnicas, bem como maneiras inovadoras
de combinar e utilizar mtodos de
engenharia de software j existentes.


Diversidade na engenharia de
software
Existem muitos tipos diferentes de
sistemas de software e no existe um
conjunto universal de tcnicas de
software aplicvel a todos eles.
Os mtodos de engenharia de
software e ferramentas usadas
dependem do tipo da aplicao que
ser desenvolvida, os requisitos do
cliente e os antecedentes da equipe
de desenvolvimento.

Tipos de aplicaes

1. Aplicaes stand-alone so aplicaes executadas
em um computador local, tal como um PC. Incluem
toda a funcionalidade necessria e no precisam estar
conectadas a uma rede.
2. Aplicaes interativas baseadas em transaes
so aplicaes executadas em um computador remoto
e so acessadas pelos usurios a partir dos seus
prprios PCs ou terminais. Essas incluem aplicaes
web tais como para e-commerce.
3. Sistemas de controle embutidos so sistemas de
software de controle que controlam e gerenciam
dispositivos de hardware. Numericamente,
provavelmente existem mais sistemas embutidos do
que qualquer outro tipo de sistema.
4. Sistemas de entretenimento so, principalmente,
para uso pessoal e se destinam a entreter o usurio.

Tipos de Aplicaes
5. Sistemas de processamento de lotes so sistemas
corporativos projetados para processar dados em
grandes lotes. Eles processam um grande nmero de
entradas individuais para criar sadas correspondentes.
6. Sistemas de modelagem e simulao so
desenvolvidos por cientistas e engenheiros para
modelar processos fsicos ou situaes, que incluem
muitos, objetos separados que interagem entre si.
7. Sistemas de coleta de dados so sistemas que
coletam dados do seu ambiente usando um conjunto
de sensores e envia esses dados para outros sistemas,
para processamento.
8. Sistemas de sistemas so sistemas compostos por
uma srie de outros sistemas de software.

Fundamentos de Engenharia
de Software
Alguns princpios fundamentais se aplicam a todos os
tipos de sistema de software, independentemente das
tcnicas de desenvolvimento utilizadas:
1. Os sistemas devem ser desenvolvidos atravs de um
processo de desenvolvimento gerenciado e
compreendido. Naturalmente, diferentes processos so
usados para diferentes tipos de software.
2. Confiana e desempenho so importantes para
todos os tipos de sistemas.
3. importante entender e gerenciar as especificaes
e requisitos do software (o que o software deve fazer).
4. Quando possvel, voc deve reusar software que j
foi desenvolvido, em vez de escrever um novo
software.

Engenharia de Software e a
Internet
Atualmente, a Internet uma plataforma
de aplicativos em execuo e, cada vez
mais as organizaes esto
desenvolvendo sistemas baseadas na
web, em vez de sistemas locais.
Web services permitem que a
funcionalidade da aplicao seja
acessada pela Internet.
Computao em Nuvem, uma
abordagem para a prestao de servios
de informtica, em que as aplicaes
so executadas remotamente na
'nuvem'.
Usurios no compram softwares, mas
pagam de acordo com o uso.

Engenharia de Software e a
Internet
O reuso de softwares a abordagem dominante
para a construo de sistemas baseados na
web.
Ao construir esses sistemas, voc deve pensar
sobre como voc pode mont-los a partir de
sistemas e componentes pr-existentes de
software.
Sistemas baseados na web deve ser
desenvolvidos e entregues de forma incremental.
Atualmente, geralmente se reconhece que
impraticvel especificar todos os requisitos para
tais sistemas antecipadamente.
Interfaces de usurio so limitadas pela
capacidade de navegadores web.

Engenharia de Software e a
Internet
Tecnologias como AJAX (Javascript Assncrono e XML)
permitem que as interfaces ricas sejam criadas dentro
de um navegador web, mas ainda so difceis de usar.
Formulrios web com scripts locais so mais usados .
Sistemas baseados na web so sistemas complexos
distribudos, mas os princpios fundamentais da
engenharia de software discutidos anteriormente
tambm so aplicveis a eles, assim como para
qualquer outro tipo de sistema.
As ideias fundamentais da engenharia de software,
discutidas na seo anterior, se aplicam a softwares
baseados em web da mesma forma como eles se
aplicam a outros tipos de sistema de software.
Pontos Importantes
A engenharia de software uma disciplina da
engenharia que se preocupa com todos os aspectos da
produo de software.
Atributos essenciais do produto de software so a
manutenibilidade, confiana, proteo, eficincia e
aceitabilidade.
As atividades de alto nvel de especificao,
desenvolvimento, validao e evoluo fazem parte de
todos os processos de software.
As ideias fundamentais da engenharia de software so
universalmente aplicveis a todos os tipos de
desenvolvimento do sistema.
Existem muitos tipos diferentes de sistemas e cada um
requer ferramentas de engenharia de software e
tcnicas apropriadas para o seu desenvolvimento.

ticas na Engenharia de
Software
A engenharia de software envolve
responsabilidades mais amplas do que a
simples aplicao de habilidades
tcnicas.
Engenheiros de software devem se
comportar de uma maneira honesta e
eticamente responsvel para serem
respeitados como profissionais.
Comportamento tico mais do que
simplesmente agir em concordncia com
a lei, envolve seguir um conjunto de
princpios moralmente corretos.

Questes de responsabilidade
profissional
1. Confidencialidade
Normalmente, os engenheiros devem
respeitar a confidencialidade de seus
empregadores ou clientes,
independentemente de haver ou no um
acordo de confidencialidade formal
assinado entre eles.
2. Competncia
Engenheiros no devem falsear seus
nveis de competncia. Eles no devem
aceitar trabalhos que esto fora da sua
competncia.

Questes de responsabilidade
profissional
3. Direitos de propriedade intelectual
Engenheiros devem estar cientes das leis locais
que regulam a propriedade intelectual, tais como
patentes, direitos autorais, etc. Eles devem ser
cuidadosos para assegurar que a propriedade
intelectual dos empregadores e clientes esteja
protegida.
4. Uso indevido de computador
Engenheiros de software no devem usar suas
habilidades tcnicas para uso indevido de
computadores de outras pessoas. A variao do
mau uso do computador vai desde relativamente
trivial (brincar com jogos na mquina de um
empregador, por exemplo) a extremamente
srios (disseminao de vrus).

Cdigo de tica ACM/IEEE
As sociedades profissionais nos EUA tm
cooperado para produzir um cdigo de
conduta tica.
Membros destas organizaes se
comprometem com o cdigo de tica quando
entram nelas.
O Cdigo contm oito princpios relacionados
ao comportamento e decises tomadas por
engenheiros de software profissionais,
incluindo profissionais, educadores, gestores,
supervisores e polticos, bem como
estagirios e estudantes da profisso.

Justificativas para o cdigo de
tica
Os computadores tm um papel central e crescente no
comrcio, indstria, governo, medicina, educao,
entretenimento e sociedade em geral.
Os engenheiros de software so aqueles que
contribuem atravs da participao
direta ou atravs do ensino, para a anlise,
especificao, projeto, desenvolvimento, certificao,
manuteno e testes de sistemas de software.
Por causa de seus papis no desenvolvimento de
sistemas de software, os engenheiros de software tm
significativas oportunidades de fazer o bem ou causar o
mal, ou influenciar outros a fazerem o bem ou
causarem o mal.
Para garantir, tanto quanto possvel, que seus esforos
sejam usados para o bem, engenheiros de software
devem se comprometer a fazer engenharia de software
uma profisso benfica e respeitada.

Cdigo de tica e prticas
profissionais da engenharia de
software
Fora-tarefa conjunta da ACM/IEEE-CS para tica e prticas
profissionais da
engenharia de software
Prefcio
Esta verso reduzida do cdigo resume as aspiraes em um
alto nvel de abstrao; as clusulas que esto inclusas na
verso completa fornecem exemplos e detalhes de como essas
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 altissonantes, porm vazias; juntos,
as aspiraes e os detalhes formam um cdigo coeso. Os
engenheiros de software devem se comprometer a fazer da
anlise, especificao, projeto, desenvolvimento, teste e
manuteno de software uma profisso benfica e respeitada.
Em conformidade com seu comprometimento com a sade, a
segurana e o bem-estar pblicos, engenheiros de software
devem aderir a oito princpios:

Princpios ticos
1. PBLICO Engenheiros de software devem
agir de acordo com o interesse pblico.
2. CLIENTE E EMPREGADOR Engenheiros
de software devem agir de maneira que seja do
melhor interesse de seu cliente e empregador e
de acordo com o interesse pblico.
3. PRODUTO Engenheiros de software
devem garantir que seus produtos e
modificaes relacionadas atendam aos mais
altos padres profissionais possveis.
4. JULGAMENTO Engenheiros de software
devem manter a integridade e a independncia
em seu julgamento profissional.

Princpios ticos
5. GERENCIAMENTO Gerentes e lderes de
engenharia de software devem aceitar e
promover uma abordagem tica para o
gerenciamento de desenvolvimento e
manuteno de software.
6. PROFISSO Engenheiros de software
devem aprimorar a integridade e a reputao da
profisso de acordo com o interesse pblico.
7. COLEGAS Engenheiros de software devem
auxiliar e ser justos com seus colegas.
8. SI PRPRIO Engenheiros de software
devem participar da aprendizagem contnua
durante toda a vida, e devem promover uma
abordagem tica para a prtica da profisso.

Dilemas ticos
Desacordo, em princpio, com as
polticas da gerncia snior.
Seu empregador age de forma
antitica e libera um sistema crtico de
segurana sem terminar os testes do
sistema.
Participao no desenvolvimento de
sistemas de armas militares ou
sistemas nucleares.

Estudos de Caso
A bomba de insulina pessoal
Um sistema embutido em uma bomba de
insulina usada por diabticos para manter o
controle da glicose no sangue.
Um caso de sade mental, sistema de
informao de pacientes
Um sistema usado para manter os registros
de pessoas recebendo tratamento para
problemas de sade mental.
Uma estao meteorolgica no deserto
Um sistema de coleta de dados que coleta
dados sobre as condies meteorolgicas no
deserto.

Sistema de controle da bomba
de insulina
O sistema coleta dados de um sensor de
acar no sangue e calcula a quantidade de
insulina necessria para ser injetada.
Clculo baseado na taxa de variao dos
nveis de acar no sangue.
Envia sinais para uma microbomba para
fornecer a dose correta de insulina.
Sistema crtico de segurana como baixo
acar no sangue pode levar ao mal
funcionamento cerebral, coma e morte; altos
nveis de acar no sangue tm
consequncias a longo prazo, tais como
danos nos olhos e rins.

Arquitetura de hardware da
bomba de insulina
Modelo de atividades da
bomba de insulina
Requisitos essenciais de alto
nvel
O sistema deve estar disponvel para
fornecer insulina quando necessrio.
O sistema deve executar de forma
confivel e entregar a quantidade
correta de insulina para compensar o
atual nvel de acar no sangue.
O sistema deve ser projetado e
implementado para garantir que o
sistema sempre atenda a esses
requisitos.

Um sistema de informao
pacientes para cuidados com
sade mental
Um sistema de informaes do paciente para dar
suporte aos servios de sade mental um sistema de
informaes mdicas que mantm informaes sobre
pacientes que sofrem de problemas de sade mental e
os tratamentos que receberam.
A maioria dos pacientes de sade mental no
necessitam de tratamento hospitalar dedicado, mas
precisam comparecer regularmente a clnicas
especializadas onde possam encontrar um mdico que
tenha conhecimento detalhado dos seus problemas.
Para facilitar o comparecimento dos pacientes, essas
consultas no precisam acontecer apenas em
hospitais. Elas tambm podem ser realizadas em locais
de prticas mdicas ou centros comunitrios.

MHC-PMS
O MHC-PMS (Sistema de Gerenciamento de
Pacientes com Problemas de Sade Mental)
um sistema de informaes destinado para uso
em clnicas.
Ele faz uso de um banco de dados centralizado
de informaes sobre os pacientes, mas tambm
foi projetado para rodar em um PC, de modo que
possa ser acessado e usado a partir de sites que
no tenha conectividade de rede segura.
Quando os sistemas locais tm acesso seguro
rede, eles usam as informaes do paciente que
constam no banco de dados, mas, quando
desconectados, podem baixar e usar cpias
locais de registros de pacientes.

Metas do MHC-PMS
Gerar informaes gerenciais que
permitam aos gerentes de servios de
sade avaliar o desempenho contra
alvos locais e de governo.
Fornecer informaes atualizadas
para a equipe mdica para apoiar o
tratamento dos pacientes.

A organizao do MHC-PMS

Principais caractersticas do
MHC-PMS
Gerenciamento do cuidado individual
O pessoal clnico pode criar registros de pacientes, editar
as informaes no sistema, ver o histrico dos pacientes,
etc. O sistema suporta resumos de dados para que os
mdicos possam aprender rapidamente sobre os principais
problemas e tratamentos que foram prescritos.
Monitoramento de pacientes
O sistema monitora os registros dos pacientes envolvidos
no tratamento e emitem alertas, no caso de possveis
problemas serem detectados.
Relatrios administrativos
O sistema gera relatrios gerenciais mensais mostrando o
nmero de pacientes tratados em cada clnica, o nmero
de pacientes que tm entrado e sado do sistema de
assistncia, o nmero de pacientes internados, os
remdios prescritos e seus custos, etc.

Preocupaes do MHC-PMS
Privacidade
essencial que as informaes do paciente
sejam confidenciais e nunca sejam reveladas
para ningum alm do pessoal mdico
autorizado e que o prprio paciente.
Segurana
Algumas doenas mentais levar o paciente a
tornar-se suicida ou um perigo para outras
pessoas. Sempre que possvel, o sistema deve
alertar profissionais de sade sobre os pacientes
potencialmente suicidas ou perigosos. O sistema
deve estar disponvel quando necessrio, de
outra forma, a segurana pode ser
comprometida e pode ser impossvel prescrever
a medicao correta para os pacientes.

Estao meteorolgica no
deserto
O governo de um pas com grandes reas de deserto,
decide implantar vrias centenas de estaes
meteorolgicas no deserto.
Estaes meteorolgicas coletam dados de um
conjunto de instrumentos que medem a temperatura e
presso, sol, chuva, velocidade do vento e direo do
vento.
A estao meteorolgica inclui uma srie de
instrumentos que medem parmetros meteorolgicos,
tais como a velocidade e direo do vento, o solo e as
temperaturas do ar, presso baromtrica e precipitao
ao longo de um perodo de 24 horas. Cada um desses
instrumentos controlado por um sistema de software
que faz leituras peridicas do parmetro e gerencia os
dados coletados a partir dos instrumentos.

Ambiente da estao
meteorolgica
Sistema de informaes
meteorolgicas
Sistema da estao meteorolgica
Esse sistema responsvel por coletar dados
meteorolgicos, a realizar o processamento de
alguns dados iniciais e transmiti-los ao sistema de
gerenciamento de dados.
Sistema de gerenciamento e arquivamento de
dados
Esse sistema coleta os dados de todas as estaes
meteorolgicas em reas remotas, e realiza o
processamento de dados , anlise e arquivos de
dados.
Sistema de manuteno da estao
Esse sistema pode se comunicar por satlite com
todas as estaes meteorolgicas em rea remotas a
fim de monitorar a sade desses sistemas e fornecer
relatrios de problemas.

Funes adicionais do
software
Monitorar os instrumentos , a energia e
comunicao do hardware e relatar falhas do
sistema de gesto.
Gerenciar a energia do sistema, garantindo que
as baterias so carregadas sempre que as
condies ambientais permitirem, e tambm,
garantir que os geradores sejam desligados em
condies meteorolgicas potencialmente
prejudiciais, como ventos fortes.
Suporte a reconfigurao dinmica, em que
partes do software so substitudas por novas
verses, e em que os instrumentos de backup
so conectados para o sistema em caso de falha
do sistema.

Pontos Importantes
Engenheiros de software tm
responsabilidades para com a profisso de
engenharia e a sociedade. Eles no
deveriam simplesmente se preocupar com
questes tcnicas.
Sociedades profissionais publicam cdigos
de conduta que estabelecem os padres de
comportamento esperado de seus membros.
Trs estudos de caso so usados :
Um sistema para gerenciamento da sade de
doentes mentais
Uma estao meteorolgica no deserto
Um sistema embutido de controle de bomba de
insulina

Exerccios
1 - Quais so as diferenas entre o desenvolvimento de produto genrico de
software e o desenvolvimento sob encomenda?
2 Quais so os quatro principais atributos que todos os softwares devem ter?
Sugira quatro outros atributos que s vezes podem ser significativos.
3 Qual a diferena entre um modelo de processo de software e o processo de
software?
4 Os mtodos de engenharia de software tornaram-se amplamente usados
quando a tecnologia CASE tornou-se disponvel para apoi-los. Sugira cinco tipos
de apoio que podem ser fornecidos pelas ferramentas CASE.
5 Alm dos desafios de heterogeneidade, desafio do legado, desafio do
fornecimento, identifique outros problemas e desafios que a engenharia de
software provavelmente est enfrentando no sculo 21.
6 Discuta se os engenheiros profissionais devem ter um diploma, assim como
os mdicos e advogados.
7 Para cada clusula do Cdigo de tica apresentado, sugira um exemplo
apropriado que ilustre a clusula.
8 - Para ajudar conter o terrorismo, vrios pases esto planejando o
desenvolvimento de sistemas de computador que monitorem 24 horas populaes
em grandes centros urbanos. Essa medida tem, obviamente, implicaes quanto
a privacidade. Discuta as questes ticas envolvidas no desenvolvimento desse
tipo de sistema.

Você também pode gostar