Buscar

Conteúdo da Unidade-8

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Fundamentos 
de Sistemas de 
Informação
1ª edição
2017
Fundamentos 
de Sistemas de Informação
3
8Unidade 8
Conceitos de Projeto
Para iniciar seus estudos
Caro aluno, seja bem-vindo à oitava e última unidade do nosso curso!
Você certamente já teve a oportunidade de ver o projeto de uma casa ou 
de uma construção semelhante. Toda a estrutura do imóvel está lá repre-
sentada: as divisões dos cômodos, o posicionamento de portas e janelas, 
a escada e por aí vai. Em dias atuais, inclusive, é possível até passear pela 
casa usando a ferramenta computacional certa, sem que uma parede 
sequer tenha sido erguida.
O projeto é a base de tudo e sua elaboração é feita por profissionais pre-
parados. Sem ele em mãos, o executor da obra não terá parâmetros ade-
quados para cumprir seu trabalho, mesmo que tenha boa noção do que 
deverá ser construído.
Os pontos de semelhança da Engenharia Civil com os processos relacio-
nados aos Sistemas de Informação passam longe da mera coincidência. 
Tanto lá como cá, a criação do desenho da solução é condição fundamen-
tal para que ela se torne realidade e um projeto bem feito abre portas para 
a construção de um sistema de igual qualidade.
Não por acaso, dedicamos toda esta unidade ao estudo do projeto de sof-
tware, desde seus conceitos fundamentais até a geração do artefato que 
sintetiza os objetivos dessa fase tão importante da Engenharia de Software.
Fique conosco, bom estudo e parabéns por ter chegado até aqui.
4
Objetivos de Aprendizagem
O aluno será capaz de compreender sobre conceitos de projeto e modelo 
do projeto (dados, arquitetura, interface, componentes e implantação).
5
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
Tópicos de estudo
Acreditamos que uma forma bastante eficiente de iniciar a compreensão de um novo tema é por meio da com-
paração com outro, já estudado e bem sedimentado. Afinal, aprender as coisas novas a partir das já sabidas faz 
tudo parecer mais familiar e fácil de entender.
Nesse sentido, um parâmetro bastante apropriado para nossa iniciação no mundo do projeto de software é o 
que já sabemos sobre requisitos. Se os requisitos revelam aos analistas “o que” deve ser feito para que se obtenha 
determinado produto, o projeto revela “como” ele deverá ser elaborado. Durante a fase de requisitos, o enge-
nheiro busca informações do cliente para delimitar funções e estabelecer comportamentos do futuro sistema. 
Diz-se, portanto, que ao final da fase de requisitos, já temos a solução pelo ponto de vista do cliente/usuário. 
É na fase de projeto, por sua vez, que se planeja a arquitetura do produto, além do estabelecimento das interfaces 
com outros sistemas e das estruturas de dados.
Há muito assunto interessante a ser abordado nesta unidade e sua dedicação não será em vão. Preparado? Ini-
ciemos então pelos conceitos fundamentais de projeto de software.
8.1 Conceitos fundamentais de projeto de software
Elaborar um projeto faz parte da primeira etapa de desenvolvimento de qualquer produto ou sistema de enge-
nharia. No universo dos Sistemas de Informação, é a etapa que se inicia após a validação dos requisitos e sua 
meta é produzir um modelo ou uma representação do produto a ser construído. Para atingir tal objetivo, o pro-
jetista deve lançar mão de sua experiência, intuição, de metodologias e heurística. Modelos ou representações 
podem ser analisados quanto à sua qualidade e são base para as etapas seguintes do ciclo de vida do produto, 
quais sejam, codificação, teste, validação e manutenção.
Conceitualmente, projeto é o processo pelo qual os requisitos são traduzidos em uma representação do software. 
Qualquer que seja a metodologia escolhida para a criação do produto, o projeto será desenvolvido.
Sommerville (2010) define projeto como a descrição da estrutura de software a ser implementada, dos dados que 
são parte do sistema, das interfaces entre os componentes do sistema e, às vezes, dos algoritmos usados.
É comum o entendimento de que o nível de detalhamento da solução que se aplica em um projeto deve ser sufi-
cientemente elevado a ponto de permitir a realização física do produto. Refinamentos sucessivos levam a uma 
representação próxima ao código-fonte e estima-se que, quanto mais detalhado for o projeto, mais imediata 
será a transição para a efetiva solução do problema.
Se é verdade que quanto mais se detalha os itens de um projeto, mais fácil será a implemen-
tação do produto, qual seria o limite razoável para esse detalhamento? Haveria um ponto em 
que o tempo investido na pormenorização de uma função não compensaria seus benefícios? 
6
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
Quando estudamos o Extreme Programming, ficamos conhecendo, entre outras coisas, os princípios da metodo-
logia, e os alçamos à condição de pilares de todas as práticas do modelo. Pois bem, a fase de projeto de software 
também tem suas bases e, embora muitos conceitos relacionados ao tema tenham evoluído, esses paradigmas 
têm resistido ao tempo. Fique ciente de que os conceitos que analisaremos na sequência nos servirão quando da 
abordagem do processo de projeto.
8.1.1 Abstração
A solução modular leva a vários níveis de abstração. Abstrair é concentrar-se em certos aspectos relevantes ao 
ambiente do problema. Cada passo da Engenharia de Software diminui o nível de abstração em direção à solução 
do problema. O nível mais baixo de abstração é o código-fonte.
Abstração procedimental: ensinam Pressman e Maxim (2016) que a abstração procedimental (ou procedural) 
refere-se a uma sequência de instruções que possui uma função específica e limitada. O nome de uma abstração 
procedural indica sua função, mas sem os detalhes específicos.
Tomemos o esboço de uma aplicação tipo CAD como exemplo e dela consideraremos três níveis de abstração 
procedimental:
Abstração 1 - Descrição geral do produto
O software terá uma interface gráfica que possibilitará acesso à função de desenhos de linhas retas e curvas. Os 
desenhos serão armazenados em uma pasta de desenhos.
Abstração 2 - Tarefas do software CAD
• início tarefa
• interação com o usuário
• criação de desenhos
• exibição de gráficos
• gerenciamento de arquivos de desenho
• fim tarefa
7
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
Abstração 3 - Procedimento de criação de desenho bidimensional
repetir ate que <tarefa de criação termine>
enquanto <ocorrer interação > faça
tarefa de interface
determinar pedido de desenho
tarefa de desenho de linha
fim enquanto
fim repetir
Observe que, no nível de abstração mais baixo, o detalhamento da solução aumenta e torna-se mais próximo da 
realização do código-fonte.
Abstração de dados: trata-se da descrição de um objeto por meio dos seus dados. Aqui, podemos tomar como 
exemplo a composição de um contracheque – ou holerite, como também é conhecido. Embora possa haver 
pequenas variações, a descrição dos dados desse objeto deve incluir nome do beneficiado, quantia bruta, quan-
tia líquida, horas normais trabalhadas, horas extras trabalhadas, desconto de Imposto de Renda e de INSS, entre 
outros. Nesse caso, referencia-se o conjunto de dados pelo nome da abstração (contracheque).
Arquitetura de software
De acordo com que ensinam Pressman e Maxim (2016), arquitetura é a estrutura ou a organização dos com-
ponentes do programa, a maneira como esses componentes interagem e a estrutura de dados que são usados 
pelos componentes. 
De uma forma simples e objetiva, a arquitetura do sistema pode ser representada por um diagrama de blocos 
que ilustra a organização do sistema e as interfaces com outros sistemas. Observe a figura a seguir; ela mostra a 
arquitetura de um sistema (não trivial e de porte considerável) de controle de tráfego aéreo.
8
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
Figura 8.1: Arquitetura de um sistema de tráfegoaéreo.
Banco de dados
de planos de
Sistema de
simulação da
aeronave
Sistema de
mapa de clima
Sistema de
relatórios
Sistema de registro 
de atividades
Sistema de 
informações 
do controlador
Consoles do
controlador
Back-up do
processador de
comunicação
Processador 
de 
comunicação
Back-up do
processador
de posição
Processador 
de posição
Sistema 
de radar
Sistema de
transponder
Sistema de
comunicação
de dados
Sistema de
comunicação
da aeronave
Sistema
telefônico
Legenda: O sistema de controle de tráfego aéreo não se resume a uma única 
aplicação. O fluxo de informações entre os subsistemas é mostrado por setas.
Fonte: Sommerville (2010, p. 22).
Pressman e Maxim (2016) descrevem três motivos para que a arquitetura do software seja considerada absoluta-
mente indispensável em um projeto: 
• A arquitetura de software fornece uma representação que facilita a comunicação entre todos os envol-
vidos. Como as conexões entre módulos e demais elementos do produto estão esclarecidas, o entendi-
mento da interação entre os desenvolvedores dos módulos acaba ficando facilitado também. No mesmo 
sentido, as divisões de trabalho certamente serão realizadas com base real.
• Desde a fase de projeto, a arquitetura coloca em evidência aquelas decisões de projeto que terão um 
profundo impacto no trabalho de engenharia de software que se segue.
• Já que a modularização serve para dividir um problema grande em vários outros menores, a arquitetura 
constitui um modelo relativamente pequeno e intelectualmente compreensível de como o sistema é 
estruturado e de como seus componentes trabalham em conjunto.
Os mesmos autores destacam que, assim como na arquitetura convencional, aquela que representa um produto 
de software também tem seus estilos. Cada estilo descreve uma categoria de sistema e especializa-se em um 
aspecto seu, incluindo um conjunto de componentes (um banco de dados, por exemplo), um conjunto de conec-
tores que, por exemplo, possibilita a comunicação do sistema, as restrições que estabelecem como os compo-
nentes podem ser integrados e outros. Analisemos dois desses estilos:
9
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
Arquiteturas centralizadas em dados: este estilo de arquitetura é fortemente baseado em um banco de dados 
ou arquivo. Os componentes que atualizam, incluem ou excluem dados nessa base também têm destaque na 
representação. A figura a seguir ilustra esse estilo.
Figura 8.2: Arquitetura centralizada em dados.
Software
cliente
Software
cliente
Software
cliente
Software
cliente
Software
cliente
Software
cliente
Software
cliente
Software
cliente
Armazenamento
de dados (repositório
ou “quadro-negro”)
Legenda: A representação de um repositório de dados em posição central e os 
componentes que acessam esse repositório caracterizam a arquitetura centralizada em dados.
Fonte: Pressman e Maxim (2016, p. 259).
Em alguns casos o repositório de dados é passivo, isto é, o software cliente acessa os dados mesmo que estes 
sofram alterações ou ações de outros softwares clientes. Uma variação dessa abordagem faz com o que o reposi-
tório se transforme em uma espécie de “quadro-negro”. Ele envia notificações ao software cliente quando ocor-
rem modificações nos dados que são do seu interesse.
Arquiteturas de chamadas e retornos: este estilo de representação permite uma adequada visualização da hie-
rarquia entre programas chamadores e subprogramas chamados. A figura a seguir ilustra o estilo de chamadas e 
retornos, especificamente as ocorridas entre programas e subprogramas.
10
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
Figura 8.3: Arquitetura de chamadas e retornos.
Programa principal
Subprograma
controlador
Subprograma
controlador
Subprograma
de aplicação
Subprograma
de aplicação
Subprograma
de aplicação
Subprograma
de aplicação
Subprograma
de aplicação
Subprograma
de aplicação
Subprograma
de aplicação
Subprograma
controlador
Legenda: O estilo de chamadas e retornos permite a visualização 
da hierarquia entre os subprogramas que compõem o produto.
Fonte: Pressman e Maxim (2016, p. 260).
A literatura ainda nos oferece os estilos de arquiteturas de fluxos de dados, arquiteturas orientadas a objetos e 
arquiteturas em camadas.
Embora o termo “arquitetura” remeta à organização dos módulos do sistema, ele também está associado a inter-
faces com outros sistemas e a estrutura de dados, por exemplo. No item dedicado ao processo de projeto, trata-
remos desses assuntos em detalhes.
Modularidade
Por causa da comum complexidade dos sistemas atuais, não é possível conceber a solução de um problema de 
maneira monolítica, sem as devidas divisões. Modularizar um software é “quebrar” seu projeto em partes meno-
res, mais facilmente administráveis e de realização mais simples.
Nenhuma dúvida resta sobre a necessidade de modularizar um sistema em sua fase de concepção, já que a 
complexidade embutida nos controles do programa e na quantidade de variáveis tornaria o trabalho pratica-
mente impossível. No entanto, ainda nos resta uma reflexão: se a subdivisão do problema em módulos menores 
é mesmo necessária, em quantas partes devemos dividi-lo? A relação “mais divisões, menos complexidade” fun-
ciona sempre? 
Para respondermos a essas questões, devemos considerar o custo (ou esforço) para a construção do módulo e 
para sua integração com os demais. Observe o gráfico a seguir; ele nos revela que o custo da integração aumenta 
conforme aumenta a quantidade de módulos a serem construídos. Outro fato relevante é que o custo por módulo 
é reduzido conforme sua quantidade aumenta. Em outras palavras, um módulo grande e complexo custa mais 
para ser construído que um pequeno e que acomoda uma função apenas (trataremos de módulos com uma só 
função nas próximas linhas).
11
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
O gráfico então aponta para um ponto central, identificado como “M”, em que a quantidade de módulos e o 
custo para produzi-los equilibram-se mutuamente.
Gráfico 8.1: Modularidade e custo de integração
Região de
custo mínimo
Custo total do software
Custo de integração
Custo /módulo
Número de módulos
M
Legenda: O crescimento do número de módulos tende a tornar o projeto mais custoso, seja por 
causa da elaboração de mais módulos, seja pela necessidade de integrá-los todos.
Fonte: Pressman e Maxim (2016, p. 235).
A decisão sobre a quantidade de módulos sempre será influenciada também por decisões 
de projeto relacionadas a certas facilidades que se deseja conferir ao sistema. O grau de sim-
plicidade para absorver alterações e a facilidade para receber testes e manutenções futuras 
serão igualmente decisivos nessa escolha. 
Embora esse modelo nos auxilie a estabelecer parâmetros sobre quantos módulos construir, ele pouco nos diz 
sobre como construí-los. O conceito de independência funcional, explorado na sequência, lançará alguma luz 
sobre esta questão.
Independência funcional
Módulos construídos idealmente com uma só função e sem interações excessivas com outros módulos são fun-
cionalmente independentes. A busca por essa característica justifica-se pela facilidade com que se empreende o 
desenvolvimento e a manutenção do produto de software. 
Para compreender esse fato, imagine um módulo que tenha muitas dependências com outros módulos. O pla-
nejamento e a execução de testes nesse módulo seriam ações bastante trabalhosas. 
12
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
O mesmo raciocínio estende-se às ações de manutenção. Segundo Pressman e Maxim (2016), módulos inde-
pendentes são mais fáceis de serem mantidos e testados, já que possíveis consequências das modificações no 
projeto serão limitadas e a propagação de erros será reduzida. Acrescente-se a esses benefícios a possibilidade 
de criação de módulos reutilizáveis, o que diminuiráo tempo de criação de programas futuros.
É possível avaliar a independência dos módulos por meio de dois critérios ligados à qualidade do processo: a 
coesão e o acoplamento. Um módulo coeso é aquele que acomoda uma função com um só propósito. Busca-se, 
portanto, módulos com alta coesão.
O acoplamento é a medida da dependência de um módulo em relação aos demais. Um módulo deve depender o 
menos possível de outro módulo, o que torna o baixo acoplamento o ideal a ser buscado pelo projetista.
A coesão que se busca durante a criação dos módulos leva o nome de coesão funcional. No entanto, alguns 
outros tipos de coesão também foram criados e colocados em uma hierarquia.
Como pior caso de coesão a ser considerado, temos a coesão coincidental. Aqui, não há nenhuma relação entre 
os elementos colocados no módulo, daí dizer que foram escolhidos por coincidência ou ao acaso.
Conforme já citado, o melhor caso de coesão é a funcional. Aqui, as operações descritas no módulo estão dispos-
tas, idealmente, em uma única frase, e ainda assim permanecem coerentes.
Entre esses dois tipos de coesão, temos a lógica, a temporal, a procedural, a de comunicação e a sequencial.
Uma visão bastante interessante e recheada de exemplos sobre acoplamento e coesão em 
módulos e funcionalidades pode ser obtida no texto disponível em <http://www.ateomo-
mento.com.br/acoplamento-e-coesao-em-modulos-e-funcionalidades/> (Acesso em: 3 
fev. 2018). Acesse também <https://www.devmedia.com.br/entendendo-coesao-e-aco-
plamento/18538> (Acesso em: 3 fev. 2018) e conheça aspectos práticos de coesão e aco-
plamento aplicados em programação orientada a objetos. 
Os conceitos e princípios de projeto não se limitam a esses que abordamos. Na literatura, é comum encontra-
mos, entre outras, menções a padrões aplicados aos projetos, refinamento gradual da solução e a aplicação de 
refatoração em projetos já prontos em parte ou no todo. Este texto, no entanto, deverá limitar-se ao estudo dos 
mais comuns e importantes deles. 
Nosso estudo segue agora com a abordagem do processo de um projeto, uma tentativa de estruturar e dar um 
método à atividade de projeto. Sigamos em frente!
http://www.ateomomento.com.br/acoplamento-e-coesao-em-modulos-e-funcionalidades/
http://www.ateomomento.com.br/acoplamento-e-coesao-em-modulos-e-funcionalidades/
https://www.devmedia.com.br/entendendo-coesao-e-acoplamento/18538
https://www.devmedia.com.br/entendendo-coesao-e-acoplamento/18538
13
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
8.2 O processo de projeto de software
Criar um projeto de software não é trabalho que se realiza em uma única etapa. O modelo final de projeto também 
não é fruto de uma única versão, sem prévio refinamento. Ao contrário, produzir um projeto é tarefa que envolve 
várias interações e a divisão do trabalho em vários subprojetos ou atividades específicas. No mesmo sentido, é 
comum que o processo de projeto acabe gerando inúmeros modelos do sistema, em níveis de abstração distintos.
A figura a seguir esclarece como um projeto segue seus passos até a composição final. Observe que as setas dia-
gonais tornam a saída de cada atividade uma especificação para o próximo estágio do processo. Não por acaso, a 
última etapa remete à especificação do algoritmo do sistema, artefato mais próximo da solução antes dela própria. 
Figura 8.4: Modelo geral do processo de projeto.
Especificação
de requisitos
Projeto de
arquitetura
Especificação
abstrata
Projeto de
interface
Projeto de
componente
Projeto de
estrutura de
dados
Projeto de
algoritmo
Arquitetura
de sistema
Especificação
de software
Especificação
de interface
Especificação
de componente
Especificação
de estrutura 
de dados
Especificação
de algoritmo
Atividades de projeto
Produtos de projeto
Legenda: As atividades próprias do processo de projeto usam as 
especificações geradas como subsídio de entrada para o próximo estágio.
Fonte: Sommerville (2010, p. 51).
Trataremos sucintamente de algumas das atividades do projeto nas próximas linhas e começaremos pelo projeto 
de dados.
8.2.1 Projeto de dados
Com base nos requisitos especificados, nesta etapa, busca-se criar um modelo de dados. Em um primeiro 
momento, esse modelo adota nível elevado de abstração para que o cliente ou usuário possa compreendê-lo. 
Depois, por meio de refinamentos sucessivos, o modelo torna-se mais adequado para a efetiva implementação 
dos dados em um programa. 
É natural imaginarmos que a arquitetura dos dados terá influência sobre o projeto de arquitetura do software.
14
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
8.2.2 Projeto de arquitetura
Esta etapa do processo funciona como uma forte ligação entre os processos de requisito e de projeto propria-
mente dito. Aqui, buscam-se o desenvolvimento e a manutenção de um framework básico em que estejam repre-
sentados os módulos do produto e as conexões entre eles.
Framework - Muitas são as definições que se aplicam ao termo framework. Em nosso contexto, 
podemos caracterizá-lo como um conjunto de símbolos, parâmetros e controles capaz de 
representar a arquitetura de um sistema. 
Glossário
Pressman e Maxim (2016) comparam o projeto de arquitetura com a planta baixa de uma casa. Ali, está disposta 
a distribuição dos cômodos e as ligações entre eles e, assim como a planta baixa nos fornece uma visão geral da 
casa, os elementos do projeto de arquitetura nos dão uma visão geral do software.
8.2.3 Projeto de interface
Ainda no contexto de comparação entre um projeto de software e um projeto de casa, o projeto da interface tem 
relação com portas, janelas e corredores de uma casa. Afinal, são esses elementos que explicitam os caminhos 
para entrar, sair e transitar pela casa.
O projeto de interfaces para software representa fluxos de informação que entram e saem de um sistema e como 
são transmitidos entre os componentes definidos como parte da arquitetura. Existem três elementos de projeto 
de interfaces: interface do usuário; interfaces externas para outros sistemas, dispositivos, redes ou outros produ-
tores ou consumidores de informação; e interfaces internas entre vários componentes do projeto (PRESSMAN; 
MAXIM, 2016).
8.2.4 Projeto de componentes
Podemos imaginar os componentes como a fiação, a localização de tomadas, interruptores, ralos, armários e 
vários outros detalhes associados a um cômodo.
No âmbito dos Sistemas de Informação, a comparação aproxima-se do conceito de uma peça de reposição.
Componente é um bloco construtivo modular para software de computador. Mais formalmente, 
a Especificação da Linguagem de Modelagem Unificada define componente como uma parte 
modular, possível de ser implantada e substituível de um sistema que encapsula implementação 
e expõe um conjunto de interfaces (PRESSMAN; MAXIM, 2016, p. 286).
15
Fundamentos de Sistemas de Informação | Unidade 8 - Fundamentos de Sistemas de Informação
Por causa da variadade de aplicações e contextos em que é usado, o real significado do termo componente irá 
variar em função do ponto de vista do engenheiro que o utiliza. O que não muda é o fato de que os componentes 
situam-se no âmbito da arquitetura do software e devem comunicar-se e colaborar com outros componentes, 
quais sejam, pessoas, meios de armazenamento ou outros sistemas.
O projeto de componentes de software descreve completamente os detalhes internos de cada componente de 
software. Para tanto, o projeto no nível de componente define estruturas de dados para todos os objetos de 
dados locais e detalhes algorítmicos para todo o processamento que ocorre em um componente e uma interface 
que dá acesso a todas as operações de componentes (PRESSMAN; MAXIM, 2016).
Projeto de implantação
Implantar um software, na maioria das vezes, não significa apenas instalar o programa no servidor ou nas máqui-
nas que o executarão. É necessário também que se descreva como o sistema será alocado no que se chamade 
ambiente computacional em que ele atuará. Pode-se ter um produto, por exemplo, que deva ser configurado em 
um servidor local e alguns dos seus componentes em uma máquina remota.
Bem, era isso que tinhamos a compartilhar sobre projeto de software. Não tenha dúvida de que o assunto é vasto 
e a frequência com que as informações são atualizadas é bastante elevada. Por isso, mantenha-se antenado em 
artigos, reportagens e obras relacionadas ao tema e torne-se uma boa referência no assunto.
Boa sorte e até a próxima!
16
Considerações finais
Nesta unidade, tratamos do projeto de software, com abordagens espe-
cíficas de conceitos de projeto e processo de projeto. Em resumo, estuda-
mos os seguintes assuntos:
Conceitos fundamentais de projeto de software
Projeto é o processo pelo qual os requisitos são traduzidos em uma repre-
sentação do software. Qualquer que seja a metodologia escolhida para a 
criação do produto, o projeto será desenvolvido. O nível de detalhamento 
da solução que se aplica em um projeto deve ser suficientemente elevado 
a ponto de permitir a realização física do produto. 
Os principais fundamentos da fase de projeto incluem:
• Abstração: abstrair é concentrar-se em certos aspectos relevantes 
ao ambiente do problema. Cada passo da Engenharia de Software 
diminui o nível de abstração em direção à solução do problema. O 
nível mais baixo de abstração é o código-fonte.
• Arquitetura de software: é a estrutura ou a organização dos com-
ponentes do programa, a maneira como esses componentes inte-
ragem e a estrutura de dados que são usados pelos componentes.
• Modularidade: modularizar um software é “quebrar” seu projeto 
em partes menores, mais facilmente administráveis e de realiza-
ção mais simples. A correta modularização deve levar em conta 
o custo para desenvolver e integrar módulos pequenos. Construir 
poucos módulos, por sua vez, também poderá acarretar em difi-
culdades nos testes e na manutenção futura do sistema.
• Independência funcional: módulos construídos idealmente com 
uma só função e sem interações excessivas com outros módulos 
são funcionalmente independentes. A busca por essa caracterís-
tica justifica-se pela facilidade com que se empreende o desen-
volvimento e a manutenção do produto de software. 
17
O processo de projeto de software
Criar um projeto de software não é trabalho que se realiza em uma única 
etapa. Ao contrário, produzir um projeto é tarefa que envolve várias inte-
rações e a divisão do trabalho em vários subprojetos ou atividades espe-
cíficas. O processo de um projeto inclui as seguintes etapas:
• Projeto de dados: com base nos requisitos especificados, nesta 
etapa, busca-se criar um modelo de dados. De um nível elevado 
de abstração no início, o projeto tende a receber refinamentos 
sucessivos para chegar a uma forma próxima à implementação. 
• Projeto de arquitetura: aqui, buscam-se o desenvolvimento e a 
manutenção de um framework básico em que sejam representa-
dos os módulos do produto e as conexões entre eles.
• Projeto de interface: representa os fluxos de informação que 
entram e saem de um sistema e como são transmitidos entre os 
componentes definidos como parte da arquitetura.
• Projeto de componentes: descreve completamente os detalhes 
internos de cada componente de software.
• Projeto de implantação: trata-se da descrição de como o sistema 
será alocado no que se chama de ambiente computacional em 
que ele atuará.
Referências bibliográficas
18
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de Software: uma abordagem 
profissional. 8. ed. Porto Alegre: Amgh, 2016.
SOMMERVILLE, I. Engenharia de Software. 8. ed. São Paulo: A. Wesley 
publishing company, 2010.
	_Hlk505856755
	_Hlk505856893

Continue navegando