Buscar

apostila-de-engenharia-de-software

Prévia do material em texto

NEaD 
UVA 
 
Núcleo de Educação a Distância 
Universidade Estadual Vale do Acaraú 
 
 
 
UNIVERSIDADE ESTADUAL VALE DO ACARAÚ 
 
 
 
APOSTILA DE ENGENHARIA DE SOFTWARE, CAPÍTULO 09 
 
 
 
ASSUNTO: 
 ENGENHARIA DE PROJETO 
ALUNOS: 
JOSUE PINTO DE MESQUITA 
ITALO ROSSI ARAUJO COSTA 
 
 
 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br
 
INTRODUÇÃO 
A engenharia de projeto é uma 
fase muito importante da elaboração de 
um software, pois é no projeto que se 
tem realmente a visão do sistema como 
um todo. Nessa fase, os possíveis erros 
encontrados ainda são fáceis de ser 
concertados se comparado com a sua 
solução na fase de implementação, e é 
por isso que é no projeto onde se 
consegue estabelecer a qualidade do 
sistema. 
Um projeto deve, a cima de 
tudo, envolver todas as necessidades 
expressas pelo cliente e ser feito de 
forma bem compreensível para os 
profissionais que vão implementar, 
testar e dar manutenção no sistema, pois 
ele é o último passo feito antes da 
codificação do software, e serve de guia 
para essa próxima etapa. 
PROJETO NO CONCEITO DE 
ENGENHARIA DE SOFTWARE 
No projeto de software, os dados 
a ser utilizados são consultados no 
modelo análise, obtido do levantamento 
das informações junto ao cliente e a 
análise dessas informações para que se 
chegue a uma idéia de como o sistema 
vai funcionar. Esse modelo de análise é 
constituído por elementos baseados em 
cenário, em classe, orientados a fluxo e 
comportamentais, e cada um desses 
elementos vai servir como fonte de 
informação para fazer o projeto de 
software, que deve ser constituído por 
quatro representações: arquitetural, 
dados, interface e componente. 
 
 
 
1) Projeto de dados 
É nesse projeto que são 
realizadas as classes de projeto e as 
estruturas de dados dos requisitos do 
sistema. As informações para esse 
projeto são obtidas principalmente dos 
cartões CRC, que fornece as definições 
das principais classes e 
relacionamentos, e atributos de classe, 
que fornecem conteúdo completo dos 
dados. Parte do projeto de dados pode 
ocorrer em conjunto com o projeto de 
arquitetura, e seu nível de detalhes vai 
aumentando à medida em que cada 
componente do software é projetado. 
2) Projeto arquitetural 
É onde são definidos os 
relacionamentos entre os principais 
elementos estruturais do software, os 
estilos arquiteturais e padrões de projeto 
que podem ser utilizados para satisfazer 
aos requisitos definidos para o sistema e 
as restrições que afetam o modo pelo 
qual o projeto arquitetural pode ser 
implementado. Podemos imaginar o 
projeto arquitetural como o projeto de 
um edifício, onde os apartamentos 
seriam os módulos e/ou componentes e 
o projeto arquitetural vai projetar toda a 
estrutura que vai ficar no entorno desses 
módulos, fazendo um esqueleto que os 
une, servindo de estrutura que relaciona 
os módulos com outros módulos e o 
edifício com o meio externo. 
3) Projeto de interface 
É o projeto de como o software 
irá se comunicar com o meio externo. 
Esse meio externo, tem que ser 
entendido não só com a parte gráfica, 
que é a comunicação com o usuário, 
mas também com outros programas ou 
módulos externos que poderão vir a se 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br
 
comunicar com o programa para receber 
ou para injetar dados. 
4) Projeto de componente 
É o projeto do software em um 
nível modular, ou seja, é o projeto de 
uma parte do software que vai funcionar 
em conjunto com outras partes para 
constituir o sistema como um todo. Esse 
projeto utiliza informações de 
arquitetura, interface e dados para a sua 
constituição. 
 
PROCESSO DO PROJETO E 
QUALIDADE DO PROJETO 
A importância do projeto de 
software pode ser definida em uma 
única palavra, qualidade. Projeto é uma 
fase na qual a qualidade é incorporada 
na engenharia de software, por nos 
fornecer representações do software que 
podem ser avaliadas, e é por isso que é 
o único modo pelo qual podemos 
traduzir precisamente os requisitos do 
cliente em um produto. 
O projeto de software serve de 
base para todos os passos de engenharia 
de software de suporte de software que 
se seguem. Sem projeto, nos arriscamos 
a construir um sistema instável. Esse 
projeto é feito de forma iterativa, no 
qual os requisitos são traduzidos em um 
documento para a construção do 
software. Inicialmente, o projeto mostra 
uma visão do sistema com um alto nível 
de abstração, nível esse que vai 
diminuindo à medida que o projeto vai 
sendo feito. 
Ao longo do projeto, a sua 
qualidade vai sendo avaliada com uma 
série de revisões técnicas formais 
(RTF), também chamados de 
Walktroughs. Essas revisões são 
reuniões periódicas feitas pela equipe 
que está à frente do projeto, servindo 
para analisar o projeto, buscando-se 
possíveis erros e colocando-se em pauta 
se a parte do projeto que está sendo 
avaliada deverá ser modificada ou não. 
Para avaliar a qualidade, existem uma 
série de diretrizes, que são como 
modelos que devem ser seguidos para se 
fazer um bom projeto, os principais são: 
1. Um projeto deve exibir uma 
arquitetura que tenha sido criada 
por meio de estilos arquiteturais 
reconhecíveis e que possa ser 
implementada de modo 
evolucionário para facilitar as 
fases de implementação e de 
testes. 
2. Um projeto deve ser modular, 
sendo o software particionado 
logicamente em elementos ou 
subsistemas. 
3. Um projeto deve conter 
representações distintas de 
dados, arquitetura, interface e de 
componentes. 
4. Um projeto deve levar a 
estruturas de dados adequadas às 
classes a ser implementadas e 
baseadas em padrões de dados 
reconhecíveis. 
5. Um projeto deve levar a 
componentes que exibam 
características funcionais 
independentes. 
6. Um projeto deve levar a 
interfaces que reduzam a 
complexidade das conexões 
entre componentes e com o 
ambiente externo. 
7. Um projeto deve ser 
representado por uma notação 
que realmente represente o seu 
significado. 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br
 
Também temos, na questão de 
avaliação de projeto, alguns atributos 
que atualmente são muito usados para 
ter uma referência das qualidades que o 
sistema a ser projetado deve ter. Esses 
atributos foram desenvolvidos pela 
Hewlett-Packard, a conhecida HP, são 
eles: 
Funcionalidade: é avaliada pela 
observação do conjunto de 
características e capacidades do 
sistema, generalidade das 
funções e segurança do sistema 
global. 
Usabilidade: é avaliada 
considerando fatores humanos, 
como a estética e consistência, é 
qualidade que o sistema tem de 
ser utilizado facilmente pelos 
usuários. 
Confiabilidade: é avaliada 
medindo-se a freqüência e a 
severidade das falhas, a precisão 
dos resultados de saída, o tempo 
médio entre as falhas, a 
capacidade de recuperação de 
falhas e a previsibilidade do 
programa. 
Desempenho: é medido pela 
velocidade de processamento, 
tempo de resposta, consumo de 
recursos, vazão e eficiência. 
Suportabilidade: está envolvido 
com a facilidade de instalação, 
configuração e manutenção do 
sistema. 
 
 
CONCEITOS DE PROJETO 
 
Modularidade 
Consiste na qualidade que o 
sistema tem de ser projetado e 
construído em partes, chamadas 
componentes ou subsistemas. A 
modularidade é muito importante, pois 
projetar um software constituído de 
apenas um módulo é muito trabalhoso, 
pois todas as tarefas tem que ser 
projetadas em conjunto. Dividindo-se 
essas tarefas em módulos, fica bem 
mais fácil a construção de cada um, pois 
otrabalho foi dividido. 
 Uma informação muito 
importante na hora de se modularizar 
um sistema, é que a simplicidade de se 
projetar e implementar um módulo pode 
ser compensada na complexidade de 
integrar muitos módulos, por isso não se 
deve modularizar de mais. 
Ocultamento de informação 
Deve acontecer com 
informações entre módulos, sendo que 
cada módulo deve ser projetado de 
forma que não necessite das 
informações contidas em outro módulo, 
por isso diz-se que essas informações 
devem permanecer ocultas para os 
outros módulos. Isso ajuda muito 
principalmente na hora de se resolver 
um possível problema, se um módulo 
necessitar de mais módulos para 
funcionar, fica difícil saber qual módulo 
foi o responsável por ocasionar um 
possível erro. 
Independência funcional 
O conceito de independência 
funcional é muito importante também 
no projeto de um software, pois cada 
módulo projetado deve ser feito de 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br
 
forma a funcionar sem precisar do 
funcionamento de outro módulo. Isso é 
muito utilizado tanto para o controle 
individual de cada módulo como 
principalmente para que o módulo 
projetado possa vir a ser utilizado em 
outro sistema. 
Refinamento 
Refinamento é uma estratégia de 
projeto descendente. Essa técnica 
originalmente proposta por Niklaus 
Wirth em 1971 sugere como ponto de 
partida a definição da arquitetura do 
software a ser desenvolvido, sendo que 
esta vai sendo refinada sucessivamente 
até atingir níveis onde os procedimentos 
são detalhados. Um programa é 
desenvolvido pelo refinamento 
sucessivo de níveis de detalhes 
procedurais. 
Refinamento de forma mais 
clara é um processo de elaboração. 
Começamos com uma descrição da 
informação que é definida em um alto 
nível de abstração. O enunciado 
descreve a informação conceitualmente, 
mas não fornece qualquer informação 
sobre o funcionamento da estrutura 
interna da informação. O refinamento 
ajuda o projetista a revelar os detalhes 
de baixo nível de abstração de acordo 
em que o projeto evolui. 
 
Refabricação 
A refabricação ou refatoração é 
uma atividade bastante importante, no 
qual é sugerida por muitos métodos 
ágeis. É uma técnica de reorganização 
que simplifica o código de um 
componente sem mudar sua função ou 
comportamento. 
Nas palavras de Fowler etal. (1999) 
“Refabricação é o processo de 
modificar um software sem que isso 
altere o comportamento externo do 
código, mas melhore sua estrutura 
interna. É uma maneira disciplinada de 
limpar o código minimizando as 
chances de se introduzir erros.” 
Refabricação é importante 
porque pode tornar o código mais 
compreensível e de fácil modificação, 
algo importante quando se fala em 
sistemas legados. Refabricação também 
ajuda a melhorar códigos que foram 
modificados e foram perdendo 
qualidade na estrutura e estão se 
tornando difíceis de compreender. Com 
a refabricação a estrutura do código se 
mantém com qualidade, e isso ajuda no 
descobrimento de erros e 
consequentemente torna o 
desenvolvimento mais rápido. 
 
CLASSES DE PROJETO 
 
 No modelo de análise são 
definidas um conjunto completo de 
classes de analise, nas quais cada uma 
dessas classes descreve algum elemento 
do domínio do problema. O nível de 
abstração nas classes de analise é 
relativamente alto. Classes de projeto 
são classes mais detalhadas em relação 
com as classes de análise. A medida que 
o modelo de projeto evolui devem ser 
definidos um conjunto de classes de 
projeto que primeiro refina as classes de 
análise, fornecendo detalhes de projeto 
que vão permitir que as classes sejam 
implementadas, e segundo, criar um 
conjunto de classes de projeto que 
implemente uma infraestrutura de 
software para apoiar a solução do 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br
 
negócio. Dentro desse conjunto de 
classes de projeto são sugeridos cinco 
tipos de classe a seguir. 
Classes de interface com o usuário 
definem todas as abstrações necessárias 
para a interação humano-computador 
(IHC) . 
Classes do domínio de negócio são 
frequentemente refinamentos de classe 
de análise. As classes identificam os 
atributos e os métodos necessários para 
implementar algum elemento do 
domínio de negócio. 
Classes de processo implementam 
abstrações de mais baixo nível de 
negócio necessárias para a completa 
gestão das classes de domínio de 
negócios. 
Classes persistentes representam 
depósitos de dados (por exemplo, um 
banco de dados) que vão persistir além 
da execução do software. 
Classes de sistema implementam 
funções de gestão e controle de software 
que habilitam o sistema a operar e se 
comunicar em seu ambiente e com o 
mundo externo. 
 Ao ponto da evolução do 
projeto, a equipe de desenvolvimento do 
software deve desenvolver um conjunto 
completo de atributos e operações para 
cada classe de projeto. Arlow e 
Neustadt sugerem a revisão das classes 
de projeto para garantir que elas estejam 
bem formadas, e sugerem quatro 
características dessas classes. 
 Completeza e suficiência – 
Uma classe de projeto deve ser o 
encapsulamento completo de todos os 
atributos e métodos que se podem 
razoavelmente esperar (com base na 
interpretação do nome da classe) que 
existam na classe. Por exemplo, em uma 
classe chamada cena definida para um 
software que faz edição de vídeo 
somente fica completa se contiver todos 
os atributos e métodos que podem ser 
razoavelmente associados a criação de 
uma cena de vídeo. Suficiência garante 
que a classe de projeto contenha 
somente aqueles métodos que são 
suficientes para atingir o objetivo da 
classe, nem mais nem menos. 
 Primitivismo – Métodos 
associados a uma classe de projeto 
devem ser enfocados na realização de 
um serviço para a classe. Uma vez o 
serviço implementado com um método, 
a classe não deve fornecer um outro 
modo para realizar a mesma coisa. Por 
exemplo, uma classe chamada 
videoclipe contendo os atributos ponto-
inicial e ponto-final para indicar onde 
inicia e termina o clip. Os métodos 
ajustarPontoInicial() e 
ajustarPontoFinal() fornecem os único 
meios para indicar os pontos inicial e 
final do clipe. 
 Alta coesão – Uma classe de 
projeto coesa tem um conjunto de 
responsabilidades pequeno e enfocado e 
aplica atributos e métodos 
especificamente para implementar 
aquelas responsabilidades. Por exemplo, 
a classe videoclipe poderia conter vários 
métodos para a edição de um clipe. 
Contanto que cada método esteja focado 
somente com os atributos de videoclipe 
a coesão é mantida. 
 Baixo acoplamento – No 
modelo de projeto, é necessário projetar 
classes para colaborarem entre si. No 
entanto, a colaboração deve ser restrita a 
um mínimo aceitável. Se um modelo de 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br
 
projeto é altamente acoplado (todas as 
classes de projeto colaboram com todas 
as outras classes de projeto) o sistema é 
difícil de implementar, testar e manter 
ao longo do tempo. Em uma forma geral 
classes de projeto em um subsistema 
deveriam ter apenas conhecimento 
limitado das classes de outros 
subsistemas. 
 
MODELO DE PROJETO 
 
Modelo de projeto (design 
model) – descreve a efetivação dos 
casos de usos focalizando em como os 
requisitos funcionais e não funcionais se 
relacionam com o ambiente de 
implementação. Modelo de projeto é 
representado por um sistema que denota 
o subsistema de mais alto nível, que por 
sua vez é composto de vários 
subsistemas. No modelo de projeto os 
casos de uso são efetivados por meio de 
classesde projeto e objetos. 
 
Os elementos do modelo de 
projeto usam muitos dos mesmos 
diagramas UML que foram usados no 
modelo de análise. A diferença é que 
esses diagramas são refinados e 
elaborados como parte do projeto; mais 
detalhe especifico de implementação é 
fornecido e são enfatizadas a estrutura e 
o estilo arquitetural, os componentes 
que residem na arquitetura e as 
interfaces entre os componentes e o 
mundo externo. 
 
ELEMENTOS DE PROJETO DE 
DADOS 
 
Projeto de dados (algumas vezes 
denominado arquitetura de dados) cria 
um modelo de dados e/ou informações 
que é representado no nível mais alto de 
abstração (a visão dos dados do 
cliente/usuário). Esse modelo de dados 
é então refinado em representações cada 
vez mais especificas da implementação 
que podem ser processadas pelo sistema 
baseado em computador. 
A estrutura de dados é uma parte 
importante dentro do projeto de 
software. No nível de componente, o 
projeto das estruturas de dados e os 
algoritmos que serão aplicados nos 
programa afim de manipula-las é 
essencial para o desenvolvimento de 
uma aplicação de alta qualidade. No 
nível de aplicação, a tradução do 
modelo de dados para um banco de 
dados é de fundamental importância 
para satisfazer os objetivos que o 
sistema dispões a realizar. Em nível de 
negócio as informações armazenadas 
em vários bancos de dados é 
reorganizada em um armazém de dados 
denominado data warehouse que 
possibilita a mineração dos dados e 
descoberta de conhecimento que pode 
ter um papel bastante importante no 
sucesso do negocio. 
 
ELEMENTO DO PROJETO 
ARQUITETURAL 
 
O projeto arquitetural de um 
software pode ser comparado a uma 
planta baixa de uma casa. A planta 
baixa representa como os cômodos da 
casa estão dispostos globalmente, 
juntamente com seu tamanho, forma e 
relacionamento entre eles, também 
representas as portas e janelas que 
permitem movimento para dentro e para 
fora dos cômodos. Em outras palavras a 
planta baixa nos da uma visão geral da 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br
 
casa. De modo semelhante elementos de 
projeto arquitetural nos da uma visão 
geral do software. Elementos de projeto 
arquitetural nos dão uma visão geral do 
software. O modelo arquitetural é 
derivado de três fontes: (1) informação 
sobre o domínio de aplicação para o 
software a ser construído; (2) elementos 
específicos do modelo de analise como 
diagramas de fluxo de dados ou classe 
de análise, seus relacionamentos e 
colaborações para o problema, e (3) a 
disponibilidade de padrões arquiteturais. 
 
ELEMENTOS DE PROJETO DA 
INTERFACE 
 
O projeto da interface do 
software é semelhante a um conjunto de 
desenhos detalhados para portas, janelas 
e instalações de uma casa. Os desenhos 
nos indicam o tamanho e as formas das 
portas e janelas, e a maneira pela qual 
elas operam. Em essência os desenhos 
detalhados contam-nos como coisas e 
informações fluem para dentro e para 
fora da casa. Os elementos do projeto de 
interface contam-nos como a 
informação flui para dentro e para fora 
do sistema e como ela é disseminada 
entre os componentes definidos como 
parte da arquitetura. Há três importantes 
elementos no projeto de interface. 
 A interface com o usuário 
 Interfaces externas com outros 
sistemas, dispositivos, redes ou 
outros produtores ou 
consumidores de informação. 
 Interfaces internas entre vários 
componentes de projeto. 
O projeto de interface do usuário 
é uma ação bastante importante dentro 
da engenharia de software pois ela 
incorpora elementos estéticos como o 
leiaute, cor, gráficos e elementos 
ergonômicos como a localização e 
disposição da informação. 
O projeto de interfaces externas 
requer informação definitiva sobre a 
entidade para qual a informação é 
enviada ou recebida. O projeto de 
interfaces internas é alinhado 
juntamente com o projeto de 
componentes. 
 
ELEMENTOS DE PROJETO EM 
NIVEL DE COMPONENTE 
ECIMENTOS 
O projeto em nível de 
componente descreve completamente os 
detalhes internos de cada componente 
de software. Para tanto, o projeto 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 em 
uma interface que dá acesso a todas as 
operações do componente 
(comportamento). No contexto da 
engenharia de software orientado a 
objetos, um componente é representado 
nas formas diagramáticas UML. 
 
 
 
 
 
A figura mostrada esta 
representando um componente chamado 
GestãoDeSensor e a linha conecta o 
componente a uma classe chamada 
sensor que é associada a ele. O 
componente realiza todas as funções 
GestãoDeSen
sor Sensor 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br
 
associadas aos sensores os 
configurando. 
 
ELEMENTOS DE PROJETO EM 
NIVEL DE IMPLANTAÇÃO 
 
Elementos de projeto em nível 
de implantação indicam como a 
funcionalidade e os subsistemas do 
software serão alocados no ambiente 
computacional físico que vai apoiar o 
software. Por exemplo, um determinado 
software tem os seus elementos 
configurados para operar em três 
ambientes computacionais, um PC 
baseado em uma casa, outro PC 
utilizado como painel de controle e um 
servidor. 
 
PROJETO DE SOTWARE BASEADO 
EM PADRÃO 
 
Os melhores projetistas em 
qualquer campo tem a habilidade 
incomum de ver padrões que 
caracterizam um problema e padrões 
correspondentes que podem ser 
combinados para criar uma solução. 
Durante todo o processo de projeto, um 
engenheiro de software deve procurar 
toda a oportunidade de reutilizar 
padrões de projeto existentes (quando 
eles satisfazem as necessidades do 
projeto) em vez de criar outros. 
 
DESCRIÇÃO DE UM PADRÃO DE 
PROJETO 
 As disciplinas de engenharia 
fazem uso de milhares de padrões de 
projeto existentes, por exemplo, um 
engenheiro eletricista usa um circuito 
integrado para resolver um elemento 
especifico de um problema. Os padrões 
de projeto podem ser descritos como 
mostrados a seguir. 
Nome do padrão – descreve a 
essência do padrão em um curto, mas 
expressivo nome. 
Intenção – descreve o padrão e 
o que ele faz. 
Também-conhecido-como – 
lista os sinônimos do padrão. 
Motivação – fornece um 
exemplo do problema. 
Aplicabilidade – notifica as 
situações especificas de projeto nas 
quais o padrão é aplicável. 
Estrutura – descreve as classes 
necessárias para implementar o padrão. 
Participantes – descreve as 
responsabilidades das classes que são 
necessárias para implementar o padrão. 
Colaborações – descreve como 
os participantes colaboram para cumprir 
suas responsabilidades. 
Consequências – descreve as 
“influências de projeto” que afetam o 
padrão e os potenciais compromissos 
que devem ser considerados quando o 
padrão é implementado. 
Padrões relacionados – 
referências cruzadas relacionadas a 
padrões de projeto. 
 
 
 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br
 
USO DE PADRÕES DE PROJETO 
 
Os padrões de projeto podem ser 
utilizados por todo o processo de 
desenvolvimento do software. Após 
desenvolvido o modelo de analise, o 
projetista pode examinar uma 
representação detalhada do problema a 
ser resolvido e as restrições impostas 
pelo problema. A descrição do 
problema é examinada em vários níveis 
de abstração para determinar se ela é 
responsável por um ou mais dos três 
tipos de padrões existentes detalhados a 
seguir 
Padrões Arquiteturais – Esses 
padrões definem uma estrutura global 
do software, indicam o relacionamento 
entre subsistemas e componentesdo 
software e definem as regras para 
especificar relacionamentos entre os 
elementos(classe, pacotes, 
componentes) 
Padrões de projeto – Esses 
padrões atendem a um elemento 
especifico do projeto tal como uma 
agregação de componentes para resolver 
algum problema de projeto, 
relacionamentos entre componentes ou 
os mecanismos para efetuar a 
comunicação componente a 
componente. 
Idiomas – também chamados de 
padrões de códigos, esses padrões 
específicos de linguagem geralmente 
implementam um elemento algorítmico 
de um componente, um protocolo 
especifico de interface, ou um 
mecanismo para comunicação entre 
componentes. 
FRAMEWORKS 
“Framework é um conjunto de classes 
que colaboram para realizar uma 
responsabilidade para um domínio de 
um subsistema da aplicação” 
 - Fayad e Schmit 
Também chamado de arcabouço, 
frameworks é um esqueleto com uma 
coleção de “pontos conectáveis” que lhe 
possibilitam adaptar-se a um domínio 
especifico de problema. Os pontos de 
conexão possibilitam a um projetista 
integrar classes ou funcionalidades 
específicas do problema no esqueleto. 
Em contexto orientado a objetos, 
arcabouço é uma coleção de classes em 
cooperação. Por exemplo, Hibernate, 
com o objetivo de diminuir a 
complexidade entre os programas Java, 
baseado no modelo orientado a objetos. 
Framework conceitual é um 
conjunto de conceitos usados para 
resolver um problema de um domínio 
especifico. Framework conceitual não 
se trata de um software executável, mas 
sim de um modelo de dados para um 
domínio. Já no framework de software 
compreende de um conjunto de classes 
implementadas em uma linguagem de 
programação, usadas para auxiliar o 
desenvolvimento de software. 
 
REFERÊNCIAS 
 
PRESSMAN, RogerS.Engenharia de 
Software, 6.ed, 2006. 
 
 
 
 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br
 
 
 
 
Exercícios 
 
1) Por que é na fase de projeto onde se constitui a qualidade do software? 
2) O que são e para que servem as RTFs? 
3) Por que a independência funcional é importante em um projeto? 
4) Como funciona a modularidade? 
5) O que é refinamento e para que serve? 
6) Refinamento é um complemento da abstração? Explique o porque. 
7) O que é refabricação? E como ela ajuda no desenvolvimento de um software? 
8) Qual a diferença entre classes de analise e classes de projeto? 
9) Quais os tipos de classes de projeto utilizados no desenvolvimento do software? 
10) Como deixar uma classe de projeto bem formada? 
11) Qual a diferença entre modelo de analise e modelo de projeto? 
12) Qual a importância dos elementos de projeto de dados no desenvolvimento do 
um software? 
13) Como é derivado os elementos do projeto arquitetural? 
14) Quais os principais elementos no projeto de interface? 
15) Qual o papel do projeto em nível de componente? 
16) Para que serve elementos de projeto em nível de implantação? 
17) O que é um padrão? E para que serve no desenvolvimento de um software? 
18) Defina o que é: padrão arquitetural, padrão de projeto, idiomas. 
 
www.cliqueapostilas.com.br
http://www.cliqueapostilas.com.br

Continue navegando