You are on page 1of 24

10/14/2016

Engenharia de
Software

Engenharia de Software

O que software?
O que engenharia de software?
O que faz o engenheiro de software?
O que processo de software?

1
10/14/2016

O que software?

Software, so programas de computadores, em suas diversas formas, e a


documentao associada;
Um programa um conjunto de solues algortmicas, codificadas numa
linguagem de programao, executado numa mquina real;
Software um produto conceitual e lgico;
Software invisvel;
Software mais complexo do que qualquer outro produto construdos por
seres humanos;
Existe sempre uma presso para se fazer mudanas em um software;
O software deve ser desenvolvido conforme o ambiente. No o ambiente
que deve se adaptar ao software.

O que engenharia de software?

A economia das naes desenvolvidas esto cada vez mais dependente 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 em


todos os pases desenvolvidos.

2
10/14/2016

O que 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.

3
10/14/2016

Atividades de processo de sotware

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.

4
10/14/2016

Custos de Software

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.

5
10/14/2016

Produtos de Software

Produtos genricos

Sistemas autnomos que so comercializados e vendidos a qualquer


cliente que deseja compr-los. Exemplos - 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 sob encomenda

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.

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.

6
10/14/2016

Questes gerais que afetam a maioria dos softwares

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.

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.

Segurana e confiana
Como o software est entrelaado com todos os aspectos de nossas vidas,
essencial que possamos confiar nele.

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.

7
10/14/2016

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.

8
10/14/2016

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.

9
10/14/2016

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 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.

AJAX = Asynchronous Javascript and XML

10
10/14/2016

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.

11
10/14/2016

Questes de responsabilidade profissional

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.

Competncia

Engenheiros no devem falsear seus nveis de competncia. Eles no


devem aceitar trabalhos que esto fora da sua competncia.

Questes de responsabilidade profissional

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.

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).

12
10/14/2016

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.

13
10/14/2016

O cdigo de ticas da ACM/IEEE

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:

Prncipios 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.

14
10/14/2016

Prncipios 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.

15
10/14/2016

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.

1) 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 micro-bomba 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.

16
10/14/2016

Arquitetura de hardware da bomba de insulina

Modelo de atividades da bomba de insulina

17
10/14/2016

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.

2) 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.

18
10/14/2016

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.

19
10/14/2016

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.

20
10/14/2016

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 levam 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.

3) 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.

21
10/14/2016

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.

22
10/14/2016

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.

Perguntas frequentes sobre a engenharia de software

23
10/14/2016

Perguntas frequentes sobre a engenharia de software

Atributos essenciais de um bom software

24

You might also like