57
XXX SISTEMA DE ENSINO PRESENCIAL CONECTADO CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TRABALHO INDIVIDUAL 5º SEMESTRE

Portfolio 5 Semestre 2015 China Telecom Enviado

  • Upload
    edson

  • View
    17

  • Download
    1

Embed Size (px)

DESCRIPTION

trabalho Unopar Portfolio 5 Semestre 2015 China Telecom.

Citation preview

Page 1: Portfolio 5 Semestre 2015 China Telecom Enviado

xx-xx2015

XXX

SISTEMA DE ENSINO PRESENCIAL CONECTADOCURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E

DESENVOLVIMENTO DE SISTEMAS

TRABALHO INDIVIDUAL 5º SEMESTRE

Page 2: Portfolio 5 Semestre 2015 China Telecom Enviado

xx-xx2015

TRABALHO INDIVIDUAL 5º SEMESTRE

Trabalho de Análise e Desenvolvimento de Sistemas apresentado à Universidade Norte do Paraná - UNOPAR, como requisito parcial para a obtenção de média bimestral na disciplina De Projeto Orientado a Objetos, Engenharia e Projeto de Software, Programação para Web II.

Orientador: Márcio Roberto Chiaveli,Luis Claudio Perini,Marco Ikuro Hisatomi,Veronice de Freitas.

XXXXXXXXXX

Page 3: Portfolio 5 Semestre 2015 China Telecom Enviado

SUMÁRIO

Conteúdo1 INTRODUÇÃO 3

2 objetivos4

3 desenvolvimento 5

3.1 ENGENHARIA E PROJETO DE SOFTWARE 5

3.1.1 Área de Conhecimento – Riscos............................................................53.1.2 Área de Conhecimento – Escopo...........................................................63.1.3 Área de Conhecimento – Aquisições.....................................................73.1.4 Área de Conhecimento – Comunicações...............................................73.1.5 Resenha do livro Engenharia de Software.............................................8

3.2 frameworks para desenvolvimento web......................................................323.2.1 Comparação de frameworks para desenvolvimento web (Java)..........323.2.2 Custo Benefício de frameworks no desenvolvimento Web..................333.2.3 Programação Java Web (plataforma de desenvolvimento)..................34

3.3 Projeto Orientado a Objetos........................................................................354 conclusão 41

5 referências 42

Page 4: Portfolio 5 Semestre 2015 China Telecom Enviado

1 INTRODUÇÃO

A empresa China Telecom - A maior empresa de telefonia fixa do

mundo emprega 350 mil funcionários divididos em áreas como operações de rede,

serviços de informação ao cliente, voz e dados por telefone fixo, atendimento ao

usuário e serviços de faturamento/cobrança de clientes. Apesar da forte

concorrência da telefonia móvel, a empresa vem mantendo um crescimento

vertiginoso.

No entanto, ainda em transição de uma empresa estatal para uma

nova e moderna empresa e com objetivo de se firmar como uma concorrente de

peso no mercado mundial, a China Telecom teve que resolver vários problemas –

demanda recursos de várias pessoas e especialistas, além de inúmeros recursos,

entre hardware, software, fornecedores, viagens, entre outros. Neste contexto

veremos que a sobre como ajudar a empresa a resolver estes problemas.

3

Page 5: Portfolio 5 Semestre 2015 China Telecom Enviado

2 OBJETIVOS

Aplicar todos os conhecimentos necessários com o objetivo de

possibilitar a empresa China Telecom numa integração mais profunda com outros

sistemas, de maneira que a empresa tenha uma visão completa de todos os seus

processos com clientes, fornecedores e funcionários.

4

Page 6: Portfolio 5 Semestre 2015 China Telecom Enviado

3 DESENVOLVIMENTO

Como a empresa China Telecom – demanda recursos de várias

pessoas e especialistas, além de inúmeros recursos, entre hardware, software,

fornecedores, viagens, entre outros, farei uma resenha sobre o Guia PMBOK, dentro

da Engenharia e Projeto de Software.

3.1 ENGENHARIA E PROJETO DE SOFTWARE

O PMBOK® Guide não é uma metodologia, pois não distingue os

diferentes tipos de projeto (certamente gerenciar projetos administrativos é

totalmente diferente de gerenciar projetos de construção pesada).

Não utiliza peculiaridades de linguagem que respeitem a cultura de diferentes tipos

de empresas e não apresenta modelos específicos de documentos a serem

preenchidos.

Resumidamente podemos chamar de manual que descreve o

universo de conhecimentos para o Gerenciamento de Projetos. Transformou-se em

um padrão á fonte de inspiração para quase todas as metodologias existentes.

O PMBOK torna um projeto melhor estruturado e atendendo as suas

demandas de forma mais eficiente, tendo também em vista um melhor planejamento

para assim bater as suas metas como o custo, benefício, e prazo estabelecido.

Ele é um conjunto de boas práticas para ajudar na construção de um projeto,

promove um melhor vocabulário para se discutir entre profissionais na área.

O guia PMBOK possui em sua 5ªedição 10 áreas de conhecimento dentre elas...

3.1.1 Área de Conhecimento – Riscos

Esta área descreve os processos relativos à realização do

gerenciamento de riscos em um projeto. Temos cinco processos de planejamento e

um de controle. Os processos desta área de conhecimento têm como objetivo

determinar como os riscos serão identificados, analisados e como as respostas será

5

Page 7: Portfolio 5 Semestre 2015 China Telecom Enviado

planejado e como risco será planejado, criam uma lista de riscos identificados no

projeto com diversas técnicas que ajudam a gerar essa lista de riscos, buscam

priorizar os riscos com base no grau de criticidade, permitem atribuir probabilidade

numérica aos riscos, definem estratégias e ações para lidar com os riscos negativos

e positivos, monitoram os riscos com novo risco sendo identificada, revisão das

análises de riscos, definição de outras prioridades de riscos, etc.

Os processos dessa área são:

Planejar o Gerenciamento dos Riscos.

Identificar os Riscos.

Realizar a Análise Qualitativa de Riscos.

Realizar a Análise Quantitativa dos Riscos.

Planejar as Respostas aos Riscos.

Monitorar e Controlar os Riscos.

3.1.2 Área de Conhecimento – Escopo

Esta área descreve os processos envolvidos na verificação de que o

projeto inclui todo o trabalho necessário e apenas o trabalho necessário, para que

seja concluído com sucesso.

Existem três processos de planejamento (três primeiros) e dois

processos de controle e monitoramento (dois últimos). Os processos de

planejamento criam um plano para o gerenciamento de escopo. Os processos de

controle e monitoramento controlam se que o escopo está sendo cumprido conforme

foi definido nos processos de planejamento e a verificação confirmam com o cliente

que está tudo correto.

Os processos dessa área são:

Coletar Requisitos.

Definir o Escopo.

Cria a EAP.

Verificar o Escopo.

Controlar o Escopo.

6

Page 8: Portfolio 5 Semestre 2015 China Telecom Enviado

3.1.3 Área de Conhecimento – Aquisições

Esta área descreve os processos que compram ou adquirem

produtos, serviços ou resultados, além dos processos de gerenciamento de

contratos. Os processos desta área de conhecimento têm como objetivo determinar

o que se quer adquirir, de quem se quer adquirir, receber as resposta dos

fornecedores e selecionar o fornecedor, como se dará o gerenciamento dos

contratos, pagamentos, se as entregas estão de acordo com o que foi estabelecido,

pagar o fornecedor, e por último formalizar a finalização do contrato.

Os processos dessa área são:

Planejar as Aquisições.

Realizar as Aquisições.

Administrar as Aquisições.

Encerrar as Aquisições.

3.1.4 Área de Conhecimento – Comunicações

Esta área descreve os processos relativos à geração, coleta,

disseminação, armazenamento e destinação final das informações do projeto de

forma oportuna e adequada.

Os processos desta área de conhecimento determinam quem está

envolvido no projeto, definem como as comunicações vão ocorrer quando o projeto

iniciar e determina o tipo de informações gerada, quem é o responsável, qual o

meio, quem receberá as informações geradas, qual a periodicidade determina como

serão distribuídas as informações, como podemos gerenciar as expectativas dos

interessados medindo o grau de satisfação ou insatisfação das pessoas

interessadas, e geram relatórios que permitam o acompanhamento e controle do

que está acontecendo com o tempo, custo, escopo, etc.

Os processos dessa área são:

Identificar as Partes Interessadas.

Planejar as Comunicações.

Distribuição das Informações.

Gerenciar as Expectativas das Partes Interessadas.

7

Page 9: Portfolio 5 Semestre 2015 China Telecom Enviado

Reportar Desempenho

3.1.5 Resenha do livro Engenharia de Software

A empresa China Telecom decidiu investir em um software de ERP

fornecido por uma empresa de renome do que investir no desenvolvimento interno

de um que levaria muito tempo e sairia muito caro. Neste caso, “levaria muito tempo

e sairia muito caro”. Vamos supor que a empresa optasse pelo desenvolvimento

próprio, para isso farei uma resenha dos seguintes capítulos do livro Engenharia de

Software, de Ian Sommerville:

3.1.5.1 CAPITULO 11 – Projeto de Arquitetura

O projeto de arquitetura é primeiro estagio no processo de projetos.

Diz o livro que ele idêntica subsistemas e estabelece um framework para controlar a

comunicação dos subsistemas, subsistemas são sistemas grandes decompostos em

subsistemas e que fornece algum conjunto de serviços relacionados. Ele também

representa uma ligação critica entre processos de engenharia de projeto e

requisitos. Três vantagens de projetar e documentar explicitamente uma arquitetura

de software:

Comunicação de stakeholders: é uma apresentação em alto

nível do sistema que enfoca a discussão entre diferentes

stakeholders.

Analise de sistemas: Tem profundo efeito sobre o sistema,

mostra se o sistema pode atender aos requisitos críticos

como, confiabilidade, desempenho e facilidade de

manutenção.

Reuso em larga escala: Apóia o reuso em larga escala de

sistemas que possuem arquiteturas de sistemas familiares.

A arquitetura de software serve para negociar requisitos de sistema

e estruturar discussões com os clientes, desenvolvedores e gerentes. É uma

8

Page 10: Portfolio 5 Semestre 2015 China Telecom Enviado

ferramenta essencial parra gerenciamento de complexidade, ocultando detalhes e

focando as abstrações principais do sistema. O estilo e estrutura da aplicação

dependem dos requisitos não funcionais do sistema, por exemplo:

Se o desempenho for um requisito crítico a aplicação deve localizar

operações criticas dentro de subsistemas e usar componentes de alta granularidade

em detrimento dos de baixa granularidade para reduzir a comunicação entre eles.

Se a facilidade de manutenção for um requisito crítico, a arquitetura de sistemas

deve ser projetada usando componentes de baixa granularidade e autocontidos que

possam ser prontamente mudados.

Há conflitos potenciais entre algumas dessas arquiteturas, por

exemplo, se o desempenho que necessita de alta granularidade e a facilidade de

manutenção que necessita de baixa granularidade forem ambos o requisito crítico

terá que ser encontrada alguma solução eficaz.

Um projeto de subsistemas é decomposição abstrata de um sistema

de componentes em alta granularidade. Os diagramas de blocos são usados para

representar um projeto de subsistemas.

Esses diagramas de blocos são bons para comunicação entre

stakeholders e para o planejamento do projeto, pois, não estão abarrotados de

detalhes, já para a arquitetura não são tão bons, pois não mostram relacionamento

entre os componentes do sistema.

O projeto de arquitetura tenta estabelecer uma organização de

sistemas que satisfação os requisitos funcionais e os não funcionais do sistema.

Durante o processo de projeto de arquitetura os arquitetos de sistemas devem

responder a algumas perguntas:

Existe uma arquitetura genérica de aplicação que possa

funcionar como um modelo para o sistema que está sendo

projetado?

Como o sistema será distribuído ao longo de vários

processadores?

Qual ou quais estilos de arquitetura são apropriados para o

sistema?

Qual será a abordagem fundamental usada para estruturar o

9

Page 11: Portfolio 5 Semestre 2015 China Telecom Enviado

sistema?

Como as unidades estruturais de um sistema serão

decompostas em módulos?

Qual estratégia será utilizada para controlar a operação das

unidades do sistema?

Como o projeto de arquitetura será avaliado?

Como a arquitetura do sistema deve ser documentada?

Ao Projetar uma arquitetura de sistemas, você precisa decidir o que

seu sistema e classes mais amplas de aplicação têm em comum, e decidir quanto

conhecimento dessas arquiteturas de aplicação você pode reusar. A arquitetura de

um sistema de software pode ser baseada em um modelo ou estilo de arquitetura

especifico. Em alguns casos a arquitetura geral de um sistema pode ser uma

arquitetura composta.

Os modelos de arquitetura que podem ser desenvolvidos podem

incluir:

Um modelo estático de estrutura que mostra os subsistemas

ou componentes desenvolvidos como unidades separadas.

Um modelo dinâmico de processo que mostra como o sistema

esta organizado em processos em tempo de execução. 

A organização de um sistema reflete a estratégia básica usada para

estruturá-lo. Você precisa tomar decisões sobre o modelo geral organizacional de

um sistema com antecedência no processo de projeto de arquitetura. A organização

pode refletir diretamente na estrutura subsistema. Possuem três estilos de

organizacionais amplamente usados:

3.1.5.1.1 Modelo de repositório

Os subsistemas que constituem um sistema devem trocar

informações de mofo que possam trabalhar juntos eficientemente.

Esse modelo é, portanto, adequado para aplicações em que os dados são gerados

por um subsistema e usados por outro. O repositório é passivo e o controle é de

10

Page 12: Portfolio 5 Semestre 2015 China Telecom Enviado

responsabilidade dos subsistemas que o usam.

3.1.5.1.2 Modelo Cliente – Servidor

O modelo de arquitetura cliente – servidor é um modelo em que o

sistema é organizado como um conjunto de serviços e servidores e clientes

associados que acessam e usam os serviços. Os clientes talvez precisem saber os

nomes dos servidores disponíveis e os serviços que eles fornecem. No entanto os

servidores não precisam saber a identidade do cliente ou quantos são. São

acessados os serviços por meio de chamadas remotas de procedimento usando um

protocolo request–eply, o cliente faz um pedido a um servidor e espera ate receber

uma resposta. A vantagem de um modelo cliente servidor é que ele é uma

arquitetura distribuída. O uso efetivo de sistemas em rede pode ser feito com muitos

processadores distribuídos. É fácil adicionar um novo servidor e integrá-lo ao

restante do sistema.

3.1.5.1.3 Modelo em Camadas

O modelo em camadas organiza um sistema em camadas, cada

uma das quais fornecendo um conjunto de serviços. A abordagem em camadas

apóia o desenvolvimento incremental de sistemas. À medida que uma camada é

desenvolvida alguns serviços fornecidos por essa camada podem ser

disponibilizados para os usuários. Essa arquitetura também é modificável e portável.

Desde que sua interface permaneça inalterada, uma camada poderá ser substituída

por outra equivalente. Uma desvantagem da abordagem em camadas é que a

estruturação de sistemas dessa maneira pode ser difícil. As camadas mais internas

podem fornecer recursos básicos, como gerenciamento de arquivos, necessários em

todos os níveis. O desempenho também pode ser um problema devido aos vários

níveis de interpretação de comandos algumas vezes exigidos.

11

Page 13: Portfolio 5 Semestre 2015 China Telecom Enviado

3.1.5.1.4 Estilos de decomposição modular

Depois que a organização geral do sistema foi escolhida, precisa-se

tomar uma decisão sobre a abordagem a ser usada na decomposição de

subsistemas em módulos. Um modulo é normalmente um componente de sistema

que fornece um ou mais serviços para outros módulos. Ele faz uso de serviços

fornecidos por outros módulos. Existem duas estratégias principais que você pode

usar ao decompor um subsistema em módulos. Decomposição orientada a objetos e

pipelining orientado a funções. Você deve evitar tomar decisões prematuras sobre a

simultaneidade de um sistema.

3.1.5.1.5 DECOMPOSIÇÃO ORIENTADA A OBJETOS.

Um modelo de arquitetura orientado a objetos estrutura o sistema

em um conjunto de objetos não firmemente acoplados com interfaces bem definidas.

Os objetos chamam serviços oferecidos por outros objetos. Uma decomposição

orientada a objetos esta relacionada a classes de objetos, seus atributos e suas

operações. Quando implementados os objetos são criados a partir dessas classes e

algum modelo de controle é usado para coordenar as operações de objetos. A

vantagem é que implementação de objetos pode ser modificada sem afetar outros

objetos. A desvantagem é que para usar serviços os objetos devem fazer referencia

explicita ao nome e a interface de outros objetos.

3.1.5.1.6 Pipelining orientado a funções

No pipelining orientado a funções ou modelo de fluxo de dados, as

transformações processam suas entradas e produzem saídas. Os dados fluem de

uma para outra função e são transformados ao moverem – se seqüencialmente.

Cada etapa é implementada como uma transformação. Os dados de entrada fluem

através dessas transações ate serem convertidos em dados se saída. As vantagens

dessa arquitetura são: Apoiar o reusa de transformações. Ele é intuitiva, muitas

pessoas pensam em seu trabalho em termos de processamento de entrada e saída.

A evolução do sistema pela adição de novas transformações é geralmente direta.

12

Page 14: Portfolio 5 Semestre 2015 China Telecom Enviado

Ela é simples de ser implementada tanto quanto um sistema concorrente ou

seqüencial. O principal problema é que ele necessita ser um formato comum para

transferir dados que possa ser reconhecido por todas as transformações.

Sistemas interativos são difíceis de escrever usando esse modelo por causa da

necessidade de uma seqüência de dados ser processada.

3.1.5.1.7 Modelos de controle

O modelo de controle tem como objetivo controlar subsistemas de

maneira que seus serviços sejam entregues no lugar certo e no tempo certo.

Modelos de controle são usados em conjunto com estilos de estrutura. Todos os

estilos de estrutura que foi explicado podem ser implementados por meio de controle

centralizado ou baseado em eventos.

3.1.5.1.8 Controle Centralizado

Em modelo de controle centralizado, um subsistema é designado

como controlado de sistema e tem a responsabilidade pelo gerenciamento da

execução de outros subsistemas. Modelos de controle centralizados Dividem – se

em duas classes, dependendo se forem executados seqüencialmente ou

paralelamente.

O modelo chamado – retorno: O controle começa no topo da

hierarquia de sub – rotina e através de chamadas de sub-rotinas, passa para os

níveis mais baixos na arvore, são aplicados em modelos seqüenciais.

O modelo gerenciado: Aplicados em modelos concorrentes. Um

sistema concorrente é projetado como um gerenciador de sistema e controla o inicio,

a parada e a coordenação de outros processos do sistema.

3.1.5.1.9 Sistemas orientados a eventos

As decisões dos modelos orientados a eventos são regidos pelos

eventos gerados externamente. O termo evento pode ser um sinal que pode assumir

uma gama de valores ou uma entrada de comando baseados em um menu.

13

Page 15: Portfolio 5 Semestre 2015 China Telecom Enviado

Possuem dois modelos de controle orientados a eventos.

Modelos de broadcast: Nesse modelo, um evento é transmitido a

todos os subsistemas. Qualquer subsistema programado para manipular o evento

pode responder a ele. A vantagem dessa abordagem é que a evolução é

relativamente simples, um novo subsistema para tratar classes especifica de

eventos pode ser integrado por meio do registro de seus eventos no tratador de

eventos. A desvantagem é que os subsistemas não sabem se ou quando os eventos

serão manipulados.

Modelos orientados a interrupções: São usados em sistemas de

tempo real como requisitos rigorosos de tempo, nos quais as interrupções externas

são detectadas por um trator de interrupções. A vantagem dessa abordagem é que

ela permite respostas muito rápidas aos eventos a serem implementados. Sua

desvantagem é a complexidade da programação e a dificuldade de validação.

3.1.5.1.10 Arquitetura de referencia

As arquiteturas de referencia não são geralmente consideradas um

roteiro de implementações. Em vez disso, sua principal função é ser um meio de

discussão de arquiteturas de domínio especifico e de comparação de sistemas

diferentes em um domínio. Um modelo de referencia fornece um vocabulário para

comparação. Ele atua como uma base, em relação a qual os sistemas podem ser

avaliados.

Uma proposta de modelo de referencia é um modelo para ambientes

CASE que identifica cinco conjuntos de serviços que um ambiente CASE deve

fornecer. Ele deve também fornecer recursos de plug in para ferramentas CASE

individuais que usam esses serviços. Os cincos níveis de referencias são:

Serviços de repositório de dados: Estes serviços fornecem recursos

para o armazenamento e o gerenciamento de itens de dados e seus

relacionamentos.

Serviços de integração de dados: Estes serviços fornecem recursos

para o gerenciamento de grupos ou para definição de relacionamentos entre eles.

Serviços de gerenciamento de tarefas, estes serviços fornecem recursos para a

14

Page 16: Portfolio 5 Semestre 2015 China Telecom Enviado

definição e aprovação de modelos de processo.

Serviços de mensagem: Comunica ferramenta – Ferramenta,

ambiente-ferramenta e ambiente – ambiente.

Serviços de interface com o usuário: Estes serviços fornecem

recursos para o desenvolvimento de interface com o usuário.

A finalidade dessa arquitetura de referencia é ser um meio de

classificação e comparação de ferramentas e ambientes CASE integrados.

3.1.5.2 CAPITULO 12 – Arquitetura de sistemas distribuídos

Um sistema distribuído é aquele em que as informações em fase de

processamento são distribuídas a vários computadores. Vantagens de usar uma

abordagem distribuída para desenvolvimento de sistemas.

1. Compartilhamento de recursos – Um sistema

distribuído permite o compartilhamento de

recursos de hardware e software, como discos,

impressoras, arquivos e computadores que estão

associados aos diferentes computadores de uma

rede.

2. Abertura - permitem a equipamentos e software

de diferentes fabricantes serem combinados, pois

são projetados com base em protocolos padrões.

3. Concorrência – vários processos podem operar ao

mesmo tempo em diferentes computadores, e

podem (mais não precisam) conversar uns com os

outros.

4. Escalabilidade – são escalonáveis a maneira que

a capacidade de um sistema pode ser ampliada

pela adição de novos recursos para atender as

demandas dos sistemas.

5. Tolerância a defeitos – pela disponibilidade de

vários computadores e o potencial de duplicação

15

Page 17: Portfolio 5 Semestre 2015 China Telecom Enviado

de informação significa que os sistemas

distribuídos possam ser tolerantes a algumas

falhas de hardware e software.

Esses sistemas de distribuição comparados aos sistemas que

operam com um processador ou com um cluster de processadores podem ter

algumas desvantagens como:

1. Complexidade - os sistemas distribuídos são mais

complexos que os sistemas centralizados.

2. Proteção – o sistema pode ser acessado de vários

computadores diferentes, e o trafego na rede

pode estar sujeita a interceptações.

3. Gerenciamento – os computadores do sistema

podem ser de tipos diferentes e podem operar em

versões diferentes de sistemas operacionais.

Defeitos em uma máquina podem se propagar a

outra maquinas com conseqüências inesperadas.

4. Imprevisibilidade – Como todos os usuários da

web sabem, os sistemas distribuídos são

imprevisíveis em suas respostas. A resposta

depende da carga total do sistema, sua

organização e a carga da rede.

Como tudo isso pode mudar em um curto período de tempo, o tempo

de resposta para uma solicitação do usuário pode variar drasticamente de uma

solicitação para outra.

Possuem dois tipos diferentes de arquiteturas de sistemas

distribuídos:

1. Arquitetura cliente-servidor: É o sistema como um

conjunto de serviços fornecidos aos 

clientes que fazem uso desses serviços. Os

servidores e clientes são tratados de maneiras

diferentes nesses sistemas.

2. Arquiteturas de objetos distribuídos. Podemos

16

Page 18: Portfolio 5 Semestre 2015 China Telecom Enviado

pensar no sistema como um conjunto de objetos

que interagem e cuja localização é irrelevante.

Não há distinção entre cliente e servidor.

Tanto a arquitetura cliente-servidor e a arquitetura

de objetos distribuídos são amplamente usadas

no setor, mais a aplicação ocorre geralmente

dentro de uma única organização. A organização

é, portanto, intra-organizacional.

3.1.5.2.1 Arquitetura de multiprocessadores

O multiprocessador São processos que podem ser executados

separados. Esses modelos tomam decisões usando essas informações e enviam

sinais aos atuadores, que modificam o ambiente do sistema. O uso de vários

processadores aprimora o desempenho e a capacidade de recuperação do sistema.

3.1.5.2.2 Arquitetura Cliente-servidor

Em uma arquitetura cliente-servidor, uma aplicação é modelada

como um conjunto de clientes que usam esses serviços. Os clientes precisam estar

informados sobre os serviços disponíveis, mas geralmente não sabem da existência

de outros clientes. Vários processos de serviços podem ser executados em um

único processador de serviço, portanto não há mapeamento entre processos e

processadores de um sistema.

O projeto de sistemas cliente-servidor deve refletir a estrutura lógica

da aplicação que esta sendo desenvolvida. Um exemplo é uma aplicação que esta

dividida em três camadas:

A camada de apresentação: que se encarrega da

17

Page 19: Portfolio 5 Semestre 2015 China Telecom Enviado

apresentação de informações para o usuário e toda a

interação com o usuário.

A camada de processos de aplicações se encarrega da

implementação da lógica da aplicação.

A camada de gerenciamento de dados se encarrega de todas

as operações de banco de dados.

A arquitetura cliente-servidor mais simples denomina-se arquitetura

cliente-servidor de duas camadas, podem ter duas formas:

Modelo cliente-magro: O processamento e o gerenciamento

de dados são realizados no servidor. O cliente apenas

executa o software de apresentação.

Modelo cliente-gordo: O servidor é responsável somente pelo

gerenciamento de dados. O software do cliente implementa a

lógica da aplicação e as interações com o usuário do sistema.

Uma desvantagem do modelo cliente-magro é que ele impõe uma

grande carga de processamento sobre o servidor e a rede. O modelo cliente-gordo

faz uso dessa capacidade de processamento disponível e distribui o processamento

lógico de aplicação e a apresentação do cliente. O servidor é essencialmente um

servidor de transações que gerencia todas as transações do banco de dados.

Enquanto o modelo cliente-gordo distribui o processamento mais eficientemente do

que um modelo cliente-magro, o gerenciamento do sistema é mais complexo. A

funcionalidade da aplicação é dividida entre vários computadores. Quando o

software precisa ser alterado, isso envolve reinstalação em cada computador cliente,

o que pode resultar em um custo significativo se houver centenas de clientes no

sistema. O Problema com a abordagem cliente-servidor de duas camadas é que as

três camadas lógicas devem ser mapeadas sobre dois sistemas de computador – o

cliente e o servidor. Pode haver problemas de escalabilidade e desempenho, se o

modelo cliente-magro for escolhido, ou problemas de gerenciamento de sistemas, se

o modelo cliente-gordo for usado. Para evitar esses problemas uma alternativa é

usar o modelo cliente-servidor de três camadas. Em alguns casos é melhor estender

o modelo cliente-servidor de três camadas para uma variante com varias camadas,

na qual servidores adicionais são incorporados ao sistema.

18

Page 20: Portfolio 5 Semestre 2015 China Telecom Enviado

3.1.5.2.3 Arquiteturas de objetos distribuídos

Nesse modelo os objetos podem ser distribuídos entre uma serie de

computadores na rede e se comunicam através de um middleware, que é chamado

de requisitor de objetos. O Middleware fornece uma interface transparente continua

entre os objetos. Ele fornece um conjunto de serviços que permitem que os objetos

se comuniquem e sejam adicionados e removidos do sistema. As vantagens são que

permite que o projetista do sistema postergue decisões sobre onde e como os

serviços devem ser fornecidos. È uma arquitetura de sistema aberto que permite que

novos recursos sejam adicionados.

Uma arquitetura de objetos distribuídos pode ser usada como um

modelo lógico, que permite estruturar e organizar o sistema. Uma arquitetura de

objetos distribuídos em lugar de uma arquitetura cliente-servidor é adequada para

esse tipo de aplicação porque o modelo lógico do sistema não é um dos

fornecimentos de serviços em que existem serviços distintos de gerenciamento de

dados e pode adicionar bancos de dados ao sistema sem grandes interrupções.

A maior Desvantagem é que elas são mais complexas do que sistemas cliente-

servidor.

3.1.5.2.4 CORBA

Existem quatro elementos principais desse padrão:

1. Um modelo de objeto para objetos de aplicações

em que um objeto corba é um encapsulamento

de estado com uma interface bem definida em

linguagem neutra descrita em uma linguagem de

definição de interface.

2. Um requisitor de objetos que gerencia

solicitações para serviços de objetos.

3. Um conjunto de serviços de objetos que são

serviços gerais com probabilidade de serem

solicitados por muitas aplicações distribuídas.

4. Um conjunto de componentes comuns

19

Page 21: Portfolio 5 Semestre 2015 China Telecom Enviado

construídos sobre esses serviços básicos que

podem ser solicitados pelas aplicações.

O Corba considera um objeto como se fosse um encapsulamento de

atributos e serviços, como é normal em objetos.

Ele deve ter uma definição de interface separada que define

atributos e operações publicas do objeto. As interfaces são definidas por uma

linguagem de definição de interface padronizada independe de linguagem.

O objeto corba tem um único identificador chamado de referencia de

objeto interoperavel. Esse IOR é usado quando um objeto solicita serviços de outro

objeto. O requisitor de objetos conhece os objetos que estão solicitando serviços e

suas interfaces. O ORB cuida da comunicação entre os objetos, os objetos que se

comunicam não precisam conhecer a localização de outros objetos nem sobre sua

implementação. O objeto que fornece o serviço tem um esqueleto de IDL associado

que liga a interface a implementação dos serviços.

O corba foi desenvolvido desde 1980 e as versões recentes de

corba foram simplesmente dedicadas ao apoio aos objetos distribuídos.

Os padrões Corba incluem definições de interface

para uma grande variedade de componentes horizontais e verticais. Os

componentes verticais são componentes específicos de um domínio de aplicação.

Os componentes horizontais são componente de propósito geral,

como componentes de interface com o usuário.

3.1.5.2.5 COMPUTAÇÃO INTERORGANIZACIONAL DISTRIBUIDA

Por motivo de segurança e interoperabilidade, a computação

distribuída foi implementada inicialmente em nível organizacional. Uma organização

tem uma serie de servidores e distribui sua carga computacional entre eles. Devido

ao fato de eles estarem todos localizados dentro da mesma organização, pode ser

aplicado padrões e processos operacionais locais.

3.1.5.2.6 ARQUITETURAS PONTO A PONTO

São sistemas descentralizados em que as computações podem ser

20

Page 22: Portfolio 5 Semestre 2015 China Telecom Enviado

realizadas por qualquer nó da rede, nenhuma distinção é feita entre clientes e

servidores. O sistema global é projetado para beneficiar-se da capacidade

computacional e armazenamento disponível em uma rede de computadores

potencialmente grande. Em principio, em sistemas ponto a ponto, todo nó de rede

pode estar ciente a respeito de qualquer outro nó, pode fazer conexões com ele e

pode trocar dados com ele. Em uma arquitetura descentralizada, os nos de rede não

são simplesmente elementos funcionais, mais também chaves de comunicação que

podem guiar os sinais de dados e de controle de um nó para o outro.

No entanto quando se recupera um documento, o nó que esta recuperando se torna

visível para outros.

3.1.5.2.7 ARQUITETURA DE SITEMA ORIENTADO A SERVIÇOS

A essência de um serviço, é que o fornecimento dos serviços é

independente da aplicação que usa o serviço. Os

provedores de serviços podem desenvolver serviços especializados e oferecê-los a

uma gama de usuários de serviços de organizações diferentes. O proposto WEB

Service foi lançada, pois o acesso de servidores web era somente por meio de

navegar web, e o acesso direto aos repositórios de informações por outros

programas não era pratico. Os três padrões fundamentais que possibilitam

comunicação entre WEB SERVICES são:

SOP: Define uma organização para troca estruturada de

dados entre WEB SERVICES.

WSDL. Define como as interfaces dos WEB services podem

ser representadas.

UDDI. Este é um padrão de descobrimento que define como

as informações de descrição do serviço usadas pelos

solicitantes do serviços para descobrir serviços, pode ser

organizada.

Todos esses padrões são baseados em XML.

21

Page 23: Portfolio 5 Semestre 2015 China Telecom Enviado

3.1.5.3 CAPITULO 13 – Arquitetura de Aplicações

3.1.5.3.1 SISTEMAS DE PROCESSAMENTO DE DADOS

Aplicações de processamento de dados são aplicações voltadas aos

dados. Elas Processam dados em lotes sem intervenções explicitas do usuário

durante o processamento. As ações explicitam tomadas pela aplicação dependem

dos dados que são processados. Os sistemas de processamento em lotes são

normalmente usados em aplicações de negócios nas quais as operações similares

são realizadas sobre uma grande quantidade de dados. Eles tratam de uma grande

variedade de funções administrativas, como folha de pagamento, cobrança,

contabilidade e publicidade. Essas aplicações enfocam os dados. Os bancos de

dados são geralmente maiores que os sistemas de informações (SI).

Os sistemas de processamento de dados

selecionam os dados de registros de entrada e, dependendo do valor dos campos

nos registros, tomam algumas ações especificadas no programa. Eles podem,

então, enviar o resultado novamente do processamento ao banco de dados e

formatar a entrada e a saída processada para impressão.

Os sistemas de processamento de dados possuem três componentes principais:

Entrada: A entrada coleta as entradas de uma ou mais fontes.

Processamento: O processamento realiza a computação

usando essas entradas.

Saída: A saída gera Saídas a serem escritas novamente no

banco de dados e ou impressas.

Os componentes de entrada, processamento e de saída podem ser

decompostos ainda em uma estrutura entrada-processamento-saída. Exemplo:

Um componente de entrada pode ler algum dado de um arquivo ou banco de dados

(entrada) e corrigir alguns erros (processo) e, depois enfileirar os dados validos para

processamento (saída).

São sistemas orientados a funções, pois os registros e as

transações são processados em serie, sem necessidade de manter o estado entre

as transações.

22

Page 24: Portfolio 5 Semestre 2015 China Telecom Enviado

3.1.5.3.2 SISTEMAS DE PROCESSAMENTO DE TRANSAÇÕES

Os sistemas de transações são projetados para processar

solicitações de informações por usuários de um banco de dados. Tecnicamente uma

seqüência de operações é tratada como uma unidade simples (uma unidade

atômica). Todas as operações têm que ser realizadas antes que as mudanças

tornem-se permanentes no banco de dados.

Os sistemas de processamento de transações são geralmente

sistemas interativos nos quais os usuários enviam solicitações assíncronas de

serviço. Primeiro um usuário faz uma solicitação para o sistema através de um

componente de processamento de entrada/saída. A solicitação é processada por

alguma lógica especifica da aplicação. Uma transação é criada e passada para um

gerenciador de transações, que é em geral incorporado ao sistema de

gerenciamento de banco de dados. Depois que o gerenciador de transações

assegurarem que a transação foi concluída adequadamente, ele sinalizara para a

aplicação que o processamento foi finalizado.

A estrutura entrada-processo-saída se aplica aos muitos sistemas de

processamento de transações. Alguns desses sistemas são versões interativas de

sistemas de processamento de lotes.

Um exemplo de sistema de processamento de transações é um

sistema bancário que permite aos clientes consultarem suas contas e retirarem

dinheiro de um caixa eletrônico. O sistema é composto de dois subsistemas de

software que cooperam entre si – o software de caixa eletrônico e o software de

processamento de contas localizadas no servidor de banco de dados. Os

subsistemas de entrada e de saída são implementados como softwares no caixa

eletrônico, uma vez que o subsistema de processamento está no servidor de banco

de dados.

Em sistemas como os de contabilidade de clientes de um banco,

pode haver diferentes maneiras de interagir com o sistema. Muitos clientes

interagirão por meio de caixas eletrônicos, mas uma equipe do banco usara

terminais de mesa para acessar o sistema. Pode haver vários tipos de caixas

eletrônicos e terminais de mesa, e alguns clientes e a equipe do banco podem

23

Page 25: Portfolio 5 Semestre 2015 China Telecom Enviado

acessar os dados de contas por meio de navegadores WEB.

Para simplificar o gerenciamento de diferentes protocolos de comunicação entre

terminais, sistemas de processamento de transações de larga escala podem incluir

middleware para comunicação com todos os tipos de terminal, organização e

ordenação em serie dos dados dos terminais e envio dos dados para

processamento.

3.1.5.3.3 SISTEMAS DE GERENCIAMENTO DE INFORMAÇÕES E RECURSOS

Um sistema de informações permite acesso controlado de uma

grande base de informações, tais como catalogo de bibliotecas, tabela de horários

de vôos ou registros de pacientes em um hospital. O desenvolvimento da WEB fez

com que um grande numera de sistemas de informações migrasse de sistemas

organizacionais especializados para sistemas de propósito geral acessíveis

universalmente.

O sistema de informação é modelado com o uso de uma abordagem

de camadas ou de maquina abstrata na qual a camada superior apóia a interface

com o usuário e a camada inferior, o banco de dados de sistema. A camada de

comunicações inclui uma lógica especifica de aplicação para acesso e atualização

do banco de dados.

Sistemas de alocação de recursos é uma classe de aplicação

amplamente usada. Sua arquitetura esta alinhada com o modelo de sistema de

informações.

O componente de um sistema de alocação de recursos inclui:

1) Um banco de dados de recursos que mantém detalhe de recursos

que são alocados. Os recursos podem ser adicionados ou removidos do banco de

dados.

2) Um conjunto de regras que descreve as regras de alocação de

recursos.

3) Um componente de gerenciamento de recursos que permite que o

provedor de recursos adicione, edite ou elimine recursos do sistema.

4) Um componente de alocação de recursos que atualiza o banco de

dados de recursos quando eles são designados e que associa esse recursos a

24

Page 26: Portfolio 5 Semestre 2015 China Telecom Enviado

detalhes do solicitante do recurso.

5) Um modulo de autenticação de usuários que permite ao sistema

verificar se os recursos estão sendo alocados para um usuário reconhecido.

6) Um modulo de gerenciamento de consultas que permite ao

usuário descobrir quais recursos estão disponíveis.

7) Um componente de entrega de recursos que prepara os recursos

a serem entregues ao solicitante. Em um sistema de emissão de ingressos, isso

pode envolver a preparação de uma confirmação por e-mail, o envio de uma

solicitação para uma impressora que imprime os ingressos e os detalhes de para

onde os ingressos devem ser enviados.

8) Um componente de interface com o usuário que esta fora do

sistema e permite ao solicitante do recurso enviar consultas e solicitações para o

recurso a ser alocado.

3.1.5.3.4 SISTEMAS DE PROCESSAMENTO DE EVENTOS

Os sistemas de processamento de eventos respondem aos eventos

do ambiente ou da interface com o usuário do sistema. A principal característica dos

sistemas de processamento de eventos é que a seqüência de eventos é imprevisível

e o sistema deve ser capaz de trabalhar com esses eventos quando eles ocorrerem.

Sistemas de tempo real, são também sistemas de processamento baseados em

eventos, porem ao invés de ter eventos de interface com o usuário, tem eventos

associados a sensores e atuadores do sistema.

3.1.5.3.5 SISTEMAS DE PROCESSAMENTO DE LINGUAGENS

Os sistemas de processamento de linguagens aceitam uma

linguagem natural ou artificial como entrada e geram alguma outra representação

dessa linguagem como saída. Em engenharia de software, os sistemas de

processamento de linguagens mais amplamente usados são os compiladores que

traduzem uma linguagem artificial de programação de alto nível em código de

maquina. Mais outros sistemas de processamento de linguagens traduzem uma

25

Page 27: Portfolio 5 Semestre 2015 China Telecom Enviado

descrição de dados XML em comandos para consultar um banco de dados e

sistemas de processamento de linguagem natural que tentam traduzir uma

linguagem em outra.

Os tradutores em um sistema de processamento de linguagens têm

uma arquitetura genérica que inclui os seguintes componentes:

1. Um analisador léxico, que obtém elementos da

linguagem de entrada e os converte em um

formato interno.

2. Uma tabela de símbolos que mantém

informações sobre os nomes de entidades

(variáveis, nomes de classes.) usadas no texto

que esta sendo traduzido.

3. Um analisador sintático, que verifica a sintaxe da

linguagem que está sendo traduzida. Ele usa uma

gramática definida de linguagem e constrói uma

arvore de sintaxe.

4. Uma árvore de sintaxe, que é uma estrutura

interna que representa o programa que esta

sendo compilado.

5. Um analisador semântico, que usa informações

da árvore de sintaxe e da tabela de símbolos para

verificar a correção sintática do texto da

linguagem de entrada.

6. Um gerador de código que ‘caminha’ pela árvore

de sintaxe e gera o código de maquina abstrata.

3.1.5.4 CAPITULO 29 – Gerenciamento de Configurações

Gerenciamento de configurações são o desenvolvimento e o uso de

padrões e procedimentos para o gerenciamento de sistemas de software em

desenvolvimento. Há muitas razões Por que os sistemas existem em diferentes

configurações. Configurações podem ser produzidas para diferentes computadores,

26

Page 28: Portfolio 5 Semestre 2015 China Telecom Enviado

para diferentes sistemas operacionais, incorporando funções especificas de clientes.

Os gerentes de configurações são responsáveis por manter a rastreabilidade das

diferenças entre versões de software, para assegurar que as novas versões sejam

derivadas de maneira controlada e liberar novas versões para clientes certos no

momento certo.

3.1.5.4.1 PLANEJAMENTO DE GERENCIAMENTO DE CONFIGURAÇÕES

O plano de gerenciamento de configurações descreve os padrões e

procedimentos que devem ser usados para o gerenciamento. O ponto de partida

para o desenvolvimento do plano deve ser um conjunto de padrões de configuração,

que devem ser adaptados para se atender aos requisitos e as restrições de cada

projeto específico.

3.1.5.4.1.1 IDENTIFICAÇÃO DE ITEM DE CONFIGURAÇÃO

Em um grande sistema de software, pode haver módulos de

milhares de códigos fonte, scripts de testes, documentos de projeto etc. Eles são

produzidos por pessoas diferentes e, quando criados, podem ser denominados com

nomes similares ou idênticos. Para manter a rastreabilidade de todas essas

informações de maneira que o arquivo certo possa ser encontrado quando for

necessário você necessita de um esquema de identificação consistente para todos

os itens no sistema de gerenciamento de configurações.

Durante o processo de planejamento de gerenciamento de configuração, você

decide exatamente quais itens serão controlados. Planos de projetos,

especificações, projetos, programas, e massa de dados de teste são normalmente

mantidos como itens de configuração. Todos os documentos que podem ser úteis

para a evolução futura do sistema devem ser controlados pelo sistema de

gerenciamento de configuração. O esquema de identificação de itens de

configuração deve atribuir um único nome para todos os documentos sob controle

de configuração. Esse nome pode refletir o tipo do item, uma parte do sistema ao

qual ele se aplica, o criador do item. No esquema de atribuição de nomes, você

pode desejar evidenciar a relação entre os itens para garantir que os documentos

27

Page 29: Portfolio 5 Semestre 2015 China Telecom Enviado

relacionados possuam uma mesma raiz em seus nomes. Portanto, você pode definir

um esquema de hierarquia com nome. Esquemas de nomes hierarquizados são

simples e de fácil compreensão: algumas vezes, podem mapear uma estrutura de

diretórios usada para armazenar arquivos de projeto. No entanto, refletem a

estrutura de projeto na qual o software foi desenvolvido. Os nomes de itens de

configuração associam componentes com um projeto especifico e, dessa maneira,

reduzem as oportunidades para o reuso. Pode ser muito difícil encontrar

componentes relacionados.

3.1.5.4.1.2 BANCO DE DADOS DE CONFIGURAÇÃO

O banco de dados de configuração é utilizado para registrar todas as

informações relevantes sobre as configurações de sistema e os itens de

configuração. Você usa o banco de dados CM para auxiliar a avaliação do impacto

das mudanças de sistema e para gerar relatórios para a gerencia sobre o processo

de CM. Como parte do processo de CM, deve-se definir o esquema do banco de

dados de CM, os formulários para coletar informações para serem registradas no

banco de dados e procedimentos para registro e recuperação de informações de

projeto.

Um banco de dados de configuração pode registrar informações

sobre usuários de componentes, clientes de sistemas, plataformas de execução,

mudanças propostas e etc. De preferência, um banco de dados de configuração

deve ser integrado com a versão do sistema de gerenciamento usada para

armazenar e gerenciar os documentos formais do projeto.

Um banco de dados de configuração armazena informações sobre itens de

configuração e referencia seus nomes num sistema de gerenciamento de versão ou

depósito de arquivos.

3.1.5.4.2 GERENCIAMENTO DE MUDANÇAS

As necessidades e requisitos organizacionais alteram-se durante a

vida útil de um sistema. Isso significa que você precisa fazer as mudanças

correspondentes no sistema de software. Para garantir que essas mudanças serão

28

Page 30: Portfolio 5 Semestre 2015 China Telecom Enviado

aplicadas ao sistema de maneira controlada, você precisa de um conjunto de

procedimentos de gerenciamento de mudanças apoiado por ferramentas.

Procedimentos de gerenciamento de mudança dizem respeito a analise de custo e

beneficio das mudanças propostas, a aprovação das mudanças viáveis e a

rastreabilidade de quais componentes do sistema foram alterados. O processo de

gerenciamento de mudança deve surtir efeito quando o software ou a documentação

associada são colocados em baseline pela equipe de gerenciamento de

configurações.

O primeiro estágio no processo de gerenciamento de configurações

é completar um formulário de solicitação de mudança (CRF – change request form)

que descreve a mudança necessária para o sistema. Uma vez que o formulário de

solicitação de mudança é enviado, ele deve ser registrado no banco de dados de

configuração. A solicitação de mudança é então analisada para verificar se a

mudança solicitada é necessária.

Para mudanças validas, o estagio seguinte é a avaliação da

mudança e o custo. O impacto da mudança no restante do sistema deve ser

verificado. Isso envolve todos os componentes afetados pela mudança. Se realizar a

mudança significa que mudanças adicionais em alguma parte do sistema são

necessárias, isso aumenta claramente o custo de sua implementação. Em seguida

as mudanças necessárias para os módulos do sistema são avaliadas. Finalmente, o

custo para realizar a mudança é estimado, considerando os custos de mudança nos

componentes relacionados.

3.1.5.4.3 GERENCIAMENTO DE VERSÕES E RELEASES

Os processos envolvidos no gerenciamento de versões e relases

preocupam-se com a identificação e a manutenção da rastreabilidade das versões

de um sistema. Gerentes de versões idealizam procedimentos para assegurar que

as versões de um sistema possam ser recuperadas quando solicitadas e não sejam

alteradas acidentalmente pela equipe de desenvolvimento. Para produtos, os

gerentes trabalham com a equipe de marketing, e , para sistemas feitos sob

encomenda, com os clientes, para planejar quando novos releases de um sistema

devem ser criados e distribuídos para implantação.

29

Page 31: Portfolio 5 Semestre 2015 China Telecom Enviado

Um release do sistema é uma versão distribuída aos clientes. Cada

release deve incorporar novas funcionalidades ou ser planejado para uma

plataforma diferente de hardware.

3.1.5.4.3.1 IDENTIFICAÇÃO DE VERSÕES

Para criar uma versão especifica de um sistema, você precisa

especificar as versões dos componentes de sistema que devem ser incluídas nele.

Você não pode usar o nome do item de configuração para identificar a versão,

porque ele pode ter muitas versões para cada item

de configuração identificado.

A três técnicas básicas para identificação da versão de componentes

são:

1. Numeração de versões: O componente recebe

um numero explicito e único de versão. Isso é o

mais comumente usado no esquema de

identificação.

2. Identificação baseada em atributos: Cada

componente tem um nome (como o nome do item

de configuração, que não é único para diferentes

versões) e um grupo de atributos associados

para cada versão, componentes são portanto,

identificados pela especificação de seus nomes e

valores de atributos.

3. Identificação orientada a mudanças: Cada

componente é denominado como na identificação

baseada em atributos, mas é também associado

com uma ou mais solicitações de mudanças. Ou

seja, considera –se que cada versão de

componente foi criada em resposta a uma ou

mais solicitações de mudanças. A versão de

componente é identificada pelo conjunto de

solicitações de mudanças que se aplicam ao

30

Page 32: Portfolio 5 Semestre 2015 China Telecom Enviado

componente.

3.1.5.4.3.2 GERENCIAMENTO DE RELEASES

Um release de sistema é uma versão do sistema distribuído para os

clientes. Os gerentes de release de sistemas são responsáveis por decidir quando

um sistema pode ser liberado para os clientes, gerenciar o processo de criação do

release e de meios de distribuição e documentar o release para assegurar que ele

pode ser recriado exatamente como foi distribuído, se for necessário.

A criação de um release é um processo de criação de arquivos e documentos que

inclui todos os componentes do release do sistema. O código executável de

programas e todos os arquivos de dados associados devem ser coletados e

identificados. Se os manuais a serem lidos em

computadores são distribuídos, copias eletrônicas devem ser armazenadas com o

software. Finalmente, quando todas as informações estiverem disponiveis, o

diretório do release é manipulado para a distribuição.

Quando um release de sistema é produzido, ele deve ser

documentado para assegurar que possa ser recriado ipsis literis no futuro. Isso é

importante para sistemas embutidos de ciclo de vida longo e feitos para os clientes,

como aqueles que controlam maquinas complexas.

Para documentar um release você deve registrar as versões

especificas dos componentes de código fonte usados para criar o código executável.

Você deve manter compias dos códigos fonte e código executável, e de todos os

arquivos de dados e de configuração. Você deve também registrar as versões do

sistema operacional, as bibliotecas, os compiladores e outras ferramentas usadas

para construir o software. Elas podem ser necessárias para construir exatamente o

mesmo sistema em alguma data posterior.

3.1.5.4.4 CONTRUÇÃO DE SISTEMAS

A construção de sistemas é um processo de compilação e ligação de

componentes de software num programa que executa determinada configuração

definida. Quando você esta construindo um sistema com base em seus

31

Page 33: Portfolio 5 Semestre 2015 China Telecom Enviado

componentes, você deve pensar nas seguintes questões:

1. Todos os componentes que compõem um sistema

foram incluídos nas instruções de construção?

2. A versão apropriada de cada componente

necessário foi incluída nas instruções de

construção ?

3. Todos os arquivos de dados necessários estão

disponíveis?

4. Se os arquivos de dados estão referenciados

dentro de um componente, o nome usado é o

mesmo que o do arquivo de dados na maquina –

alvo?

5. A versão apropriada do compilador e de outras

ferramentas requeridas esta disponível?

As versões atuais das ferramentas de software podem ser

incompatíveis com as versões antigas usadas para desenvolver o sistema.

3.1.5.4.5 FERRAMENTAS CASE PARA GERENCIAMENTO DE CONFIGURAÇÕES

Processos de gerenciamento de configurações são normalmente

padronizados e envolvem aplicações de procedimentos predefinidos. Eles requerem

o gerenciamento cuidadoso de grande quantidade de dados e é essencial a atenção

aos detalhes. Quando um sistema está sendo construído com base em versões de

componentes, um único erro de gerenciamento de configuração pode significar que

o software não irá operar adequadamente. Consequentemente, o apoio de uma

ferramenta CASE é essencial para o gerenciamento de configuração. Essas

ferramentas podem ser combinadas para criar uma área de trabalho para apoiar

todas as atividades de CM.

32

Page 34: Portfolio 5 Semestre 2015 China Telecom Enviado

3.2 FRAMEWORKS PARA DESENVOLVIMENTO WEB

3.2.1 Comparação de frameworks para desenvolvimento web (Java).

Devido ao crescimento acelerado da Internet e, conseqüentemente,

as facilidades que a mesma oferece, a empresa China Telecom decidiu migrar de

seus sistemas Desktop para sistemas Web. Esta migração em grande escala fez

com que o desenvolvimento Web também crescesse para atender essa demanda e,

com isto, esta empresa assim como as empresas que decidiram investir nessa

migração tiveram vantagens como: Disponibilizar serviços a um maior número de

pessoas; Expandir o horizonte da empresa graças ao maior alcance da Internet.

Porém, era necessário que as formas de desenvolvimento Web

também evoluíssem, pois ainda eram usadas técnicas que não proporcionavam a

produtividade esperada, e um sistema Web era considerado muito complexo de

desenvolver, afinal, as ferramentas de programação para essa plataforma não eram

muito eficazes em relação às seguintes características: confiabilidade, produtividade,

facilidade de desenvolvimento e o principal, reusabilidade. Em paralelo a essa

necessidade, um padrão usado em smalltalk nos anos 80 voltou a ser utilizado, o

MVC (Modelo-View-Controller ou Modelo-Visão-Controle), onde os programadores

criam interfaces e 15 telas, acesso a dados e lógica de negócios de forma

independente, o que se notou uma forma eficiente de se desenvolver aplicativos

Web.

A importância de usar frameworks também é notada ao seguir o

modelo MVC, porque, sem frameworks fica praticamente impossível utilizar

corretamente esse modelo, usando Java EE (Enterprise Edition) como exemplo, é

possível seguir esse modelo usando Java Server Pages para a criação do layout de

páginas na camada de visão; usar um banco de dados conectado ao JDBC para a

camada de modelo. No entanto, a camada de controle não é possível criá-la

independentemente das outras camadas, ou seja, para desenvolver a camada de

controle puramente em Java EE seria necessário usar código correspondente a

lógica de negócios em todas as páginas JSP (Java Server Pages) o que não torna a

aplicação independente entre camadas, pois assim a camada de visão estaria sobre

a camada de controle o que em manutenções futuras seria um agravante, pois para

33

Page 35: Portfolio 5 Semestre 2015 China Telecom Enviado

uma simples alteração no layout da página poderia afetar o código referente à

camada de controle justamente por eles encontrarem-se no mesmo arquivo.

3.2.2 Custo Benefício de frameworks no desenvolvimento Web

Parvoláteis de implementação através de interfaces estáveis.

Aumenta a reutilização – definição de componentes genéricos

que podem ser replicados para criar novos sistemas.

Extensibilidade – favorecida pelo uso de métodos hooks que

permitem que as aplicações estendam interfaces estáveis.

Inversão de controle – IoC – o código do desenvolvedor é

chamado pelo código do framework. Dessa forma, o

framework controla a estrutura e o fluxo de execução dos

programas.

3.2.3 Programação Java Web (plataforma de desenvolvimento).

Aplicação web designa, de forma geral, sistemas de informática

projetados para utilização através de um navegador, através da internet ou

aplicativos desenvolvidos utilizando tecnologias web HTML, JavaScript e CSS.1

Pode ser executado a partir de um servidor HTTP (Web Host) ou localmente, no

dispositivo do usuário.

Uma aplicação web também é definida em tudo que se é processado

em algum servidor, exemplo: quando você entra em um e-commerce a página que

você acessa antes de vir até seu navegador é processada em um computador ligado

a internet que retorna o processamento das regras de negócio nele contido. Por isso

se chama aplicação e não simplesmente site web.

A função do servidor web é receber uma solicitação (requisição) e

devolver (resposta) algo para o cliente.O browser permite ao usuário solicitar um

recurso e quando o servidor responde a uma solicitação são encontrados recursos

como: páginas HTML, figuras e documento PDF que são exibidas depois para o

usuário. Geralmente os servidores enviam instruções para o browser escritas em

HTML. O HTML diz ao browser como apresentar conteúdo ao usuário web.

34

Page 36: Portfolio 5 Semestre 2015 China Telecom Enviado

O servidor em si tem alguns recursos, mas por algumas deficiências

não consegue processar tudo sozinho como: criações de páginas dinâmicas e o

armazenamento de dados em um banco de dados.

Páginas dinâmicas – Quando a aplicação roda no servidor, este

disponibiliza somente páginas estáticas. Porém, para efetuar essa comunicação é

necessário o auxílio de uma outra aplicação de ajuda que é passada através de

Servlet.

Armazenar dados no servidor – Para efetuar essa ação o servidor

precisa de uma aplicação de apoio (Servlet), fazendo com que o servidor envie

esses parâmetros para o Servlet.

As falhas de segurança podem surgir em diferentes etapas, tais

como: análise de requisito; especificação; Implementação. Os riscos de aplicação na

vulnerabilidade de uma empresa pode causar impactos.

O HTTP usa um modelo de solicitações e respostas. Uma solicitação

ocorre quando o usuário faz uma solicitação HTTP e o servidor web devolve uma

resposta HTTP, sendo que o browser verifica como tratar esse conteúdo. Se a

resposta que vem do servidor for uma página HTML, então é inserido na resposta

HTTP.

As diferenças entre as solicitações GET e POST são que enquanto o

GET anexa dados do formulário no final da URL o POST inclui dados do formulário

no corpo da solicitação.

3.3 PROJETO ORIENTADO A OBJETOS

Como já foi dito na descrição do problema da China Telecon, a

melhor solução para essa empresa seria realmente adotar um software de uma

empresa especializada e com um bom suporte. Mas nos baseando na hipótese de a

empresa querer desenvolver seu próprio software, para reduzir os custos seria

necessário também reduzir o tempo de desenvolvimento do mesmo e manter a

qualidade e produtividade no desenvolvimento. Além de contar com uma equipe de

profissionais capacitados, também seria necessário adotar padrões e técnicas que

irão ajudar a desenvolver um bom sistema para a empresa.

Analisando entre os padrões existentes, é fácil chegar à conclusão

35

Page 37: Portfolio 5 Semestre 2015 China Telecom Enviado

que o melhor padrão para ser adotado no desenvolvimento do software em questão

seria a arquitetura MVC.

A arquitetura MVC foi desenvolvida para ser usado em projetos de

interface visual em Smalltalk, linguagem de programação que juntamente com o C+

+ ganhou grande reconhecimento na época, o MVC foi criado na década de 70, e

após esses anos de sua criação ainda é um pattern aplicável nas mais variadas

aplicações, principalmente em aplicações web.

Quando um software começa a ficar grande e complexo, muitos

dados são apresentados para os usuários, sentimos a necessidade de aplicar uma

arquitetura que facilite nosso trabalho, desde a organização do projeto, as divisões

das responsabilidades até as possíveis modificações que poderão ser efetuadas ao

longo do desenvolvimento do software para isso precisaram dividir o projeto em três

objetos para aplicar o MVC.

MVC é composto por três tipos de objetos. O modelo é o objeto de

aplicação, a vista é a apresentação na tela e o controlador define a maneira como a

interface do usuário reage às entradas do mesmo. Antes do MVC, os projetos de

interface para o usuário tendiam em agrupar esses objetos. MVC para aumentar a

flexibilidade e a reutilização. (GAMMA et al. 2000, p. 20).

O MVC tem como principal objetivo: separar dados ou lógicos de

negócios (Model) da interface do usuário (View) e o fluxo da aplicação (Controller), a

idéia é permitir que uma mensagem da lógica de negócios possa ser acessada e

visualizada através de várias interfaces. Na arquitetura MVC, á lógica de negócios,

ou seja, nosso Model não sabe quantas nem quais as interfaces com o usuário esta

exibindo seu estado, a view não se importa de onde esta recebendo os dados, mas

ela tem que garantir que sua aparência reflita o estado do modelo, ou seja, sempre

que os estados do modelo mudam, o modelo notifica as view para que as mesmas

atualizem-se.

MVC é um conceito (paradigma) de desenvolvimento e design que

tenta separar uma aplicação em três partes distintas. Uma parte, a Model, esta

relacionada ao trabalho atual que a aplicação administra outra parte a View esta

relacionada a exibir os dados ou informações dessa uma aplicação e a terceira

parte, Controller, em coordenar os dois anteriores exibindo a interface correta ou

36

Page 38: Portfolio 5 Semestre 2015 China Telecom Enviado

executando algum trabalho que a aplicação precisa completar. (GONÇALVES, 2007,

p. 141).

Model ou modelo é a camada que contém a lógica da aplicação, é

responsável pelas regras de negócio, para sistemas persistentes, o modelo

representa a informação (dados) dos formulários e as regras SQL para manipular

dados do banco, o modelo mantém o estado persistente do negócio e fornece ao

controlador á capacidade de acessar as funcionalidades da aplicação, o modelo é o

principal responsável toda aplicação deve representar o modelo atua isoladamente

não tem conhecimento de quais serão a ou as interfaces que terá de atualizar, o

modelo somente acessa á base de dados e deixa os dados prontos para o

controlador este por sua vez encaminha para a visão correta.

View: ou visão é a camada de apresentação com usuário, é a

interface que proporcionará á entrada de dados e a visualização de respostas

geradas, nas aplicações web é representado pelo HTML que é mostrado pelo

browser, geralmente a visão contém formulários, tabelas, menus e botões para

entrada e saída de dados.  A visão deve garantir que sua apresentação reflita o

estado do modelo, quando os dados do modelo mudam, o modelo notifica as vistas

que dependem dele, cada vista tem a chance de atualizar-se. Desta maneira permite

ligar muitas vistas a um modelo podendo fornecer diferentes apresentações, essa

camada não contém códigos relacionados á lógica de negócios, ou seja, todo o

processamento é feito pelo Modelo e este repassa para a visão, evidenciaremos

abaixo um exemplo de duas vistas atuando sobre o mesmo modelo.

Controller: já descrevemos da view e do modelo, mas, temos de

concordar que tudo isso se tornaria uma bagunça se tivesse alguém para organizar

esta arquitetura, um controlador funciona de intermediário entre a camada de

apresentação e a camada de negócios, sua função como já diz é controlar

coordenar o envio de requisições feitas entre a visão e o modelo. O controller define

o comportamento da aplicação, o controle é quem interpreta as solicitações (cliques,

seleções de menus) feitas por usuários com bases nestes requerimentos o

controlador comunica-se com o modelo que seleciona a view e atualiza-a para o

usuário, ou seja, o controlador controla e mapeia as ações.

Embora o MVC só contenha três camadas há outra camada

37

Page 39: Portfolio 5 Semestre 2015 China Telecom Enviado

fundamental para o bom andamento da arquitetura, esta é um mecanismo de

eventos necessário a comunicação entre outros três elementos, este elemento

permite uma comunicação assíncrona que é invocada quando algum evento

interessante acontece, esta quarta camada contém os beans de entidade onde se

localizam os métodos get e set das classes.

A arquitetura MVC utiliza padrões de projetos em suas camadas

analisamos a arquitetura agora com os patterns.

O MVC usa outros padrões de projeto, tais como Factory Method,

para especificar por falta (by default) a classe controladora para uma vista e

Decarator, para acrescentar capacidade de rolagem (scrolling) a uma vista. Mais os

principais relacionamentos do MVC são fornecidos pelos padrões Observer,

Composite, Strategy. (GAMMA et al. , 2000, p. 22)

Os designs patterns nos ajuda á explicar a arquitetura MVC, e com

eles podemos perceber que por traz do MVC pode conter um conjunto de padrões

trabalhando juntos em uma mesma estrutura. Abordamos agora os

patterns Observer e Strategy que são padrões comportamentais e

o Composite padrão estrutural, o objetivo de abordar os patterns é para facilitar a

compreensão de como a arquitetura MVC trabalha, sabendo que é um padrão de

arquitetural que confundem projetistas e desenvolvedores.

Nas palavras de Gamma et al. os principais padrões que

o MVC utiliza são os Observer, Composite e o Strategy. Analisemos a Figura 3 do

livro de Padrões de Projetos dos autores Freeman & Freeman que nos ajudará a

explicar como os padrões contribuem na arquitetura MVC:

A visualização ou a View juntamente com o padrão Composite está

á disposição do usuário esperando por qualquer evento, quando este evento é

ativado o controlador é avisado sobre o evento, este avisa para a visão se atualizar,

e ao mesmo tempo manda o modelo para que ele atue para contemplar o evento

provocado pelo usuário, depois de atuado o modelo fica pronto para ser acessada

pela visualização esta por sua vez acessa e atualiza-se para o usuário assim

funciona a arquitetura MVC em conjunto com os padrões de projetos.

Utilizando essa arquitetura, o tempo de desenvolvimento do software

diminuirá sem perde a qualidade e sem aumento de custos.

38

Page 40: Portfolio 5 Semestre 2015 China Telecom Enviado

Uma das melhores opções seria o Hibernate como framework de

persistência de dados.

O Hibernate é um framework para mapeamento objeto/relacional em

Java, que abstrai o código SQL da aplicação, permitindo, entre outra coisas,

modificar a base de dados para outro SGBD (Sistema Gerenciador de Banco de

Dados) sem modificar uma linha de código Java.

O Hibernate é um framework open source de mapeamento

objeto/relacional desenvolvido em Java, ou seja, ele transforma objetos definidos

pelo desenvolvedor em dados tabulares de uma base de dados, portanto com ele o

programador se livra de escrever uma grande quantidade de código de acesso ao

banco de dados e de SQL.

Se comparado com a codificação manual e SQL, o Hibernate é

capaz de diminuir 95% das tarefas relacionadas à persistência.

A utilização de código SQL dentro de uma aplicação agrava o

problema da independência de plataforma de banco de dados e complica, em muito,

o trabalho de mapeamento entre classes e banco de dados relacional.

O Hibernate abstrai o código SQL da nossa aplicação e permite

escolher o tipo de banco de dados enquanto o programa está rodando, permitindo

mudar sua base sem alterar nada no seu código Java.

Além disso, ele permite criar suas tabelas do banco de dados de um

jeito bem simples, não se fazendo necessário todo um design de tabelas antes de

desenvolver seu projeto que pode ser muito bem utilizado em projetos pequenos.

O Hibernate não apresenta apenas a função de realizar o

mapeamento objeto relacional. Também disponibiliza um poderoso mecanismo de

consulta de dados, permitindo uma redução considerável no tempo de

desenvolvimento da aplicação.

No caso do desenvolvimento do sistema China Telecon poderia ser

utilizada qualquer ferramenta de base Java, como Eclipse ou NetBeans. O que vai

definir a escolha de uma ferramenta seria a afinidade da equipe com determinada

ferramenta. No meu caso utilizaria o netbeans por ter uma interface gráfica mais

atraente e por suportar os diversos Frameworks para Java.

O Netbeans é uma poderosa ferramenta de desenvolvimento Java.

39

Page 41: Portfolio 5 Semestre 2015 China Telecom Enviado

Entre muitas melhorias, esta versão dará suporte às plataformas PHP, JavaScript e

Ajax, Ruby e Ruby em Rails, Groovy e C/C++.

O NetBeans tem um interface bem organizado e disponibiliza um

conjunto de funções que permitem aos programadores desenvolver aplicações de

alto nível. Considerando que a linguagem de programação Java é uma das mais

usadas atualmente, o Netbeans torna-se um excelente IDE para desenvolvimento

40

Page 42: Portfolio 5 Semestre 2015 China Telecom Enviado

4 CONCLUSÃO

Vemos que na atual situação em que se encontra a empresa China

Telecom, e pelas mudanças que quer realizar, a importância da Engenharia de

Software para planejar todos os requisitos e ações de inovações que quer implantar.

Também da importância que são os frameworks e a plataforma Java para a

aplicação Web e da arquitetura MVC no projeto orientado a objetos para um melhor

resultado de seu software.

41

Page 43: Portfolio 5 Semestre 2015 China Telecom Enviado

5 REFERÊNCIAS

Wikipédia. Aplicação Web. Wikipédia, a enciclopédia livre. Disponível em: <

http://pt.wikipedia.org/wiki/Aplica%C3%A7%C3%A3o_web>. Acesso em: 10 de mai

2015.

Wikipédia. Framework. Wikipédia, a enciclopédia livre. Disponível em:

<http://pt.wikipedia.org/wiki/Framework>. Acesso em: 10 de mai 2015.

SOMMERVILE, Ian. ENGENHARIA DE SOFTWARE. 8 Edição. São Paulo: Pearson

Addison Wesley, 2007.

Lima, Maria, Gerenciamento de escopo em projetos, acessado em 10 de maio de

2015, disponível em: <http://www.devmedia.com.br/pmbok-gerenciamento-de-

escopo-em-projetos/29787>

Project Management Institute, Um Guia do Conhecimento Em Gerenciamento de

Projetos - Guia Pmbok® - 5ª Ed. 2014 -

42