Вы находитесь на странице: 1из 74

Engenharia

de Software

Pressman /
Sommerville

Apresentao
/ Conceitos
Bsicos
Teoria e
Exerccios
gabrielpacheco@euvoupassar.com.br
www.tiparaconcursos.net

facebook.com/tiparaconcursos

twitter.com/gabrielfpacheco

Programao?
Quem sou eu!
Descrio do Curso.
Contedo Programtico.
Teoria.
Exerccios.

Quem sou eu?


PMP, CSM, MPS.BR e MBA.
Bacharel em Cincias da
Computao.
Consultor de Projetos.
Especialista em EProj.
Professor em cursos
profissionalizantes e preparatrios
para concursos na rea de TI.
Aprovado em 7 e convocado em 4.
Funcionrio Pblico.
CONCURSEIRO DE PLANTO. J

Descrio do curso.

Aulas expositivas acompanhadas de exposio de slides.


Resoluo de exerccios de fixao comentados ao final
de cada bloco.
Carga aproximada de 90 aulas de 30 minutos, passvel de
alterao, dependendo do andamento do cursos e
editais existentes no momento da gravao das aulas.
Dvidas devero ser postadas via frum da prpria aula.
Material utilizado em sala de aula ser disponibilizado
integralmente ao aluno.

Contedo Programtico.
Bloco I.
Apresentao do curso.
Conceitos de engenharia de software.
Bloco II.
Processos de software:
a. Seqencial Linear (cascata).
b.
c.
d.
e.
f.
g.
h.

Prototipagem.
Modelos Evolucionrios.
Processo Unificado.
Programao Extrema (XP).
Scrum.
Kanban.
RAD.

Contedo Programtico.
Bloco III.
Anlise e projeto de sistemas:
a. Anlise e projeto estruturado.
b. Anlise e projeto OO.
i.
Conceitos fundamentais.
ii.
Anlise.
iii.
Modelagem.
iv.
Padres de projeto.
v.
UML.

Contedo Programtico.
Bloco IV.
Projeto de Software:
a. Planejamento e projeto de software.
b. Conceitos e princpios de anlise.
c. Qualidade de software.
d. Mtricas de software.
e. Teste de software:
i.
ii.
iii.

f.
g.

Verificao.
Validao.
Tipos de teste.

Anlise e gesto de risco.


Cronograma e Acompanhamento.

Contedo Programtico.
Bloco V.
Tpicos avanados de Engenharia de Software:
a. Engenharia de Software Sala Limpa.
b. Engenharia de Software Baseada em
Componentes.
c. Arquitetura cliente/servidor.
d. Arquitetura Internet e web.
e. Reengenharia.
f. Engenharia de Software apoiada por
computador (CASE).

Descrio do curso.

Contedo Programtico.

Conceitos Bsicos.

Como Estudar Engenharia de Software.


Nvel

Provvel concurso

Mdia salarial

Poder Executivo, Ministrios,


Fundaes

R$ 1.200,00 a R$
3.000,00

Poder Judicirio, Tribunais de


Justia, Tribunais Eleitorais,
Tribunais Regionais

R$ 3.000,00 a R$
6.500,00

Agncias, Abin, Aneel, Anac

R$ 8.000,00 a R$
9.000,00

Perito criminal, TCU, TCE

R$ 10.000,00 a R$
14.000,00

Poder Legislativo, Senado

At R$ 18.500,00

Conceitos Bsicos.
Software presente em todas as reas de
negcio existentes atualmente.
Fundamenta-se como insumo estratgico para
as organizaes.
Afeta todos os aspectos de nossas vidas.
Software construdo por engenheiros como
qualquer produto, aplicando-se um processo
que leva a um resultado.

Conceitos Bsicos.
Como resultado de um processo de software
temos para os engenheiros o conjunto de
programas, documentos e dados e para o
usurio a informao resultante.

Conceitos Bsicos.
Software o produto que os engenheiros de
software projetam e constroem. Abrangem
programas que executam em computadores de
qualquer tamanho e arquitetura, documentos que
incluem formas impressas e virtuais e dados que
combinam nmeros e texto, mas tambm
incluem representaes de informao em
figuras, em vdeo e em udio. (Pressman)

Conceitos Bsicos.
Software so instrues que quando
executadas fornecem a funo e o
desempenho desejados, estruturas de
dados que permitem aos programas
manipular adequadamente a informao e
documentos que descrevem a operao e o
uso dos programas (Pressman)

Conceitos Bsicos.
Caractersticas de um software:
desenvolvido, ou passa por um processo de
engenharia, no manufaturado no sentido clssico.
(hardware X software).
A fase de fabricao de um hardware gera problemas que
so facilmente corrigidos na fabricao de um software.
O trabalho realizado na fabricao dos dois muito
diferente.
Os custos so focados na engenharia, no podem ser
geridos com se fossem projetos de fabricao.

Conceitos Bsicos.
Caractersticas de um software:
Software no se desgasta.
Curva de Banheira X Curva Idealizada.
Hardware pode ter peas sobressalentes, software no.

Componentes reutilizveis.

Conceitos Bsicos.
Aplicaes de Software.
Aplicvel a qualquer situao para a qual um
conjunto previamente especificado de
procedimentos tenha sido definido.
Determinao da informao: previsibilidade da
ordem e temporizao da informao.
Aplicaes determinadas: dados com ordem pr-definida,
executa algoritmos de anlise sem-interrupo e produz
dados em forma de relatrios ou grficos.
Aplicaes indeterminadas: entradas com contedo
varivel e temporizao arbitrria, algoritmos que podem
ser interrompidos por foras externas e sadas que variam
em funo de ambiente e tempo.

Conceitos Bsicos.
Aplicaes de Software (tipos).
Observamos que atualmente a delimitao de
categorias de software bem difcil.
Software de sistemas: coleo de programas
escritos para servir outros programas. Caracterizado
pela interao com o hardware do computador, uso
de multiplos usurios, operao concorrente,
estruturas de dados complexas e interfaces externas
mltiplas (compiladores, utilitrios para gesto de
arquivos, componentes de sistemas operacionais).

Conceitos Bsicos.
Aplicaes de Software (tipos).
Software de tempo real: monitora/analisa/controla
eventos do mundo real a medida que eles ocorrem.
Contem um componente de coleo de dados, um
componente de anlise, um componente de
controle/sada e um componente de monitorao e
controle de todos os outros.
Software comercial: apresentavam-se como sistemas
discretos que evoluram para sistemas de gesto de
informao. Reestruturam os dados existentes de
modo a facilitar operaes comerciais ou tomada de
deciso de gesto de negcio.

Conceitos Bsicos.
Aplicaes de Software (tipos).
Software cientfico e de engenharia: caracterizado por
algoritmos que processam nmeros. Evoluram para uma
viso mais abrangente para tempo real e at de software
de sistemas.
Software embutido: reside nas memrias ROM e
utilizado para controlar produtos e sistemas para o
mercado consumidor e industrial.
Software para Web: a rede se transforma em um grande
computador.
Software para inteligncia artificial: utiliza algoritmos
no numricos para resolver problemas complexos que
no so passveis de computao ou anlise direta.

Conceitos Bsicos.
Aplicaes de Software (tipos).
Software para inteligncia artificial: utiliza
algoritmos no numricos para resolver problemas
complexos que no so passveis de computao ou
anlise direta. Representados inclusive por sistemas
especialistas, sistemas baseados em conhecimento
e reconhecimento de padres.

Conceitos Bsicos.
Engenharia de Software?
Engenharia de Software a criao e
utilizao de slidos princpios de engenharia a
fim de obter software de maneira econmica,
que seja confivel e que trabalhe
eficientemente em mquinas reais. (Fritz
Bauer).
Aplicao de uma abordagem sistemtica,
disciplinada e quantificvel, para o
desenvolvimento, operao e manuteno do
software; isto , aplicao de engenharia de
software. (IEEE).

Conceitos Bsicos.
Engenharia de Software?
uma tecnologia em camadas.
Tem seu foco na qualidade e melhoria contnua.
Processos mantm unidas as camadas de tecnologia,
define de reas-chave de processo.
Mtodos fornecem a tcnica de como fazer para
construir software.
Ferramentas de engenharia de software fornecem
apoio automatizado ou semi-automatizado para o
processos e para os mtodos.

Conceitos Bsicos.
Engenharia de Software?
Engenharia de software a anlise, o projeto, a
construo, a verificao e a gesto de
elementos tcnicos (ou sociais).
Qual o problema a ser resolvido?
Que caractersticas do elemento so usadas para
resolver o problema?
Como o elemento e a soluo sero realizados?
Como o elemento vai ser construdo?
Que abordagem ser usada para descobrir erros de
projeto e construo?
Como o elemento ser mantido a longo prazo?

Conceitos Bsicos.
Engenharia de Software?
Para realizar a engenharia de software
adequadamente, um processo de engenharia de
software deve ser definido. (Pressman)

Conceitos Bsicos.
Engenharia de Software?
Fases genricas:
Definio (o que): aqui ocorrer a identificao das necessidades
que o software precisa atender. Trs tarefas principais:
Engenharia de sistemas ou de informao.
Planejamento do projeto de software.
Anlise de requisitos.
Desenvolvimento (como): definio de como os dados devem ser
estruturados, como as necessidades sero atendidas. Trs tarefas
principais:
Projeto do software.
Gerao de cdigo.
Teste de software.

Conceitos Bsicos.
Engenharia de Software?
Fases genricas:
Manuteno: modificaes associadas com a correo de erros,
adaptaes necessrias, e modificao de melhorias. Aplica
internamente novamente as fases de definio e desenvolvimento
para software existente.
Correo: gera uma manuteno corretiva que altera o
software para corrigir defeitos.
Adaptao: gera manuteno adaptativa que altera o software
para acomodar mudanas no seu ambiente externo.
Aperfeioamento: gera manuteno perfectiva que aprimora o
software alm dos requisitos originais.
Preveno: gera a manuteno preventiva (reengenharia de
software) que faz modificaes de modo que os programas
possam ser mais facilmente corrigidos, adaptados e
melhorados.

Conceitos Bsicos.
Processo?
Arcabouo para as tarefas que so necessrias
para construir software de alta qualidade.
(Pressman).
Depende do software que est sendo construdo.
Modelo de processo escolhido com base na
natureza do projeto e da aplicao, nos mtodos
e ferramentas a serem usados, e nos controles e
nos produtos intermedirios e finais que so
requeridos. Descreve os processos que devem ser
realizados para o desenvolvimento de um
software.

Conceitos Bsicos.
Gesto de Projetos?
A gesto do projeto envolve o planejamento, a
monitorao e o controle do pessoal processo e
eventos que ocorrem media que o Software evolui
de um conceito preliminar para uma
implementao operacional.

Conceitos Bsicos.
Qualidade?
Fazer a coisa certa no momento certo e do jeito
certo.

Exerccios
1.
a)

(SECGE PE ACI 2010 Cespe) Acerca da engenharia de


software, assinale a opo correta.

A engenharia de software, que tem como alicerce os


mtodos, formada de vrias camadas, tais como
ferramentas, mtodos e processo.
b) Apesar de importante no contexto de produtos, a qualidade
no tratada na engenharia de software e, sim, no
gerenciamento de projetos.
c) Anlise e projeto so duas aes da engenharia de
software. A definio de arquitetura e componentes so
tarefas da anlise, enquanto levantamento e especificao
de requisitos so tarefas do projeto.

Exerccios
d) A engenharia de software visa obter softwares econmicos
que sejam confiveis e que trabalhem eficientemente em
mquinas reais.
e) A engenharia de software aplica abordagem sistemtica,
disciplinada e no quantificvel para desenvolvimento e
manuteno de software.

Exerccios
(TRE-BA Analista de Sistemas 2010 Cespe) Com relao
engenharia de software, julgue os itens a seguir.
2. [52] Entre os desafios enfrentados pela engenharia de
software esto lidar com sistemas legados, atender
crescente diversidade e atender s exigncias quanto a
prazos de entrega reduzidos.

Exerccios
(TRE-BA Programador 2010 Cespe) Em uma viso restritiva,
muitas pessoas costumam associar o termo software aos
programas de computador. Software no apenas o programa, mas
tambm todos os dados de documentao e configurao
associados, necessrios para que o programa opere corretamente.
A respeito de engenharia de software, julgue os itens.
3. [61] A engenharia de software est relacionada com todos os
aspectos da produo de software, desde os estgios iniciais de
especificao do sistema at sua manuteno, depois que este
entrar em operao. A engenharia de sistemas diz respeito aos
aspectos do desenvolvimento e da evoluo de sistemas
complexos, nos quais o software desempenha um papel
importante.

Exerccios
4.

[62] Na engenharia de software baseada em componentes,


na qual se supe que partes do sistema j existam, o
processo de desenvolvimento concentra-se mais na
integrao dessas partes que no seu desenvolvimento a
partir do incio. Essa abordagem baseada em reuso para o
desenvolvimento de sistemas de software.

(TRE-BA Anlise de Sistemas 2010 - Cespe) Acerca de


mudana de software, julgue o item abaixo.
5. [58] Das vrias estratgias de mudana de software, realizar
alteraes significativas na arquitetura do sistema de
software diz respeito a reengenharia de software.

Exerccios
(Banco da Amaznia TI 2010 Cespe) Com relao aos conceitos
de desenvolvimento de sistemas, julgue os itens a seguir.
6. [74] Os princpios de engenharia de software definem a
necessidade de formalidades para reduzir inconsistncias e a
decomposio para lidar com a complexidade.
7.
[75] Para garantir o desenvolvimento de qualidade, suficiente
que a equipe tenha as ferramentas mais atuais de engenharia de
software e os melhores computadores.
(Embasa Desenvolvimento 2010 Cespe) Acerca de princpios de
engenharia de software, julgue os itens a seguir
8. [67] Um modelo de processo de software descreve os processos
que so realizados para atingir o seu desenvolvimento. A notao
para as tarefas, os artefatos, os atores e as decises varia
conforme o modelo de processo utilizado.

Gabarito
1.
2.
3.
4.
5.
6.
7.
8.

D
C
C
C
E
C
E
C
gabrielpacheco@euvoupassar.com.br
www.tiparaconcursos.net
facebook.com/tiparaconcursos
twitter.com/gabrielfpacheco

Engenharia
de Software

Pressman /
Sommerville

Mais
Conceitos e
Processos de
Software
Teoria e
Exerccios
gabrielpacheco@euvoupassar.com.br
www.tiparaconcursos.net

facebook.com/tiparaconcursos

twitter.com/gabrielfpacheco

Contedo Programtico.
Mais Conceitos.
Processos de Software.
Seqencial Linear (cascata).
Prototipagem.
RAD.
Modelos Evolucionrios.
Engenharia de Software baseada em
componentes.
Processo Unificado.
Programao Extrema (XP).
Scrum, Kanban.

Conceitos Bsicos.
Software so programas de computador e
documentao associada. Os produtos de
software podem ser desenvolvidos para um
cliente especfico ou para um mercado gera.
(Sommerville)
Engenharia de software uma disciplina de
engenharia relacionada a todos os aspectos de
produo de software. (Sommerville)

Conceitos Bsicos.
Cincias da computao est relacionada com
teorias e fundamentos; Engenharia de software
est relacionada com prtica de desenvolvimento
e entrega de software til. (Sommervile)
Processo de software um conjunto de
atividades cujo objetivo o desenvolvimento ou a
evoluo de software. (Sommervile)
Modelo de processo de software uma
representao simplificada de um processo de
software, apresentada sob perspectiva especfica.
(Sommervile)

Conceitos Bsicos.
60% do software desenvolvimento e 40 %
teste.
A engenharia de sistema est relacionada a todos
os aspectos de desenvolvimento de sistemas
baseados em computadores, incluindo hardware,
software e engenharia de processo. A engenharia
de software parte desse processo.
(Sommerville)

Contedo Programtico.
Mais Conceitos.
Processos de Software.
Seqencial Linear (cascata).
Prototipagem.
RAD.
Modelos Evolucionrios.
Engenharia de Software baseada em
componentes.
Processo Unificado.
Programao Extrema (XP).
Scrum, Kanban.

Processos de Software
Processo de software um conjunto de
atividades que leva produo de um produto de
software. (Sommerville)
Um pouquinho de histria.
Os modelos encontrados no mercado no so
mutuamente excludentes e so na verdade
usados em conjunto.
Quebrando mitos: So escolhidos conforme a
natureza do projeto.

Processos de Software Modelo


Seqencial linear - Cascata
Sugere uma abordagem sistemtica sequencial.
Inicia no nvel de sistema e progride at a
manuteno.

Processos de Software Modelo


Seqencial linear - Cascata

Processos de Software - Modelo


Seqencial linear - Cascata
Engenharia de sistemas/informao:
estabelecimento de todos os requisitos para o
sistema e alocao de algum subconjunto desses
requisitos para o software.
A engenharia de sistema trata de um conjunto de
necessidades a nvel de sistema em alto nvel, a
engenharia da informao inclui um conjunto de
necessidades a nvel estratgico e das reas de
negcio.

Processos de Software Modelo


Seqencial linear - Cascata
Anlise de requisitos de software: intensificao
da anlise de requisitos no que o software precisa
ter, conhecimento do domnio da informao do
software, funo, comportamento, desempenho
e interface.
Projeto: enfoca a estrutura de dados, arquitetura
do software, representaes da interface e
detalhes procedimentais. Traduz os requisitos de
forma que a representao do software possa ser
avaliada antes da codificao.

Processos de Software Modelo


Seqencial linear - Cascata
Codificao (teste de unidade): traduo do
projeto para linguagem de mquina.
Teste (integrao): conduo de testes para
descobrir erros e garantir que entradas definidas
produziro resultados reais, que concordam com
os resultados exigidos.
Manuteno (operao): se torna necessria
quando se tem uma modificao. Reaplica cada
uma das fases precedentes a um programa
existente.

Processos de Software Modelo


Seqencial linear - Cascata
Vantagem: maior capacidade de organizao do
projeto, visto que uma etapa s inicia aps a
anterior.
Desvantagem:
Modificaes podero causar confuses.
Dificilmente o cliente expe todos os requisitos
de uma s vez.
S teremos uma verso executvel aps o
trmino do projeto.

Processos de Software Iterativo X


Incremental

Processos de Software Prototipagem


Senta-se com o cliente e realiza um projeto rpido
para atender somente a aspectos do software que
ficaro visveis (prottipo).
O prottipo avaliado pelo cliente e usado para
refinar os requisitos de software que sero
desenvolvidos.
Novas interaes so realizadas para que
tenhamos a evoluo do prottipo e melhor
entendimento do desenvolvedor.
Tcnica para elencar requisitos, deve-se evitar
passar ao cliente que poderia ser sua verso final.

Processos de Software Prototipagem


Problemas:
O cliente imagina que seja a sua verso final sem
considerar que na sua gerao requisitos de
qualidade ou manutenabilidade no foram tratados.
O cliente exige que seja utilizado o prottipo com
alguns remendos e a gerencia aceita.
A utilizao de linguagens e tecnologia quaisquer
pode ser uma prtica pelo desenvolvedor que acaba
se adaptando ao seu uso e esquece da real
necessidade que teve ao escolhe-las.
Soluo:
Definir as regras do jogo no comeo.

Processos de Software RAD


Modelo de desenvolvimento incremental que enfatiza
um ciclo de desenvolvimento curto.
Adaptao de alta-velocidade do modelo cascata.
Agiliza o desenvolvimento baseando-se na construo
de componentes.
Requisitos bem conhecidos e objetivos de projeto
restritos.
Se tivermos a possibilidade de componentizar um
sistema e estes componentes ou mdulos puderem ser
desenvolvidos em 60 a 90 dias, poderemos ter vrias
equipes trabalhando no desenvolvimento.

Processos de Software RAD


Modelagem do negcio: modelagem do fluxo de
informao entre as funes do negcio.
Que informao dirige o processo de negcio?
Que informao gerada?
Quem a gera?
Para onde via?
Quem a processa?
Modelagem dos dados: fluxo de informao refinado
num conjunto de objetos de dados, que daro suporte
ao negcio.

Processos de Software RAD


Modelagem do processo: os objetos de dados obtidos
so transformados para conseguir o fluxo de
informao necessrios para implementar uma funo
do negcio.
Gerao da aplicao: trabalha com o reuso de
componentes de programas existentes ou cria
componentes reusveis.
Teste e entrega: como muitos dos seus componentes
j devem ter sido testados, esta fase acaba por ser
reduzida.

Processos de Software RAD


Problemas:
Exige muito RH para criar as equipe RAD.
Necessidade do compromisso do cliente e dos
desenvolvedores com atividades continuamente
rpidas.
Se o sistema no puder ser componentizado o RAD
no atender expectativa.
Quando tivermos riscos tcnicos elevados, o RAD
no aconselhvel.

Processos de Software Modelos


Evolucionrios
Modelos de processo que foram projetados para
acomodar um produto que evolui com o tempo.
Modelo Incremental:
Combina o modelo seqencial linear com a filosofia
interativa da prototipagem.
O primeiro incremento chamado de ncleo do
produto.

Processos de Software Modelos


Evolucionrios
Modelo Incremental:
Desenvolve-se um plano para cada incremento de
forma que o ncleo do produto seja modificado
para melhor satisfazer s necessidades do cliente e
a elaborao de caractersticas e funcionalidades
adicionais.
Objetiva a elaborao de um produto funcional.
til quando no h mo de obra disponvel para
uma implementao completa, dentro do prazo
comercial de entrega.

Processos de Software Modelos


Evolucionrios

Processos de Software Modelos


Evolucionrios

Processos de Software Modelos


Evolucionrios
Modelo Espiral:
Combina a natureza interativa da prototipagem com
os aspectos controlados e sistemticos do modelo
seqencial linear.
Desenvolve o software em um srie de verses
incrementais.
Na ltima iterao so produzidas verses cada vez
mais completas do sistema.
Divide-se em regies de tarefas compostas por seus
respectivos conjuntos de tarefas.

Processos de Software Modelos


Evolucionrios
Modelo Espiral:
Pode ser adaptado para a aplicao ao longo do seu
ciclo de vida

Processos de Software Modelos


Evolucionrios

Processos de Software Modelos


Evolucionrios

Exerccios
(MPS TI - 2010 CESPE) Com relao metodologia de
desenvolvimento de software, julgue os itens a seguir.
1. [76] No modelo espiral, que possui uma diviso
inflexvel em estgios distintos, determinada fase de um
processo somente se inicia quando a anterior estiver
concluda e aprovada pelas partes envolvidas.
2. [77] O modelo de desenvolvimento em cascata prev a
prototipao e os desenvolvimentos evolutivo e cclico do
software.

Exerccios

Exerccios
(MPS TI - 2010 CESPE) Na figura acima, que apresenta
o ciclo de vida clssico da engenharia de software, os
nomes de duas etapas foram substitudos pelos nmeros 1
e 2. Considerando essa figura, julgue os itens a seguir.
3. [82] Garantir que as entradas definidas em um ciclo de
vida clssico, tal como o mostrado na figura, produzam
resultados reais que concordem com os resultados
exigidos uma atividade da etapa de teste.
4. [83] As etapas identificadas na figura por 1 e 2 so,
respectivamente, projeto e instalao.

Exerccios
5. (MPE - SE Gesto e Anlise - 2010 CESPE) 6. No
desenvolvimento de um software, qualquer que seja o
mtodo escolhido, estar refletido em um ciclo de vida de
desenvolvimento. Nesse aspecto, a parte em que o
modelo espiral incorpora os conceitos do modelo de
prototipao o
a) primeiro quadrante.
b) segundo quadrante.
c) terceiro quadrante.
d) quarto quadrante.
e) terceiro e quarto quadrantes.

Exerccios
6. (MPE - RN Gesto e Anlise - 2010 CESPE) 7. No
modelo de desenvolvimento de software em espiral, cada
loop na espiral representa
a) a necessidade de retornar ao incio da fase em que se
encontra.
b) um processo de reengenharia.
c) uma disciplina de software.
d) uma fase do processo de software.
e) uma atividade paralela.

Exerccios
7. (MPE - RN Gesto e Anlise - 2010 CESPE) 8. O
modelo em espiral difere principalmente dos outros
modelos de processo de software por
a) no contemplar o prottipo.
b) reconhecer explicitamente o risco.
c) no ter fases.
d) possuir uma fase nica evolucionria.
e) no contemplar o projeto do produto.

Gabarito
1.
2.
3.
4.
5.
6.
7.

E
E
C
E
D
D
B

gabrielpacheco@euvoupassar.com.br
www.tiparaconcursos.net
facebook.com/tiparaconcursos
twitter.com/gabrielfpacheco

Вам также может понравиться