Escolar Documentos
Profissional Documentos
Cultura Documentos
Engenharia de Software
Notas de Aula
PARTE II
NDICE
Organizao do Texto .............................................................................................................. 4
Captulo 5 Especificao e Anlise de Requisitos .............................................................. 5
5.1 Engenharia de Requisitos de Software .......................................................................... 5
5.1.1 - Requisito e Tipos de Requisitos .............................................................................. 5
5.1.2 - O Processo da Engenharia de Requisitos ................................................................ 6
5.2 O Paradigma Orientado a Objetos ................................................................................. 8
5.2.1 Princpios para Administrao da Complexidade .................................................. 8
5.2.2 Principais Conceitos da Orientao a Objetos ..................................................... 11
5.3 - Levantamento e Registro de Requisitos ....................................................................... 15
5.3.1 O Documento de Requisitos .................................................................................... 16
Escrevendo Requisitos Funcionais ............................................................................... 18
Escrevendo Requisitos No Funcionais ....................................................................... 19
Escrevendo Regras de Negcio .................................................................................... 20
5.3.3 O Documento de Especificao de Requisitos ..................................................... 23
5.4 Modelagem de Casos de Uso ........................................................................................ 25
5.4.1 Atores ...................................................................................................................... 26
5.4.2 Casos de Uso ........................................................................................................ 27
5.4.3 - Diagramas de Casos de Uso .................................................................................. 28
5.4.4 - Descrevendo Casos de Uso ................................................................................... 30
5.4.5 Descrevendo os Fluxos de Eventos ...................................................................... 32
5.4.6 Descrevendo Informaes Complementares ........................................................ 39
5.4.7 - Relacionamentos entre Casos de Uso ................................................................... 40
Incluso ........................................................................................................................ 40
Extenso ....................................................................................................................... 43
Generalizao / Especializao ................................................................................... 46
Diretrizes para o Uso dos Tipos de Relacionamentos entre Casos de Uso ................. 48
5.5 Modelagem Conceitual Estrutural ............................................................................... 49
5.5.1 Identificao de Classes .......................................................................................... 50
5.5.2 - Identificao de Atributos e Associaes ............................................................. 53
Atributos ....................................................................................................................... 54
Associaes .................................................................................................................. 57
5.5.3 Especificao de Hierarquias de Generalizao / Especializao ........................ 66
5.6 - Modelagem Dinmica .................................................................................................. 68
5.6.1 Diagrama de Estados ............................................................................................ 69
Captulo 6 Projeto de Sistemas .......................................................................................... 82
6.1 Aspectos Relevantes ao Projeto de Software ................................................................. 83
6.1.1 Qualidade do Projeto de Software ........................................................................... 84
6.1.2 Arquitetura de Software .......................................................................................... 85
6.1.3 Padres (Patterns) ................................................................................................... 88
6.1.4 Documentao de Projeto........................................................................................ 89
6.2 Projetando a Arquitetura de Software ............................................................................ 90
Organizao do Texto
Este material parte integrante das Notas de Aula da disciplina Engenharia de Software,
as quais encontram-se divididas em duas partes.
Na Parte I foram abordados o processo de software em si e as atividades de
gerncia de projetos e de garantia da qualidade. Os captulos da Parte I so:
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
as funes oferecidas, tais como restries de tempo, de uso de recursos etc. Alguns
requisitos no funcionais dizem respeito ao sistema como um todo e no a
funcionalidade especfica. Dependendo da natureza, os requisitos no funcionais podem
ser classificados de diferentes maneiras, tais como requisitos de desempenho, requisitos
de portabilidade, requisitos legais, requisitos de conformidade etc (SOMMERVILLE,
2007).
5.1.2 - O Processo da Engenharia de Requisitos
O processo de descobrir, analisar, documentar e verificar / validar requisitos
chamado de processo de engenharia de requisitos (SOMMERVILLE, 2007). Os
processos de engenharia de requisitos variam muito de uma organizao para outra,
mas, de maneira geral, a maioria dos processos de Engenharia de Requisitos composta
das seguintes atividades (TOGNERI, 2002):
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
Mapa Rodovirio
So Paulo
Mapa de Temperaturas
10
Encapsulamento
No mundo real, um objeto pode interagir com outro sem conhecer seu
funcionamento interno. Uma pessoa, por exemplo, utiliza um forno de microondas sem
saber efetivamente qual a sua estrutura interna ou como seus mecanismos internos so
ativados. Para utiliz-lo, basta saber usar seu painel de controle (a interface do aparelho)
para realizar as operaes de ligar/desligar, informar o tempo de cozimento etc. Como
essas operaes produzem os resultados, no interessa ao cozinheiro. A Figura 5.2
ilustra o conceito de encapsulamento.
Estrutura Interna
Interface
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
11
Modularidade
Os mtodos de desenvolvimento de software buscam obter sistemas modulares,
isto , construdos a partir de elementos que sejam autnomos e conectados por uma
estrutura simples e coerente. Modularidade visa obteno de sistemas decompostos
em um conjunto de mdulos coesos e fracamente acoplados e crucial para se obter
reusabilidade e facilidade de extenso.
Abstrao, encapsulamento e modularidade so princpios sinergticos, isto , ao
se trabalhar bem com um deles, esto-se aperfeioando os outros tambm.
5.2.2 Principais Conceitos da Orientao a Objetos
De maneira simples, o paradigma OO traz uma viso de mundo em que os
fenmenos e domnios so vistos como colees de objetos interagindo entre si. Essa
forma simples de se colocar a viso do paradigma OO esconde conceitos importantes da
orientao a objetos que so a base para o desenvolvimento OO, tais como classes,
associaes, generalizao etc. A seguir os principais conceitos da orientao a objetos
so discutidos.
Objetos
O mundo real povoado por entidades que interagem entre si, onde cada uma
delas desempenha um papel especfico. Na orientao a objetos, essas entidades so
ditas objetos. Objetos podem ser coisas concretas ou abstratas, tais como um carro, uma
reserva de passagem area, uma organizao etc.
Do ponto de vista da modelagem de sistemas, um objeto uma entidade que
incorpora uma abstrao relevante no contexto de uma aplicao. Um objeto possui um
estado (informao), exibe um comportamento bem definido (dado por um nmero de
operaes para examinar ou alterar seu estado) e tem identidade nica.
O estado de um objeto compreende o conjunto de suas propriedades, associadas
a seus valores correntes. Propriedades de objetos so geralmente referenciadas como
atributos e associaes. Portanto, o estado de um objeto diz respeito aos seus
atributos/associaes e aos valores a eles associados.
A abstrao incorporada por um objeto caracterizada por um conjunto de
servios ou operaes que outros objetos, ditos clientes, podem requisitar. Operaes
so usadas para recuperar ou manipular a informao de estado de um objeto e se
referem apenas s estruturas de dados do prprio objeto, no devendo acessar
diretamente estruturas de outros objetos. Caso a informao necessria para a realizao
de uma operao no esteja disponvel, o objeto ter de colaborar com outros objetos.
A comunicao entre objetos d-se por meio de troca de mensagens. Para
requisitar uma operao de um objeto, necessrio enviar uma mensagem para ele.
Uma mensagem consiste do nome da operao sendo requisitada e os argumentos
requeridos. Assim, o comportamento de um objeto representa como esse objeto reage s
mensagens a ele enviadas. Em outras palavras, o conjunto de mensagens a que um
objeto pode responder representa o seu comportamento. Um objeto , pois, uma
entidade que tem seu estado representado por um conjunto de atributos (uma estrutura
de informao) e seu comportamento representado por um conjunto de operaes.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
12
Cada objeto tem uma identidade prpria, que lhe inerente. Todos os objetos
tm existncia prpria, ou seja, dois objetos so distintos, mesmo se seus estados e
comportamentos forem iguais. A identidade de um objeto transcende os valores
correntes de suas propriedades.
Classes
No mundo real, diferentes objetos desempenham um mesmo papel. Seja o caso
de duas cadeiras. Apesar de serem objetos diferentes, elas compartilham uma mesma
estrutura e um mesmo comportamento. Entretanto, no h necessidade de se despender
tempo modelando cada cadeira. Basta definir, em um nico lugar, um modelo
descrevendo a estrutura e o comportamento desses objetos. A esse modelo d-se o nome
de classe. Uma classe descreve um conjunto de objetos com as mesmas propriedades
(atributos e associaes), o mesmo comportamento (operaes) e a mesma semntica.
Objetos que se comportam da maneira especificada pela classe so ditos instncias
dessa classe.
Todo objeto pertence a uma classe, ou seja, instncia de uma classe. De fato, a
orientao a objetos norteia o processo de desenvolvimento atravs da classificao de
objetos, isto , objetos so agrupados em classes, em funo de exibirem facetas
similares, sem, no entanto, perda de sua individualidade, como ilustra a Figura 5.3.
Assim, do ponto de vista estrutural, a modelagem orientada a objetos consiste,
basicamente, na definio de classes. O comportamento e a estrutura de informao de
uma instncia so definidos pela sua classe.
Objetos com propriedades e comportamento idnticos so descritos como
instncias de uma mesma classe, de modo que a descrio de suas propriedades possa
ser feita uma nica vez, de forma concisa, independentemente do nmero de objetos que
tenham tais propriedades em comum. Deste modo, uma classe captura a semntica das
caractersticas comuns a todas as suas instncias.
Enquanto um objeto individual uma entidade real, que executa algum papel no
sistema como um todo, uma classe captura a estrutura e comportamento comum a todos
os objetos que ela descreve. Assim, uma classe serve como uma espcie de contrato que
deve ser estabelecido entre uma abstrao e todos os seus clientes.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
Ligaes e Associaes
Em qualquer sistema, objetos relacionam-se uns com os outros. Por exemplo, em
o empregado Joo trabalha no Departamento de Pessoal, temos um relacionamento
entre o objeto empregado Joo e o objeto Departamento de Pessoal.
Ligaes e associaes so meios de se representar relacionamentos entre
objetos e entre classes, respectivamente. Uma ligao uma conexo entre objetos. No
exemplo anterior, h uma ligao entre os objetos Joo e Departamento de Pessoal.
Uma associao, por sua vez, descreve um conjunto de ligaes com estrutura e
semntica comuns. No exemplo anterior, h uma associao entre as classes Empregado
e Departamento. Todas as ligaes de uma associao interligam objetos das mesmas
classes e, assim, uma associao descreve um conjunto de potenciais ligaes da mesma
maneira que uma classe descreve um conjunto de potenciais objetos (BLAHA;
RUMBAUGH, 2006).
Uma associao comum entre duas classes representa um relacionamento
estrutural entre pares, significando que essas duas classes esto em um mesmo nvel,
sem que uma seja mais importante do que a outra. Alm das associaes comuns, a
UML considera dois tipos de associaes especiais entre objetos: composio e
agregao. Ambos representam relaes todo-parte. A agregao uma forma especial
de associao que especifica um relacionamento entre um objeto agregado (o todo) e
seus componentes (as partes). A composio, por sua vez, uma forma de agregao na
qual o tempo de vida entre todo e partes coincidente. As partes podem at ser criadas
aps a criao do todo, mas uma vez criadas, vivem e morrem com o todo. Uma parte
pode ainda ser removida explicitamente antes da morte do todo (BOOCH;
RUMBAUGH; JACOBSON, 2006).
Generalizao / Especializao
Muitas vezes, um conceito geral pode ser especializado, adicionando-se novas
caractersticas. Seja o exemplo do conceito de estudante no contexto de uma
universidade. De modo geral, h caractersticas que so intrnsecas a quaisquer
estudantes da universidade. Entretanto, possvel especializar este conceito para
mostrar especificidades de subtipos de estudantes, tais como estudantes de graduao e
estudantes de ps-graduao.
Da maneira inversa, pode-se extrair de um conjunto de conceitos, caractersticas
comuns que, quando generalizadas, formam um conceito geral. Por exemplo, ao se
avaliar os conceitos de carros, motos, caminhes e nibus, pode-se notar que eles tm
caractersticas comuns que podem ser generalizadas em um supertipo veculo automotor
terrestre.
As abstraes de especializao e generalizao so muito teis para a
estruturao de sistemas. Com elas, possvel construir hierarquias de classes. A
herana um mecanismo para modelar similaridades entre classes, representando as
abstraes de generalizao e especializao. Atravs da herana, possvel tornar
explcitos propriedades e operaes comuns em uma hierarquia de classes. O
mecanismo de herana possibilita reutilizao, captura explcita de caractersticas
comuns e definio incremental de classes.
No que se refere definio incremental de classes, a herana permite conceber
uma nova classe como um refinamento de outras classes. A nova classe pode herdar as
similaridades e definir apenas as novas caractersticas.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
14
O termo caracterstica usado aqui para designar estrutura (atributos e associaes) e comportamento
(operaes).
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
15
Classes abstratas podem ser projetadas de duas maneiras distintas. Primeiro, elas
podem prover implementaes completamente funcionais do comportamento que
pretendem capturar. Alternativamente, elas podem prover apenas definio de um
protocolo para uma operao sem apresentar um mtodo correspondente. Tal operao
dita uma operao genrica ou abstrata. Neste caso, a classe abstrata no
completamente implementada e todas as suas subclasses concretas so obrigadas a
prover uma implementao para suas operaes abstratas. Assim, diz-se que uma
operao abstrata define apenas a assinatura2 a ser usada nas implementaes que as
subclasses devero prover, garantindo, assim, uma interface consistente. Mtodos que
implementam uma operao genrica tm a mesma semntica.
Uma classe concreta no pode conter operaes abstratas, porque seno seus
objetos teriam operaes indefinidas. Analogamente, toda classe que possuir uma
operao genrica no pode ter instncias diretas e, portanto, obrigatoriamente uma
classe abstrata.
16
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
17
Descrio
Origem
Prioridade
Responsvel
Interessados
Dependncias
Conflitos
Prefira a voz ativa (o sistema deve fazer alguma coisa) voz passiva (alguma
coisa deve ser feita).
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
18
19
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
21
Tratamento
Prioritrio
Sem atraso de
pagamento
registrado
Volume de
negcios
R$ 1 milho
Tempo de
trabalho
20 anos
Com atraso
de pagamento
registrado
Prioritrio
Tempo de
trabalho <
20 anos
Volume de
negcios <
R$ 1 milho
Normal
Normal
Tratamento de Clientes
Volume de Negcios R$ 1 milho?
Tratamento Prioritrio
X
X
Tratamento Normal
Figura 5.5 Exemplo de Tabela de Deciso.
Percentual de Desconto
1a9
10 a 19
10%
20 ou mais
25%
22
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
23
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
24
Neste material, no que diz respeito modelagem dinmica, sero abordados apenas os diagramas de
estados.
4
A UML uma linguagem grfica padro para especificar, visualizar, documentar e construir artefatos
de sistemas de software (BOOCH; RUMBAUGH; JACOBSON, 2006). Tipicamente, a linguagem
utilizada na criao dos modelos gerados durante as etapas de especificao e anlise de requisitos e
projeto de sistema.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
25
Algum ou algo com interesse no comportamento do sistema sob discusso (COCKBURN, 2005).
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
5.4.1 Atores
D-se nome de ator a um papel desempenhado por entidades fsicas (pessoas,
organizaes ou outros sistemas) que interagem com o sistema em questo da mesma
maneira, procurando atingir os mesmos objetivos. Uma mesma entidade fsica pode
desempenhar diferentes papis no mesmo sistema, bem como um dado papel pode ser
desempenhado por diferentes entidades (OLIV, 2007).
Atores so externos ao sistema. Um ator se comunica diretamente com o
sistema, mas no parte dele. A modelagem dos atores ajuda a definir as fronteiras do
sistema, isto , o conjunto de atores de um sistema delimita o ambiente externo desse
sistema, representando o conjunto completo de entidades para as quais o sistema pode
servir (BLAHA; RUMBAUGH, 2006; OLIV, 2007).
Uma dvida que sempre passa pela cabea de um iniciante em modelagem de
casos de uso saber se o ator a pessoa que efetivamente opera o sistema (p.ex., o
atendente de uma locadora de automveis) ou se a pessoa interessada no resultado do
processo (p.ex., o cliente que efetivamente loca o automvel e atendido pelo
atendente). Essa definio depende, em essncia, da fronteira estabelecida para o
sistema. Sistemas de informao podem ter diferentes nveis de automatizao. Por
exemplo, se um sistema roda na Internet, seu nvel de automatizao maior do que se
ele requer um operador. Assim, importante capturar qual o nvel de automatizao
requerido e levar em conta o real limite do sistema (WAZLAWICK, 2004). Se o caso de
uso roda na Internet (p.ex., um caso de uso de reserva de automvel), ento o cliente o
ator efetivamente. Se o caso de uso requer um operador (p.ex., um caso de uso de
locao de automvel, disponvel apenas na locadora e para ser usado por atendentes),
ento o operador o ator.
Quando se for considerar um sistema como sendo um ator, deve-se tomar o
cuidado para no confundir a ideia de sistema externo (ator) com produtos usados na
implementao do sistema em desenvolvimento. Para que um sistema possa ser
considerado um ator, ele deve ser um sistema de informao completo (e no apenas
uma biblioteca de classes, por exemplo). Alm disso, ele deve estar fora do escopo do
desenvolvimento do sistema atual. O analista no ter a oportunidade de alterar as
funes do sistema externo, devendo adequar a comunicao s caractersticas do
mesmo (WAZLAWICK, 2004).
Um ator primrio um ator que possui metas a serem cumpridas atravs do uso
de servios do sistema e que, tipicamente, inicia a interao com o sistema (OLIV,
2007). Um ator secundrio um ator externo que interage com o sistema para prover
um servio para este ltimo. A identificao de atores secundrios importante, uma
vez que ela permite identificar interfaces externas que o sistema usar e os protocolos
que regem as interaes ocorrendo atravs delas (COCKBURN, 2005).
De maneira geral, o ator primrio o usurio direto do sistema ou outro sistema
computacional que requisita um servio do sistema em desenvolvimento. O sistema
responde requisio procurando atend-la, ao mesmo tempo em que protege os
interesses de todos os demais interessados no caso de uso. Entretanto, h situaes em
que o iniciador do caso de uso no o ator primrio. O tempo, por exemplo, pode ser o
acionador de um caso de uso. Um caso de uso que roda todo dia meia noite ou ao final
do ms tem o tempo como acionador. Mas o caso de uso ainda visa atingir um objetivo
de um ator e esse ator considerado o ator primrio do caso de uso, ainda que ele no
interaja efetivamente com o sistema (COCKBURN, 2005).
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
27
Esta regra tem como exceo os casos de uso de incluso e extenso, conforme discutido mais adiante
na seo que trata de relacionamentos entre casos de uso.
7
As mesmas excees da nota anterior se aplicam aqui, conforme discutido mais adiante.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
29
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
30
31
Escopo: diz respeito ao que est sendo documentado pelo caso de uso.
Tipicamente pode ser um processo de negcio, um sistema ou um
subsistema. Vale lembrar que este texto no aborda a utilizao de casos de
uso para a modelagem de processos de negcio. Assim, o escopo vai apontar
o sistema / subsistema do qual o caso de uso faz parte.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
33
So as seguintes as descries dos requisitos listados: RF01 O sistema de caixa automtico deve
permitir que clientes efetuem saques em dinheiro; RN01 No devem ser permitidas transaes que
deixem a conta do cliente com saldo inferior ao de seu limite de crdito; RNF01 O sistema de caixa
automtico deve estar integrado ao sistema bancrio; RNF02 As operaes realizadas no caixa
automtico devem dar respostas em at 10s a partir da entrada de dados.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
Em sistemas de mdio a grande porte, pode ser til considerar a fuso de casos
de uso fortemente relacionados em um nico caso de uso, contendo mais de um fluxo de
eventos normal. Em muitos sistemas necessrio dar ao usurio a possibilidade de
cancelar ou alterar dados de uma transao efetuada anteriormente com sucesso. Se
cada uma dessas possibilidades for considerada como um caso de uso isolado, o nmero
de casos de uso pode crescer demasiadamente, aumentando desnecessariamente a
complexidade do modelo de casos de uso. Alm disso, o fluxo de eventos normal de um
caso de uso desse tipo tende a ser muito simples, no justificando documentar todo um
conjunto de informaes para adicionar apenas duas ou trs linhas descrevendo os
passos do caso de uso. Assim, em situaes dessa natureza, interessante considerar
apenas um caso de uso, contendo diversos fluxos de eventos principais. Essa abordagem
bastante recomendada para casos de uso cadastrais, em que um nico caso de uso
inclui fluxos de eventos normais para criar, alterar, consultar e excluir entidades.
Fluxos de eventos normais podem ser descritos de diferentes maneiras,
dependendo do nvel de formalidade que se deseja para as descries. Dentre os
formatos possveis, h dois principais:
Cada exceo deve ser tratada por um fluxo alternativo de exceo. Fluxos
alternativos de exceo devem ser descritos contendo as seguintes informaes
(WAZLAWICK, 2004): um identificador, uma descrio sucinta da exceo que
ocorreu, os passos para tratar a exceo (aes corretivas) e uma indicao de como o
caso de uso retorna ao fluxo principal (se for o caso) aps a execuo das aes
corretivas.
Quando um formato de descrio enumerado utilizado, no necessrio
colocar uma verificao como uma condicional no fluxo principal. Por exemplo, no
caso da Figura 5.12, o passo 3 no deve ser escrito como 3. Se o carto vlido, o
caixa automtico solicita que o cliente informe a senha.. Basta o fluxo alternativo, no
exemplo, o fluxo 2a.
Ainda quando o formato de descrio enumerado utilizado, o identificador da
exceo deve conter a linha do fluxo de eventos principal (ou eventualmente de algum
outro fluxo de eventos alternativo) no qual a exceo ocorreu e uma letra para
identificar a prpria exceo (WAZLAWICK, 2004), como ilustra o exemplo da Figura
5.12.
Uma informao que precisa estar presente na descrio de um fluxo de eventos
de exceo diz respeito a como finalizar o tratamento de uma exceo. Wazlawick
(2004) aponta quatro formas bsicas para finalizar o tratamento de uma exceo:
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
35
Voltar para algum um passo posterior. Esta situao ocorre quando as aes
corretivas realizam o trabalho que o passo (ou a sequncia de passos)
posterior deveria executar. Neste caso, importante verificar se novas
excees no poderiam ocorrer.
36
uso e indicam formas diferentes, mas igualmente normais, de se realizar uma certa
poro de um caso de uso. Seja o caso de um sistema de um supermercado, mais
especificamente um caso de uso para efetuar uma compra. Um passo importante desse
caso de uso a realizao do pagamento, o qual pode se dar de trs maneiras distintas:
pagamento em dinheiro, pagamento em cheque, pagamento em carto. Nenhuma dessas
formas de pagamento constitui uma exceo. So todas maneiras diferentes, mas
normais, de realizar um certo passo do caso de uso e, portanto, pode-se dizer que o
fluxo principal possui trs variaes. A descrio de um fluxo variante deve conter: um
identificador, uma descrio sucinta do passo especializado e os passos enumerados,
como ilustra a Figura 5.13.
Nome: Efetuar Compra
Fluxo de Eventos Normal
...
1. De posse do valor a ser pago, o atendente informa a forma de pagamento.
2. Efetuar o pagamento:
2a. Em dinheiro
2b. Em cheque
2c. Em carto
3. O pagamento registrado.
Fluxos de Eventos Variantes
2a Pagamento em Dinheiro:
2a.1 O atendente informa a quantia em dinheiro entregue pelo cliente.
2a.2 O sistema informa o valor do troco a ser dado ao cliente.
2b Pagamento em Cheque:
2b.1 O atendente informa os dados do cheque, a saber: banco, agncia, conta e
valor.
2c Pagamento em Carto:
2c.1 O atendente informa os dados do carto e o valor da compra.
2.c.2 O sistema envia os dados informados no passo anterior, junto com a
identificao da loja para o servio de autorizao do Sistema de Operadoras de
Carto de Crdito.
2c.3 O Sistema de Operadoras de Carto de Crdito autoriza a compra e envia o
cdigo da autorizao.
Figura 5.13 Descrio Parcial do Caso de Uso Efetuar Compra com Variantes.
Por fim, em diversas situaes, pode ser desnecessariamente trabalhoso
especificar casos de uso segundo um formato completo, seja usando uma descrio dos
fluxos de eventos no formato livre seja no formato enumerado. Para esses casos, um
formato simplificado, na forma de uma tabela, pode ser usado. O formato tabular
normalmente empregado para casos de uso que possuem uma estrutura de interao
simples, seguindo uma mesma estrutura geral, tais como casos de uso cadastrais (ou
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
37
Classes
CRUD do ingls: Create, Read, Update and Delete; em portugus: Criar, Consultar, Atualizar e
Excluir, ou seja, casos de uso que proveem as funes bsicas de manipulao de dados de uma entidade
de interesse do sistema.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
38
observao a qual ao ela se refere ([I] para incluso, [A] para alterao, [C] para
consulta e [E] para excluso).
As colunas Requisitos e Classes indicam, respectivamente, os requisitos que
esto sendo (ou que devem ser) tratados pelo caso de uso e as classes do domnio do
problema necessrias para a realizao do caso de uso. O objetivo dessas colunas
manter a rastreabilidade dos casos de uso para requisitos e classes, respectivamente, de
maneira anloga ao recomendado no formato completo.
A Tabela 5.3 ilustra a descrio de casos de usos cadastrais do subsistema
Controle de Acervo de uma videolocadora.
Tabela 5.3 Descrio de Casos de Uso Cadastrais Controle de Acervo de
Videolocadora
Caso de Uso
Cadastrar
Filme
Aes
Possveis
I, A, C, E
Cadastrar Item
I, A, C, E
Cadastrar
Distribuidora
I, A, C, E
Cadastrar Tipo
de Mdia
I, A, C, E
Observaes
Requisitos
Classes
RF9, RNF1
Filme,
Distribuidora
RF9,
RNF1,
RNF3
Item,
Filme,
TipoMidia
RF10,
RNF1
Distribuidora
RF9, RNF1
TipoMidia
39
Observaes
As consultas ao acervo podero ser
feitas informando uma (ou uma
combinao)
das
seguintes
informaes: ttulo (ou parte dele),
original ou em portugus, gnero, tipo
de mdia disponvel, ator, diretor,
nacionalidade e lanamentos.
Requisitos
Classes
RF11, RNF1, Filme, Item,
RNF2
TipoMidia,
Distribuidora
40
41
42
43
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
44
base, por sua vez, precisa ser, obrigatoriamente, um caso de uso vlido na ausncia de
quaisquer extenses (BLAHA; RUMBAUGH, 2006).
Na UML, a associao de extenso entre casos de uso mostrada como uma
dependncia (seta pontilhada) estereotipada com a palavra chave extend, partindo do
caso de uso de extenso para o caso de uso base, como ilustra a Figura 5.20. Pontos de
extenso podem ser indicados no compartimento da elipse do caso de uso, denominado
extension points (pontos de extenso). Opcionalmente, a condio a ser satisfeita e a
referncia ao ponto de extenso podem ser mostradas por meio de uma nota 10 anexada
associao de extenso (OLIV, 2007). Assim, no exemplo da Figura 5.20, o Caso de
Uso de Extenso 1 executado quando o ponto de extenso 1 do Caso de Uso Base for
atingido, se a condio for verdadeira.
Nota o nico item de anotao da UML. Notas so usadas para explicar partes de um modelo da
UML. So comentrios includos para descrever, esclarecer ou fazer alguma observao sobre qualquer
elemento do modelo. Assim, uma nota apenas um smbolo para representar restries e comentrios
anexados a um elemento ou a uma coleo de elementos. Graficamente, uma nota representada por um
retngulo com um dos cantos com uma dobra de pgina, acompanhado por texto e anexada ao(s)
elemento(s) anotados por meio de linha(s) pontilhada(s) (BOOCH; RUMBAUGH; JACOBSON, 2006).
No exemplo da Figura 5.20, a nota est anexada ao relacionamento de extenso, adicionando-lhe
informaes sobre o ponto de extenso e a condio associados extenso.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
45
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
46
Generalizao / Especializao
Um relacionamento de generalizao / especializao entre um caso de uso pai e
um caso de uso filho significa que o caso de uso filho herda o comportamento e o
significado do caso de uso pai, acrescentando ou sobrescrevendo seu comportamento
(OLIV, 2007; BOOCH; RUMBAUGH; JACOBSON, 2006). Na UML,
relacionamentos de generalizao / especializao so representados como uma linha
cheia direcionada com uma seta aberta (smbolo de herana), como ilustra a Figura 5.22.
47
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
48
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
49
50
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
51
53
Assim, da mesma maneira que casos de uso so agrupados em pacotes, classes tambm
devem ser.
Quando uma coleo de classes colabora entre si para realizar um conjunto
coeso de responsabilidades (casos de uso), elas podem ser vistas como um subsistema.
Assim, um subsistema uma abstrao que prov uma referncia para mais detalhes em
um modelo de anlise, incluindo tanto casos de uso quanto classes. O agrupamento de
classes em subsistemas permite apresentar o modelo global em uma perspectiva mais
alta. Esse nvel ajuda o leitor a rever o modelo, bem como constitui um bom critrio
para organizar a documentao.
Uma vez identificadas as potenciais classes, deve-se proceder uma avaliao
para decidir o que efetivamente considerar ou rejeitar. Conforme discutido
anteriormente, a relevncia para o sistema deve ser o critrio principal. Alm desse
critrio, os seguintes tambm devem ser considerados nessa avaliao:
Estrutura complexa: o sistema precisa tratar informaes sobre os objetos da
classe? Tipicamente, uma classe deve ter, pelo menos, dois atributos. Se uma
classe apresentar apenas um atributo, avalie se no melhor trat-la como um
atributo de uma classe existente11.
Atributos e associaes comuns: os atributos e as associaes da classe
devem ser aplicveis a todas as suas instncias, isto , a todos os objetos da
classe.
Classes no redundantes: duas classes so redundantes quando elas tm
sempre a mesma populao12. Seja o exemplo de um modelo conceitual que
tenha as classes Pessoa e Funcionrio. Se o sistema est interessado apenas
nas pessoas empregadas na organizao (ou seja, funcionrios), ento a
populao dessas duas classes ser sempre a mesma. A introduo de classes
redundantes afeta e simplicidade do modelo e, portanto, um modelo
conceitual no deve incluir classes redundantes.
Existncia de instncias: toda classe deve possuir uma populao no vazia.
Uma potencial classe que possui uma nica instncia tambm no deve ser
considerada uma classe. Tipicamente uma classe possui vrias instncias e a
populao da classe varia ao longo do tempo.
5.5.2 - Identificao de Atributos e Associaes
Conforme apontado anteriormente, uma classe tpica de um modelo conceitual
estrutural deve apresentar estrutura complexa. A estrutura de uma classe corresponde a
seus atributos e associaes.
Conceitualmente, no h diferena entre atributos e associaes. Atributos so,
na verdade, tipos de relacionamentos binrios. Em um tipo de relacionamento binrio,
h dois participantes. Em alguns tipos de relacionamentos, esses participantes so
considerados colegas, porque eles desempenham funes anlogas e nenhum deles
subordinado ao outro. Seja o caso do tipo de relacionamento aluno cursa um curso.
11
Uma classe que possui um nico atributo, mas vrias associaes, tambm satisfaz a esse critrio.
A populao de uma classe em um dado momento o conjunto de instncias que existem no domnio
naquele momento (OLIV, 2007).
12
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
54
Um aluno no pode cursar sem haver um curso, bem como um curso no pode ser
cursado se no houver um aluno. A ordem dos participantes no modelo no implica uma
relao de prioridade ou subordinao entre eles (OLIV, 2007). Na orientao a
objetos, esse tipo de relacionamento modelado como uma associao.
Entretanto, h alguns tipos de relacionamentos nos quais usurios e analistas
consideram um participante como sendo uma caracterstica do outro. Seja o exemplo do
tipo de relacionamento filme possui gnero. Algum pode argumentar que o
participante gnero uma caracterstica de filme e, portanto, subordinado a este. Esse
tipo de relacionamento modelado como um atributo. Assim, um atributo um tipo de
relacionamento binrio em que um participante considerado uma caracterstica de
outro. Por conseguinte, um atributo igual a uma associao, exceto pelo fato de
usurios e analistas adicionarem a interpretao que um dos participantes subordinado
ao outro (OLIV, 2007).
De uma perspectiva mais prtica, atributos podem ser vistos como informaes
alfanumricas ligadas a um conceito. Associaes, por sua vez, consistem em um tipo
de informao que liga diferentes conceitos entre si (WAZLAWICK, 2004). Atributos
ligam classes do domnio do problema a tipos de dados.
Tipos de dados podem ser primitivos ou especficos de domnio. Os tipos de
dados primitivos so aplicveis aos vrios domnios e sistemas, tais como strings, datas,
inteiros e reais, e so considerados como sendo predefinidos. Os tipos de dados
especficos de um domnio de aplicao, por outro lado, precisam ser definidos. So
exemplos de tipos de dados especficos: CPF, ISBN de livros, endereo etc.
Neste texto so considerados os seguintes tipos de dados primitivos:
Atributos
Um atributo uma informao de estado para a qual cada objeto em uma classe
tem o seu prprio valor. Os atributos adicionam detalhes s abstraes e so
apresentados na parte central do smbolo de classe.
Conforme discutido anteriormente, atributos possuem um tipo de dado, que pode
ser primitivo ou especfico de domnio. Ao identificar um atributo como sendo
relevante, deve-se definir qual o seu tipo de dado. Caso nenhum dos tipos de dados
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
55
primitivos se aplique, deve-se definir, ento, um tipo de dados especfico. Por exemplo,
em domnios que lidem com livros, necessrio definir o tipo ISBN 13, cujas instncias
so ISBNs vlidos. Em domnios que lidem com pessoas fsicas e jurdicas, CPF e
CNPJ tambm devem ser definidos como tipos de dados especficos. Usar um tipo de
dados primitivo nestes casos, tais como String ou int, insuficiente, pois no so
quaisquer cadeias de caracteres ou nmeros que se caracterizam como ISBNs, CPFs ou
CNPJs vlidos.
Tipos de dados especficos podem apresentar propriedades. Por exemplo, CPF
um nmero de 11 dgitos, que pode ser dividido em duas partes: os 9 primeiros dgitos e
os dois ltimos, que so dgitos verificadores.
Um tipo de dados especial a enumerao. Na enumerao, os valores do tipo
so enumerados explicitamente na forma de literais, como o caso do tipo DiaSemana,
que tipicamente definido como um tipo de dados compreendendo sete valores:
Segunda, Tera, Quarta, Quinta, Sexta, Sbado e Domingo. importante observar que
tipos de dados enumerados s devem ser usados quando se sabe priori quais so os
seus valores e eles so fixos. Assim, so bons candidatos a tipos enumerados
informaes como sexo (M/F), estado civil etc.
Tipos de dados geralmente no so representados graficamente em um modelo
conceitual estrutural, de modo a torn-lo mais simples. Na maioria das situaes, basta
descrever os tipos de dados especficos de domnio no Dicionrio de Dados do Projeto.
Contudo, se necessrio, eles podem ser representados graficamente usando o smbolo de
classe estereotipado com a palavra chave <<dataType>>. Tipos enumerados tambm
podem ser representados usando o smbolo de classe, mas com o esteretipo
<<enumeration>>, sendo que ao invs de apresentar atributos de um tipo de dados,
enumeram-se os valores possveis da enumerao. A Figura 5.27 ilustra a notao de
tipos de dados na UML.
O ISBN - International Standard Book Number - um sistema internacional padronizado que identifica
numericamente os livros segundo o ttulo, o autor, o pas, a editora, individualizando-os inclusive por
edio. Utilizado tambm para identificar software, seu sistema numrico pode ser convertido em cdigo
de barras.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
56
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
57
Atributos podem ter um valor padro inicial, ou seja, um valor que, quando no
informado outro valor, ser atribudo ao atributo. O campo valorInicial descreve
exatamente este valor. O exemplo abaixo ilustra o uso de valor inicial.
origem: Ponto = (0,0) a origem, quando no informado outro valor, ser o ponto
(0,0)
Finalmente, podem ser indicadas propriedades dos atributos. Uma propriedade
que pode ser interessante mostrar em um modelo conceitual a propriedade readonly, a
qual indica que o valor do atributo no pode ser alterado aps a inicializao do objeto.
No exemplo abaixo, est-se indicando que o valor do atributo numeroSocio de um scio
de um clube no pode ser alterado.
numSocio: int {readonly}
Alm das informaes tratadas na declarao de um atributo seguindo a sintaxe
da UML, outras informaes de domnio, quando pertinentes, podem ser adicionadas no
Dicionrio de Dados do Projeto, tais como unidade de medida, intervalo de valores
possveis, limite, preciso etc.
Associaes
Uma associao um tipo de relacionamento que ocorre entre instncias de duas
ou mais classes. Assim como classes, associaes so tipos. Ou seja, uma associao
modela um tipo de relacionamento que pode ocorrer entre instncias das classes
envolvidas. Uma instncia de uma associao (dita uma ligao) conecta instncias
especficas das classes envolvidas na associao. Seja o exemplo de um domnio em
que clientes efetuam pedidos. Esse tipo de relacionamento pode ser modelado como
uma associao Cliente efetua Pedido. Seja Pedro uma instncia de Cliente e Pedido100
uma instncia de Pedido. Se foi Pedro quem efetuou o Pedido100, ento a ligao
(Pedro, Pedido100) uma instncia da associao Cliente efetua Pedido.
Associaes podem ser nomeadas. Neste texto sugere-se o uso de verbos
conjugados, indicando o sentido de leitura. Ex.: Cliente (classe) efetua > (associao)
Locao (classe). Cada classe envolvida na associao desempenha um papel, ao qual
pode ser dado um nome. Cada classe envolvida na associao possui tambm uma
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
58
multiplicidade14 nessa associao, que indica quantos objetos podem participar de uma
instncia dessa associao. A notao da UML tipicamente usada para representar
associaes em um modelo conceitual ilustrada na Figura 6.3.
59
Ao contrrio das classes e dos atributos que podem ser encontrados facilmente a
partir da leitura dos textos da descrio do minimundo e das descries de casos de uso,
muitas vezes, as informaes sobre associaes no aparecem to explicitamente. Casos
de uso descrevem aes de interao entre atores e sistema e, por isso, acabam
mencionando principalmente operaes. Operaes transformam a informao,
passando um objeto de um estado para outro, por meio da alterao dos seus valores de
atributos e associaes. Uma associao, por sua vez, uma relao esttica que pode
existir entre duas classes. Assim, as descries de casos de uso esto repletas de
operaes, mas no de associaes (WAZLAWICK, 2004).
Contudo, conforme discutido na seo anterior, h alguns eventos que precisam
ter sua ocorrncia registrada e, portanto, so tipicamente mapeados como classes. Esses
eventos esto descritos nos casos de uso e podem ter sido capturados como associaes.
Seja o exemplo de uma concessionria de automveis. Neste domnio, clientes
compram carros, como ilustra a parte (a) da Figura 5.30. Contudo, a compra um
evento importante para o negcio e precisa ser registrado. Neste caso, como ilustra a
parte (b) da Figura 5.30, a compra deve ser tratada como uma classe e no como uma
associao.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
60
61
Ainda que este modelo seja mais fidedigno realidade, ele ainda apresenta
problemas. Por exemplo, o modelo diz que um empregado pode ter uma ou mais
locaes. Mas o empregado pode ter mais de uma lotao vigente? O mesmo vale para o
caso da nomeao de chefia. Um empregado pode ser chefe de mais de um
departamento ao mesmo tempo? Um departamento pode ter mais do que um chefe
nomeado ao mesmo tempo? Infelizmente, o modelo incapaz de responder a essas
perguntas. Para eliminar essas ambiguidades, necessrio capturar regras de negcio do
tipo restries de integridade. No exemplo acima, as seguintes regras se aplicam:
Observe que, como um departamento pode ter vrios empregados nele lotados ao
mesmo tempo, no necessrio escrever uma restrio de integridade, pois este o caso
mais geral (sem restrio). Assim, restries de integridade devem ser escritas apenas
para as associaes que so passveis de restries.
Restries de integridade so regras de negcio e poderiam ser lanadas no
Documento de Requisitos. Contudo, como elas so importantes para a compreenso e
eliminao de ambiguidades do modelo conceitual, til descrev-las no prprio
modelo conceitual.
Alm das restries de integridade relativas s multiplicidades n, diversas outras
restries podem ser importantes para tornar o modelo mais fiel realidade. Ainda no
exemplo da Figura 5.32, poder-se-ia querer dizer que um empregado s pode ser
nomeado como chefe de um departamento, se ele estiver lotado nesse departamento.
Restries deste tipo so comuns em pores fechadas de um diagrama de classes.
Assim, toda vez que se detectar uma poro fechada em um diagrama de classes, vale a
pena analis-la para avaliar se h ali uma restrio de integridade ou no. Havendo,
deve-se escrev-la.
Restries de integridade tambm podem falar sobre atributos das classes. Por
exemplo, a data da portaria de nomeao de um empregado e como chefe de um
departamento d deve ser igual ou posterior data da portaria de lotao do empregado e
no departamento d.
Geralmente, restries de integridade so escritas em linguagem natural, uma
vez que no so passveis de modelagem grfica. Contudo, conforme j discutido
anteriormente, o uso de linguagem natural pode levar a ambiguidades. Visando suprir
essa lacuna na UML, o OMG15 incorporou ao padro uma linguagem para especificao
formal de restries, a OCL (Object Constraint Language). Contudo, restries escritas
em OCL dificilmente sero entendidas por clientes e usurios, o que dificulta a
validao das mesmas. Assim, neste texto, sugere-se escrever as restries de
integridade em linguagem natural mesmo.
15
62
Vale ressaltar que a UML prov alguns mecanismos para representar restries
de integridade em um modelo grfico. As prprias multiplicidades so uma forma de
capturar restries de integridade (ditas restries de integridade de cardinalidade).
Alm das multiplicidades, a UML prov o recurso de restries, as quais so
representadas entre chaves ({restrio}). Restries podem ser usadas, dentre outros,
para restringir a ocorrncia de associaes. Seja o seguinte exemplo: em uma
concessionria de automveis compras podem ser financiadas ou por financeiras ou por
bancos. Para capturar essa restrio, pode-se usar a restrio xor da UML, como ilustra
a Figura 5.33.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
63
16
Reificar uma associao consiste em ver essa associao como uma classe. A palavra reificao vem
da palavra do latim res, que significa coisa. Reificao corresponde ao que em linguagem natural se
chama nominalizao, que basicamente consiste em transformar um verbo em um substantivo (OLIV,
2007).
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
64
65
desempenha dois papis diferentes (disciplina que possui pr-requisito e disciplina que
pr-requisito). Entretanto, associaes n-rias so tambm possveis, ainda que bem
menos corriqueiramente encontradas. Uma associao ternria, por exemplo, envolve
trs classes, como ilustra o exemplo da Figura 5.39. Nesse exemplo, est-se dizendo que
fornecedores podem fornecer produtos para certos clientes.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
66
Muitas vezes pode ser difcil perceber a diferena entre uma agregao /
composio e uma associao comum. Quando houver essa dvida, melhor
representar a situao usando uma associao comum, tendo em vista que ela impe
menos restries.
5.5.3 Especificao de Hierarquias de Generalizao / Especializao
Um dos principais mecanismos de estruturao de conceitos a generalizao /
especializao. Com este mecanismo possvel capturar similaridades entre classes,
dispondo-as em hierarquias de classes. No contexto da orientao a objetos, esse tipo de
relacionamento tambm conhecido como herana.
importante notar que a herana tem uma natureza bastante diferente das
associaes. Associaes representam possveis ligaes entre instncias das classes
envolvidas. J a relao de herana uma relao entre classes e no entre instncias.
Ao se considerar uma classe B como sendo uma subclasse de outra classe A est-se
assumindo que todas as instncias de B so tambm instncias de A. Assim, ao se dizer
que a classe EstudanteGraduacao herda da classe Estudante, est-se indicando que
todos os estudantes de graduao so estudantes. Em resumo, deve-se interpretar a
relao de herana como uma relao de subtipo entre classes. A Figura 5.41 mostra a
notao da UML para representar herana.
67
De fato, abordagens distintas podem ser usadas, tal como representar tipos de requisies como classes,
ditas classes de evento, e os seus efeitos como operaes das correspondentes classes de evento, tal como
faz Oliv (2007).
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
70
71
gatilho, ento o evento dispara a transio e a mquina de estados vai para o estado
destino. Se uma mquina recebe um evento que no um gatilho para nenhuma
transio, ento ela no afetada pelo evento (OLIV, 2007).
Uma transio pode ter uma condio de guarda associada. s vezes, h duas ou
mais transies com o mesmo estado origem e o mesmo evento gatilho, mas com
condies de guarda diferentes. Neste caso, a transio disparada somente quando o
evento gatilho ocorre e a condio de guarda verdadeira (OLIV, 2007). Quando uma
transio no possuir uma condio de guarda associada, ento ela ocorrer sempre que
o evento ocorrer.
Por fim, quando uma transio disparada, uma ao instantnea pode ser
realizada. Assim, o rtulo de uma transio pode ter at trs partes, todas elas opcionais:
evento [condioGuarda] / ao
Basicamente, a semntica de um diagrama de estados a seguinte: quando o
evento ocorre, se a condio de guarda verdadeira, a transio dispara e a ao
realizada instantaneamente. O objeto passa, ento, do estado origem para o estado
destino. Se o estado destino possuir uma atividade a ser realizada, ela iniciada.
O fato de uma transio no possuir um evento associado normalmente aponta
para a existncia de um evento implcito. Isso tipicamente ocorre em trs situaes: (i) o
evento implcito a concluso da atividade do estado origem e a transio ocorrer to
logo a atividade associada ao estado origem tiver sido concluda; (ii) o evento implcito
temporal, sendo disparado pela passagem do tempo; (iii) o evento implcito torna a
condio de guarda verdadeira na base de informaes do sistema, mas o evento em si
no modelado.
Embora ambos os termos ao e atividade denotem processos, eles no devem
ser confundidos. Aes so consideradas processos instantneos; atividades, por sua
vez, esto sempre associadas a estados e tm durao no tempo. Vale a pena observar
que, no mundo real, no h processos efetivamente instantneos. Por mais rpida que
seja, uma ao ocorrer sempre em um intervalo de tempo. Esta simplificao de se
considerar aes instantneas no modelo conceitual pode ser associada ideia de que a
ao ocorre to rapidamente que no possvel interromp-la. Em contraste, uma
atividade passvel de interrupo, sendo possvel, por exemplo, que um evento ocorra,
interrompa a atividade e provoque uma mudana no estado do objeto antes da concluso
da atividade.
s vezes quer se modelar situaes em que uma ao instantnea realizada
quando se entra ou sai de um estado, qualquer que seja a transio que o leve ou o retire
desse estado. Seja o exemplo de um elevador. Neste contexto, ao parar em um certo
andar, o elevador abre a porta. Suponha que a abertura da porta do elevador seja um
processo que no possa ser interrompido e, portanto, que se opte por model-lo como
uma ao. Essa ao dever ocorrer sempre que o elevador entrar no estado Parado e
deve ser indicada no compartimento de aes desse estado como sendo uma ao de
entrada no estado. A notao da UML para representar aes de entrada em um estado
: entry / <<nomeAo>>. Para representar aes de sada de um estado a notao :
exit / <<nomeAo>>.
Restam ainda na Figura 5.43 dois tipos especiais de estados: os ditos estados
inicial e final. Conforme citado anteriormente, um objeto est sempre em um e somente
um estado. Isso implica que, ao ser instanciado, o objeto precisa estar em algum estado.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
72
18
73
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
correspondentes transies em cada uma das mquinas de estados em que ele aparecer
(OLIV, 2007).
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
76
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
78
19
Monotnico diz respeito a algo que ocorre de maneira contnua. Neste caso, a continuidade advm do
fato de um objeto continuamente ganhar novos atributos e associaes, sem perder os que j possua.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
79
20
Um atributo derivado quando seu valor pode ser deduzido ou calculado a partir de outras informaes
(atributos e associaes) j existentes no modelo estrutural.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
Leitura Complementar
Engenharia de Requisitos
Em (SOMMERVILLE, 2007), a parte 2 Requisitos como o prprio nome
indica, dedicada ao tema. Merecem ateno especial os captulos 6 e 7. O Captulo 6
Requisitos de Software trata de tipos e nveis de requisitos, bem como da
documentao de requisitos. O Captulo 7 Processos de Engenharia de Requisitos
apresenta e discute um processo de engenharia de requisitos (tambm muito similar ao
apresentado neste texto) e suas atividades.
Em (PFLEEGER, 2004), o Captulo 4 Identificando Requisitos tem uma boa
discusso sobre requisitos. Em relao aos temas abordados nestas notas de aula,
merecem destaque as sees 4.1, 4.2, 4.3, 4.6, 4.7, 4.8 e 4.9, as quais tratam dos
seguintes assuntos: requisitos, processo de requisitos, tipos de documentos de requisitos,
tipos de requisitos, caractersticas de requisitos (sees 4.1, 4.2 e 4.3), prototipagem de
requisitos (seo 4.6), documentao de requisitos (seo 4.7), participantes no processo
de requisitos (seo 4.8) e validao de requisitos (seo 4.9).
Em (PRESSMAN, 2006), o Captulo 7 Engenharia de Requisitos aborda
vrios dos temas discutidos neste captulo, com destaque para as sees 7.2 (Tarefas da
Engenharia de Requisitos), 7.3 (Incio do Processo de Engenharia de Requisitos), 7.4
(Levantamento de Requisitos), 7.7 (Negociao de Requisitos) e 7.8 (Validao de
Requisitos).
Modelagem de Casos de Uso
Os captulos 7 e 8 de (BLAHA; RUMBAUGH, 2006) Modelagem de
Interaes e Modelagem Avanada de Interaes, respectivamente abordam a
modelagem de casos de uso. Mais especificamente, recomenda-se a leitura da seo 7.1
(Modelos de Casos de Uso), que d uma viso geral de atores, casos de uso e diagramas
de casos de uso, e da seo 8.1 (Relaes entre Casos de Uso), que discute as relaes
de incluso, extenso e generalizao e especializao entre casos de uso.
O Captulo 15 de (OLIV, 2007) Use Cases d uma viso geral da
modelagem de casos de uso, discutindo de maneira breve, mas bastante didtica, os
conceitos de ator e de caso de uso, a especificao de casos de uso e os relacionamentos
entre casos de uso.
O livro Escrevendo Casos de Uso Eficazes: Um guia prtico para
desenvolvedores de software (COCKBURN, 2005) inteiramente dedicado ao
processo de escrita de casos de uso. Esse livro uma tima referncia para os
interessados em aperfeioar seu processo de escrita de casos de uso, contendo diversas
diretrizes incorporadas nestas notas de aula.
Em (WAZLAWICK, 2004), tanto o Captulo 2 (Concepo) quanto o Captulo 3
(Expanso dos Casos de Uso) abordam a modelagem de casos de uso.
Em (BOOCH; RUMBAUGH; JACOBSON, 2006), merecem ateno os
captulos 17 (Casos de Uso) e 18 (Diagramas de Casos de Uso). As notaes da UML
para diagramas de casos de uso so tratadas com mais detalhes do que nas demais
referncias citadas anteriormente, precisamente por se tratar este de um livro sobre a
UML.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Requisitos de Ricardo de Almeida Falbo)
81
82
Domnio do
Problema
Mundo Real
Anlise e
Especificao
de Requisitos
(o que)
Projeto
(como)
Domnio
da
Soluo
Mundo
Computacional
Implementao
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
85
Baixa Coeso
Alto
Acoplamento
Serra
Vila Velha
Conjunto
Habitacional
da Siderrgica
Trfego Intenso
Alta Coeso
Fbrica de
Refrigerantes
Fbrica de
Garrafas
Plsticas
Alta Coeso
Baixo
Acoplamento
Vila Velha
Fbrica de
Garrafas
Plsticas
Siderrgica
Siderrgica
Serra
Pouco
Trfego
Conjunto
Habitacional
da Siderrgica
antes de tudo uma abstrao de um sistema que suprime detalhes dos elementos que
no afetam como eles so usados, como se relacionam, como interagem e como usam
outros elementos. Na maioria das vezes, a arquitetura usada para descrever aspectos
estruturais de um sistema.
Em quase todos os sistemas modernos, elementos interagem com outros por meio
de interfaces que dividem detalhes sobre um elemento em partes pblica e privada. A
arquitetura est preocupada com a parte pblica dessa diviso. Detalhes privados,
aqueles que tm a ver somente com a implementao interna, no so arquiteturais
(BASS; CLEMENTS; KAZMAN, 2003).
At o projeto arquitetnico, aspectos relacionados ao hardware e plataforma de
implementao ainda no foram tratados, j que a fase de anlise pressupe tecnologia
perfeita. Este o momento para resolver como um modelo ideal vai executar em uma
plataforma restrita. importante realar que no existe a soluo perfeita. O projeto da
arquitetura uma tarefa de negociao, onde se faz compromissos entre solues subtimas. O modelo de arquitetura mapeia os requisitos essenciais da fase de anlise em
uma arquitetura tcnica. Uma vez que muitas arquiteturas diferentes so possveis, o
propsito do projeto arquitetnico escolher a configurao mais adequada. Alm
disso, fatores que transcendem aspectos puramente tcnicos devem ser considerados.
Normalmente, o projeto da arquitetura discutido luz dos requisitos do sistema,
ou seja, se os requisitos so conhecidos, ento se pode projetar a arquitetura do sistema.
Contudo, deve-se considerar o projeto arquitetnico como algo mais abrangente,
envolvendo aspectos tcnicos, sociais e de negcio. Todos esses fatores (e no somente
os requisitos do sistema) influenciam a arquitetura de software. Esta, por sua vez, afeta
o ambiente da organizao (incluindo ambientes tcnico, social e de negcio) que vai
influenciar arquiteturas futuras, criando um ciclo de realimentao contnua. Por
exemplo, se os projetistas encarregados do projeto de um novo sistema obtiveram bons
resultados em projetos de sistemas anteriores usando uma particular abordagem de
arquitetura, ento natural que eles tentem a mesma abordagem no novo projeto. Por
outro lado, se suas experincias anteriores com essa abordagem foram desastrosas, os
projetistas vo relutar em tent-la outra vez, mesmo que ela se apresente como uma
soluo adequada. Assim, as escolhas so guiadas, tambm, pela formao e
experincia dos projetistas (BASS; CLEMENTS; KAZMAN, 2003).
Outro fator que afeta a escolha da arquitetura o ambiente tcnico (ou plataforma
de implementao) corrente. Muitas vezes, h para esse ambiente um conjunto
dominante de padres, prticas e tcnicas que aceito pela comunidade de arquitetos ou
pela organizao de desenvolvimento. Por fim, a arquitetura influenciada tambm pela
estrutura e natureza da organizao de desenvolvimento (BASS; CLEMENTS;
KAZMAN, 2003).
Assim, no projeto da arquitetura de software, projetistas so influenciados por
requisitos para o sistema, estrutura e metas da organizao de desenvolvimento,
ambiente tcnico disponvel e por suas prprias experincias e formao. Alm disso, os
relacionamentos entre metas de negcio, requisitos de sistemas, experincia dos
projetistas, arquiteturas e sistemas implantados geram diversos laos de realimentao
que podem ser gerenciado pela organizao.
Muitas pessoas tm interesse na arquitetura de software, tais como clientes,
usurios finais, desenvolvedores, gerentes de projeto e mantenedores. Alguns desses
interesses so conflitantes e o projetista frequentemente tem de mediar conflitos at
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
chegar configurao que atenda de forma mais adequada a todos os interesses. Neste
contexto, arquiteturas de software so importantes principalmente porque (BASS;
CLEMENTS; KAZMAN, 2003):
Representam uma abstrao comum do sistema que pode ser usada para
compreenso mtua, negociao, consenso e comunicao entre os
interessados. A arquitetura prov uma linguagem comum na qual diferentes
preocupaes podem ser expressas, negociadas e resolvidas em um nvel que
seja intelectualmente gerencivel.
88
Padres (Patterns)
89
projeto de um sistema uma entidade complexa que no pode ser descrita em uma
nica perspectiva. Ao contrrio, mltiplas vises so essenciais e a documentao deve
abranger aquelas vises consideradas relevantes. De fato, como muitas vises so
possveis, a documentao uma atividade que envolve a escolha das vises relevantes,
a documentao das vises selecionadas e a documentao de informaes que se
aplicam a mais do que uma viso (BASS; CLEMENTS; KAZMAN, 2003). A escolha
das vises dependente de vrios fatores, dentre eles, do tipo de sistema sendo
desenvolvido, dos atributos de qualidade considerados e da audincia da documentao
de projeto. Diferentes vises realam diferentes elementos de um sistema.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
91
Camada de
Domnio do
Problema
Camada de
Interface com o
Usurio
Camada de
Gerncia de
Dados
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
92
Classes controladoras de caso de uso so classes que centralizam as interaes no contexto de casos de
uso especficos e no so consideradas controladores no sentido usado no padro MVC.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
22
Vale ressaltar que, embora a classe controladora de sistema seja modelada no diagrama de classes do
domnio do problema, ela corresponde, de fato, ao pacote de interface com o usurio, tendo em vista que
ela um controlador no sentido adotado pelo padro MVC.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
94
Vale lembrar que classes gerenciadoras de casos de uso no so controladores no sentido do padro
MVC.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
tal como string, inteiro ou booleano. Contudo, muitas vezes, atributos podem dar
origem a novas classes (ou tipos de dados enumerados) para atender a requisitos de
qualidade, tais como usabilidade, manutenibilidade e reusabilidade.
Adio de navegabilidades nas associaes: Na fase de anlise, as associaes
so consideradas navegveis nos dois sentidos. O mesmo no ocorre na fase de projeto.
Pode-se definir que certas associaes so navegveis apenas em um sentido, indicando
que apenas um dos objetos ter uma referncia para o outro (ou para colees de
objetos, no caso de associaes com multiplicidade *). Esta deciso pode ser
influenciada pelo mecanismo de persistncia de objetos a ser adotado, sobretudo quando
esse mecanismo envolve um Sistema Gerenciador de Banco de Dados Relacional.
Adio de informaes de visibilidade de atributos e associaes: De maneira
geral, na fase de anlise no se especifica a visibilidade de atributos e associaes.
Como discutido no item acima, as associaes so tipicamente consideradas navegveis
e visveis nos dois sentidos. J os atributos so considerados pblicos. Porm essa no
uma boa estratgia para a fase de projeto. Ocultar informaes um importante
princpio de projeto. Assim, atributos s devem poder ser acessados pela prpria classe
ou por suas subclasses. Uma classe no deve ter acesso aos atributos de uma classe a ela
associada. Como consequncia disso, cada classe deve ter operaes para consultar
(tipicamente nomeadas como get) e atribuir / alterar valor (normalmente nomeada como
set) de cada um de seus atributos e associaes navegveis. Essas operaes, contudo,
no precisam ser mostradas no diagrama de classes, visto que elas podem ser deduzidas
pela prpria existncia dos atributos e associaes (WAZLAWICK, 2004).
Adio de mtodos s classes: Muitas vezes, as classes de um diagrama de
classes de anlise no tm informao acerca das suas operaes. Mesmo quando elas
tm, essa informao pode ser insuficiente, tendo em vista que no projeto que se
decide efetivamente como abordar a distribuio de responsabilidades para a realizao
de funcionalidades. Assim, durante o projeto do CDP ateno especial deve ser dada
definio de mtodos nas classes. Para apoiar esta etapa, diagramas de sequncia podem
ser utilizados para modelar a interao entre objetos na realizao de funcionalidades do
sistema. A escolha de um padro arquitetnico para o projeto do CDP tambm tem
influncia na distribuio de responsabilidades. Vale ressaltar que j se assume que
algumas operaes, consideradas bsicas, existem e, portanto, no precisam ser
representadas no diagrama de classes. Essas operaes so as operaes de criao e
destruio de instncias, alm das operaes de consulta e atribuio / alterao de
valores de atributos e associaes, conforme discutido no item anterior. No diagrama de
classes devem aparecer apenas os mtodos que no podem ser deduzidos
(WAZLAWICK, 2004).
Eliminao de classes associativas: Caso o diagrama de classes de anlise
contenha classes associativas, recomenda-se substitu-las por classes normais, criando
novas associaes. Isso importante, pois as linguagens de programao no tm
construtores capazes de implementar diretamente esses elementos de modelo.
Alm das alteraes bsicas a que todos os diagramas de classes do CDP estaro
sujeitos, outras fontes de alterao incluem:
Reutilizar projetos anteriores e classes j programadas: importante que na
fase de projeto seja levada em conta a possibilidade de se reutilizar classes j projetadas
e programadas (desenvolvimento com reso), bem como a possibilidade de se
desenvolver classes para reutilizao futura (desenvolvimento para reso). Tipicamente,
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
ajustes feitos para incorporar tais classes envolvem alteraes na estrutura do modelo,
podendo atingir hierarquias de generalizao-especializao do modelo, de modo a
tratar as classes do domnio do problema como subclasses de classes de biblioteca prexistentes. Tambm ao incorporar um padro de projeto (design pattern), muito
provavelmente a estrutura do diagrama de classes de projeto sofrer alteraes.
Ajustar hierarquias de generalizao-especializao: muitas vezes, as
hierarquias de herana da fase de anlise no so adequadas para a fase de projeto.
Dentre os fatores que podem provocar mudanas na hierarquia de herana destacam-se
o mecanismo de herana suportado pela linguagem de programao a ser usada na
implementao e a definio de operaes.
o Ajustar hierarquias de generalizao-especializao para adequao ao
mecanismo de herana suportado pela linguagem de programao a ser
usada na implementao: se, por exemplo, o modelo de anlise envolve
herana mltipla e a linguagem de implementao no oferece tal recurso,
alteraes no modelo so necessrias. Quando se estiver avaliando
hierarquias de classes para eliminar relaes de herana mltipla, deve-se
considerar se uma abordagem de delegao no mais adequada do que o
estabelecimento de uma relao de herana.
o Ajustar hierarquias de generalizao-especializao para aproveitar
oportunidades decorrentes da definio de operaes: as definies de
operaes nas classes podem tambm conduzir a alteraes na hierarquia de
generalizao-especializao. De fato, pode ser que durante a fase de anlise
no sejam exploradas todas as oportunidades de herana. til reexaminar o
diagrama de projeto procurando observar se determinadas classes tm
comportamento parcialmente comum, abrindo-se espao para a criao de
uma superclasse encapsulando as propriedades (atributos e operaes)
compartilhadas, abstraindo o comportamento comum. Conforme discutido
anteriormente, a reutilizao pode ser um fator motivador para a criao de
novas superclasses. Contudo, deve-se tomar cuidado com a refatorao da
hierarquia de classes. Criar uma nova classe para abstrair comportamento
comum somente se justifica quando h, de fato, uma relao de subtipo entre
as classes existentes e a nova classe criada; ou seja, pode-se dizer que a
subclasse semanticamente um subtipo da superclasse. No se deve alterar a
hierarquia de classes simplesmente para herdar uma parte do
comportamento, quando as classes envolvidas no guardam entre si uma
relao efetivamente de subtipo, em uma abordagem de herana de
implementao (BLAHA; RUMBAUGH, 2006).
Ajustar o modelo para melhorar o desempenho: Visando melhorar o
desempenho do sistema, o projetista pode alterar o diagrama de classes do CDP para
melhor acomodar os ajustes necessrios. Atributos e associaes redundantes podem ser
adicionados para evitar recomputao, bem como podem ser criadas novas classes para
registrar estados intermedirios de um processo.
Ajustar o modelo para facilitar o projeto de interfaces com o usurio
amigveis: com o objetivo de incorporar o atributo de qualidade usabilidade, pode ser
importante considerar novas classes (ou tipos enumerados de dados) que facilitem a
apresentao de listas para seleo do usurio.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
99
usurio necessrios para cada uma dessas tarefas. Assim os projetos dos componentes
de gerncia de tarefa e de apresentao (seo adiante) esto bastante relacionados e
devem ser realizados conjuntamente, uma vez que, muitas vezes, so as tarefas que
determinam a necessidade de elementos de interface com o usurio para sua execuo.
100
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
102
plana, hierrquica,
No censure o usurio.
103
Pea confirmao para aes destrutivas, tais como aes para apagar ou
sobrepor informaes, terminar a seo corrente do aplicativo.
Permita reverso fcil da maioria das aes (funo Desfazer).
Reduza a quantidade de informao que precisa ser memorizada entre aes.
Busque eficincia no dilogo (movimentao, teclas a serem apertadas).
Trate possveis erros do usurio. O sistema deve se proteger de erros, casuais
ou no, provocados pelo usurio.
Classifique atividades por funo e organize geograficamente a tela de
acordo. Menus do tipo pull-down so uma boa opo.
Proveja facilidades de ajuda sensveis ao contexto.
Use verbos de ao simples ou frases curtas para nomear funes e
comandos.
No que se refere apresentao de informaes, considere as seguintes
diretrizes:
Mostre apenas informaes relevantes ao contexto corrente.
Use formatos de apresentao que permitam assimilao rpida da
informao, tais como grficos e figuras.
Use rtulos consistentes, abreviaturas padro e cores previsveis.
Produza mensagens de erro significativas.
Projete adequadamente o layout de informaes textuais. Leve em
considerao o bom uso de letras maisculas e minsculas, identao,
agrupamento de informaes etc.
Separe diferentes tipos de informao. Painis ou mesmo janelas podem ser
usadas para este fim.
Use formas de representao anlogas s do mundo real para facilitar a
assimilao da informao. Para tal considere o uso de figuras, cores etc.
No que se refere entrada de dados, considere as seguintes diretrizes:
Minimize o nmero de aes de entrada requeridas e possveis erros. Para tal
considere a seleo de dados a partir de um conjunto pr-definido de valores
de entrada, o uso de valores default e macros etc.
Mantenha consistncia entre apresentao e entrada de dados; ou seja,
mantenha as mesmas caractersticas visuais, dentre elas tamanho do texto, cor
e localizao.
Permita ao usurio customizar a entrada para seu uso, quando possvel,
dando-lhe liberdade para definir comandos customizados, dispensar algumas
mensagens de aviso e verificaes de aes, dentre outros.
Flexibilize a interao, permitindo afin-la ao modo de entrada preferido do
usurio (comandos, botes, plug-and-play, digitao etc.).
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
104
105
24
http://www.hibernate.org/
SQL a abreviatura de Structured Query Language (Linguagem Estruturada de Consulta), a linguagem
de consulta dos bancos de dados relacionais.
25
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
106
Em sua verso mais simples, para cada classe a ser persistida em uma tabela, h
uma correspondente classe mapeadora. Seja o exemplo da Figura 6.6. Nesse exemplo, a
classe mapeadora PersonMapper intermedeia a classe Person da lgica de negcio e o
acesso a seus dados no banco de dados, na correspondente tabela (FOWLER, 2003).
107
Leitura Complementar
No Captulo 7 de (WAZLAWICK, 2004) Projeto da Camada de Domnio,
aspectos do projeto da Lgica de Negcio so discutidos, incluindo modelos de domnio
ricos e padres de projeto associados, possveis modificaes a serem feitas nos
diagramas de classes de projeto.
Em (FOWLER, 2003), o Captulo 2 Organizing Domain Logic discute a
organizao da camada de lgica de negcio. No Captulo 9 Domain Logic Patterns
so apresentados padres para a camada lgica de negcio.
Em (FOWLER, 2003), o Captulo 4 Web Presentation discute diversos
aspectos do projeto da interface com o usurio de aplicaes Web. Os padres
discutidos nesse captulo so posteriormente apresentados em detalhes no Captulo 14
Web Presentation Patterns.
Em (PRESSMAN, 2006), o Captulo 12 Projeto de Interface com o Usurio
discute princpios gerais do projeto da IU (seo 12.1) e o processo de anlise, projeto e
avaliao de IU (sees 12.2 a 12.5).
O Captulo 9 de (WAZLAWICK, 2004) Projeto da Camada de Interface, trata
do projeto da camada de Interface com o Usurio focalizando aspectos da navegao do
sistema e controle de segurana.
Em (FOWLER, 2003), o Captulo 3 Mapping to Relational Databases
discute diversos aspectos do projeto da persistncia de objetos em bancos de dados
relacionais.
O Captulo 10 de (WAZLAWICK, 2004) Projeto da Camada de Persistncia,
trata do projeto da camada de persistncia, incluindo equivalncias entre modelos de
classes e modelos relacionais e aspectos relativos a como e quando os objetos sero
salvos e carregados do banco de dados.
Bauer e King (2007) discutem vrios aspectos do projeto da camada de
persistncia, indo desde mapeamento O/R at detalhes de implementao usando o
framework Hibernate.
Referncias do Captulo
BAUER, C., KING, G., Java Persistence with Hibernate, Manning, 2007.
BUSCHMANN, F., MEUNIER, R., ROHNERT, H., SOMMERLAD, P., STAL, M.,
Pattern-Oriented Software Architecture: A System of Patterns, Volume 1, Wiley,
1996.
COAD, P., YOURDON, E., Projeto Baseado em Objetos, Editora Campus, 1993.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
108
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Projeto de Sistemas de Ricardo de Almeida Falbo)
7.1 - Implementao
Ainda que um projeto bem elaborado facilite sobremaneira a implementao,
essa tarefa no necessariamente fcil. Muitas vezes, os projetistas no conhecem em
detalhes a plataforma de implementao e, portanto, no so capazes de (ou no
desejam) chegar a um projeto algortmico passvel de implementao direta. Alm
disso, questes relacionadas legibilidade, alterabilidade e reutilizao tm de ser
levadas em conta.
Deve-se considerar, ainda, que programadores, geralmente, trabalham em
equipe, necessitando integrar, testar e alterar cdigo produzido por outros. Assim,
muito importante que haja padres organizacionais para a fase de implementao. Esses
padres devem ser seguidos por todos os programadores e devem estabelecer, dentre
outros, padres de nomes de variveis, formato de cabealhos de programas e formato
de comentrios, recuos e espaamento, de modo que o cdigo e a documentao a ele
associada sejam claros para quaisquer membros da organizao.
Padres para cabealho, por exemplo, podem informar o que o cdigo
(programa, mdulo ou componente) faz, quem o escreveu, como ele se encaixa no
projeto geral do sistema, quando foi escrito e revisado, apoios para teste, entrada e sada
esperadas etc. Essas informaes so de grande valia para a integrao, testes,
manuteno e reutilizao (PFLEEGER, 2004).
Alm dos comentrios feitos no cabealho dos programas, comentrios
adicionais ao longo do cdigo so tambm importantes, ajudando a compreender como
o componente implementado.
Por fim, o uso de nomes significativos para variveis, indicando sua utilizao e
significado, imprescindvel, bem como o uso adequado de recuo e espaamento entre
linhas de cdigo, que ajudam a visualizar a estrutura de controle do programa
(PFLEEGER, 2004).
Alm da documentao interna, escrita no prprio cdigo, importante que o
cdigo de um sistema possua tambm uma documentao externa, incluindo uma viso
geral dos componentes do sistema, grupos de componentes e da inter-relao entre eles
(PFLEEGER, 2004).
Ainda que padres sejam muito importantes, deve-se ressaltar que a
correspondncia entre os componentes do projeto e o cdigo fundamental,
caracterizando-se como a mais importante questo a ser tratada. O projeto o guia para
a implementao, ainda que o programador deva ter certa flexibilidade para
implement-lo como cdigo (PFLEEGER, 2004).
Como resultado de uma implementao bem-sucedida, as unidades de software
devem ser codificadas e critrios de verificao das mesmas devem ser definidos.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Software de Ricardo de Almeida Falbo)
7.2 - Testes
Uma vez implementado o cdigo de uma aplicao, o mesmo deve ser testado
para descobrir tantos defeitos quanto possvel, antes da entrega do produto de software
ao seu cliente.
Conforme discutido no Captulo 4 (Parte I do material), o teste uma atividade
de verificao e validao do software e consiste na anlise dinmica do mesmo, isto ,
na execuo do produto de software com o objetivo de verificar a presena de defeitos
no produto e aumentar a confiana de que o mesmo est correto (MALDONADO e
FABBRI, 2001).
Vale ressaltar que, mesmo se um teste no detectar defeitos, isso no quer dizer
necessariamente que o produto um produto de boa qualidade. Muitas vezes, a
atividade de teste empregada pode ter sido conduzida sem planejamento, sem critrios e
sem uma sistemtica bem definida, sendo, portanto, os testes de baixa qualidade
(MALDONADO e FABBRI, 2001).
Assim, o objetivo projetar testes que potencialmente descubram diferentes
classes de erros e faz-lo com uma quantidade mnima de esforo (PRESSMAN, 2006).
Ainda que os testes no possam demonstrar a ausncia de defeitos, como benefcio
secundrio, podem indicar que as funes do software parecem estar funcionando de
acordo com o especificado.
A idia bsica dos testes que os defeitos podem se manifestar por meio de
falhas observadas durante a execuo do software. Essas falhas podem ser resultado de
uma especificao errada ou falta de requisito, de um requisito impossvel de
implementar considerando o hardware e o software estabelecidos, o projeto pode conter
defeitos ou o cdigo pode estar errado. Assim, uma falha o resultado de um ou mais
defeitos (PFLEEGER, 2004).
So importantes princpios de testes a serem observados (PRESSMAN, 2006;
PFLEEGER, 2004 ):
Teste deve ser conduzido por terceiros. Os testes conduzidos por outras
pessoas que no aquelas que produziram o cdigo tm maior probabilidade
de encontrar defeitos. O desenvolvedor que produziu o cdigo pode estar
muito envolvido com ele para poder detectar defeitos mais sutis.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Software de Ricardo de Almeida Falbo)
quando o teste est completo. Uma vez que os testes esto relacionados aos
requisitos dos clientes e usurios, o planejamento dos testes pode comear
to logo a especificao de requisitos tenha sido elaborada. medida que o
processo de desenvolvimento avana (anlise, projeto e implementao),
novos testes vo sendo planejados e incorporados ao plano de testes.
O processo de teste envolve quatro atividades principais (PFLEEGER, 2004,
MALDONADO e FABBRI, 2001):
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Software de Ricardo de Almeida Falbo)
26
Um caminho independente qualquer caminho ao longo de um mdulo que introduz pelo menos um
novo comando de processamento ou condio (PRESSMAN, 2006).
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Software de Ricardo de Almeida Falbo)
Teste de Unidade: tem por objetivo testar a menor unidade do projeto (um
componente de software que no pode ser subdividido), procurando
identificar erros de lgica e de implementao em cada mdulo
separadamente. No paradigma estruturado, a menor unidade refere-se a um
procedimento ou funo.
Tomando por base essas fases, a atividade de teste pode ser estruturada de modo
que, em cada fase, diferentes tipos de erros e aspectos do software sejam considerados
(MALDONADO e FABBRI, 2001). Tipicamente, os primeiros testes focalizam
componentes individuais e aplicam testes caixa-branca e caixa-preta para descobrir
erros. Aps os componentes individuais terem sido testados, eles precisam ser
integrados, at se obter o sistema por inteiro. Na integrao, o foco o projeto e a
arquitetura do sistema. Finalmente, uma srie de testes de alto nvel executada quando
o sistema estiver operacional, visando a descobrir erros nos requisitos (PRESSMAN,
2006, PFLEEGER, 2004).
No teste de unidade, faz-se necessrio construir pequenos componentes para
permitir testar os mdulos individualmente, os ditos drivers e stubs. Um driver um
programa responsvel pela ativao e coordenao do teste de uma unidade. Ele
responsvel por receber os dados de teste fornecidos pelo testador, passar esses dados
para a unidade sendo testada, obter os resultados produzidos por essa unidade e
apresent-los ao testador. Um stub uma unidade que substitui, na hora do teste, uma
outra unidade chamada pela unidade que est sendo testada. Em geral, um stub simula o
comportamento da unidade chamada com o mnimo de computao ou manipulao de
dados (MALDONADO e FABBRI, 2001).
A abordagem de integrao de mdulos pode ter impacto na quantidade de
drivers e stubs a ser construda. Sejam as seguintes abordagens:
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Software de Ricardo de Almeida Falbo)
114
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Software de Ricardo de Almeida Falbo)
115
que o mesmo satisfaz suas necessidades. Vale destacar que o que foi
especificado pelos desenvolvedores pode ser diferente do que queria o
cliente. Assim, o teste de aceitao assegura que o sistema solicitado o que
foi construdo.
Referncias
PFLEEGER, S.L., Engenharia de Software: Teoria e Prtica, So Paulo: Prentice
Hall, 2 edio, 2004.
PRESSMAN, R.S., Engenharia de Software, McGraw-Hill, 6 edio, 2006.
MALDONADO, J. C., FABBRI, S.C.P.F., Teste de Software. In: Qualidade de
Software: Teoria e Prtica, Eds. A.R.C. Rocha, J.C. Maldonado, K. Weber,
Prentice Hall, 2001.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Software de Ricardo de Almeida Falbo)
8.1 - Entrega
A entrega no meramente uma formalidade. No momento em que o sistema
instalado no local de operao e devidamente aceito, necessrio, ainda, ajudar os
usurios a entenderem e a se sentirem mais familiarizados com o sistema. Neste
momento, duas questes so cruciais para uma transferncia bem-sucedida: treinamento
e documentao (PFLEEGER, 2004).
A operao do sistema extremamente dependente de pessoal com
conhecimento e qualificao. Portanto, essencial que o treinamento de pessoal seja
realizado para que os usurios e operadores possam operar o sistema adequadamente.
A documentao que acompanha o sistema tambm tem papel crucial na entrega,
afinal ela ser utilizada como material de referncia para a soluo de problemas ou
como informaes adicionais. Essa documentao inclui, dentre outros, manuais do
usurio e do operador, guia geral do sistema, tutoriais, ajuda (help), preferencialmente
on-line e guias de referncia rpida (PFLEEGER, 2004).
8.2 - Manuteno
O desenvolvimento de um sistema termina quando o produto entregue para o
cliente e entra em operao. A partir da, deve-se garantir que o sistema continuar a ser
til e atendendo s necessidades do usurio, o que pode demandar alteraes no mesmo.
Comea, ento, a fase de manuteno (SANCHES, 2001).
H muitas causas para a manuteno, dentre elas (SANCHES, 2001): falhas no
processamento devido a erros no software, falhas de desempenho, alteraes no
ambiente de dados, alteraes no ambiente de processamento, necessidade de
modificaes em funes existentes e necessidade de incluso de novas capacidades.
Ao contrrio do que podemos pensar, a manuteno no uma atividade trivial
nem de pouca relevncia. Ela uma atividade importantssima e de intensa necessidade
de conhecimento. O mantenedor precisa conhecer o sistema, o domnio de aplicao, os
requisitos do sistema, a organizao que utiliza o mesmo, prticas de engenharia de
software passadas e atuais, a arquitetura do sistema, algoritmos usados etc.
O processo de manuteno semelhante, mas no igual, ao processo de
desenvolvimento e pode envolver atividades de levantamento de requisitos, anlise,
projeto, implementao e testes, agora no contexto de um software existente. Essa
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Software de Ricardo de Almeida Falbo)
117
Referncias
PFLEEGER, S.L., Engenharia de Software: Teoria e Prtica, So Paulo: Prentice Hall,
2 edio, 2004.
SANCHES, R., Processo de Manuteno. In: Qualidade de Software: Teoria e
Prtica, Eds. A.R.C. Rocha, J.C. Maldonado, K. Weber, Prentice Hall, 2001.
_________________________________________________________________________________________________________
(Adaptao por Monalessa Perini Barcellos das Notas de Aula de Engenharia de Software de Ricardo de Almeida Falbo)