Buscar

Modelagem de Requisitos para Aplicações Web e Móveis

Prévia do material em texto

3ºAula
Análise e modelagem de 
requisitos – Parte II
Objetivos de aprendizagem
Ao término desta aula, vocês serão capazes de: 
•	 entender os passos da modelagem de classes;
•	 saber como funciona a modelagem de comportamento;
•	 entender os aspectos relacionados a modelagem de requisitos para aplicações web e móveis.
Olá, pessoal, tudo bem? 
Continuando nossos estudos sobre a modelagem de 
requisitos, vamos estudar hoje os modelos baseados em classes 
e o modelo comportamental, que focam na estrutura dos dados 
do sistema (e os seus relacionamentos) e nos comportamentos 
do sistema.
Além disso, vamos mostrar nessa aula como seria uma 
modelagem de requisitos para aplicações Web e dispositivos 
móveis, devido ao contexto diferente desses sistemas.
Lembre-se que estamos sempre à disposição na área do 
aluno para resolver eventuais dúvidas.
Vamos lá?
Bons estudos!
Engenharia de Requisitos 18
Seções de estudo
1 - Modelagem baseada em Classes
2 - Modelagem de Comportamento
3 - Aspectos relacionados a modelagem de requisitos 
para aplicativos Web e aplicativos móveis
1 - Modelagem baseada em Classes
Vimos,	 na	 aula	 anterior,	 como	definir	 os	 cenários	 (ou	
casos de uso) que ocorrerão na execução do software. Mas 
isso é apenas um dos aspectos existentes em um projeto de 
software.
Existe	outro	aspecto	que	define	quais	são	as	entidades	
que serão utilizadas em um software. No paradigma 
procedimental, usando a Análise Estruturada (conforme 
vimos na disciplina Metodologia para Desenvolvimento de 
Software), esses dados são isolados, ou no máximo agrupados 
em registros.
Já no paradigma orientado a objetos, os dados se juntam 
às funções que manipulam esses dados, criando classes e 
objetos. Segundo Coad e Yourdon (apud PRESSMAN, 
MAXIM; 2016; p. 184), esses conceitos da orientação a 
objetos (classes, atributos, totalidade, parte, etc.) são conceitos 
que “aprendemos no jardim de infância”.
Por meio desses conceitos, podemos representar uma 
aplicação que pode ser entendida por uma pessoa que não 
entenda de desenvolvimento de software, e dessa representação 
podemos	evoluir	para	uma	especificação	que	será	usada	para	
desenvolver o sistema (PRESSMAN, MAXIM; 2016).
Para criarmos essa representação baseada em classes, 
usamos métodos que, com base nos requisitos, podemos 
detectar os objetos que o sistema vai usar, as operações que 
serão feitas, as relações e as colaborações que vão ocorrer entre 
os objetos. Isso se chama modelagem baseada em classes. 
Os resultados desses métodos são: classes (e seus 
objetos), atributos, operações, modelos CRC, diagramas de 
colaboração e pacotes. Nessa seção, vamos apresentar, de 
uma forma mais detalhada, os métodos que são utilizados 
para a detecção de classes e veremos o que são os modelos 
CRC.
1.1	-	Identificando	classes
Vimos, na disciplina Metodologia para Desenvolvimento 
de Software, um pequeno roteiro para que você possa 
descobrir classes, atributos, métodos e relacionamentos. 
Nessa seção, vamos destrinchar esse tema, esclarecendo 
alguns aspectos adicionais.
Primeiramente, vamos recapitular as etapas da descoberta 
de classes, que vocês viram na disciplina anterior. Ela consiste 
na leitura e interpretação dos casos de uso, seguindo os 
seguintes passos:
•	 Nomes, pronomes e frases substantivadas são 
grandes candidatas a serem classes e objetos. 
Nomes no singular (João, ele, ela, estação de 
trabalho) e nomes de referência direta (o sexto 
jogador, a transação) podem ser objetos. Já nomes 
no plural (pessoas, alunos, professores) são 
candidatas a serem classes;
•	 Além disso, alguns nomes podem representar 
propriedades (atributos) de um objeto, além de 
adjetivos e frases possessivas. Por exemplo, a idade 
da criança, o nível do rio, a quantidade de estoque 
de um produto;
•	 Verbos, como pagar, solicitar, emitir, por exemplo, 
são candidatas a serem serviços, ou seja, métodos 
dessas classes.
•	 Depois de selecionarmos estas situações, devemos 
eliminar alguns objetos essenciais “falsos”, através 
de	um	teste.	Para	cada	objeto	detectado,	verifique	
se	 encaixa	nas	 seguintes	definições:	 (I)	Ele	 é	uma	
entidade do mundo real?, (II) Ele é importante para a 
discussão dos requisitos?, (III) Ele não corresponde 
a nenhuma classe ou objeto que já selecionei antes? 
e	(IV)	Ele	tem	uma	fronteira	muito	bem	definida,	
ou	seja,	ele	pode	ser	definido	totalmente?
•	 No	final,	descobrimos	se	existe	alguma	relação	de	
hierarquia entre as classes, perguntando: “O objeto 
A é um objeto B?” e “O objeto B é um objeto A?”. 
Se as respostas forem sempre e às vezes (ou vice-
versa), existe uma relação de herança entre os dois 
objetos. Por exemplo: um cliente é sempre uma 
pessoa, mas uma pessoa nem sempre é um cliente.
O esquema que apresentamos é um passo a passo 
simplificado	de	como	encontrar	classes	no	sistema.	Podemos	
encorpar esse processo, fazendo uma análise dos papéis das 
prováveis	classes.	Existem	várias	 formas	de	classificar	esses	
papéis (das classes de análise). Uma delas é proposta por 
Pressman e Maxim (2016), e a descrevemos abaixo:
•	 entidades externas - produzem ou consomem 
informações a serem usadas pelo sistema (um 
grande exemplo são os sensores);
•	 coisas - itens que fazem parte do domínio de 
informações do problema (relatórios, sinais);
•	 eventos - situações que ocorrem durante a execução 
do sistema (chegada da encomenda);
•	 papéis - pessoas que desempenham funções no 
sistema (gerente);
•	 unidades organizacionais - setores relevantes para a 
organização (divisão);
•	 locais - estabelecem o contexto do problema (chão);
•	 estruturas	-	definem	uma	classe	de	objetos	ou	classes	
de objetos relacionados (computadores).
Além disso, os mesmos autores ressaltam que classes 
não são representadas por um nome procedural imperativo 
(um exemplo: inversão de imagem). Essas situações 
geralmente são entendidas como atributos de uma classe 
já existente.
Depois de catalogar os papéis, podemos fazer uma 
filtragem	para	verificar	quais	dos	substantivos	são	realmente	
classes ou não. Uma das formas é descrita por Coad e 
Yourdon. São elencadas seis condições para que um item seja 
aceito como uma classe. Sobre esses itens, descreveremos a 
19
seguir:
•	 Informações retidas. A classe em potencial 
será útil durante a análise apenas se as 
informações sobre ela tiverem de ser 
relembradas para que o sistema possa 
funcionar.
•	 Serviços necessários. A classe em potencial 
deve ter um conjunto de operações 
identificáveis	 capazes	 de	 modificar,	 de	
alguma forma, o valor de seus atributos.
•	 Atributos múltiplos. Durante a análise de 
requisitos, o foco deve ser nas informações 
“importantes”; uma classe com um único 
atributo poderia, na verdade ser útil 
durante o projeto; porém, provavelmente 
seria mais bem representada na forma de 
atributo de outra classe durante a atividade 
de análise.
•	 Atributos comuns. Um conjunto de atributos 
pode	 ser	 definido	 para	 a	 classe	 em	
potencial e esses atributos se aplicam a 
todas as instâncias da classe.
•	 Operações comuns. Um conjunto de 
operações	pode	ser	definido	para	a	classe	
em potencial e tais operações se aplicam a 
todas as instâncias da classe.
•	 Requisitos essenciais. Entidades externas 
que aparecem no espaço do problema e 
produzem ou consomem informações 
essenciais à operação de qualquer solução 
para o sistema, quase sempre serão 
definidas	 como	 classes	 no	 modelo	 de	
requisitos. (COAD, YOURDON; 1991 
apud PRESSMAN, MAXIM; 2016; p. 187)
•	 um cliente pode locar veículos, para isso, deve informar a sua 
CNH, seu RG, seu nome, seu endereço, seu CPF e seu número de 
dependentes;
•	 a locadora possui vários carros.	A	locadora	mantém	uma	ficha	
de cadastro dos carros, que inclui a placa do veículo, o nome, 
amarca, o modelo, o valor do seguro, o valor da locação e a sua 
cor. Sendo que o valor da locação do carro pode ser atualizado a 
qualquer momento.
•	 além disso, a locadora registra seus funcionários com os 
seguintes dados: CPF, RG, seu nome, seu endereço e seu cargo. 
Um funcionário pode ainda ser admitido ou demitido, para isso são 
registradas suas datas de admissão - contratação - e demissão.
•	 a locadora, além de realizar os cadastros, ela cadastra as locações 
de veículos. No momento da locação, a locadora registra o número 
do cliente e a placa do carro, além de atribuir a data da locação para 
o dia atual. No ato da devolução, o funcionário registra a data de 
devolução e a quilometragem percorrida, para que seja informado o 
preço a pagar pela locação.
•	 Qualquer funcionário pode registrar clientes, carros e locações. 
Mas, o funcionário na condição de supervisor é o único que tem a 
permissão de registrar e demitir funcionários - além de pode fazer o 
que um funcionário comum pode fazer.
•	 O funcionário deve estar cadastrado e logado para acessar os 
recursos do sistema.
Os itens sublinhados se referem a possíveis atributos e 
os itens em negrito a possíveis classes. Após uma análise, a 
analista criou o diagrama de classes a seguir:
Para facilitar seus estudos, vamos agora ver o que a 
analista do sistema da locadora fez para a modelagem de 
classes. Primeiro, ela analisou os requisitos preliminares do 
sistema, e sublinhou todas as palavras que interessaram:
Figura 1 - Diagrama de Classes de análise. Fonte: acervo Pessoal.
Engenharia de Requisitos 20
1.2 - Modelagem CRC
Desenvolvido por Rebecca Wirfs-Brock, a modelagem 
CRC (Classe-Responsabilidade-Colaborador) é uma técnica 
que	consiste	em	modelar	em	fichas	reais	as	classes	do	sistema	
e suas responsabilidades e colaborações. Nessa técnica deve 
se atentar a alguns detalhes:
•	 Cada	 classe	 do	 sistema	 representa	 uma	 ficha,	
podendo	 ser	 real	 (uma	ficha	 especificamente	 feita	
para isso, uma folha pautada dividida em duas, um 
post-it) ou virtual (veja nas nossas recomendações 
os sites “Criador de Cartão CRC” e “CRC Card 
Maker”. Você pode criá-los em um programa de 
fichas	eletrônicas	ou	em	um	programa	de	planilhas	
eletrônicas);
•	 Cada classe recebe um nome, uma descrição 
(colocada abaixo do nome da classe) e opcionalmente 
uma indicação de sua superclasse;
•	 Abaixo	 da	 descrição,	 a	 ficha	 é	 dividida	 em	 duas	
partes.	 Na	 parte	 esquerda	 da	 ficha	 ficam	 as	
responsabilidades da classe, e na parte da direita são 
elencados os colaboradores da classe;
•	 Responsabilidade é qualquer coisa que a classe saiba 
ou faz. Nessa parte são elencados itens que darão 
origem aos atributos (o que ela sabe) e os métodos 
(o que ela faz);
•	 Colaboradores são outras classes que fornecem 
informações que serão úteis para que a classe realize 
suas responsabilidades. Também pode ser classes 
que executa ações a pedido da classe.
Lee e Tepfenhart (2002) elencam as etapas que são 
realizadas na versão clássica, descritas a seguir:
•	 Em um cartão CRC, documente o nome da classe e 
liste as responsabilidades e os colaboradores;
•	 Identifique	objetos	e	classes	ausentes	que	deverão	
ser acrescentados ao conjunto de cartões existentes. 
Principalmente, procure responsabilidades que 
não podem ser alocados às classes já existentes e 
colaboradores que ainda não foram designados para 
uma classe. Essa revisão pode ser feita analisando os 
casos de uso em grupos.
A seguir, reproduziremos um modelo de cartão CRC, 
representando a classe Carro, do sistema da locadora.
Classe: Carro
Descrição: Define	um	carro	a	ser	locado	na	empresa
responsabilidades Colaboradores
Sabe	o	número	da	placa
Tem um nome, modelo, cor e marca
Tem um valor do seguro
Define	o	valor	da	locação
Figura 2 - Cartão CrC da classe Carro. Fonte: acervo Pessoal.
Na próxima seção, vamos estudar como funciona a 
modelagem comportamental do sistema. 
2 - Modelagem de Comportamento
Você viu em nossos últimos conteúdos como fazer a 
modelagem de cenários e de classes. Esses dois aspectos são 
denominados de aspectos estáticos do sistema. Mas muitos 
sistemas também possuem comportamentos dinâmicos. 
Assim, temos o modelo comportamental, que consiste em 
representar esse aspecto dinâmico do sistema.
Esse aspecto está relacionado aos estados onde um 
objeto de uma determinada classe vai passar no decorrer 
do seu ciclo de vida. Assim, as saídas desse processo de 
modelagem são diagramas de estado e diagramas de sequência 
(se for necessário).
Para detectarmos comportamento, seguimos os seguintes 
passos indicados por Pressman e Maxim (2016):
•	 avaliar os casos de uso para entender a sequência de 
interação do sistema;
•	 identificar	 eventos	 que	 controlam	 a	 sequência	 de	
interação do sistema e entender como esses eventos 
se	relacionam	com	objetos	específicos;
•	 criar uma sequência para cada caso de uso;
•	 criar um diagrama de estado para o sistema;
•	 examinar	o	modelo	comportamental	para	verificar	
exatidão e consistência.
Para ilustrar isso, vamos fazer um estudo do modelo 
comportamental para o nosso caso de uso da locadora. Após 
uma análise de todos os casos de uso e do entendimento das 
interações, a analista da empresa selecionou alguns trechos de 
alguns casos de uso do sistema, que reproduziremos a seguir:
Caso de Uso: cadastrar o carro
(...)	uma	vez	finalizado	o	cadastro	do	veículo,	o mesmo passa a estar 
disponível para futuras locações.
Caso de Uso: realizar locação
(...) o carro passa a ser marcado como indisponível e a locação é 
realizada.
Caso de Uso: finalizar Locação
Quando	o	funcionário	confirmar	a	operação,	o	valor	final	é	calculado	e	
o carro passa a ser marcado como disponível para uma nova locação.
Com isso, podemos ver que temos delineado certo 
conjunto de estados do sistema. E podemos ver que:
•	 quando um carro é cadastrado, o carro passa a ser 
disponível;
•	 quando uma locação é feita, o carro passa a estar 
indisponível;
•	 quando uma locação é encerrada, o carro passa a 
estar disponível novamente.
Podemos,	então,	afirmar	que	temos	um	ciclo	de	estados	
definidos	para	a	classe	Carro.	O	passo	seguinte	seria	a	criação	
de um diagrama de estados para esta classe, que reproduzimos 
a seguir. Note que criamos dois estados adicionais - “Cadastrar 
o Carro” e “Carro Indisponível”.
21
Figura 3 - Diagrama de estados da classe Carro. Fonte: acervo Pessoal.
Com isso, vimos os três aspectos que devem ser levados 
em conta na modelagem de requisitos. Mas existem certos 
sistemas, com outras particularidades e necessidades, que 
devem ser levadas em conta na modelagem de requisitos. 
Veremos sobre eles a seguir.
3 - Aspectos relacionados à 
modelagem de requisitos para 
aplicativos Web e aplicativos móveis
Nos últimos anos, com a expansão da Internet e a 
popularização dos smartphones, cresceu o número de softwares 
que são executados em navegadores (aplicações Web) e em 
dispositivos (denominados de aplicações móveis).
 Não houve somente crescimento, houve também 
uma	diversificação	nas	funções	desses	programas.	Agora	um	
usuário pode fazer quase tudo nessas plataformas.
 Com isso, pesquisadores que atuam na Engenharia 
de Software passaram a investigar como funciona a 
modelagem de requisitos para o desenvolvimento de 
aplicativos nessas plataformas. E, durante essa investigação, 
algumas peculiaridades foram descobertas. Nessa seção, 
vamos descrever quais são essas peculiaridades.
3.1 - Entrada e análise dos requisitos
Pressman	e	Maxim	(2016)	afirmam	que	dependendo	de	
onde o sistema será utilizado, uma descrição informal dos 
requisitos	 não	 é	 suficiente	 para	 caracterizar	 um	modelo	 de	
sistema. Nessas situações, eles recomendam que seja feita uma 
análise detalhada de cada caso deuso. Deve-se procurar por 
situações que não foram previstas, mas são importantes como: 
detalhes técnicos, comportamento inesperado, informações 
adicionais, layout dos botões, posicionamento etc.
Assim, deve-se atentar à seguinte pergunta: “Você 
entendeu todos os requisitos do problema?”. Se a resposta for 
não, é necessário mais trabalho para o entendimento desses 
requisitos. Vale lembrar que a descrição dos requisitos deve ser 
completa	o	suficiente	para	conduzir	o	projeto	sem	erros,	pois	
os custos de correção crescem à medida que o projeto avança.
3.2 - Saída da modelagem de 
requisitos
Devido às peculiaridades que existem nos aplicativos 
móveis e Web, existem mais aspectos que devem 
ser considerados na modelagem de requisitos (não 
desconsiderando os três aspectos tradicionais). Assim, são 
propostos outros modelos que devem ser levados em conta 
na modelagem de requisitos. Eles serão descritos a seguir:
Modelo de Conteúdo
Esse	modelo	 tem	como	função	“identificar	o	espectro	
completo do conteúdo a ser fornecido pela aplicação” 
(PRESSMAN; MAXIM, 2016; p. 215). Esse “conteúdo” 
pode ser entendido como qualquer item multimídia, como 
textos,	gráficos,	imagens	vídeos	etc.
Esse modelo contém elementos que dão uma visão 
de qual conteúdo deve ser colocado em uma aplicação. Ela 
relaciona os objetos de conteúdo com classes de análise (que 
são todas as entidades visíveis aos usuários, ou que são criadas 
e/ou manipuladas no decorrer do uso do sistema).
Objetos de conteúdo podem ser entendidos como 
algum elemento (implícito) que represente uma informação 
sobre algum outro elemento do software. Podemos citar como 
exemplos:
•	 uma foto em uma notícia;
•	 uma resposta em um fórum;
•	 um comentário em um texto etc.
Assim, o modelo de conteúdo serve para descrever as 
informações que estão agregadas a um objeto. Podemos 
descrevê-los através de uma lista simples, ou por um diagrama 
de árvore de dados (não é um diagrama da UML). Nesse 
exemplo, temos uma árvore de dados mostrando os dados 
que são agregados de um componente a venda de um site de 
segurança eletrônica.
Figura 4 - Exemplo de Árvore de Dados. Fonte: adaptado de PrESSMan, MaXiM; 
2016; p. 217.
Modelo de interação
Esse modelo tem como função descrever “a maneira 
como os usuários interagem com a aplicação” (PRESSMAN; 
MAXIM, 2016, p. 215). Assim, podemos entender como 
a descrição da interação do usuário com o sistema. Podem 
ser constituídos por meio de casos de uso, diagramas de 
sequência, diagrama de estados e protótipos.
Na maioria das vezes, um conjunto de casos de uso 
(criados através da modelagem baseada em cenários) já é 
suficiente.	Mas,	 se	 a	 interação	 for	 complexa,	 é	 importante	
aprofundar na elaboração desse modelo. 
Assim, podem ser criados protótipos demonstrando a 
interface do sistema, que será apresentado ao usuário. Muitas 
vezes um simples wireframe resolve.
Engenharia de Requisitos 22
•	 hierarquia de navegação;
•	 facilidade de acesso;
•	 tratamento de possíveis erros de navegação;
•	 como é obtida a navegação;
•	 otimização de navegação;
•	 como é apresentada a navegação;
•	 necessidade de apresentação prévia da navegação;
•	 entre outros aspectos.
Assim, terminamos a nossa aula e a parte de modelagem 
de requisitos. A seguir, vamos iniciar nossos estudos sobre 
Projeto de Software.
Retomando a aula
Chegamos	ao	final	da	terceira	aula.	Vamos	recordar	
os pontos principais?
1 - Modelagem baseada em Classes
Nessa seção, aprendemos como funciona a modelagem 
de	 classes.	 Usamos	 como	 base	 as	 especificações	 escritas,	
procurando verbos, substantivos e adjetivos para caracterizar 
os	possíveis	 itens	do	sistema.	Depois,	 refinamos,	com	base	
em vários métodos já feitos, para criar as classes de análise.
2 - Modelagem de Comportamento
Está relacionado aos estados onde um objeto de uma 
determinada classe vai passar no decorrer do seu ciclo de vida. 
Assim, as saídas desse processo de modelagem são diagramas 
de estado e diagramas de sequência. Seu procedimento 
envolve a análise de casos de uso, em busca de eventos.
3 - Aspectos relacionados a modelagem de requisitos 
para aplicativos Web e aplicativos móveis
Vimos que, devido às particularidades envolvidas 
nas aplicações Web e nos aplicativos móveis, existem mais 
alguns aspectos que devem ser considerados no projeto de 
software. Esses aspectos são o Modelo de Conteúdo, Modelo 
de	Interação,	Modelo	Funcional,	Modelo	de	Configuração	e	
Modelo de Navegação.
Vale a pena
DEBASTIANI, Carlos Alberto. Definindo Escopo em 
Projetos de Software. São Paulo: Novatec, 2015.
ENGHOLM JR, Hélio. Engenharia de Software na Prática. 
São Paulo: Novatec, 2010.
PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia 
de Software:	Uma	abordagem	profissional.	8	ed.	Porto	Alegre:	
Bookman, 2016. 
SOMMERVILLE, Ian. Engenharia de Software. 9 ed. São 
Paulo: Pearson, 2011.
Vale a pena ler
Wireframe
Wireframe é um esqueleto da interface que será implementada no 
programa. É um desenho bastante simples, onde o projetista não se 
atenta a detalhes de implementação, como cores, textos etc. É uma das 
ferramentas mais baratas para elaboração de protótipos de interfaces, 
pois você pode usar apenas papel e lápis para construir esses esboços.
Figura 5 - Exemplo de Wireframe de um site de um perfil de uma pessoa. Fonte: 
Disponível em: <https://pt.wikipedia.org/wiki/Website_wireframe#/media/
File:Profilewireframe.png>. Acesso em 08 mar. 2018.
Você	 pode	 usar	 também	 especificações	 mais	 completas,	 como	
veremos nas aulas posteriores.
Modelo funcional
Esse	 modelo	 se	 preocupa	 em	 definir	 “as	 operações	
que serão aplicadas para manipular o conteúdo e descreve 
outras funcionalidades de processamento, independentes do 
conteúdo, mas necessárias para o usuário” (PRESSMAN; 
MAXIM, 2016; p. 216). 
Assim, esse modelo trata em descrever as operações (assim 
como	as	 restrições	e	 as	 especificações)	que	 serão	executadas	
pelas funções disponibilizadas no sistema e as funções que serão 
usadas para compor o comportamento das classes de análise. 
Podemos usar um diagrama de atividades para representar 
detalhes do processamento a ser executado.
Modelo de Configuração
Esse	 modelo	 define	 o	 ambiente	 e	 a	 infraestrutura	 na	
qual a aplicação reside. Consiste na descrição da arquitetura 
onde	o	sistema	será	executado,	e	em	detalhes	de	configuração	
do sistema (por exemplo: sistema operacional, versão do 
banco	de	dados,	configuração	de	leitura	e	escrita	das	pastas,	
quantidade de memória disponível etc.).
Modelo de Navegação
Por	 fim,	 o	 modelo	 de	 navegação	 é	 a	 descrição	 da	
estratégia	 geral	 de	 navegação.	Nele,	 são	 definidos	 aspectos	
referentes à navegação, como:
23
CHEUNG, Eugene. CRC Card Maker. Disponível em: 
<https://echeung.me/crcmaker/>. Acesso em: 08 mar. 
2018.
FIRPO, Fernando. Custo de erros em projetos de 
desenvolvimento de software. [S.l.]: Análise de Requisitos, 2011. 
Disponível em: <http://analiserequisitos.blogspot.com.
br/2011/07/custo-de-erros-em-projetos-de.html>. Acesso 
em: 08 mar. 2018.
UEDA, Larissa Yuri. Criador de Cartão CRC. Disponível 
em: <http://www.inf.ufpr.br/andrey/ci162/crc/>. Acesso 
em: 08 mar. 2018.
ZEMEL, Tárcio. Wireframes para Web: Guia completo 
de desenvolvimento. [S.l.]: DPW, 2011. Disponível em: 
<http://desenvolvimentoparaweb.com/ux/wireframe-
web-guia-completo/>. Acesso em: 08 mar. 2018.
Vale a pena acessar
Minhas anotações

Continue navegando