Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

left-side-bubbles-backgroundright-side-bubbles-background

Experimente o Premium!star struck emoji

Acesse conteúdos dessa e de diversas outras disciplinas.

Libere conteúdos
sem pagar

Ajude estudantes e ganhe conteúdos liberados!

Prévia do material em texto

- -1
ENGENHARIA DE SOFTWARE II
CAPÍTULO 2 – PADRÕES DE PROJETOS, O 
QUE SÃO E QUANDO UTILIZÁ-LOS?
Aline Izida
- -2
Introdução
Na medida em que a Engenharia de foi evoluindo, os métodos e técnicas foram se desenvolvendo cadaSoftware
vez mais, para abranger a necessidade de cada tipo de projeto e facilitar o trabalho dos profissionais envolvidos.
Se seu projeto é grande ou pequeno, não importa, você vai precisar conhecer, ao menos, algumas técnicas
comuns à Engenharia de .Software
Um padrão é um modelo com um conjunto de regras que devem ser seguidas em vista a contribuir para trazer
benefícios nessa utilização.
Para que um padrão seja consolidado, ele passa por testes e avaliações, então, já é o começo do caminho pronto
para alavancar os passos seguintes. Já imaginou que iniciar um projeto sem entender qual padrão pode auxiliá-
lo, provavelmente lhe fará perder muito tempo e dinheiro? E se você não gerenciar as mudanças, versões e 
, ao longo do ciclo de vida do desenvolvimento do seu ? Você conhece as consequências dessasreleases software
atitudes?
Neste capítulo, você vai compreender o porquê de se utilizar padrões de projeto e a importância de gerenciar a
configuração ao longo do ciclo de vida do desenvolvimento dos sistemas de .software
Vamos, também, abordar o conceito de integração de sistemas, advindo de uma necessidade do mercado de
integrar todos os sistemas da empresa em apenas um, para facilitar não só a utilização, como também o
desenvolvimento e manutenção, tornando os processos da empresa mais ágeis e produtivos.
Acompanhe o conteúdo com dedicação! Bons estudos!
2.1 Projeto de arquitetura
Em um primeiro momento, antes de entendermos o que é um projeto de arquitetura, precisamos saber o que é
um projeto de . Desse modo, você pode fazer uma analogia do projeto de com os projetos feitossoftware software
por arquitetos ou engenheiros civis, por exemplo, nos quais os requisitos são traduzidos em uma “planta” para
construir o , em um processo iterativo, isto é, em que é possível ir e voltar nas fases desoftware
desenvolvimento, procurando sempre corrigir erros e melhorar os resultados antes que o processo termine e
restem muitos problemas que só poderiam ser resolvidos tardiamente. Essa fase de projeto é quando o
profissional deve colocar a criatividade, os conhecimentos e a experiência em prática.
Assim, o profissional, conhecido como arquiteto de , deve considerar os requisitos que foram analisadossoftware
e especificados, para então formular um produto, isto é, o .software
Você quer saber mais sobre o tema? Clique nas setas abaixo e confira!
Se, na fase de requisitos foram modeladas as funções e comportamentos necessários, ou seja, “o que” é para ser
implementado, agora, o projeto de arquitetura deve criar um modelo de , que vai representar o “como”software
fazer. Nessa fase será destacada e detalhada essa arquitetura, as estruturas de dados, as interfaces e
VOCÊ SABIA?
O termo projeto, em inglês significa e, nas engenharias em geral, é uma fase que édesign
apresentada de forma semelhante (engenharia civil, naval, química, matemática). Na
engenharia de , o termo é utilizado para estabelecer como os requisitos levantadossoftware
devem ser implementados na construção do .software
- -3
fazer. Nessa fase será destacada e detalhada essa arquitetura, as estruturas de dados, as interfaces e
componentes que serão essenciais para, na próxima fase, implementar o .software
A importância de se projetar um corretamente, se dá pelo fato de que essa fase é de extrema relevânciasoftware
para que o produto final seja de qualidade, pois se o modelo de arquitetura não representar um software
adequado e esperado, o código que for gerado na implementação não corresponderá ao que foi requerido e,
consequentemente, resultará em um de má qualidade.software
Portanto, o projeto de abrange a representação do software a ser desenvolvido e, com isso, pode contersoftware
atividades diferentes, de acordo com objetivo de desejado. Sommerville (2011) e Pressman (2011)software
apontam as quatro atividades que podem ser parte do processo de projeto de sistemas de : projeto desoftware
arquitetura, de interface, de componente e de banco de dados.
Neste momento, nos interessa o projeto de arquitetura, que define a estrutura geral do sistema, os componentes
principais (subsistemas ou módulos), seus relacionamentos, como esses componentes são distribuídos e,
também, define as restrições que afetam o modo pelo qual a arquitetura pode ser implementada, representando,
assim, a organização da solução técnica de um , que é derivada de um modelo de requisitos.software
Dessa maneira, o projeto de arquitetura ganha destaque, ao passo em que representa a estrutura de dados e os
componentes de programa que são necessários para construir o . Afinal, quando se constrói uma casa, osoftware
ideal é ter uma planta em mãos, certo? Também devemos partir de um contexto geral da casa e, depois, nos
preocupar com detalhes, como o encanamento ou sistema elétrico, acabamentos e assim por diante.
Uma arquitetura é muito mais que uma estrutura física, ela é a forma como diversos componentes de uma casa
são integrados para formar um todo coeso. Isso também inclui se integrar ao ambiente e vizinhança para, enfim,
tratar de detalhes como cores, texturas, iluminação, piso, etc., para, então, formar a casa completa (PFLEEGER,
2004).
Clique nas abas abaixo e veja mais sobre o tema.
Estilo de
arquitetura
Esse mesmo raciocínio deve ser seguido quando arquitetamos um . O arquiteto dosoftware
sistema começa escolhendo um estilo de arquitetura que seja coerente com o resultado da
análise de requisitos. Desse modo, podemos afirmar que a arquitetura não se trata do 
 que se pode operar, mas de uma representação. Ela vai permitir que analisemos se osoftware
projeto vai atender aos requisitos especificados e se vai considerar alternativas de
arquitetura, caso seja necessário realizar mudanças no projeto, para reduzir o trabalho e os
riscos atrelados à implementação do .software
Decisões
Nessa fase, portanto, é preciso tomar muitas decisões, das grandes às pequenas. Os
componentes representam entidades funcionais ou de processamento, podendo ser pacotes,
classes, objetos, procedimentos, funções, métodos, etc. Para representar os relacionamentos
entre eles, utiliza-se os conectores, que podem passar dados e controle, compartilhar dados,
dentre outros (PRESSMAN, 2011).
Para exemplificar essa representação, vamos considerar um modelo abstrato de arquitetura de um sistema de
controle robotizado de empacotamento, que é proposto, de acordo com a figura a seguir.
- -4
Figura 1 - Exemplo de representação da arquitetura de um sistema de controle robotizado de empacotamento.
Fonte: Elaborada pela autora, adaptada de SOMMERVILLE, 2011, p. 104.
Esse sistema robotizado mostra como é possível embalar tipos diferentes de objetos, usando um componente de
visão para selecionar objetos em uma esteira. Esse mesmo componente também identifica o tipo de objeto e
seleciona o tipo correto de empacotamento. Logo depois, o sistema retira os objetos da esteira de entrega para
serem empacotados, e, então, o sistema coloca os objetos empacotados em outra esteira. Esse é um exemplo de
modelo de arquitetura que mostra os componentes e os relacionamentos entre eles.
Em geral, é possível modelar arquiteturas de um modo simples, com blocos que representam componentes, que
podem estar dentro de caixas, que acoplam subcomponentes. As setas representam a comunicação dos dados de
controle entre os componentes, conforme a direção da seta.
Os blocos nem sempre são tão simples ou podem ser representativos do componente, como um banco de dados,
um computador, dentre outros, isto é, podem ter formas e características diferentes, o banco de dados, por
muitas vezes, é representado por um cilindro, o computador por uma imagem, etc. O importanteé que ele seja
claro, facilite a discussão do projeto entre os e seja útil para documentar um projeto de arquitetura stakeholders
com seus componentes, interfaces e conexões (SOMMERVILLE, 2011).
Portanto, a importância da arquitetura de software é vistam na medida em que contribui diretamente para o
desempenho, robustez, capacidade de distribuição e manutenibilidade de um sistema de .software
2.1.1 Padrões de arquitetura
De acordo com Sommerville (2011), a partir do momento em que são identificados os principais componentes
do sistema de e suas interfaces, é possível organizar os componentes, utilizando um padrão desoftware 
arquitetura, tal como um modelo cliente-servidor, ou em camadas. Inicialmente, os padrões de arquitetura foram
- -5
arquitetura, tal como um modelo cliente-servidor, ou em camadas. Inicialmente, os padrões de arquitetura foram
propostos como estilos de arquitetura, termo que ainda é usado por Pressman (2011). De modo geral, um
padrão de arquitetura representa, de fato, um estilo adotado para projetar a arquitetura de um .software
Desse modo, os padrões são formas de apresentar, compartilhar e reusar o conhecimento sobre sistemas de
software, conforme afirma Sommerville (2011). Esse padrão se trata de uma descrição abstrata, estilizada, de
boas práticas experimentadas e testadas em diferentes ambientes e sistemas e, por isso, para se tornar um
padrão, significa que essa arquitetura foi bem-sucedida em sistemas já implementados. Certamente, esse padrão
deve descrever quando ele é mais adequado e outros detalhes que abordem pontos fracos e fortes.
2.1.2 Arquitetura cliente-servidor
Essa arquitetura é utilizada para sistemas distribuídos, conforme a descrição do quadro a seguir.
CASO
Você contratou um arquiteto para projetar sua futura casa. Como será possível relacionar os
seus desejos com as especificidades das técnicas de e padrões arquiteturais? Primeiro, édesign
preciso haver uma comunicação entre você e o arquiteto. Você precisa dar uma ideia de como a
casa será. Algo como: casa moderna, de dois andares, com o pé direito alto. Você pode dar
todos os detalhes que você deseja, de modo que vocês tenham um “estilo” do que deve ser
feito.
É assim que o arquiteto, com seus conhecimentos e experiência, vai entender o padrão de casa
que você deseja, e vai aliar com outros parâmetros, tais como custos, área do terreno, etc.
Portanto, as suas ideias pré-definidas são úteis como um para que sua casa seja template
construída. O mesmo acontece com os padrões de arquitetura de projeto de , devendosoftware
haver, inicialmente, uma comunicação entre cliente e analistas de sistemas, para, então, alinhar
tudo o que é possível, da melhor forma.
Em se tratando de padrão de arquitetura, isso vai ser fundamental para que o projeto siga
sendo implementado da forma como ele deve, e o desejo do cliente seja transformado em 
, isto é, deixe de ser uma representação e passe a ser algo concreto. Do mesmo modo,software
se o arquiteto projetar sua casa com algum detalhe equivocado, quando ficar pronta, pode ser
um enorme problema corrigir essa falha.
- -6
Quadro 1 - Descrição e detalhamento de como o padrão cliente-servidor funciona, com vantagens e desvantagens 
em utilizá-lo.
Fonte: SOMMERVILLE, 2011, p. 113.
Sendo assim, entendemos que essa arquitetura é organizada como um conjunto de serviços e servidores que são
atrelados e clientes que acessam e usam esses serviços. Na arquitetura cliente-servidor, temos três principais
componentes, segundo Sommerville (2011), que listamos a seguir, confira clicando nos itens.
• 
Um conjunto de servidores que proporcionam serviços para outros componentes, tais como
servidores de impressão, de arquivos e de compilação de linguagens de programação.
• 
Um conjunto de clientes que chamam os serviços oferecidos pelos servidores, que utilizam
instâncias de programas em computadores diferentes e de modo simultâneo.
• 
Uma rede que possibilita que os clientes acessem esses serviços, implementados como sistemas
distribuídos, que são conectados por meio de protocolos de internet.
Acompanhe, na figura abaixo, uma arquitetura cliente-servidor para uma biblioteca de filmes e fotos.
•
•
•
- -7
Figura 2 - Uma arquitetura cliente-servidor para uma biblioteca de filmes e fotos.
Fonte: Elaborada pela autora, baseada em SOMMERVILLE, 2011, p. 114.
O exemplo do sistema baseado no modelo cliente-servidor é multiusuário e conta com a conexão com a internet,
para fornecimento de uma biblioteca de filmes e fotos. Diversos servidores funcionam como gerenciadores e
apresentam os diferentes tipos de mídia. Como os vídeos podem ser compactados e descompactados em
diferentes formatos e as fotos devem continuar em alta resolução, é plausível que sejam mantidos em servidores
separados. Já o programa cliente se trata apenas de uma interface de usuário integrada constituída de um
navegador de internet que dá acesso aos serviços.
O fato de ser uma arquitetura distribuída, permite que a utilização seja feita por sistemas em rede com vários
processadores distribuídos. Isso facilita a alteração de quantidades de servidores, bem como a integração e
atualização, feita de forma simples, de modo que não atrapalhe outras partes do sistema.
VOCÊ QUER LER?
Pressman (2011) elenca também as arquiteturas de fluxo de dados, as centralizadas em dados,
as de chamadas e retornos e a orientada a objetos. Já Sommerville (2011) descreve também a
arquitetura de repositório e a arquitetura de duto e filtro. É importante a leitura dessas
arquiteturas, pois, de acordo com o seu projeto, a arquitetura cliente-servidor ou em camadas,
descritas aqui, podem não se adequar.
- -8
2.1.3. Arquitetura em camadas
Como já mencionado, organizamos os componentes conforme padrões de arquitetura. Descrevemos a
arquitetura cliente-servidor e, agora, abordamos sobre a arquitetura em camadas. A figura a seguir demonstra
um exemplo da arquitetura em quatro camadas.
Figura 3 - Exemplo de um modelo de arquitetura representado em quatro camadas.
Fonte: Elaborada pela autora, baseada em SOMMERVILLE, 2011, p. 111.
Na camada mais baixa, temos um de apoio, que, geralmente, se trata dos bancos de dados e dossoftware
sistemas operacionais. A camada imediatamente acima conta com os componentes com relação às
funcionalidades da aplicação e os componentes utilitários que são utilizados por outros componentes da
aplicação. A próxima camada trata do gerenciamento de interface com o usuário, proporcionando a autenticação
e autorização de usuário, enquanto a camada superior fornece recursos de interface com o usuário.
Esse número de camadas é específico para determinados sistemas como, por exemplo, um sistema de bibliotecas
exemplificado na figura a seguir. Dessa forma, é possível que camadas sejam subdivididas em subcamadas,
conforme a necessidade.
- -9
Figura 4 - Modelo de arquitetura de um sistema de biblioteca, chamado LIBSYS, exemplificando a adição de 
subcamadas.
Fonte: Elaborada pela autora, baseada em SOMMERVILLE, 2011, p. 111.
O sistema LIBSYS de biblioteca permite o controle do acesso eletrônico de um grupo de bibliotecas universitárias
aos materiais com direitos autorais. A camada inferior se refere aos bancos de dados de cada biblioteca.
A arquitetura em camadas, conforme afirma Sommerville (2011), permite a separação e independência,
facilitando as alterações de forma individual, pois as camadas são separadamente organizadas e uma camada
depende apenas dos recursos e serviços que são oferecidos pela camada imediatamente abaixo. Isso significa
que é possível desenvolver o sistema de forma incremental, pois, ao passo que uma camada é desenvolvida,
algumas funções e serviços oferecidos por essa camada podem ser validados pelos usuários. O padrão de
arquitetura em camadas pode ser apresentado de acordo com o quadro a seguir.
VOCÊ SABIA?A partir do momento que o arquiteto ou engenheiro de conhece os requisitos e assoftware
restrições do sistema de , é possível realizar uma combinação de padrões desoftware
arquitetura que melhor se adequa ao resultado da análise dos requisitos. Além disso, nada
impede que o profissional adapte os padrões, de modo a melhor se encaixar em um projeto
específico, como um todo.
- -10
Quadro 2 - Descrição e detalhamento do padrão de arquitetura em camadas, com vantagens e desvantagens.
Fonte: Elaborado pela autora, baseada em SOMMERVILLE, 2011, p.110.
Seguindo o mesmo raciocínio de padrões de arquitetura, a seguir, vamos estudar os padrões de projeto,
ressaltando a importância deles para deixar o desenvolvimento do mais eficiente e eficaz, considerandosoftware
as características para resolução de problemas.
2.2 Padrões de projeto
Se projetar um e orientado a objetos já não é uma tarefa trivial, projetar um que seja reutilizávelsoftwar software
é ainda mais complexo. É preciso identificar objetos adequados ao projeto, fatorá-los em classes no nível correto
de granularidade, definir as interfaces das classes, as hierarquias de herança e estabelecer as relações-chave
entre eles (GAMMA , 2000).et al.
A primeira ideia de padrão de projeto surgiu com o pesquisador Christopher Alexander, que definiu que cada
padrão descreve um problema em nosso ambiente e o cerne da sua solução, de tal forma que seja possível
utilizar essa solução muitas outras vezes, porém de formas diferentes, isto é, em contextos diferentes
(ALEXANDER , 1977 apud SOMMERVILLE, 2011).et al.
- -11
2.2.1 Problemas e padrões de projeto
A ideia dos padrões de projeto é, justamente, reaproveitar os planejamentos e as soluções, de forma que
problemas que já ocorreram em projetos anteriores, sejam resolvidos por meio de soluções já conhecidas. Por
isso, o projeto deve ser específico para o problema a se resolver, mas, também, precisa ser genérico o bastante
para atender problemas e requisitos futuros.
O paradigma-alvo na utilização de padrões de projeto é a orientação a objetos, de forma que esses objetos sejam
fundamentais para a decomposição de um sistema em objetos. Como devemos considerar encapsulamento,
granularidade, dependência, flexibilidade, desempenho, reutilização, evolução e etc., essa tarefa não trivial
(GAMMA , 2000).et al.
Os melhores projetistas não resolvem os problemas a partir de princípios básicos, ou do zero, pois o ideal é
aproveitar, isto é, reutilizar soluções que foram utilizadas anteriormente e funcionaram pra projetos anteriores,
com características semelhantes, por vezes, idênticas (GAMMA ., 2000). No entanto, para que um projetoet al
possa ser reaproveitado, ele deve ser devidamente compreendido e documentado.
Prêmio Tsutomu Kanai (2003), Medalha John von Neumann IEEE (2015).
Portanto, um padrão de projeto é uma solução utilizada com frequência para um problema em um determinado
contexto, mesmo que os projetos sejam em áreas diferentes. Desse modo, um contexto quer dizer um ambiente,
uma circunstância no mundo real. O problema é o que precisa ser analisado e investigado para se chegar na
solução, ou seja, na resposta ao problema. Tenha em mente que um padrão se constitui na medida e, que é
reutilizado nessas condições, pois se ele não puder, não será um padrão.
2.2.2 Elementos essenciais em standard de projeto
Além da qualidade de ser reutilizável, para um padrão se firme, precisa-se de quatro elementos essenciais, por
meio de Gamma . (2000). Para conhecê-los, clique nas abas abaixo.et al
Nome
Dar nome aos padrões, em uma ou duas palavras, permite que se crie uma referência para descrever o problema
do projeto, suas soluções e as consequências. Torna mais fácil a comunicação sobre tudo que envolve o projeto e
entre todas as pessoas envolvidas.
VOCÊ O CONHECE?
O programador James Gosling é o criador da linguagem de programação Java. Gosling ficou
conhecido como o pai da linguagem Java e por essa criação, foi eleito para a Academia Nacional
de Engenharia dos Estados Unidos A linguagem de programação Java é uma das mais
utilizadas atualmente. Ela proporciona a criação de projetos simples, porém robustos,
portáteis e dinâmicos. Com isso os projetos podem obter alto desempenho.
- -12
Problema
Explica o problema no seu devido contexto, para que seja possível aplicar o padrão, o que pode incluir uma lista
de condições a serem satisfeitas para que justifique a aplicação do padrão.
Solução
Descreve os elementos que compõe o padrão de projeto, seus relacionamentos, suas responsabilidades e
colaborações. Isso significa que descreve um padrão, tal como um gabarito que possibilita a aplicação em muitas
situações diferentes e não a uma implementação em específico. Especifica como um arranjo geral de classes e
objetos resolve o problema.
Consequências
São os resultados e análises das vantagens e desvantagens da aplicação do padrão. Elas são muito importantes
para que sejam avaliadas as alternativas de projetos e para a compreensão dos custos e benefícios da aplicação
do padrão. Essa avaliação inclui aspectos sobre flexibilidade, extensibilidade ou portabilidade do sistema.
É importante ressaltar que padrões de projeto não são projetos em si, isto é, padrões não são listas e tabelas que
podem ser codificadas em classes e reutilizadas assim como estão, eles servem de base para o seu projeto que
será mais específico (GAMMA ., 2000). Também não significa que os padrões são projetos complexos, deet al
domínio específico para uma aplicação inteira ou subsistema. “Um padrão de projeto aborda descrições de
objetos e classes comunicantes que precisam ser personalizadas para resolver um problema geral de projeto
num contexto particular” (GAMMA, 2000, p. 20). Assim, o padrão identifica as classes e instâncias participantes,
seus papéis, colaborações e a distribuição de responsabilidades, focando em um problema de projeto orientado a
objetos e descrevendo em que situação pode ser aplicado, considerando as restrições e consequências, os custos,
benefícios e inclusive, os exemplos de código.
2.2.3 Principais padrões de projetos
Adotar padrões de projeto torna a reutilização mais fácil, uma vez que os projetos e arquiteturas reutilizadas
tenham sido testadas, avaliadas e bem-sucedidas, trazendo eficiência e qualidade para a construção do software.
Existe um catálogo de padrões, conforme define Gamma (et al., 2000), divididos em categorias de criação, de
estrutura e comportamentais. Como profissional, você pode reutilizar esses padrões conforme a necessidade e,
inclusive, adaptá-los. Os 23 padrões e respectivas intenções são apresentados no quadro a seguir.
- -13
- -14
- -15
Quadro 3 - O catálogo de padrões de projeto oferece opções de padrões de projeto para serem utilizados 
conforme necessidade.
Fonte: GAMMA et al., 2000, p. 24.
Assim sendo, a importância da existência dos padrões se dá pelo fato de que são soluções testadas e aprovadas,
uma vez que os catálogos incluem somente padrões já devidamente testados e bem-sucedidos em vários
projetos.
Sendo o padrão consolidado, significa que ele foi descrito e documentado adequadamente para permitir sua fácil
reutilização. Entretanto, os padrões não auxiliam nas estratégias, isto é, não te diz porquê, ou quando utilizar,
mas sim, com o que, e como utilizar. Isso reforça a ideia de que você, como profissional, deve entender quando, e
por que escolher determinado padrão para utilizar especificamente em seu projeto.
VOCÊ QUER LER?
Para entender detalhes de cada padrão, consulte Gamma et al. (2000), a partir do capítulo três.
Os autores detalham cada padrão, descrevendo a intenção, a motivação, a aplicabilidade, a
estrutura, as colaborações, as consequências, a implementação, um exemplo de código, usos
conhecidos e padrões relacionados.
- -16
2.3 Gerenciamento de Configuração
As mudanças não são apenas duranteo desenvolvimento do software, como também estão em uso pelos
usuários. As mudanças podem ocorrer por vários motivos, como podemos ver na lista de Sommerville (2011),
clicando nas setas.
 
Falhas nos sistemas de softwares.
 
Requisitos que mudam ao longo do desenvolvimento, ou que devem ser acrescentados posteriormente, mesmo
que o já esteja em uso.software
 
Necessidade de adaptação do , devido a atualizações de e plataformas.software hardware
 
A concorrência melhora seu software, então você precisa se adaptar ao mercado.
O Gerenciamento de Configuração (GC) não trabalha apenas com o conceito de mudanças, mas, sim, com as
políticas, processos e ferramentas para o gerenciamento de diversos tipos de mudanças nos sistemas de software
. Os são desenvolvidos em versões e cada versão deve ser gerenciada conforme o evolui esoftwares software
várias versões estão em uso e suscetíveis a mudanças. É preciso saber como gravar e processar propostas de
mudanças, em como definir quais componentes precisam ser alterados, em como gerenciar as diversas versões
em desenvolvimento e em uso e em como serão distribuídas aos clientes. Não controlar os processos e versões,
pode trazer grandes problemas, tal como modificar a versão errada do sistema ou, mesmo, perder informações
importantes sobre as versões corretas. Além disso, as informações são úteis para comunicação entre os
desenvolvedores que podem estar em locais diferentes (SOMMERVILLE, 2011).
Existem várias ferramentas que auxiliam nesse processo de GC, pois é preciso trabalhar com muitas informações
ao mesmo tempo. Essas ferramentas auxiliam desde a acompanhar as falhas, até conjuntos de ferramentas
integradas que auxiliam em todas as atividades em GC. São exemplos dessas ferramentas: Bugzilla, Trac, Jira e
IBM Rational ClearQuest. Todo esse processo de GC faz parte do gerenciamento de qualidade, pois esses dois
processos dependem um do outro.
2.3.1 Gerenciamento de versões
As versões devem ter um processo de acompanhamento para serem gerenciadas junto com as versões dos
componentes do e os sistemas aos quais esses componentes pertencem. Cada versão não devesoftware
interferir na outra, e o cuidado para essa questão deve demandar uma atenção maior quando às mudanças que
VOCÊ QUER VER?
Quer aprender a usar o padrão de projeto chamado Estratégia? Com ele, você pode trocar os
algoritmos de uma classe em tempo de execução, criando flexibilidade e facilidade de
manutenção ao seu código. Acesse o vídeo (NORMANDES JUNIOR, 2015) para saber mais sobre
isso: < >.https://www.youtube.com/watch?v=rC296hM-S4g
- -17
componentes do e os sistemas aos quais esses componentes pertencem. Cada versão não devesoftware
interferir na outra, e o cuidado para essa questão deve demandar uma atenção maior quando às mudanças que
são feitas por diferentes desenvolvedores, pois, se João está modificando um componente C1 e C2, enquanto
Joana modifica C2 e C3, primeiro que ambos estão modificando algo em C2, aumentando a probabilidade de
acontecer um problema no código, segundo, que pode ser que C3 tenha impacto em C1. Dessa forma, é possível
pensar no processo de gerenciamento de versões de acordo com e s, como apresenta a figura acodelines baseline
seguir.
Figura 5 - Representação de codelines e baselines na composição de um sistema e suas versões.
Fonte: SOMMERVILLE, 2011, p. 482.
De acordo com Sommerville (2011), um baseline representa um conjunto de componentes que foram
devidamente aprovados, que compõe o sistema. Já os representam implementações de novascodelines
funcionalidades por diferentes profissionais em paralelo, independentemente, e representa um conjunto de
versões de um componente e outros itens de configuração dos quais esse componente depende. Essas codelines
são encaminhadas para cada projeto e diversos desenvolvedores, sendo que a primeira é a ,codeline mainline
que é uma sequência de que representam diferentes versões do sistema.baselines
O sistema de controle de versões possibilita que os componentes do sistema de software sejam evoluídos de uma
forma disciplinada, concorrente e distribuída. Assim, evitam-se perdas e sobreposições de mudanças durante o
desenvolvimento ou manutenção do componente. São exemplos de ferramentas que chamamos de sistemas de
gerenciamento de versões: Subversion, Microsoft Visual Source Safe, CVS e IBM Rational ClearCase. Esses
sistemas fornecem vários recursos, tais como a identificação de versão e , gerenciamento derelease
armazenamento, registro de histórico de alterações, desenvolvimento independente e suporte a projetos
(SOMMERVILLE, 2011).
2.3.2 Gerenciamento de mudanças
Devido às necessidades de mudanças já citadas anteriormente, é preciso garantir que essas mudanças sejam
aplicadas ao sistema de uma forma organizada, que permita um controle e isso é possível com o uso de
ferramentas. Assim, o gerenciamento de mudanças garante que a evolução do sistema seja um processo
organizado e supervisionado, de modo que as prioridades das mudanças sejam respeitadas.
Segundo Sommerville (2011), o gerenciamento de mudanças prevê uma análise de custos e benefícios das
- -18
organizado e supervisionado, de modo que as prioridades das mudanças sejam respeitadas.
Segundo Sommerville (2011), o gerenciamento de mudanças prevê uma análise de custos e benefícios das
mudanças que são solicitadas. Dessa maneira, é preciso aprovar essas mudanças de acordo com critérios
estabelecidos, que incluem custos e análise de viabilidade. Assim, esse processo de gerenciamento de mudanças
se dá ao passo que um cliente (qualquer stakeholder que não seja parte da equipe de desenvolvimento)
preenche e envia uma descrição de uma solicitação de mudança (do inglês, ou apenas CR). AChange Request
figura a seguir mostra o fluxo do processo de gerenciamento de mudanças.
Figura 6 - – O funcionamento do processo de gerenciamento de mudanças desde a solicitação até a 
implementação da mudança e fechamento do chamado.
Fonte: SOMMERVILLE, 2011, p. 478.
Essa solicitação pode ser tanto um relatório de falha como a solicitação de adição ou alteração de uma
funcionalidade. É preenchido, então, um formulário de solicitação de alteração, em que são registradas todas as
decisões tomadas em cada estágio do processo, sendo o da mudança registrado nesse formulário. Alémstatus
disso, o formulário registra as recomendações pertinentes à mudança, a estimativa de custos e as datas de
quando a mudança foi solicitada, aprovada, implementada e validada. O desenvolvedor também tem um espaço
nesse formulário para registrar como a alteração será realizada. O quadro a seguir, mostra um exemplo de
formulário.
- -19
Figura 7 - Formulário de solicitação de mudança parcialmente concluído.
Fonte: SOMMERVILLE, 2011, p. 479.
Os fatores que Sommerville (2011) descreve como importantes para avaliar a aprovação, ou não, de uma
mudança estão elencados na sequência. Clique nos itens e confira.
• 
As consequências de não fazer a mudança
Se for uma solicitação de mudança devido a uma falha, deve ser considerada a gravidade dessa
falha, se ela causa interrupção do sistema, por exemplo, é grave. Por outro lado, se estiver
relacionada a alguma cor não especificada, a correção dessa falha pode ser adiada.
• 
Os benefícios da mudança
Analisar a quem a mudança vai beneficiar, pois, às vezes, pode ser benefício somente para quem
solicitou a mudança. A mudança deve, em prioridade, atender a todos os usuários.
• 
O número de usuários afetados pela alteração
É necessário ponderar se parte dos usuários serão afetados negativamente com as mudanças
solicitadas.
• 
Os custos de se fazer a mudança
Uma mudança que afeta muitos componentes, por exemplo, pode ocasionar muitas outras
mudanças e, consequentemente, custos que podem não ser assumidos no momento.
• 
O ciclo de release de produto
Caso uma versão seja liberada recentemente, aquela mudançaque acaba de ser requerida, deve
ser analisada e possivelmente implementada somente no próximo release planejado.
Embora as solicitações de mudanças sejam reportadas pelos clientes, por meio de páginas web ou , pore-mail
exemplo, os formulários são preenchidos e as mudanças solicitadas pela equipe de suporte. Por vezes, esse
processo de solicitação de mudança, em um projeto menor, pode ser menos burocrático, no entanto, deve
•
•
•
•
•
- -20
processo de solicitação de mudança, em um projeto menor, pode ser menos burocrático, no entanto, deve
sempre se registrado.
2.3.3 Gerenciamento de releases
Conforme descreve Sommerville (2011), um do sistema de nada mais é do que uma versãorelease software
pronta, que é distribuída para o cliente, conforme planejamento. Eles podem ser classificados como principais,
que disponibilizam novas funcionalidades importantes e também como menores, ao passo que aplicam
melhorias, ou ainda, os de revisão, que apenas corrigem falhas, isto é, aplicam mudanças. As versões dereleases
sistemas operacionais que são disponibilizados são, na verdade, . Por exemplo, Windows XP, Windows 7,releases
Windows 10.
Para conhecer outros aspectos relacionados a esse tema, clique nas setas abaixo.
Softwares customizados, sistemas embutidos, estes devem ter atenção especial, pois pode ser produzidos um 
 diferente para cada cliente em específico.release
É preciso saber gerenciar todos os . Há a possibilidade também de que um release opere no cliente porreleases
muito tempo e, quando é preciso ser recriado e melhorado no futuro, será necessário que haja uma
documentação consistente.
E quando falamos em documentação, não se trata apenas de comentar códigos-fonte, mas também gravar as
versões dos componentes dos códigos-fonte, manter cópias dos arquivos de código-fonte executáveis
correspondentes e todos os dados e arquivos de configuração.
Também é necessário gravar as versões do sistema operacional, bibliotecas, compiladores e outras ferramentas
eventualmente utilizadas durante a construção do (SOMMERVILLE, 2011).software
O planejamento da distribuição dos deve ser bem organizado, não só quanto à qualidade, como tambémreleases
em questão de tempo e custos.
Sommerville (2011) elenca alguns fatores que influenciam na decisão de quando lançar um novo release de um
sistema, conforme vemos na tabela a seguir.
- -21
Quadro 4 - É importante observar os diferentes fatores que influenciam o planejamento de release de sistema.
Fonte: SOMMERVILLE, 2011, p. 489.
Ao compreender esses fatores, também devemos entender que um não se trata somente de um código release
executável, ele pode incluir arquivos guias de como o deve ser configurado para poder ser instalado;release
arquivos de dados contendo, por exemplo, mensagens de erro; um programa de instalação para auxiliar a
instalação do sistema no -alvo; uma documentação eletrônica e em papel, que descreve o sistema; e umhardware
planejamento de publicidade para esse (SOMMERVILLE, 2011).release
- -22
2.4 Integração de sistemas
Com o decorrer do tempo e com o avanço tecnológico, diversas empresas passaram a adquirir vários sistemas
com o objetivo de atender às necessidades técnicas e informatizadas do seu negócio. Isso motivou o mercado de
TI a desenvolver novos conceitos, metodologias e direcionados a integrar sistemas. Integrar sistemas, significa
que um ou mais sistemas compartilham o mesmo código, a mesma interface ou, até, o mesmo banco de dados. No
entanto, cada módulo ou parte do sistema pode funcionar como uma solução, mas que ao serem integrados,
juntos, se tornam um único sistema, com uma visão unificada com todos serviços e funcionalidades (CARVALHO,
2001).
2.4.1 Integração de sistemas
Na prática, uma empresa pode contratar diferentes para atender as suas necessidades. Por exemplo,softwares
um para o departamento de tecnologia, outro para departamento de pessoas e outro parasoftware
departamento de processos, conforme a figura a seguir.
Figura 8 - Sistemas integrados relacionam pessoas, processos, informações e tecnologias.
Fonte: arka38, Shutterstock, 2018.
Confira, a seguir, um caso prático que demonstra a importância da integração de sistemas, os benefícios e a
agilidade que isso pode trazer dentro de uma organização.
https://cdnapisec.kaltura.com/p/1972831/sp/197283100/embedIframeJs/uiconf_id/30443981/partner_id
/1972831?iframeembed=true&playerId=kaltura_player_1547283172&entry_id=1_ofr33omi
No entanto, para facilitar e padronizar sua utilização, a integração desses sistemas se faz necessário com o
objetivo de unificar seu sistema para atender a todos seus usuários em um único sistema. Com isso, caso a
empresa necessite futuramente de uma nova funcionalidade sistêmica, ela pode adquirir ou até desenvolver
internamente um componente e integrar com o sistema já existente. Com os sistemas integrados, os ganhos
estão diretamente relacionados com a produtividade, reuso, colaboração, agilidade e unificação de todo o
- -23
estão diretamente relacionados com a produtividade, reuso, colaboração, agilidade e unificação de todo o
processo e operação sistêmica. A integração também é uma das alternativas responsáveis por otimizar e
simplificar a gestão e compartilhamento de informações dentro de uma organização (SUMMER, 2004).
Vale ressaltar que, para garantir uma integração funcional e que atenda aos requisitos de negócio, é importante
planejar quais os meios que serão necessários para realizar a comunicação entre os sistemas que serão
integrados.
2.4.2 Meios de integração
Sabemos que integrar os sistemas é de suma importância para as empresas, no entanto, por onde começar? O
que devemos fazer? Podemos integrar todo tipo de sistemas? Quais são os meios de integração? Clique na aba
abaixo e confira a resposta para essas questões.
Integração
Atualmente, o maior desafio para integração de sistemas está na maneira como estes foram
desenvolvidos. Para isso, é necessário entender a arquitetura do sistema, seu projeto, sua
implementação e definir metodologias e padrões, afim de tornar possível a integração. Muitos
sistemas podem possuir restrições para uma simples integração, no entanto, softwares
desenvolvidos com uma mesma linguagem, podem possuir maior facilidade de integração
(HOHPE; WOOLF, 2003).
Existem diversos meios, técnicas e ferramentas de integração de sistemas. Para decidir qual o melhor meio e
estratégia de integração, se faz necessária uma equipe especializada de integradores de sistemas. Esses
profissionais devem estudar, planejar e implementar a melhor forma de integração sistêmica, de acordo com as
especificações e limitações de cada componente integrado.
2.4.3 Arquitetura e projetos de integração
Como vimos, não existe a melhor ferramenta ou técnica de integração, mas sim, qual mais se adequa ao negócio,
à arquitetura e ao projeto de integração, definido pelos profissionais responsáveis pela integração entre os
sistemas.
Durante a análise da integração, o profissional deverá observar qual a arquitetura de cada componente
sistêmico, para definir quais técnicas são mais compatíveis com o planejamento de integração.
A arquitetura e o projeto de integração podem ser definidos seguindo alguns níveis de integração (HOHPE;
WOOLF, 2003). Clique nas abas abaixo e confira quais são eles.
•
Primeiro nível
Acontece por meio da entrada de dados dos processos humanos, por isso é com funcionalidade
menor e mais propícia a erros de integração.
•
Segundo nível
Uma ferramenta intermedia a comunicação entre um ou mais sistemas.
•
Terceiro nível
Um sistema se comunica com o outro, em que um exporta os dados e o outro exporta.
•
•
•
•
•
- -24
Quarto nível
Os softwares de ERP são um exemplo, utilizados para planejar os recursos das empresas e que
compartilham a mesma base de dados, nesse caso, podem ser dois ou mais sistemas.•
Quinto nível
Os sistemas trocam informações por meio de rotinas proporcionadas pelo sistema de requisição,
integrando os sistemas de modo translúcido, em geral, por meio de uma API.
Com isso, é possível perceber que o trabalho do profissional de TI, em conjunto com a equipe técnica e de gestão,
deve estar em constante comunicação, para que tudo seja analisado da melhor forma, para que os sistemas sejam
integrados para realmente beneficiar o negócio organizacional.
Síntese
Agora que você pôde estudar o que é um projeto de arquitetura, padrões de projeto e gerenciamento de
configuração, você está apto a analisar o quanto esses métodos beneficiam o desenvolvimento de um sistema de 
. Também pudemos constatar que a integração de sistemas é uma realidade no mercado e que tambémsoftware
traz diversos benefícios, não só para a equipe de desenvolvimento, mas principalmente, para os negócios da
empresa.
Neste capítulo, você teve a oportunidade de:
• avaliar a utilidade de adotar padrões de projeto existentes como base, para o desenvolvimento do seu 
projeto, evitando perda de tempo e dinheiro, ao tentar criar algum padrão do zero;
• entender a importância de utilizar métodos de gerenciamento de configurações, a fim de evitar que, ao 
longo do seu ciclo de desenvolvimento, haja desperdício de tempo para corrigir os mais variados tipos de 
erros, que podem ocasionar o insucesso do projeto;
• conhecer o conceito de integração de sistemas, entendendo o quão complexo pode ser integrar sistemas, 
contudo, analisando o quanto pode ser benéfico para todos os envolvidos.
Bibliografia
CARVALHO, J. M. : On & Offline. Lisboa: Edições Sílabo, 2001.e-Business & e-Commerce
GAMMA, E.; : soluções reutilizáveis de orientado a objetos. et al. Padrões de projeto software Porto Alegre:
Bookman, 2000.
HOHPE G.; WOOLF, B. : Designing, Building, and Deploying MessagingEnterprise Integration Patterns
Solutions. Boston: Addison Wesley, 2003.
NORMANDES JUNIOR. Padrão de projeto Strategy - Aula prática. Canal algaworks, YouTube, publicado em 1 de
set. de 2015. Disponível em: . Acesso em: 13/12/2018.<https://www.youtube.com/watch?v=rC296hM-S4g >
PFLEEGER, S. L. Engenharia de software - Teoria e Prática. 2. ed. São Paulo: Pearson Addison Wesley, 2004.
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 7. ed. Porto Alegre: AMGH, 2011.
SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson Addison Wesley, 2011.
SUMMER, M. Enterprise Resource Planning. Upper Saddle River (NJ): Prentice Hall, 2004.
•
•
•
•
	Introdução
	2.1 Projeto de arquitetura
	2.1.1 Padrões de arquitetura
	2.1.2 Arquitetura cliente-servidor
	2.1.3. Arquitetura em camadas
	2.2 Padrões de projeto
	2.2.1 Problemas e padrões de projeto
	2.2.2 Elementos essenciais em standard de projeto
	Nome
	Problema
	Solução
	Consequências
	2.2.3 Principais padrões de projetos
	2.3 Gerenciamento de Configuração
	2.3.1 Gerenciamento de versões
	2.3.2 Gerenciamento de mudanças
	2.3.3 Gerenciamento de releases
	2.4 Integração de sistemas
	2.4.1 Integração de sistemas
	2.4.2 Meios de integração
	2.4.3 Arquitetura e projetos de integração
	Primeiro nível
	Segundo nível
	Terceiro nível
	Quarto nível
	Quinto nível
	Síntese
	Bibliografia

Mais conteúdos dessa disciplina