Escolar Documentos
Profissional Documentos
Cultura Documentos
ENGENHARIA de SOFTWARE
AUTORIA:
SUMRIO
UNIDADE 1........................................................................................................... 5
O que Engenharia de Software ? - Qual a diferena entre Engenharia de
Software e Engenharia de Sistemas ? - O que um mtodo de Engenharia de
Software ? .......................................................................................................... 5
UNIDADE 2 ........................................................................................................... 9
Teoria de Sistemas - Interdependncia de Sistemas ........................................ 9
UNIDADE 3 ......................................................................................................... 11
Quais so os atributos de um bom Software ? - Quais so os desafios
enfrentados pela Engenharia de Software ? ................................................... 11
UNIDADE 4 ......................................................................................................... 15
Conceitos sobre a Engenharia de Software - O que Software ? A
Importncia do Software - SWEBOK ............................................................... 15
UNIDADE 5 ......................................................................................................... 19
Modelos de Processo de Software - Paradigmas do desenvolvimento de
Software - Modelo Balbrdia - Modelo Cascata .............................................. 19
UNIDADE 6 ......................................................................................................... 23
Paradigmas do Desenvolvimento de Software (continuao) - Modelo
Incremental - Prototipao ............................................................................... 23
UNIDADE 7 ......................................................................................................... 26
Paradigmas do desenvolvimento de Software (continuao) - Modelo Espiral Modelos mistos e caractersticas genricas .................................................... 26
UNIDADE 8 ......................................................................................................... 29
Paradigmas da Engenharia de Software: Processo, Mtodos e Ferramentas29
UNIDADE 9 ......................................................................................................... 32
Caractersticas de um bom processo - Caractersticas de um bom ambiente
de desenvolvimento ......................................................................................... 32
UNIDADE 10 ....................................................................................................... 35
Introduo ao RUP (Rational Unified Process) - Caractersticas - Fases e
Workflows ......................................................................................................... 35
Copyright 2007, ESAB Escola Superior Aberta do Brasil
UNIDADE 11 ....................................................................................................... 39
Modelos de Maturidade CMM (Capability Maturity Model) .......................... 39
UNIDADE 12 ....................................................................................................... 42
Requisitos de Software - Requisitos Funcionais e no Funcionais - Requisitos
de Usurio e de Sistema .................................................................................. 42
UNIDADE 13 ....................................................................................................... 45
Tcnicas de Anlise de Requisitos - O Documento de Requisitos de Software
.......................................................................................................................... 45
UNIDADE 14 ....................................................................................................... 48
Processos de Engenharia de Requisitos - Estudos de Viabilidade................. 48
UNIDADE 15 ....................................................................................................... 50
Modelagem UML: Unified Modeling Language Linguagem de Modelagem
Unificada .......................................................................................................... 50
UNIDADE 16 ....................................................................................................... 53
Metodologias de Desenvolvimento geis de Software: XP - FDD e DSDM ... 53
UNIDADE 17 ....................................................................................................... 57
Continuao das Metodologias de Desenvolvimento gil de Software: Scrum Crystal - ASD e AM .......................................................................................... 57
UNIDADE 18 ....................................................................................................... 61
Engenharia de Projeto - Projeto Modular - Projeto de interface com o usurio
.......................................................................................................................... 61
UNIDADE 19 ....................................................................................................... 64
Arquiteturas de Sistemas Distribudos - Arquitetura de Multiprocessadores .. 64
UNIDADE 20 ....................................................................................................... 67
Arquitetura cliente/servidor - Arquitetura de objetos distribudos .................... 67
UNIDADE 21 ....................................................................................................... 70
Mudanas em Software - Dinmica da Evoluo de Programas - Evoluo da
Arquitetura ........................................................................................................ 70
UNIDADE 22 ....................................................................................................... 73
Reengenharia de Software - Traduo de cdigo fonte - Engenharia Reversa Melhoria de estrutura de programa.................................................................. 73
UNIDADE 23 ....................................................................................................... 75
Reengenharia de Dados e suas abordagens .................................................. 75
UNIDADE 24 ....................................................................................................... 77
Gerenciamento de Configurao - Gerenciamento de Mudanas Gerenciamento de Verses e Releases .......................................................... 77
UNIDADE 25 ....................................................................................................... 81
(continuao) Construo de Sistemas - Ferramenta CASE .......................... 81
UNIDADE 26 ....................................................................................................... 84
Sistemas Legados - Estruturas dos Sistemas Legados - Avaliao dos
Sistemas Legados ............................................................................................ 84
UNIDADE 27 ....................................................................................................... 88
Manuteno: fundamentos da fase de Manuteno de Software, tipos de
Manuteno, procedimentos, tcnicas e ferramentas ..................................... 88
UNIDADE 28 ....................................................................................................... 92
Gesto de Projetos de Software e o PMBOK .................................................. 92
UNIDADE 29 ....................................................................................................... 96
Gerenciamento de Qualidade e Estratgias de Teste de Software ................ 96
UNIDADE 30 ..................................................................................................... 100
Engenharia de Software na WEB Sistemas e Aplicaes baseadas na WEB
........................................................................................................................ 100
NIDADE
Engenharia de Sistemas
A Engenharia de Sistemas mais genrica e mais abrangente do que a Engenharia de
Software. Na verdade, a segunda faz parte da primeira. A Engenharia de Sistemas mais
antiga do que a de Software. Enquanto a primeira est mais envolvida com o Sistema como
um todo e seus detalhes, a Engenharia de Software mais especfica no que tange aos
componentes do sistema, em especial ao hardware e software.
Wikipdia
http://pt.wikipedia.org/wiki/Engenharia_de_software
http://pt.wikipedia.org/wiki/Metodologia_(engenharia_de_software)
Oua um PODCAST sobre METODOLOGIAS:
http://www.improveit.com.br/podcasts/quem-se-importa-commetodologia.mp3
NIDADE
Wikipdia
http://pt.wikipedia.org/wiki/Teoria_de_sistemas
10
NIDADE
Descrio
Facilidade de
Manuteno
O software deve ser escrito de modo que possa evoluir para atender s
necessidades mutveis dos clientes. Esse um atributo crucial, porque as
modificaes em um software so uma consequncia inevitvel de um
ambiente de negcios em constante mutao.
Nvel de
Confiana
Eficincia
Facilidade de Uso
11
12
Esse incio difcil da Engenharia de Software, com tantos desafios, gerou vrios paradigmas e
modelos de desenvolvimento. Iremos ver nas prximas unidades quais foram as formas que a
engenharia clssica veio a ajudar nesse difcil incio.
Descrio
O desafio do
legado
O desafio da
heterogeneidade
O desafio do
fornecimento
13
Wikipdia
http://pt.wikipedia.org/wiki/Crise_do_software
14
NIDADE
Ainda hoje a maioria feita sob encomenda em vez de ser montada a partir de
componentes
Tipos de Software
Tempo real
Software bsico
Sistema de informao
Embutido
Tcnicos
Especialistas
Apoio deciso
Jogos
Apoio (processador de textos)
15
Mitos do Software
1 - J temos um manual repleto de padres e procedimentos para a construo de software.
Isso j suficiente para o pessoal do desenvolvimento.
2 - Meu pessoal tem ferramentas de ltima gerao, afinal de contas compramos os mais
novos computadores.
3 - Se ns estamos atrasados nos prazos, podemos adicionar mais programadores e tirar o
atraso.
4 - Uma declarao geral dos objetivos suficiente para se comear a escrever programas,
podemos preencher os detalhes mais tarde.
5 - Os requisitos de projeto modificam-se continuamente, mas as mudanas podem ser
facilmente acomodadas, porque o software flexvel.
6 - Assim que escrevermos o programa e o colocarmos em funcionamento, nosso trabalho
estar completo.
7 - Enquanto no tiver o programa funcionando, eu no terei realmente nenhuma maneira
de avaliar sua qualidade.
8 - A nica coisa a ser entregue em um projeto bem-sucedido o programa funcionando.
Importncia do Software
Um dos pontos fundamentais da importncia do software pelo seu uso cotidiano, aonde
praticamente no mundo moderno, inexiste a possibilidade de no utiliz-lo. E o outro ponto
pela manipulao da informao (dado - informao - conhecimento), e quem a tem possui
poder.
SWEBOK
O SWEBOK (Guide to the Software Engineering Body of Knowledge) o documento tcnico
desenvolvido com o apoio do IEEE (Instituto de Engenheiros Eltricos e Eletrnicos, tambm
popularmente chamado de I3E). Esse documento estabelece uma classificao hierrquica
Copyright 2007, ESAB Escola Superior Aberta do Brasil
16
dos tpicos tratados pela Engenharia de Software, onde o nvel mais alto so as reas do
Conhecimento.
As dez reas do Conhecimento tratadas pelo SWEBOK so:
Requisitos de Software
Projeto de Software
Construo de Software
Teste de Software
Manuteno de Software
Gerncia de Configurao de Software
Gerncia da Engenharia de Software
Processo de Engenharia de Software
Ferramentas e Mtodos da Engenharia de Software
Qualidade de Software
17
18
NIDADE
19
Cabe ressaltar que no existe um consenso sobre o nome mais adequado para Modelos de
Processo de Software. Os principais autores se referem a esse mesmo conceito com os
seguintes nomes:
Modelo Balbrdia
Como falamos anteriormente, no incio da computao, poucos programadores seguiam
algum tipo de metodologia baseando-se, em sua maioria, na prpria experincia. Era o que
chamamos hoje de Modelo Balbrdia, sistemas desenvolvidos na informalidade sem
nenhum tipo de projeto ou documentao.
Nesse modelo, o software tende a entrar num ciclo de somente duas fases: o de
implementao e de implantao. E os ajustes ao software para atender aos novos requisitos,
sempre so em clima de urgncia e de stress, motivados por vrios fatores, e principalmente
por presso poltica.
20
21
O prprio Pressman, outro papa da Engenharia de Software, na ltima edio do seu famoso
livro de Engenharia de Software, alterou os nomes da quinta edio, colocando o nome
dessas fases respectivamente de: Comunicao, Planejamento, Modelagem, Construo e
Implantao.
Wikipdia
http://pt.wikipedia.org/wiki/Processo_de_desenvolvimento_de_software
http://pt.wikipedia.org/wiki/Modelo_em_cascata
http://www.macoratti.net/proc_sw1.htm
Com base nas duas ltimas imagens dessa unidade, faa uma
possvel relao entre os nomes das etapas e com a proposta citada
pelo Pressman. Ou seja, a primeira etapa da primeira figura seria
equivalente a que etapa da segunda imagem, e com a qual do
Pressman??
22
NIDADE
23
Prototipao
A Prototipao tem o mesmo objetivo que uma maquete para um arquiteto (ver figura
abaixo). Antes da entrega final do sistema desenvolve-se rapidamente um esboo para
melhorar o entendimento de desenvolvedores e clientes sobre todas as problemticas das
questes.
Dentro dessa viso, o projeto passa por vrias investigaes para garantir que o
desenvolvedor, usurio e cliente cheguem a um consenso sobre o que necessrio e o que
deve ser proposto. Como muitos usurios no possuem uma viso ampla sobre a Tecnologia,
esse mtodo de desenvolvimento bastante interessante, permitindo que o usurio interaja
significativamente no Sistema.
A prototipao um processo que possibilita desenvolvedor e usurios a examinarem
antecipadamente os requisitos. Com isso se reduz os riscos e as incertezas do
desenvolvimento.
24
Wikipdia
http://pt.wikipedia.org/wiki/Processo_de_desenvolvimento_de_software
http://pt.wikipedia.org/wiki/Desenvolvimento_interativo_e_incremental
http://pt.wikipedia.org/wiki/Prototipac%C3%A3o
25
NIDADE
Paradigmas do desenvolvimento de Software (continuao) - Modelo Espiral Modelos mistos e caractersticas genricas
Objetivo: Relacionar os vrios modelos de desenvolvimento de software.
Modelo Espiral
Este modelo se confunde com o de Prototipagem. Mas em princpio mais adequado para
sistemas mais complexos, e que exigem um alto nvel de interaes com os usurios para
possibilitar a abordagem de todos os problemas desse Sistema.
Foi criado por Barry W. Boehm, ainda em 1988, e ao invs de representar o processo de
software como uma sequncia de atividades, a exemplo do Modelo Cascata, ele
representado atravs de uma espiral (veja figura abaixo).
Cada ciclo da espiral representa uma fase do processo de software. Na parte mais interna
relaciona-se o incio da viso da viabilidade do sistema. E a cada ciclo, passando por vrias
etapas, vai evoluindo a visibilidade do sistema como um todo.
Copyright 2007, ESAB Escola Superior Aberta do Brasil
26
Descrio
ATIVAO
ANLISE de RISCOS
DESENVOLVIMENTO
PLANEJAMENTO
27
Wikipdia
http://pt.wikipedia.org/wiki/Modelo_em_espiral
28
NIDADE
Processo
O Processo de Software um conjunto de atividades, mtodos, prticas e transformaes
ordenadas com a inteno de atingir a qualidade do software. Sua meta fundamental
entregar, de maneira eficiente e previsvel um produto de software capaz de atender as
necessidades de negcio, definidas pela anlise de requisitos, dos usurios.
29
Mtodos
Mtodo uma palavra que vem do grego mthodos, que significa caminho para se chegar a
um fim. O termo metodologia bastante controverso nas cincias em geral e na Engenharia
de Software em particular. Muitos autores parecem tratar metodologia e mtodo como
sinnimos, porm seria mais adequado dizer que uma metodologia envolve princpios
filosficos que guiam uma gama de mtodos que utilizam ferramentas e prticas
diferenciadas para realizar algo.
As metodologias de Engenharia de Software objetivam ensinar como fazer para construir
softwares. Esses mtodos incluem atividades de modelagem, construo de programas,
testes e manuteno. Na Engenharia de Software as principais abordagens de Metodologias
so:
30
Ferramenta uma palavra que vem do latim ferramentum significando qualquer utenslio
empregado nas artes e ofcios (Aurlio). As ferramentas de Engenharia de Software
fornecem apoio automatizado, ou semi-automatizado, para o processo e para os mtodos.
Quando ferramentas so integradas de modo que a informao criada por uma ferramenta
possa ser usada por outra, um sistema de apoio ao desenvolvimento de software, chamado
de engenharia de software apoiada por computador (CASE), estabelecido (Pressman).
Wikipdia
http://pt.wikipedia.org/wiki/Engenharia_de_software#.
C3.81reas_de_Conhecimento
http://pt.wikipedia.org/wiki/Ferramenta_CASE
31
NIDADE
32
33
Wikipdia
http://pt.wikipedia.org/wiki/Processo_de_desenvolvimento_de_software
Antes de dar continuidades aos seus estudos fundamental que voc acesse sua
SALA DE AULA e faa a Atividade 1 no link ATIVIDADES.
34
NIDADE
10
35
Modelagem
A abstrao do sistema de software atravs de modelos que o descrevem um poderoso
instrumento para o entendimento e comunicao do produto final que ser desenvolvido. A
maior dificuldade nesta atividade est no equilbrio entre simplicidade (favorecendo a
comunicao junto ao usurio) e a complexidade (favorecendo a preciso com detalhes) do
modelo. comum a utilizao de linguagens para modelagem como UML.
Fases
Estruturar um projeto junto dimenso de tempo envolve a adoo das seguintes fases
baseadas em tempo (veja maiores detalhes na tabela e figura abaixo):
FASES
Iniciao
(Inception)
Elaborao
(Elaboration)
Construo
(Construction)
Transio
(Transition)
Descrio
36
Workflow de Processo
Estruturar um projeto junto dimenso de componente de processo inclui as seguintes
atividades:
ATIVIDADES
Descrio
Anlise e Projeto
Implementao
Testes
Distribuio
37
Workflow de Suporte
ATIVIDADES
Descrio
Gesto de Projetos
Gesto de
Configurao e
Mudana
Definio do Ambiente
Wikipdia
http://pt.wikipedia.org/wiki/Rational_Unified_Process
http://pt.wikipedia.org/wiki/UML
38
NIDADE
11
Atente para o grfico apresentado. Ele representa que quanto maior a capacitao, menor
ser a variao dos erros de estimativa (de custos, prazos, etc.) em torno da mdia. Ou seja,
enquanto no grfico da esquerda as estimativas fogem muito da mdia, o da direita as
variaes em relao mdia foram aprimoradas aps a implantao do CMM (nvel 5).
O CMM (Capability Maturity Model) o mais famoso representante desse conceito. Ele
basicamente uma metodologia de diagnstico e avaliao da maturidade da capacitao em
desenvolvimento de softwares numa organizao (empresa ou instituio).
O objetivo maior do CMM determinar em que estgio de maturidade uma empresa est em
seu ciclo de desenvolvimento de software. Nasceu da necessidade do Departamento de
39
Descrio
Nvel 1 Inicial
Nvel 2 Repetitivo
Nvel 3 Definido
Nvel 4 Gerenciado
Nvel 5 Em Otimizao
40
Dentro do que foi visto nesta Unidade, como voc visualiza a sua
empresa dentro do conceito do CMM ? Em que estgio voc acredita
que ela esteja ?!?
41
NIDADE
12
Descrio
Requisitos do Usurio
42
Requisitos de Sistema
(ou do desenvolvedor)
Requisitos Funcionais
Requisitos no
Funcionais
N o n - f u n c t io n a l
r e q u ir e m e n t s
P ro d u ct
r e q u ir e m e n t s
E f f ic i e n c y
re q u ir e m e n t s
R e li ab il it y
r e q u ir e m e n t s
U s ab il it y
r e q u ir e m e n t s
P e r f o rm a n c e
r e q u ir e m e n t s
O r g an iz a t io n a l
r e q u ir e m e n t s
Po rt a b il it y
r e q u ir e m e n t s
D e l iv e r y
r e q u ir e m e n t s
S p a ce
r e q u ir e m e n t s
E x te r n a l
r e q u ir e m e n t s
I n t e ro p e r a b il it y
r e q u ir e m e n t s
I m p l e m e n t a t io n
r e q u ir e m e n t s
E t hi c a l
r e q u ir e m e n t s
S t a n d ar d s
r e q u ir e m e n t s
L e g is la t iv e
r e q u ir e m e n t s
P r iv a c y
r e q u ir e m e n t s
S a f e ty
r e q u ir e m e n t s
43
Wikipdia
http://pt.wikipedia.org/wiki/Processo_de_Engenharia_de_Requisitos
44
NIDADE
13
45
46
Definio do Contexto
Definio de Requisitos
o Requisitos Funcionais
o Requisitos de Interface
o Requisitos no Funcionais
Anlise de Risco
Anexos
Wikipdia
http://pt.wikipedia.org/wiki/Requisitos_de_Software
47
NIDADE
14
48
Estudos de Viabilidade
O primeiro processo a ser realizado num Sistema novo o Estudo de Viabilidade. Os
resultados deste processo devem ser um relatrio com as recomendaes da viabilidade
tcnica ou no da continuidade no desenvolvimento do Sistema proposto.
Basicamente um estudo de viabilidade, embora seja normalmente rpido, dever abordar
fundamentalmente as seguintes questes:
Wikipdia
http://pt.wikipedia.org/wiki/Processo_de_Engenharia_de_Requisitos
49
NIDADE
15
Principais DIAGRAMAS
Diagrama de Caso de
Uso
Diagrama de Classe
Descrio
50
Diagrama de Sequncia
Diagrama de
Colaborao
Diagrama de Estado
Diagrama de Atividade
Diagrama de
Componente
Diagrama de
Distribuio
51
Wikipdia
http://pt.wikipedia.org/wiki/UML
http://pt.wikipedia.org/wiki/Caso_de_uso
http://pt.wikipedia.org/wiki/Casos_de_Uso
52
NIDADE
16
Portanto, com base no Manifesto gil, chega-se aos seguintes princpios bsicos:
53
No grfico anterior vemos num extremo o RUP enfatizando os controles, e uma poltica de
trabalho rgida. Ele mais interessante de ser utilizado com equipes grandes de
desenvolvimento. Na outra ponta temos o XP, que veremos a seguir, sinalizando maior
liberdade e mais adequada para equipes pequenas. E num ponto intermedirio o FDD, que
veremos no final desta Unidade, como um modelo conciliador dessas duas estratgias.
Um dos pontos de destaque na Metodologia gil a liberdade dada para as equipes de
desenvolvimento. A declarao de Ken Schwaber define isso da seguinte forma: A equipe
seleciona quanto trabalho acredita que pode realizar dentro da iterao, e a equipe se
compromete com o trabalho. Nada desmotiva tanto uma equipe quanto algum de fora
assumir compromissos por ela. Nada motiva tanto uma equipe quanto a aceitao das
responsabilidades de cumprir os compromissos que ela prpria estabeleceu.
54
XP (Extreme Programming)
O modelo gil mais conhecido o XP (Extreme
Programming). Ele usa preferencialmente a
abordagem orientada a objetos.
O XP inclui um conjunto de regras e prticas que
ocorrem no contexto de quatro atividades (veja a
figura ao lado):
Planejamento
Projeto
Codificao
Teste
55
O FDD enfatiza mais as diretrizes e tcnicas de gesto de projetos do que outros mtodos
geis. O projeto muito bem acompanhado, ficando claro para todos os envolvidos os
avanos e problemas que o Projeto vai sofrendo. Para tanto, o FDD define seis marcos de
referncia durante o projeto e implementao de uma caracterstica:
Travessia do projeto;
Projeto;
Inspeo do projeto;
Cdigo;
Inspeo do cdigo;
Promoo para a construo.
Wikipdia
http://pt.wikipedia.org/wiki/Desenvolvimento_%C3%A1gil_de_software
Outros sites:
http://iscte.pt/~mms/events/agile_seminar/apresentacoes.htm
56
NIDADE
17
57
Crystal
Criado por Alistair Cockburn e Jim Highsmith com intuito de fazer uma analogia com os
cristais geolgicos que apresentam na natureza com a sua prpria cor, forma e dureza.
Destaca-se a manobrabilidade com o significado de um jogo cooperativo de inveno e
comunicao de recursos limitados, com o principal objetivo de entregar softwares teis
funcionando e com o objetivo secundrio de preparar-se para o jogo seguinte (Presman).
A famlia Crystal , na verdade, um conjunto de processos geis que se mostraram efetivos
para diferentes tipos de projeto. A inteno permitir que equipes geis selecionem o
membro da famlia Crystal mais apropriado para o seu projeto e ambiente.
Descrio
AM Agile Modeling
Conforme o site que se auto-intitula The Official
Agile Modeling (veja maiores detalhes, e vale a
pena visitar, em:
http://www.agilemodeling.com/) Scott W.
Ambler, seu criador, descreve a Modelagem gil
(AM) como sendo (adaptado por ns):
58
Dos princpios mais importantes da Modelagem gil (AM), anunciados por Ambler,
destacamos os dois mais significativos:
Modelos Mltiplos: h muitos modelos e notaes diferentes que podem ser usados para
descrever softwares. Importante: apenas um pequeno subconjunto essencial para a maioria
dos projetos. A AM sugere que, para fornecer a viso necessria, cada modelo apresente um
aspecto diferente desse sistema e que apenas aqueles modelos que ofeream valor sua
pretensa audincia sejam usados.
Viajar Leve: essa expresso se refere aos turistas que para no ficar carregando pesadas
malas, adotam esse princpio. No caso, para a AM, ela dita que medida que o trabalho de
Engenharia de Software prossegue, conserve apenas aqueles modelos que fornecero valor
em longo prazo e livre-se do resto.
59
Wikipdia
http://pt.wikipedia.org/wiki/Desenvolvimento_%C3%A1gil_de_software
Outros sites:
http://www.heptagon.com.br/?q=scrum
60
NIDADE
18
61
Descrio
62
Consistncia
Mnimo de surpresa
Facilidade de recuperao
Orientao do usurio
Diversidade de usurios
Wikipdia
http://pt.wikipedia.org/wiki/Interface_%28ci%C3%AAncia_da
_computa%C3%A7%C3%A3o%29
http://pt.wikipedia.org/wiki/Interface_do_utilizador
http://pt.wikipedia.org/wiki/Interface_gr%C3%A1fica_do_utilizador
63
NIDADE
19
Sistemas pessoais
Sistemas embutidos
Sistemas distribudos
Descrio
Compartilhamento
de Recursos
Abertura
Concorrncia
Escabilidade
Tolerncia a
Defeitos
64
Transparncia
Adaptado de Sommerville
Alta Complexidade
Segurana baixa
Dificuldade de Gerenciamento
Imprevisibilidade nos tempos de resposta
Arquitetura de Multiprocessadores
65
Wikipdia
http://pt.wikipedia.org/wiki/Computa%C3%A7%
C3%A3o_distribu%C3%ADda
66
NIDADE
20
c3
c2
c4
c12
c11
c1
s1
Server process
s4
c10
c5
Client process
s2
c6
c7
s3
c9
c8
Um projeto de sistema cliente-servidor deve refletir a estrutura lgica da aplicao que est
sendo desenvolvida (Sommerville). O tipo de arquitetura cliente-servidor mais utilizada em
aplicaes de baixa complexidade a arquitetura cliente-servidor de duas camadas. Nessa
situao a aplicao reside em um ou mais servidores, e um conjunto de clientes usufruindo
desse servio.
Existem basicamente dois tipos: Thin client, ou cliente magro, e Fat client (s vezes
chamado de thick client), ou cliente gordo. No primeiro modelo todo o processamento
realizado no servidor. A segunda estrutura mais complexa e mais comum. O servidor
67
Arquitetura de 3 camadas
A arquitetura de trs camadas no necessariamente representa que existam trs tipos de
computadores conecados numa rede. possvel implementar esse modelo simplesmente com
um servidor assumindo a camada de dados e a de negcio simultaneamente. Para
visualizarmos melhor todos esses relacionamentos vejamos a prxima figura.
68
Wikipdia
http://pt.wikipedia.org/wiki/Cliente-servidor
http://pt.wikipedia.org/wiki/Modelo_em_tr%C3%AAs_camadas
http://pt.wikipedia.org/wiki/Corba
Antes de dar continuidades aos seus estudos fundamental que voc acesse sua
SALA DE AULA e faa a Atividade 2 no link ATIVIDADES.
69
NIDADE
21
Descrio
Evoluo da
Arquitetura
Manuteno
Reengenharia
70
Evoluo da Arquitetura
Os principais sistemas antigos, ou mesmo os legados, foram desenvolvidos na concepo de
arquiteturas centralizadas. Hoje, a tendncia geral do desenvolvimento de sistemas com
arquiteturas distribudas cliente/servidor.
Quando estamos alterando a arquitetura de um sistema j existente interessante que
tenhamos um modelo de camadas lgicas para nos orientar. A imagem abaixo representa as
estruturas de um sistema divididas por camadas, facilitando a modularizao para uma
arquitetura distribuda.
71
Wikipdia
www.twiki.dcc.ufba.br/pub/Residencia/MaterialModuloTI1/slides_aula04
arquiteturadesoftware.pdf
Para voc fazer uma reviso geral dos principais tpicos vistos at aqui,
visite o site sugerido em ESTUDO COMPLEMENTAR, e faa um resumo
por escrito dos principais tpicos de seu interesse.
72
NIDADE
22
Reengenharia de Software - Traduo de cdigo fonte - Engenharia Reversa Melhoria de estrutura de programa
Objetivo: Visualizar a importncia da reengenharia na Engenharia de Software.
A principal diferena entre Reengenharia de Software e o desenvolvimento de um novo
Sistema da onde que se parte esse prprio desenvolvimento. Num Sistema novo inicia-se
com uma especificao escrita (os requisitos) dos usurios/clientes. Enquanto que, numa
reengenharia, o sistema existente (normalmente um Sistema Legado) que a base para
esse incio.
Chikofsky e Cross chegam at definir o desenvolvimento tradicional como Engenharia
Direta, para distinguir da Reengenharia de Software.
Pode-se perceber, pela figura abaixo, a complexidade do processo de Reengenharia de
Software. Embora, nem toda reengenharia passe por todos esses processos,
essencialmente o programa reestruturado. Vejamos mais detalhadamente o que cada
processo realiza (caixas arredondadas).
73
PROCESSOS
Descrio
Traduo de
cdigo-fonte
Engenharia
Reversa
Melhoria de
estrutura do
programa
Modularizao
de programa
Reengenharia
de dados
Wikipdia
http://pt.wikipedia.org/wiki/Reengenharia
http://pt.wikipedia.org/wiki/Reengenharia_de_Processos
74
NIDADE
23
ABORDAGENS
Limpeza
de dados
Extenso
de dados
Migrao
de dados
Descrio
75
76
NIDADE
24
Gerenciamento
de
Mudanas
ATIVIDADES
Planejamento do
Gerenciamento de
Configurao
Descrio
Descreve os padres e os procedimentos que devem ser
utilizados para o Gerenciamento de Configurao.
Gerenciamento de
Mudanas
Gerenciamento de
Verses e Releases
Construo de
Sistemas
Gerenciamento de Mudanas
Durante os testes de sistemas, ou ainda depois da entrega do software ao cliente, devem
sofrer os procedimentos de Gerenciamento de Mudanas. O primeiro passo desse processo
Copyright 2007, ESAB Escola Superior Aberta do Brasil
77
78
Descrio
Numerao de verses
Identificao baseada em
atributos
Identificao orientada a
mudanas
79
Wikipdia
http://pt.wikipedia.org/wiki/Ger%C3%AAncia_de
_Configura%C3%A7%C3%A3o_de_Software
http://pt.wikipedia.org/wiki/Sistema_de_controle
_de_vers%C3%A3o
80
NIDADE
25
Ferramenta CASE
Uma ferramenta CASE (Computer-Aided Software Engineering) significa Engenharia de
Software com o auxlio de computador. Ela possibilita apoiar as atividades de processo do
software, como: a anlise de requisitos, a modelagem de sistema, a depurao e os testes.
Ferramentas CASE so constitudas com uma ampla gama de diferentes tipos de programas.
Copyright 2007, ESAB Escola Superior Aberta do Brasil
81
82
Wikipdia
http://pt.wikipedia.org/wiki/Ferramenta_CASE
83
NIDADE
26
84
Podemos atravs da figura acima caracterizar tipicamente as aes que devemos tomar
quanto aos Sistemas Legados. Enquanto num eixo mensuramos a importncia que um
Sistema Legado tem para o negcio da empresa, no outro quantificamos a sua respectiva
qualidade. Vamos, a seguir, tabular essas aes a serem tomadas.
Copyright 2007, ESAB Escola Superior Aberta do Brasil
85
Valor X Qualidade
Descrio
Baixo Valor de
Negcios
X
Baixa Qualidade
Baixo Valor de
Negcios
X
Alta Qualidade
86
87
NIDADE
27
Tipos de Manuteno
A manuteno ser necessria durante todo o Ciclo de Vida til, e pode ocorrer motivada por
trs tipos fundamentais:
Tipos de Manuteno
Descrio
88
Procedimentos de Manuteno
O Processo de Manuteno normalmente iniciado pelos pedidos de mudana por parte dos
vrios usurios que utilizam o Sistema. Isso pode ser de maneira informal, ou
preferencialmente formalizado, com uma documentao estruturada. Em seguida verificado
o custo e o impacto das mudanas sugeridas. Com as mudanas aprovadas, um novo release
do sistema planejado.
Repare atentamente na figura acima. Veja que uma vez bem estruturado um sistema, no
caso o System 1, que embora tenha despendido maiores custos de desenvolvimento, exigiu
no perodo de manuteno menos tempo e recursos. Ou seja, o System 2 foi desenvolvido
mais rapidamente, mas por no investir, ou visualizar, nos processos de manuteno, ao
chegar nessa fase, despende maior tempo e custos.
Interessante observar que a manuteno segue o mesmo modelo do processo de
desenvolvimento de sistema. Na figura abaixo vemos que a representao das etapas que a
manuteno que est sendo realizada, segue o mesmo Modelo Espiral que estudamos na
Unidade 7.
89
Existem equipes de manuteno que atuam somente em corretivas, ou seja, somente quando
existir um pedido dos usurios que se atua no problema. No entanto, a melhor estratgia
a Manuteno Preventiva na qual se detecta previamente onde esto ocorrendo um maior
nmero de corretivas, e destaca-se uma fora-tarefa para realizar uma reengenharia nesses
processos.
No quadro a seguir, veja as principais perguntas a serem feitas no Processo de Manuteno:
90
Wikipdia
http://pt.wikipedia.org/wiki/Manuten%C3%A7%C3%A3o_de_software
91
NIDADE
28
92
PMBOK
O PMBOK uma importante referncia em Gerenciamento de Projetos. Desenvolvido pelo
PMI (Project Management Institute) possibilitou utilizar termos em comum para se discutir,
escrever e aplicar o Gerenciamento de Projetos.
O guia atualmente base para uma certificao especfica e bem remunerada no mercado.
Como os profissionais de Engenharia de Software praticamente so gerentes de projetos,
existe a necessidade do entendimento desse conjunto de prticas para o bom
desenvolvimento de um projeto de software.
A estrutura do PMBOK Guide (veja a imagem a seguir - os nmeros entre parnteses
representam respectivamente os blocos da imagem) contempla nove reas de conhecimento
especficas, que so:
93
94
Wikipdia
http://pt.wikipedia.org/wiki/PMBOK
http://pt.wikipedia.org/wiki/Gerenciamento_de_Projetos
95
NIDADE
29
ITENS
Perguntas
Facilidade de
compreenso
Visibilidade
Facilidade de
suporte
Robustez
Facilidade de
manuteno
Rapidez
96
(adaptado de Sommerville)
A tecnologia de desenvolvimento
Qualidade do pessoal
Qualidade do processo (como vimos anteriormente !)
Custo, tempo e cronograma
TOPLevel 1
Testin g
sequen ce
Level 2
Le vel 2
stubs
Level 1
Test
d ri ve rs
. ..
Le v e l N
Level 2
Le vel 2
Le ve l N
Le v e l N
Le v e l N
Level 2
Test
d ri v e rs
Le vel 3
stubs
Le ve l N
Leve l N 1
Le v el N 1
Le v e l N 1
BOTTOM-UP
97
Quando um software construdo especificamente para um cliente, normal ele passar por
um Teste de Aceitao. Esse teste por ser conduzido pelo prprio usurio, pode passar por
uma bateria de testes levando s vezes semanas, ou mesmo meses, para ser finalizado.
No entanto, se o software feito para vrios clientes, o Teste de Aceitao no vivel de
ser realizado por cada usurio principal. Por isso, a estratgia melhor a ser aplicada a dos
Testes Alfa e Beta.
Para a realizao dos Testes Alfa existe a necessidade de um ambiente controlado. Ou seja,
os usurios so levados a testar o software desde os seus estgios iniciais de instalao, at
a sua operao completa. Tudo isso realizado num ambiente especial, onde fiquem
registradas todas as impresses dos usurios, suas reaes s interfaces homem-mquina, e
assim por diante.
Os Testes Beta so realizados exclusivamente no habitat do usurio. E realizado
tipicamente sem a presena dos desenvolvedores, ao contrrio do Alfa. Normalmente
selecionado um pblico especial de usurios, com um perfil crtico e colaborador.
importante a escolha adequada de usurios nesse tipo de teste. Pois existe a necessidade do
prprio usurio deixar todas suas observaes, questionamentos e sugestes, registrados de
forma minuciosa e com riqueza de detalhes.
98
No caso dos Testes de Caixa-Preta que focalizam nos requisitos funcionais do software so os
mais utilizados no mundo prtico. Os Caixa-Branca demandam muito tempo, e praticamente
no conseguem realizar todas as possibilidades de resposta que um software fornece. As
principais tcnicas utilizadas nos Testes de Caixa-Preta so:
Mtodos de Teste baseados em Grafo
o Modelagem de fluxo de transao
o Modelagem de estado finito
o Modelagem do fluxo de dados
Particionamento de Equivalncia
Anlise de Valor-limite
Teste de Matriz Ortogonal
Wikipdia
http://pt.wikipedia.org/wiki/Qualidade_de_Software
http://pt.wikipedia.org/wiki/Teste_de_software
99
NIDADE
30
Usabilidade
Funcionalidade
Confiabilidade
Eficincia
Manutenibilidade
Segurana
100
Disponibilidade
Escabilidade
Prazo de colocao no mercado
Interface
design
Aesthetic design
Content design
Navigation design
Architecture design
Component design
technology
Cada nvel da pirmide representa uma atividade de projeto. Veja maiores detalhes de cada
fase no quadro abaixo, vendo a pirmide de cima para baixo:
Nvel da Pirmide
Descrio
Projeto de Interface
Projeto Esttico
Projeto de Contedo
101
Projeto de Navegao
Projeto Arquitetural
Projeto de Componente
Arquitetura da WebApp
Conforme Jacyntho, as aplicaes devem ser construdas usando camadas nas quais
diferentes preocupaes so levadas em conta. Em particular, dados da aplicao devem ser
separados dos contedos da pgina da Web. E esses contedos, por sua vez, devem ser
claramente separados dos aspectos da interface.
Os autores sugerem um projeto de arquitetura em trs camadas (veja a figura abaixo) que
desaclopa a interface da navegao, e do comportamento da aplicao. Os mesmos
argumentam que manter a interface, aplicao e navegao separadas simplifica a
implementao e aumenta o reuso.
co n t ro ller
m an ag e s u se r re q u e st s
se le ct s m o d e l b e h av io r
se le ct s v ie w re sp o n se
b e h av io r re q u e st
( st at e ch an g e )
u se r re q u e st
o r d at a
b ro wse r
v ie w se le ct io n
m o del
e n cap su lat e s f u n ct io n alit y
e n cap su lat e s co n t e n t o b je ct s
in co r p o r at e s all we b A p p st at e s
clie n t
d at a f ro m m o d e l
HTML d at a
view
u p d at e re q u e st
e xt e rn al d at a
p re p are s d at a f ro m m o d e l
re q u e st u p d at e s f ro m m o d e l
p re se n t s v ie w se le ct e d b y
co n t ro lle r
se rv e r
102
A arquitetura mais utilizada nesse caso a Modelo-Viso-Controlador (MVC Model-ViewController). Embora seja um padro de projeto arquitetural desenvolvido para o ambiente
Smalltalk (linguagem de programao orientada a objeto), ele pode ser utilizado para
qualquer aplicao interativa. Veja os detalhes de cada item da arquitetura MVC na tabela
abaixo:
ITEM do MVC
MODELO
VISO
CONTROLADOR
Descrio
Encapsula funcionalidade, objetos de contedo e incorpora todos os
estados da WebApp. o contedo em si, normalmente armazenado
num Banco de Dados externo.
Prepara dados do Modelo, requisita atualizaes dele, apresenta viso
selecionada pelo Controlador. Geralmente a prpria pgina HTML.
Gera requisies do usurio, seleciona comportamento do Modelo e
seleciona resposta de viso. o cdigo que gera os dados dinmicos
para dentro da pgina HTML.
Wikipdia
http://pt.wikipedia.org/wiki/MVC
http://pt.wikipedia.org/wiki/Web_2.0
http://pt.wikipedia.org/wiki/Web_3.0
103
Apresentao
Objetivo
Carga horria
40 horas
Ementa
Requisitos
Bibliografia do mdulo
104
Sobre o autor
Consultor de T.I. em grandes empresas como Sebrae, Senac, Granero, Transvalor, etc.
Viagens internacionais: EUA, Frana, Inglaterra, Itlia, Portugal, Espanha, etc.
Antes de dar continuidades aos seus estudos fundamental que voc acesse sua
SALA DE AULA e faa a Atividade 3 no link ATIVIDADES.
105
Atividade Dissertativa
Desenvolva uma pesquisa gerando um texto, de 2 a 3 folhas adicionando
imagens, de uma das unidades da nossa apostila, de sua livre escolha, permitindo
a expanso da temtica selecionada.
Ateno: Qualquer bloco de texto igual ou existente na internet ser devolvido
para que o aluno realize a atividade novamente.
106