Escolar Documentos
Profissional Documentos
Cultura Documentos
Engenharia de Requisitos
Notas de Aula
2012
Sumrio
Captulo 1 - Introduo
1.1 Desenvolvimento de Software e Engenharia de Requisitos
1.2 A Organizao deste Texto
Captulo 2 Engenharia de Requisitos de Software
2.1 Requisitos
2.2 O Processo de Engenharia de Requisitos
2.3 Engenharia de Requisitos e Normas e Modelos de Qualidade
Captulo 3 Levantamento de Requisitos
3.1 Viso Geral do Levantamento de Requisitos
3.2 Tcnicas de Levantamento de Requisitos
3.3 Requisitos e Modelagem de Processos de Negcio
3.4 Escrevendo e Documentando Requisitos de Usurio
Captulo 4 Anlise de Requisitos
4.1 Modelagem Conceitual
4.2 A Linguagem de Modelagem Unificada
4.3 O Paradigma Orientado a Objetos
4.4 Um Mtodo de Anlise de Requisitos Funcionais
4.5 Especificao de Requisitos No Funcionais
4.6 O Documento de Especificao de Requisitos
Captulo 5 Modelagem de Casos de Uso
1
1
3
5
5
8
23
29
29
33
54
57
70
72
73
74
81
83
84
87
88
91
93
104
113
118
119
122
134
138
137
141
151
155
158
159
162
164
173
Este trabalho foi licenciado com uma Licena Creative Commons - AtribuioNoComercial-SemDerivados 3.0 No Adaptada.
Captulo 1 - Introduo
Captulo 1 Introduo
Sistemas de software so reconhecidamente importantes ativos estratgicos para
diversas organizaes. Uma vez que tais sistemas, em especial os sistemas de informao, tm
um papel vital no apoio aos processos de negcio das organizaes, fundamental que os
sistemas funcionem de acordo com os requisitos estabelecidos. Neste contexto, uma
importante tarefa no desenvolvimento de software a identificao e o entendimento dos
requisitos dos negcios que os sistemas vo apoiar (AURUM; WOHLIN, 2005).
A Engenharia de Requisitos o processo pelo qual os requisitos de um produto de
software so coletados, analisados, documentados e gerenciados ao longo de todo o ciclo de
vida do software (AURUM; WOHLIN, 2005). Este texto aborda o processo de Engenharia de
Requisitos, concentrando-se nas atividades de levantamento de requisitos e modelagem
conceitual.
Este captulo apresenta o tema e como o mesmo tratado neste texto. A Seo 1.1
discute a relao entre a Engenharia de Requisitos e o processo de software. A Seo 1.2
apresenta a organizao deste texto.
Captulo 1 - Introduo
controle da qualidade so, muitas vezes, ditas atividades de apoio, pois no esto ligadas
diretamente construo do produto final, ou seja, o software a ser entregue para o cliente,
incluindo toda a documentao necessria. Essas atividades, normalmente, so realizadas ao
longo de todo o ciclo de vida, sempre que necessrio ou em pontos pr-estabelecidos durante
o planejamento, ditos marcos ou pontos de controle. A Figura 1.1 mostra a relao entre esses
tipos de atividades.
Atividades de Gerncia
Atividades de Desenvolvimento
Produto de
Software
Captulo 1 - Introduo
Captulo 1 - Introduo
Referncias do Captulo
AURUM, A., WOHLIN, C., Engineering and Managing Software Requirements, SpringerVerlag, 2005.
2.1 Requisitos
Existem diversas definies para requisito de software na literatura, dentre elas:
importante notar a distino que se faz aqui entre clientes e usurios finais. Consideram-se clientes
aqueles que contratam o desenvolvimento do sistema e que, muitas vezes, no usaro diretamente o
sistema. Eles esto mais interessados nos resultados da utilizao do sistema pelos usurios do que no
sistema em si. Usurios, por outro lado, so as pessoas que utilizaro o sistema em seu dia a dia. Ou seja,
os usurios so as pessoas que vo operar ou interagir diretamente com o sistema.
Vale ressaltar que deve haver uma correspondncia direta entre cada requisito de
usurio listado no documento de requisitos e os requisitos de sistema tratados no
documento de especificao de requisitos.
10
11
Levantamento de requisitos
12
Pessoas que entendem o problema a ser resolvido podem ser muito ocupadas e
no ter muito tempo para, juntamente como analista, levantar os requisitos e
entender o sistema.
13
14
15
Diferentes interessados tm propsitos diferentes. Assim, pode ser til ter mais
do que um documento para registrar os resultados da engenharia de requisitos.
Conforme discutido anteriormente, Pfleeger (2004) sugere que dois tipos de
documentos de requisitos sejam elaborados: um Documento de Definio de Requisitos
e um Documento de Especificao de Requisitos.
O Documento de Definio de Requisitos, ou simplesmente Documento de
Requisitos, deve conter uma descrio do propsito do sistema, uma breve descrio do
domnio do problema tratado pelo sistema e listas de requisitos funcionais, no
funcionais e regras de negcio, descritos em linguagem natural (requisitos de usurio).
16
17
18
19
teis para atingir o objetivo da reviso. Muitas vezes, a pessoa responsvel pela
elaborao do artefato a ser revisado integra a equipe de reviso (ROCHA;
MALDONADO; WEBER, 2001).
O propsito da reviso deve ser previamente informado e o material a ser
revisado deve ser entregue com antecedncia para que cada membro da equipe de
reviso possa avali-lo. Uma vez que todos estejam preparados, uma reunio
convocada pelo lder. Dando incio reunio de reviso, normalmente, o autor do
artefato apresenta o mesmo e descreve a perspectiva utilizada para a sua construo. O
lder orientar o processo de reviso, passando por todos os aspectos relevantes a serem
revistos. Todas as consideraes dos vrios membros da equipe de reviso devem ser
discutidas e as decises registradas, dando origem a uma ata de reunio de reviso,
contendo uma lista de defeitos encontrados. Essa reunio deve ser relativamente breve
(duas horas, no mximo), uma vez que todos j devem estar preparados para a mesma
(ROCHA; MALDONADO; WEBER, 2001).
No que se refere reviso de requisitos, diversas tcnicas de leitura podem ser
usadas. A mais simples a leitura ad-hoc, na qual os revisores aplicam seus prprios
conhecimentos na reviso dos documentos de requisitos. Diferentemente de uma
abordagem ad-hoc, outras tcnicas buscam aumentar a eficincia dos revisores,
direcionando os esforos para as melhores prticas de deteco de defeitos. Tcnicas de
leitura baseada em listas de verificao (checklists), leitura baseada em perspectivas e
leitura de modelos orientados a objetos so bastante usadas na verificao e validao
de documentos de requisitos.
Checklists definem uma lista de aspectos que devem ser verificados pelos
revisores, guiando-os no trabalho de reviso. Podem ser usados em conjunto com outras
tcnicas, tais como as tcnicas de leitura baseada em perspectiva e leitura de modelos
orientados a objetos.
A tcnica de leitura baseada em perspectiva foi desenvolvida especificamente
para a verificao e validao de requisitos. Ela explora a observao de quais
informaes de requisitos so mais ou menos importantes para as diferentes formas de
utilizao do documento de requisitos. Cada revisor realiza a reviso segundo uma
perspectiva diferente. Algumas perspectivas tipicamente consideradas so as
perspectivas de clientes, desenvolvedores e testadores. Checklists para cada uma dessas
perspectivas podem ser providos (ROCHA; MALDONADO; WEBER, 2001).
A leitura de modelos orientados a objetos prope um conjunto de tcnicas de
leitura para reviso dos diferentes diagramas utilizados durante um projeto orientado a
objetos. Cada uma das tcnicas definida para um conjunto de diagramas a serem
analisados em conjunto. O processo de leitura realizado de duas maneiras: a leitura
horizontal diz respeito consistncia entre artefatos elaborados em uma mesma fase,
procurando verificar se esses artefatos esto descrevendo consistentemente diferentes
aspectos de um mesmo sistema, no nvel de abstrao relacionado fase em questo; a
leitura vertical refere-se consistncia entre artefatos elaborados em diferentes fases
(anlise e projeto) (ROCHA; MALDONADO; WEBER, 2001).
20
21
22
Rastreabilidade regressiva
a partir dos requisitos
Fonte do Requisito
Rastreabilidade progressiva
em direo aos requisitos
Rastreabilidade progressiva
a partir dos requisitos
Requisitos
Outros Artefatos:
-Projeto (Design)
- Cdigo
- Testes etc.
Rastreabilidade regressiva
em direo aos requisitos
23
Testes: requisitos so a base para diversos tipos de testes, dentre eles testes
de sistema e de aceitao.
24
25
26
Leitura Complementar
Os livros de Kotonya e Sommerville (1998), Wiegers (2003) e Robertson e
Robertson (2006) so dedicados integralmente Engenharia de Requisitos e, portanto,
contemplam vrios dos aspectos tratados neste captulo e muito mais.
Em (KOTONYA; SOMMERVILLE, 1998) h uma excelente discusso sobre
Engenharia de Requisitos. O processo apresentado neste texto fortemente baseado no
processo proposto nesse livro. Em especial, os seguintes captulos tm informaes
muito relevantes para complementar os estudos baseados nestas notas de aula: Captulo
1 Introduction na forma de um FAQ (Frequently Asked Questions), aborda as
noes de requisitos e engenharia de requisitos; o Captulo 2 Requirements
Engineering Process d uma viso geral do processo de engenharia de requisitos, o
qual detalhado posteriormente nos captulos 3 Requirements Elicitation and
Analysis, 4 Requirements Validation e 5 Requirements Management. Ainda neste
livro, o Captulo 8 Non-functional Requirements discute requisitos no funcionais.
Em (WIEGERS, 2003) h tambm vrios captulos que abordam temas
discutidos nestas notas de aula. Sugere-se, em especial, a leitura dos captulos 1, 3 e 17.
O Captulo 1 The Essential Software Requirements aborda o que so requisitos,
nveis e tipos de requisitos, os processos de desenvolvimento e gerncia de requisitos e
caractersticas de qualidade de requisitos. O Captulo 3 Good Practices for
Requirements Engineering d uma viso geral do processo de engenharia de
requisitos, apontando boas prticas. Indica, ainda, outros captulos do livro que
discutem em detalhes as atividades do processo de engenharia de requisitos. O Captulo
17 Beyond Requirements Development discute as relaes entre requisitos e outros
artefatos do processo de software, dentre eles planos de projeto, projeto (design), cdigo
e testes.
Em (ROBERTSON; ROBERTSON, 2006) o foco tambm a Engenharia de
Requisitos e, portanto, h vrios captulos que abordam temas discutidos nestas notas de
aula. Sugere-se, em especial, a leitura dos captulos 1 e 2. O Captulo 1 What are
Requirements? aborda o que so requisitos e tipos de requisitos. Apresenta, ainda,
brevemente o processo de requisitos proposto no livro, denominado Volere, e o modelo
de documento de requisitos proposto. O Captulo 2 The Requirements Process d
uma viso geral do processo de requisitos, indicando os demais captulos do livro que
discutem em detalhes as suas atividades.
Livros de Engenharia de Software tambm abordam a Engenharia de Requisitos,
tendo em vista que requisitos so parte fundamental do processo de software. Dentre os
diversos livros de Engenharia de Software, sugerem-se trs: (SOMMERVILLE, 2007),
(PFLEEGER, 2004) e (PRESSMAN, 2006).
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
27
28
29
30
31
32
Cada classe de usurios tem seu prprio conjunto de requisitos, tanto funcionais
quanto no funcionais. Alm disso, h classes de usurios que so mais importantes que
outras. Essas classes devem ter tratamento preferencial na definio de prioridades e
resoluo de conflitos (WIEGERS, 2003).
Ainda em relao seleo de usurios, deve-se evitar obter requisitos de
intermedirios entre a fonte de requisitos efetivamente e os analistas. Essa prtica abre espao
para problemas de comunicao e, portanto, sempre que possvel, deve-se ir diretamente
fonte. Contudo, alguns desses intermedirios podem adicionar informao importante. Neste
caso, oua-os tambm. Entretanto, tome cuidado com gerentes de usurio (e tambm com
desenvolvedores) que pensam que sabem as necessidades dos usurios sem sequer consultlos (WIEGERS, 2003).
No que se refere aos responsveis por tomar decises relativas a requisitos, no incio
do projeto deve-se definir quem vai resolver requisitos conflitantes advindos de diferentes
classes de usurio, reconciliar inconsistncias, definir prioridades e arbitrar questes de
escopo que venham a surgir. Uma boa estratgia a tomada de deciso consultiva e
participativa, na qual se obtm ideias e opinies de diversos interessados antes de se tomar
uma deciso (WIEGERS, 2003).
interessante notar que, ao longo do processo de levantamento de requisitos, o
engenheiro de requisitos (ou analista de sistema, como mais conhecido popularmente)
desempenha diversos papis e assume diferentes responsabilidades. Por exemplo, um analista
frequentemente desempenha o papel de um facilitador em sesses de levantamento de
33
Validao dos achados: envolve submeter o registro das informaes obtidas para
avaliao pelas pessoas que participaram da atividade de levantamento de
requisitos.
34
3.2.1 Entrevistas
Entrevistas so, provavelmente, a tcnica mais comumente utilizada no levantamento
de requisitos (AURUM; WOHLIN, 2005). Uma entrevista uma conversa direcionada com
um propsito especfico, que utiliza um formato pergunta-resposta (KENDALL;
KENDALL, 2010). Entrevistas so usadas em quase todos os esforos de levantamento de
requisitos. Nelas, os analistas formulam questes para os interessados e os requisitos so
derivados das respostas a essas perguntas (SOMMERVILLE, 2007).
Uma entrevista feita tipicamente por meio de uma reunio envolvendo o analista
(entrevistador) e um interessado no sistema (entrevistado). Assim, um mtodo interativo de
levantamento de requisitos a partir de um indivduo. Contudo, uma entrevista pode envolver
mais de um entrevistador e mais de um entrevistado. Uma entrevista pode ser, por exemplo,
realizada por dois entrevistadores, um fazendo a maior parte das perguntas, enquanto o outro
registra as informaes obtidas e presta ateno em requisitos possivelmente perdidos.
possvel, ainda, entrevistar dois ou trs interessados de uma s vez, mas deve-se evitar
envolver pessoas demais, pois se pode perder o controle da entrevista e o dilogo descambar
para uma discusso geral (ALEXANDER; BEUS-DUKIC, 2009).
As entrevistas podem ser de dois tipos principais (SOMMERVILLE, 2007):
35
36
Questes subjetivas: permitem respostas abertas. Ex.: O que voc acha de [...]?;
Explique como voc [...]?. Seus pontos positivos so: (i) proveem riqueza de
detalhes; (ii) revelam novos questionamentos; e (iii) colocam o entrevistado mais
vontade, permitindo maior espontaneidade. Contudo, h tambm desvantagens,
dentre elas: (i) podem resultar em muitos detalhes irrelevantes; (ii) podem levar
perda do controle da entrevista; (iii) podem ter respostas muito longas para se
obter pouca informao til; e (iv) podem dar a impresso de que o entrevistador
est perdido e sem objetivo.
37
Objetivas
Baixa
Alta
Baixo
Alto
Baixa
Alta
Amplitude e profundidade
Alta
Baixa
Alta
Baixa
Baixa
Alta
Facilidade de anlise
A elaborao de questes deve ser cuidadosa, pois ela pode levar a problemas como
(KENDALL; KENDALL, 2010):
38
39
Estruturada
Mais Difcil
Mais Fcil
Tempo Requerido
Maior
Menor
Treinamento Requerido
Maior
Menor
Espontaneidade
Maior
Menor
Maior
Menor
Flexibilidade
Maior
Menor
Controle
Menor
Maior
Preciso
Menor
Maior
Confiabilidade
Menor
Maior
Amplitude e Profundidade
Maior
Menor
Avaliao
Por fim, o planejamento deve definir de que forma a entrevista ser registrada.
importante registrar os principais aspectos de uma entrevista durante a sua realizao, pois,
caso contrrio, as informaes obtidas podem ser perdidas logo em seguida. H duas formas
principais, cujas vantagens e desvantagens so apresentadas a seguir (KENDALL;
KENDALL, 2010) (ALEXANDER; BEUS-DUKIC, 2009):
Uma vez planejada, a entrevista deve ser realizada. Na vspera da reunio, recomendase que o analista entre em contato com o entrevistado para confirmar o horrio e o local da
entrevista. No dia da entrevista, o analista deve chegar um pouco antes do horrio marcado,
40
41
Quando?: da mesma forma que entrevistas, workshops devem ser agendados com
antecedncia, em datas acordadas com todos os participantes. No que se refere
durao, deve-se ter em mente que todos os participantes vo interromper seu
trabalho para atender ao workshop. Assim, sesses de workshops devem ser to
curtas quanto possvel, idealmente com durao de uma a duas horas. Contudo,
alguns projetos podem requerer sesses mais longas, algumas vezes com durao
de vrias horas, podendo chegar a dias (ALEXANDER; BEUS-DUKIC, 2009).
Onde?: definir o local onde se a reunio ser realizada. Deve-se garantir que
haver espao suficiente para acomodar confortavelmente todos os participantes. O
layout da sala tambm importante. Layouts em crculo ou na forma de U
funcionam bem, uma vez que eles colocam todos os participantes em um mesmo
nvel de importncia.
42
3.2.3 Questionrios
Questionrio ou survey uma tcnica de levantamento de informaes que permite ao
analista capturar, de vrias pessoas afetadas pelo sistema, atitudes, crenas, comportamentos e
caractersticas. Atitudes referem-se a o que as pessoas na organizao dizem querer; crenas
referem-se a o que as pessoas pensam ser realmente verdade; comportamento o que as
pessoas fazem; caractersticas so propriedades de pessoas ou coisas (KENDALL;
KENDALL, 2010).
H muitas similaridades entre questionrios e entrevistas e pode ser til utilizar as duas
abordagens em conjunto para refinar respostas no claras de um questionrio em uma
entrevista ou para projetar um questionrio com base no que foi descoberto em uma
entrevista. Usando questionrios aps a realizao de entrevistas, um analista pode estar
procurando quantificar o que foi levantado em entrevistas ou determinar como um sentimento
43
expresso em uma entrevista realmente difundido ou limitado. Por outro lado, questionrios
podem ser usados para examinar uma grande amostra de usurios para sentir problemas ou
levantar questes importantes, antes de se programar entrevistas (KENDALL; KENDALL,
2010).
Questionrios proveem um meio eficiente de coletar informaes de vrios
interessados. Entretanto, so limitados no que tange profundidade do conhecimento que
pode ser levantado, uma vez que no permitem que um tpico seja aprofundado ou que ideias
sejam expandidas (AURUM; WOHLIN, 2005).
Questionrios so teis quando (KENDALL; KENDALL, 2010):
Se deseja saber uma opinio global antes de se definir qualquer direo especfica
para o projeto, em um estudo exploratrio.
Por que?: assim como os demais mtodos, a primeira coisa a ser feita estabelecer
os objetivos de um questionrio. Conforme citado anteriormente, questionrios
podem ser usados para quantificar o que foi levantado com outros mtodos, para
determinar como um sentimento capturado por meio de outras tcnicas de
levantamento de requisitos realmente difundido ou limitado, ou para examinar
uma grande amostra de usurios para sentir problemas ou levantar questes
importantes.
44
Questes Objetivas
Alto
Baixo
Natureza exploratria
Alta
Baixa
Amplitude e profundidade
Alta
Baixa
Facilidade de preparao
Fcil
Difcil
Difcil
Fcil
Facilidade de anlise
45
Sempre que possvel, use o vocabulrio das pessoas que iro responder. Prime pela
simplicidade.
As escalas mtricas tem como trao marcante o fato de permitirem que sejam
feitas operaes matemticas sobre os dados obtidos do questionrio e, portanto, uma
anlise mais completa. Para obter essa vantagem, uma estratgia bastante utilizada
consiste em tornar uma escala ordinria em uma escala mtrica, como no exemplo
abaixo.
Quo til o suporte tcnico do Centro de Informao?
1- Nada til
2
3
4
5- Extremamente til
Claramente, originalmente ela no era exatamente uma escala de intervalo, mas ao
ancorar a escala em ambas as extremidades, permite ao analista assumir que os respondentes
vo perceber os intervalos como iguais, tornando anlises quantitativas possveis.
Na construo de escalas, alguns problemas podem ocorrer. A seguir so listados
alguns desses problemas e possveis solues (KENDALL; KENDALL, 2010):
46
Torne fcil para os respondentes marcar claramente suas respostas (para questes
objetivas).
47
3.2.4 - Observao
As pessoas, muitas vezes, tm dificuldade em articular detalhes de seu trabalho, pois
esto imersas nele e fazem muitas coisas de maneira intuitiva. Contudo, os contextos social e
organizacional em que as pessoas trabalham so importantes para o desenvolvimento de um
sistema e podem derivar requisitos e restries (SOMMERVILLE, 2007). Assim, observar o
comportamento e o ambiente do indivduo, sobretudo aquele que toma decises, pode ser uma
forma bastante eficaz de levantar informaes que, tipicamente, passam despercebidas quando
outras tcnicas so usadas (KENDALL; KENDALL, 2010).
A etnografia o estudo de pessoas em seu ambiente natural. No contexto do
levantamento de requisitos, envolve a participao ativa ou passiva do analista nas atividades
normais dos usurios, durante um perodo de tempo, enquanto coleta informaes a respeito
dos processos sendo realizados. Tcnicas de etnografia so especialmente teis para enderear
fatores contextuais e de ambientes de trabalho cooperativo (AURUM; WOHLIN, 2005).
A observao uma das tcnicas de etnografia mais usadas no levantamento de
requisitos. Como o prprio nome indica, o analista observa os usurios executando os
processos, sem interferncia direta (AURUM; WOHLIN, 2005). Ela empregada para
compreender requisitos sociais e organizacionais, bem como para compreender como as
tarefas so realizadas efetivamente. O analista se insere no ambiente de trabalho onde o
sistema ser usado, observa o trabalho do dia-a-dia e faz anotaes acerca das tarefas reais nas
quais os participantes esto envolvidos (SOMMERVILLE, 2007).
Atravs da observao possvel capturar (SOMMERVILLE, 2007; KENDALL;
KENDALL, 2010):
Por outro lado, essa tcnica no apropriada para obter requisitos de domnio, bem
como pode ser difcil identificar novas caractersticas a serem acrescentadas ao sistema.
Assim, a observao deve ser combinada com outras tcnicas de levantamento de requisitos.
Quando aplicadas em conjunto, observao pode ser usada para confirmar ou negar
informaes de entrevistas e/ou questionrios. Tambm se podem entrevistar as pessoas
48
observadas para completar informaes obtidas de uma observao. A observao pode ser
combinada tambm com a prototipagem. Uma vez construdo um prottipo, podem-se
observar os usurios utilizando o prottipo, de modo a avaliar o mesmo e derivar novos
requisitos (SOMMERVILLE, 2007; KENDALL; KENDALL, 2010; KOTONYA;
SOMMERVILLE, 1998). Alm disso, deve-se ressaltar que a efetividade de uma observao
pode variar na medida em que os usurios tm tendncia a ajustar o modo como realizam suas
tarefas quando sabem que esto sendo observados (AURUM; WOHLIN, 2005).
Como outras tcnicas de levantamento de requisitos, a observao envolve
planejamento, conduo e o registro de resultados. No planejamento, o analista deve definir o
que observar, quem observar, quando, onde, porque e como. Kotonya e Sommerville (1998)
apontam que no h uma forma padro de se conduzir estudos etnogrficos, contudo, indicam
algumas diretrizes para a aplicao dessa tcnica, dentre elas:
Deve-se assumir que as pessoas que esto sendo observadas so boas em seu
trabalho e procurar capturar meios no padronizados de trabalhar. Esses meios
frequentemente apontam para eficincias no processo de trabalho que foram
incorporadas a partir da experincia individual.
til que o analista, antes de iniciar o trabalho, informe as pessoas e diga como a
observao vai ser conduzida e seu propsito.
3.2.5 Prototipagem
Muitas vezes as pessoas acham difcil visualizar como um requisito especificado na
forma de uma sentena escrita ou por um conjunto de modelos vai se materializar em um
sistema de software. De maneira geral, pessoas tm dificuldade de descrever suas
necessidades sem ter algo tangvel sua frente. Nesses casos, se um prottipo do sistema
desenvolvido para demonstrar requisitos, fica mais fcil para usurios e outros interessados
encontrar problemas e sugerir como os requisitos podem ser melhorados. Afinal, criticar
mais fcil do que criar (KOTONYA; SOMMERVILLE, 1998; WIEGERS, 2003).
Um prottipo uma verso inicial do sistema que desenvolvido no incio do
processo de desenvolvimento. No contexto da engenharia de requisitos, um prottipo
desenvolvido com o propsito de apoiar o levantamento e a validao de requisitos. Assim,
nesse contexto, uma caracterstica essencial de um prottipo que ele seja desenvolvido
rapidamente (KOTONYA; SOMMERVILLE, 1998).
49
50
procurar usar dados reais para realar a validade do prottipo como um modelo do
sistema real. Normalmente, essa simulao boa o suficiente para os usurios
fazerem um julgamento se h funcionalidade faltando, errada ou desnecessria
(WIEGERS, 2003).
Quanto ao uso futuro do prottipo como base para o sistema real, ou no, um prottipo
pode ser:
51
O que Kendall e Kendall (2010) chamam de um prottipo primeiro de uma srie (i.e., um
sistema piloto desenvolvido para ser avaliado antes de ser distribudo) pode ser considerado
um prottipo operacional, completo e evolutivo. Contudo, nem todas as categorias podem ser
combinadas entre si. Por exemplo, um prottipo no operacional necessariamente um
prottipo de caractersticas selecionadas, uma vez que ele certamente no implementa todas as
caractersticas que se imagina ter o sistema real.
Diferentes tipos de prottipos podem ser combinados para apoiar um mesmo projeto
de desenvolvimento. Por exemplo, no estgio de levantamento preliminar de requisitos,
prottipos de interface podem ser usados para refinar requisitos. Esses requisitos so ento
gradativamente refinados e implementados em uma srie de prottipos evolutivos,
considerando inicialmente apenas os principais processos de negcio (caractersticas
selecionadas) e algumas camadas do software (interface com o usurio e lgica de negcio).
Outros elementos so incorporados ao produto final, por meio de incrementos e iteraes
sucessivas, at se obter o produto de software final.
A prototipagem tambm requer planejamento. Devem-se definir porque, quando e que
tipo de prottipo usar, selecionar usurios para avaliar o prottipo e definir como o feedback
do usurio ser obtido.
Usurios so fundamentais na prototipagem. Para capturar as reaes dos usurios em
relao ao prottipo, outras tcnicas de levantamento de informao devem ser usadas em
conjunto. Durante a experimentao do usurio com o prottipo, pode-se utilizar observao.
Para capturar opinies e sugestes, podem ser empregados, alm da observao, entrevistas e
questionrios (KENDALL; KENDALL, 2010).
Para o desenvolvimento do prottipo, as seguintes diretrizes podem ser teis
(KENDALL; KENDALL, 2010; WIEGERS, 2003):
52
53
54
A observao pode ser combinada tambm com a prototipagem. Uma vez construdo
um prottipo, podem-se observar os usurios utilizando o prottipo, de modo a avaliar o
mesmo e derivar novos requisitos. Para capturar as reaes dos usurios em relao ao
prottipo, outras tcnicas de levantamento de requisitos tambm podem ser usadas, tais como
entrevistas e questionrios para capturar opinies e sugestes. Por fim, cenrios podem ser
usados para derivar prottipos e prottipos podem ser apresentados no contexto da discusso
de um cenrio, sendo tcnicas complementares (KENDALL; KENDALL, 2010;
SOMMERVILLE, 2007).
De fato, quase todas as tcnicas so complementares em alguma extenso, podendo ser
alternativas em outras. Assim, importante avaliar cada caso e escolher o melhor conjunto de
tcnicas a serem aplicadas, levando em considerao, dentre outros, a experincia dos
analistas no uso das diversas tcnicas, o perfil dos interessados e o tempo disponvel.
55
56
Modelo de Localidades
Modelo Organizacional
Modelo de Processos
possui
Estrutura Organizacional
Localizao
Geogrfica
executa
realizada em
Processo
possui
atende
Atividade manipula
dispara
Evento
Objetivo
desmembrado
em
Modelo de Objetivos
Objeto
Modelo de Atividades
57
58
Descrio
Origem
Prioridade
Responsvel
Interessados
Dependncias
Conflitos
59
Prefira a voz ativa (o sistema deve fazer alguma coisa) voz passiva (alguma coisa
deve ser feita).
60
61
Restries: como o prprio nome indica, restringem as aes que o sistema ou seus
usurios podem realizar. Algumas palavras ou frases sugerem a descrio de uma
restrio, tais como deve, no deve, no pode e somente. Ex.: Um aluno s pode
tomar emprestado, concomitantemente, at trs livros.
Sem atraso de
pagamento
registrado
Volume de
negcios
R$ 1 milho
Volume de
negcios <
R$ 1 milho
Com atraso
de pagamento
registrado
Prioritrio
Tempo de
trabalho
20 anos
Tempo de
trabalho <
20 anos
Prioritrio
Normal
Normal
62
Tratamento de Clientes
Volume de Negcios R$ 1 milho?
Tratamento Prioritrio
X
X
Tratamento Normal
Figura 3.5 Exemplo de Tabela de Deciso.
Inferncias: so regras que derivam novos fatos a partir de outros fatos ou clculos.
So normalmente escritas no padro se / ento, como as regras ativadoras de
ao, mas a clusula ento implica um fato ou nova informao e no uma ao a
ser tomada. Ex.: Se o usurio no devolve um livro dentro do prazo estabelecido,
ento ele torna-se um usurio inadimplente.
Ciclo de Vida de Objetos: O que causa uma mudana no estado desse objeto?
63
64
65
Usabilidade: diz respeito ao quo fcil para o usurio realizar uma tarefa e o tipo
de suporte ao usurio que o sistema prov.
66
67
68
69
70
Oliv (2007) utiliza o termo esquema conceitual para designar o conjunto de artefatos que capturam o
conhecimento que um sistema de informao necessita para realizar suas funes. Contudo, a maioria dos textos,
tais como (WAZLAWICK, 2004) e (BLAHA; RUMBAUGH, 2006), utiliza o termo modelo conceitual para
designar esse conjunto de artefatos. Oliv utiliza o termo modelo conceitual para designar tipos de modelos,
tais como modelos de objetos, modelos de casos de uso etc. Nestas notas de aula, o termo modelo conceitual
usado como na maioria dos textos, no sendo feita uma distino precisa entre as duas acepes do termo. De
maneira geral, o contexto indica ao que se refere o termo.
71
72
Funo Ativa: o sistema pode realizar aes que modificam o estado do domnio.
Para realizar essa funo, o sistema precisa conhecer as aes que ele pode tomar,
quando elas devem ser tomadas e como elas vo afetar o estado do domnio.
73
74
75
Para fazer bom uso do paradigma OO, importante conhecer os princpios adotados
por ele na administrao da complexidade, bem como seus principais conceitos.
4.3.1 Princpios para Administrao da Complexidade
O mundo real algo extremamente complexo. Quanto mais de perto o observamos,
mais claramente percebemos sua complexidade. A orientao a objetos tenta gerenciar a
complexidade inerente dos problemas do mundo real, abstraindo conhecimento relevante e
encapsulando-o dentro de objetos. De fato, alguns princpios bsicos gerais para a
administrao da complexidade norteiam o paradigma orientado a objetos, entre eles
abstrao, encapsulamento e modularidade.
Abstrao
Uma das principais formas do ser humano lidar com a complexidade atravs do uso
de abstraes. As pessoas tipicamente tentam compreender o mundo, construindo modelos
mentais de partes dele. Tais modelos so uma viso simplificada de algo, onde apenas os
elementos relevantes so considerados. Modelos, portanto, so mais simples do que os
complexos sistemas que eles modelam.
Seja o exemplo de um mapa representando um modelo de um territrio. Um mapa
til porque abstrai apenas as caractersticas do territrio que se deseja modelar. Se um mapa
inclusse todos os detalhes do territrio, provavelmente teria o mesmo tamanho do territrio e,
portanto, no serviria a seu propsito.
Da mesma forma que um mapa precisa ser significativamente menor que o territrio
que ele mapeia, incluindo apenas as informaes selecionadas, um modelo deve abstrair
apenas as caractersticas relevantes de um sistema para seu entendimento. Assim, pode-se
definir abstrao como sendo o princpio de ignorar aspectos no relevantes de um assunto,
segundo a perspectiva de um observador, tornando possvel uma concentrao maior nos
aspectos principais do mesmo. De fato, a abstrao consiste na seleo que um observador faz
de alguns aspectos de um assunto, em detrimento de outros que no demonstram ser
relevantes para o propsito em questo. A Figura 2.4 ilustra o conceito de abstrao.
Mapa Rodovirio
So Paulo
Mapa de Temperaturas
76
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 2.5 ilustra o conceito de encapsulamento.
Estrutura Interna
Interface
77
de mdulos coesos e fracamente acoplados e crucial para se obter sistemas fceis de manter
e estender.
Abstrao, encapsulamento e modularidade so princpios sinergticos, isto , ao se
trabalhar bem com um deles, est-se aperfeioando os outros tambm.
4.3.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. 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
composta do nome da operao sendo requisitada e dos 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 e associaes (uma estrutura de informao) e seu comportamento
representado por um conjunto de operaes.
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 iguais. Apesar de serem objetos diferentes, elas compartilham uma mesma
estrutura e um mesmo comportamento. Entretanto, no h necessidade de se despender tempo
78
79
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 do todo e das
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 a ele 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 esse conceito para mostrar especificidades de subtipos de
estudantes, tais como estudantes de graduao e estudantes de ps-graduao.
De 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 atributos, associaes 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.
A herana , portanto, um relacionamento entre classes (em contraposio s
associaes que representam relacionamentos entre objetos das classes), no qual uma classe
compartilha a estrutura e o comportamento definidos em outras (uma ou mais) classes. A
classe que herda caractersticas4 dita subclasse e a que fornece as caractersticas,
superclasse. Desta forma, a herana representa uma hierarquia de abstraes na qual uma
subclasse herda de uma ou mais superclasses.
Tipicamente, uma subclasse aumenta ou redefine caractersticas de suas superclasses.
Assim, se uma classe B herda de uma classe A, todas as caractersticas descritas em A tornamse automaticamente parte de B, que ainda livre para acrescentar novas caractersticas para
seus propsitos especficos.
4
O termo caracterstica usado aqui para designar estrutura (atributos e associaes) e comportamento
(operaes).
80
Classe D
r
(b)
81
82
83
caso de uso, representando como objetos do diagrama de classes interagem para realizar um
caso de uso. Os diagramas de interao so elaborados com este propsito. Finalmente, pode
ser til representar os passos de um caso de uso na forma de um diagrama, mostrando objetos
gerados e os atores envolvidos em cada passo. Para tal, diagramas de atividades podem ser
elaborados. A elaborao de diagramas de estados, de interao e de atividades o foco da
atividade de modelagem comportamental dinmica, a qual discutida com maiores detalhes
no Captulo 7.
Deve-se frisar que, apesar da Figura 4.1 sugerir que os passos do mtodo so
sequenciais, na prtica, isso no ocorre. Paralelamente modelagem de casos de uso, pode-se
iniciar a modelagem conceitual estrutural. Os diagramas de atividade podem tambm ser
elaborados em conjunto com a definio dos casos de uso, de maneira a complementar a
descrio de casos de uso especficos. Diagramas de estado e de interao requerem a
definio preliminar de casos de uso e classes. Contudo, podem ter sido definidos apenas
alguns casos de uso e classes (e no todos eles) para j iniciar a elaborao desses diagramas.
Assim, as atividades mostradas na Figura 4.1 so fortemente paralelas e iterativas.
Paralelamente a todas as atividades de modelagem, o documento de especificao de
requisitos deve ir sendo elaborado. Mesmo a verificao e a validao podem ser feitas por
partes e no para o documento como um todo. Por exemplo, bastante comum validar
primeiro somente os casos de uso. Verificaes de consistncia, tais como as feitas entre
casos de uso e classes, ou casos de uso, diagramas de interao e diagramas de classes, podem
ser feitas separadamente uma das outras. Assim, as atividades de documentao, verificao e
validao so atividades contnuas que ocorrem paralelamente modelagem conceitual.
84
Seja o exemplo de um sistema que tem como requisito no funcional ser fcil de
aprender. Esse requisito poderia ser especificado conforme mostrado na Tabela 4.1.
Tabela 4.1 Especificao de Requisito No Funcional.
RNF01 A funcionalidade Efetuar Locao de Item deve ser fcil de aprender.
Medida:
Facilidade de
Aprendizagem
de funo (Ease
of function
learn) (ISO/IEC,
2003a)
Critrio de
Aceitao:
Descrio:
Propsito:
Mtodo de
Aplicao:
Medio:
85
86
87
88
atores e de casos de uso, sendo que essas ltimas podem ser complementadas com outros
diagramas associados, tais como os diagramas de atividade e de sequncia da UML6.
Outro aspecto a ser realado que os modelos de caso de uso so independentes do
mtodo de anlise a ser usado e at mesmo do paradigma de desenvolvimento. Assim, podese utilizar a modelagem de casos de uso tanto no contexto do desenvolvimento orientado a
objetos (foco deste texto), como em projetos desenvolvidos segundo o paradigma estruturado.
De fato, o uso de modelos de caso de uso pode ser ainda mais amplo. Casos de uso podem ser
usados, por exemplo, para documentar processos de negcio de uma organizao. Contudo,
neste texto, explora-se a utilizao de casos de uso para modelar e documentar requisitos
funcionais de sistemas. Assim, geralmente so interessados7 (stakeholders) nos casos de uso:
as pessoas que usaro o sistema (usurios), o cliente que requer o sistema, outros sistemas
com os quais o sistema em questo ter de interagir e outros membros da organizao (ou at
mesmo de fora dela) que tm restries que o sistema precisa garantir.
Este captulo aborda a tcnica de modelagem de casos de uso, discutindo os principais
elementos de modelos de casos de uso. A Seo 5.1 discute os dois principais conceitos
empregados na modelagem de casos de uso: atores e casos de uso. A Seo 5.2 aborda os
diagramas de casos de uso e sua notao segundo a UML. A Seo 5.3 trata da especificao
de casos de uso. A Seo 5.4 discute os tipos de relacionamentos que podem ser estabelecidos
entre casos de uso, a saber: incluso, extenso e generalizao / especializao. Finalmente, a
Seo 5.5 discute como trabalhar com casos de uso e como us-los em outras atividades do
processo de software.
5.1.1 - Atores
D-se nome de ator a um papel desempenhado por entidades fsicas (pessoas 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).
6
89
90
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.
9
As mesmas excees da nota anterior aplicam-se aqui, conforme discutido mais adiante.
91
Caso de Uso: representa uma funcionalidade que o sistema deve prover. Casos de
uso so parte do sistema e, portanto, residem dentro dele. Um caso de uso
representado por uma elipse com o nome do caso de uso dentro ou abaixo dela.
92
93
94
projeto, em funo das peculiaridades de cada caso de uso. De todo modo, recomendvel
que a organizao defina modelos de descrio de casos de uso a serem adotados em seus
projetos, devendo definir tantos modelos quantos julgar necessrios.
Cockburn (2005) recomenda que pelo menos dois modelos de descrio de casos de
uso sejam definidos: um casual, escrito como um texto corrido livre, a ser usado em projetos
com pouca formalidade; outro completo, com uma estrutura bem definida, para projetos de
maior formalidade.
As seguintes informaes so um bom ponto de partida para a definio de um modelo
de descrio de casos de uso:
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.
Ator Primrio: nome do ator primrio, ou seja, o interessado que tem um objetivo
em relao ao sistema, o qual pode ser atingido pela execuo do caso de uso.
95
96
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.
97
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.4, 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.4.
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:
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
98
Abortar o caso de uso. Neste caso, no se retorna ao fluxo principal e o caso de uso
no atinge seus objetivos.
99
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.5.
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.5 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 CRUD11) e consultas. Casos de uso cadastrais de baixa
complexidade tipicamente envolvem incluso, alterao, consulta e excluso de entidades e
seguem o padro de descrio mostrado na Figura 5.6.
11
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.
100
Classes
101
Aes
Possveis
I, A, C, E
Cadastrar
Filme
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
Para casos de uso de consulta mais abrangente do que a consulta de um nico objeto
(j tratada como parte dos casos de uso cadastrais), mas ainda de baixa complexidade (tais
como consultas que combinam informaes de vrios objetos envolvendo filtros), sugere-se
utilizar o formato tabular mostrado na Tabela 5.3.
Tabela 5.3 Modelo de Descrio de Casos de Uso de Consulta
Caso de Uso
Observaes Requisitos
Classes
<nome do caso de uso>
A coluna Observaes deve ser usada para listar informaes importantes
relacionadas consulta, tais como dados que podem ser informados para a pesquisa,
totalizaes feitas em relatrios etc.
As colunas Requisitos e Classes tm a mesma funo de suas homnimas no modelo
da Tabela 5.1, ou seja, indicam, respectivamente, os requisitos que esto sendo tratados (ou
que devem ser) pelo caso de uso e as classes do domnio do problema necessrias para a
realizao do mesmo.
A Tabela 5.4 ilustra a descrio de um caso de usos de consulta do subsistema
Controle de Acervo de uma videolocadora.
102
Observaes
Requisitos
As consultas ao acervo podero ser RF11, RNF1,
feitas informando uma (ou uma RNF2
combinao)
das
seguintes
informaes: ttulo (ou parte dele),
original ou em portugus, gnero, tipo
de mdia disponvel, ator, diretor,
nacionalidade e lanamentos.
Classes
Filme, Item,
TipoMidia,
Distribuidora
103
104
5.4.1 - Incluso
Uma associao de incluso de um caso de uso base para um caso de uso de incluso
significa que o comportamento definido no caso de uso de incluso incorporado ao
comportamento do caso de uso base. Ou seja, a relao de incluso incorpora um caso de uso
(o caso de uso includo) dentro da sequncia de comportamento de outro caso de uso (o caso
de uso base) (BLAHA; RUMBAUGH, 2006; OLIV, 2007).
Esse tipo de associao til para extrair comportamento comum a vrios casos de
uso em uma nica descrio, de modo que esse comportamento no tenha de ser descrito
repetidamente. O caso de uso de incluso pode ou no ser passvel de utilizao isoladamente.
Assim, ele pode ser apenas um fragmento de uma funcionalidade, no precisando ser uma
transao completa. A parte comum includa por todos os casos de uso base que tm esse
caso de uso de incluso em comum e a execuo do caso de uso de incluso anloga a uma
chamada de subrotina (OLIV, 2007).
Na UML, o relacionamento de incluso entre casos de uso mostrado como uma
dependncia (seta pontilhada) estereotipada com a palavra-chave include, partindo do caso de
uso base para o caso de uso de incluso, como ilustra a Figura 5.6.
105
106
107
nunca permanece isolado, mas apenas instanciado como parte de alguma base maior que o
inclui. Neste texto, admitimos a possibilidade de um caso de uso includo poder ser utilizado
isoladamente, pois isso permite representar situaes em que um caso de uso chama outro
caso de uso (como uma chamada de subrotina), mas este ltimo pode tambm ser realizado
isoladamente. A Figura 5.10 ilustra uma situao bastante comum, em que, ao se realizar um
processo de negcio (no caso a reserva de um carro em um sistema de locao de
automveis), caso uma informao necessria para esse processo (no caso o cliente) no
esteja disponvel, ela pode ser inserida no sistema. Contudo, o cadastro da informao
tambm pode ser feito dissociado do processo de negcio que o inclui (no caso, o cliente pode
se cadastrar fora do contexto da reserva de um carro). Ao no se admitir a possibilidade de um
caso de uso includo poder ser utilizado isoladamente, no possvel modelar situaes desta
natureza, as quais so bastante frequentes.
5.4.2 - Extenso
Uma associao de extenso entre um caso de uso de extenso e um caso de uso base
significa que o comportamento definido no caso de uso de extenso pode ser inserido dentro
do comportamento definido no caso de uso base, em um local especificado indiretamente pelo
caso de uso de extenso. A extenso ocorre em um ou mais pontos de extenso especficos
definidos no caso de uso base. A extenso pode ser condicional. Neste caso, a extenso ocorre
apenas se a condio verdadeira quando o ponto de extenso especificado atingido. O caso
de uso base definido de forma independente do caso de uso de extenso e significativo
independentemente do caso de uso de extenso (OLIV, 2007; BOOCH; RUMBAUGH;
JACOBSON, 2006).
Um caso de uso pode ter vrios pontos de extenso e esses pontos so referenciados
por seus nomes (BOOCH; RUMBAUGH; JACOBSON, 2006). O caso de uso base apenas
indica seus pontos de extenso. O caso de uso de extenso especifica em qual ponto de
extenso ele ser inserido. Por isso, diz-se que o caso de uso de extenso especifica
indiretamente o local onde seu comportamento ser inserido.
A associao de extenso como uma relao de incluso olhada da direo oposta,
em que a extenso se incorpora ao caso de uso base, em vez de o caso de uso base incorporar
explicitamente a extenso. Ela conecta um caso de uso de extenso a um caso de uso base. O
caso de uso de extenso geralmente um fragmento, ou seja, ele no aparece sozinho como
uma sequncia de comportamentos. Alm disso, na maioria das vezes, a relao de extenso
possui uma condio associada e, neste caso, o comportamento de extenso ocorre apenas se a
condio for verdadeira. O caso de uso base, por sua vez, precisa ser, obrigatoriamente, um
caso de uso vlido na ausncia de quaisquer extenses (BLAHA; RUMBAUGH, 2006).
108
12
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.11, a nota est
anexada ao relacionamento de extenso, adicionando-lhe informaes sobre o ponto de extenso e a condio
associados extenso.
109
110
111
112
113
5.4.4 Diretrizes para o Uso dos Tipos de Relacionamentos entre Casos de Uso
Os relacionamentos entre casos de uso devem ser utilizados com cuidado para evitar a
introduo de complexidade desnecessria. As seguintes orientaes so teis para ajudar a
decidir quando usar relacionamentos entre casos de uso em um diagrama de casos de uso:
114
115
116
117
118
119
importante notar que essas atividades so dependentes umas das outras e que,
durante o desenvolvimento, elas so realizadas, tipicamente, de forma paralela e iterativa,
sempre visando ao entendimento do domnio do problema, desconsiderando aspectos de
implementao.
Este captulo aborda a modelagem conceitual estrutural, discutindo os principais
aspectos dessa importante tarefa, quando realizada segundo o paradigma orientado a objetos.
A Seo 6.1 discute o processo de identificao de classes. A Seo 6.2 aborda a identificao
de atributos e associaes. Finalmente, a Seo 6.3 discute a especificao de hierarquias de
generalizao / especializao.
120
em relao palavra anterior. Acentos no devem ser utilizados. Ex.: Cliente, PessoaFisica,
ItemPedido.
Tomando por base os requisitos iniciais do usurio e, sobretudo, o modelo de casos de
uso, possvel iniciar o trabalho de modelagem da estrutura do sistema. Esse trabalho comea
com a descoberta de quais classes devem ser includas no modelo. O cerne de um modelo OO
exatamente o seu conjunto de classes.
Durante a anlise de requisitos, tipicamente o analista estuda, filtra e modela o
domnio do problema. Dizemos que o analista filtra o domnio, pois apenas uma parte desse
domnio far parte das responsabilidades do sistema. Assim, um domnio de problemas pode
incluir vrias informaes, mas as responsabilidades de um sistema nesse domnio podem
incluir apenas uma pequena parcela deste conjunto.
As classes de um modelo representam a expresso inicial do sistema. As atividades
subsequentes da modelagem estrutural buscam obter uma descrio cada vez mais detalhada,
em termos de associaes e atributos. Contudo, deve-se observar que, medida que atributos
e associaes vo sendo identificados, se ganha maior entendimento a respeito do domnio e
naturalmente novas classes surgem. Assim, as atividades da modelagem conceitual so
iterativas e com alto grau de paralelismo, devendo ser realizadas concomitantemente.
Um aspecto fundamental no processo de modelagem conceitual a interao constante
com os especialistas de domnio. Tcnicas de levantamento de requisitos, tais como
entrevistas, anlise de documentos e reunies JAD, tm um papel fundamental nesta etapa.
Assim, o levantamento de requisitos continua acontecendo paralelamente modelagem
conceitual.
Conforme apontado anteriormente, dois importantes insumos para a atividade de
identificao de classes so o Documento de Requisitos e o Modelo de Casos de Uso. Uma
maneira bastante prtica e eficaz de trabalhar a identificao de classes consiste em olhar
esses dois documentos, em especial a descrio do minimundo e as descries de casos de
uso, procura de classes.
Diversos autores, dentre eles Jacobson (1992) e Wazlawick (2004), sugerem que uma
boa estratgia para identificar classes consiste em ler esses documentos procurando por
substantivos. Esses autores argumentam que uma classe , tipicamente, descrita por um nome
no domnio e, portanto, aprender sobre a terminologia do domnio do problema um bom
ponto de partida. Ainda que um bom ponto de partida, essa heurstica ainda muito vaga. Se
o analista segui-la fielmente, muito provavelmente ele ter uma extensa lista de potenciais
classes, sendo que muitas delas podem, na verdade, se referir a atributos de outras classes.
Alm disso, pode ser que importantes classes no sejam capturadas, notadamente aquelas que
se referem ao registro de eventos de negcio, uma vez que esses eventos muitas vezes so
descritos na forma de verbos. Seja o seguinte exemplo de uma descrio de um domnio de
locao de automveis: clientes locam carros. Seriam consideradas potenciais classes:
Cliente e Carro. Contudo, a locao um evento de negcio importante que precisa ser
registrado e, usando a estratgia de identificar classes a partir de substantivos, Locao no
entraria na lista de potenciais classes.
Assim, neste texto sugere-se que, ao examinar documentos de requisitos e modelos de
casos de uso, os seguintes elementos sejam considerados como candidatos a classes:
Agentes: entidades do domnio do problema que tm a capacidade de agir com
inteno de atingir uma meta. Em sistemas de informao, h dois tipos principais
121
122
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 existente13.
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 populao14. 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 a simplicidade do
modelo e, portanto, melhor no incluir tais classes em um modelo conceitual.
Existncia de instncias: toda classe deve possuir uma populao no vazia. Uma
potencial classe que possui uma nica instncia tambm no deve ser considerada
em um modelo conceitual estrutural. Tipicamente uma classe possui vrias
instncias e a populao da classe varia ao longo do tempo.
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).
14
123
6.2.1 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 primitivos se aplique, devese definir, ento, um tipo de dados especfico. Por exemplo, em domnios que lidem com
livros, necessrio definir o tipo ISBN15, 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
15
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.
124
125
fosse uma tabela de um banco de dados relacional). Associaes j tm sua presena indicada
pela notao de associao, ou seja, pelas linhas que conectam as classes que se relacionam.
Um aspecto bastante importante na especificao de atributos a escolha de nomes.
Deve-se procurar utilizar o vocabulrio tpico do domnio do problema, usando nomes
legveis e abrangentes. Para nomear atributos, sugerem-se nomes iniciando com substantivo, o
qual pode ser combinado com complementos ou adjetivos, omitindo-se preposies. O nome
do atributo deve ser iniciado com letra minscula, enquanto os nomes dos complementos
devem iniciar com letras maisculas, sem dar um espao em relao palavra anterior.
Acentos no devem ser utilizados. Atributos monovalorados devem iniciar com substantivo
no singular (p.ex., nome, razaoSocial), enquanto atributos multivalorados devem iniciar com
o substantivo no plural (p.ex., telefones).
A sintaxe de atributos na UML, em sua forma plena, a seguinte (BOOCH;
RUMBAUGH; JACOBSON, 2006):
visibilidade nome: tipo [multiplicidade] = valorInicial {propriedades}
A visibilidade de um atributo indica em que situaes esse atributo visvel por outras
classes. Na UML h quatro nveis de visibilidade, os quais so marcados pelos seguintes
smbolos:
+ pblico : o atributo pode ser acessado por qualquer classe;
# protegido: o atributo s passvel de acesso pela prpria classe ou por uma de suas
especializaes;
- privado: o atributo s pode ser acessado pela prpria classe;
~ pacote: o atributo s pode ser acessado por classes declaradas dentro do mesmo
pacote da classe a que pertence o atributo.
A informao de visibilidade inerente fase de projeto e no deve ser expressa em
um modelo conceitual. Assim, em um modelo conceitual, atributos devem ser especificados
sem nenhum smbolo antecedendo o nome.
O tipo indica o tipo de dado do atributo, o qual deve ser um tipo de dado primitivo ou
um tipo de dado especfico de domnio. Tipos de dados especficos de domnio devem ser
definidos no Dicionrio de Dados do Projeto.
A multiplicidade a especificao do intervalo permitido de itens que o atributo pode
abrigar. O padro que cada atributo tenha um e somente um valor para o atributo. Quando
um atributo for opcional ou quando puder ter mais do que uma ocorrncia, a multiplicidade
deve ser informada, indicando o valor mnimo e o valor mximo, da seguinte forma:
valor_mnimo .. valor_mximo
126
Um atributo pode 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.
6.2.2 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 multiplicidade16 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.
127
128
129
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.
130
Object Management Group (http://www.omg.org/) uma organizao internacional que gerencia padres
abertos relativos ao desenvolvimento orientado a objetos, dentre eles a UML.
131
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).
132
133
134
uma relao de composio, como ilustra a Figura 6.15(a). O exemplo da Figura 6.15(b)
ilustra o caso de comisses compostas por professores. Nesse caso, um professor pode
participar de mais de uma comisso simultaneamente e, portanto, trata-se uma relao de
agregao. Na UML, um losango branco na extremidade da associao relativa ao todo indica
uma agregao. J um losango preto indica uma composio.
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.
135
136
Tambm no faz sentido criar uma hierarquia de classes em que a superclasse no tem
nenhum atributo ou associao. Informaes de estados pelos quais um objeto passa tambm
no devem ser confundidas com subclasses. Por exemplo, um carro de uma locadora de
automveis pode estar locado, disponvel ou em manuteno. Estes so estados e no subtipos
de carro.
De fato, interessante considerar alguns critrios para incluir uma subclasse (ou
superclasse) em um modelo conceitual. O principal deles o fato da especializao (ou
generalizao) estar dentro do domnio de responsabilidade do sistema. Apenas subclasses
(superclasses) relevantes para o sistema em questo devem ser consideradas. Alm desse
critrio bsico, os seguintes critrios devem ser usados para analisar hierarquias de herana:
Ateno especial deve ser dada nomeao de classes em uma hierarquia de classes.
Cada especializao deve ser nomeada de forma a ser auto-explicativa. Um nome apropriado
para a especializao pode ser formado pelo nome de sua superclasse, acompanhado por um
qualificador que descreve a natureza da especializao. Por exemplo, EstudanteGraduacao
para designar um subtipo de Estudante.
Hierarquias de classes no devem ser usadas de forma no criteriosa, simplesmente
para compartilhar algumas propriedades. Seja o caso de uma loja de animais, em que se deseja
saber as seguintes informaes sobre clientes e animais: nome, data de nascimento e
endereo. No faz nenhum sentido considerar que Cliente uma subclasse de Animal ou viceversa, apenas para reusar um conjunto de atributos que, coincidentemente, igual.
No que se refere modelagem de superclasses, deve-se observar se uma superclasse
concreta ou abstrata. Se a superclasse puder ter instncias prprias, que no so instncias de
nenhuma de suas subclasses, ento ela uma classe concreta. Por outro lado, se no for
possvel instanciar diretamente a superclasse, ou seja, se todas as instncias da superclasse so
antes instncias das suas subclasses, ento a superclasse abstrata. Classes abstratas so
representadas na UML com seu nome escrito em itlico e no devem herdar de classes
concretas.
Quando modeladas hierarquias de classes, necessrio posicionar atributos e
associaes adequadamente. Cada atributo ou associao deve ser colocado na classe mais
adequada. Atributos e associaes genricos, que se aplicam a todas as subclasses, devem ser
posicionados no topo da estrutura, de modo a serem aplicveis a todas as especializaes. De
maneira mais geral, se um atributo ou associao aplicvel a um nvel inteiro de
especializaes, ento ele deve ser posicionado na generalizao correspondente. Por outro
lado, se algumas vezes um atributo ou associao tiver um valor significativo, mas em outras
ele no for aplicvel, deve-se rever seu posicionamento ou mesmo a estrutura de
generalizao-especializao adotada.
Inevitavelmente, o processo detalhado de designar atributos e associaes a classes
conduz a um entendimento mais completo da hierarquia de herana do que era possvel em
137
138
19
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).
139
140
fim, uma requisio gerada iniciada quando uma condio de gerao da requisio
satisfeita. O sistema detecta que a condio foi satisfeita e gera a correspondente requisio.
Por exemplo, em um sistema de controle de estoque, uma requisio de compra pode ser
gerada quando a quantidade mnima de um produto for atingida (OLIV, 2007).
A maioria das requisies externa. Dois importantes tipos de requisies externas
so notificaes de eventos de domnio e consultas. Uma consulta uma requisio externa
que prov alguma informao para o ator que iniciou a requisio. Consultas no alteram a
base de informaes do sistema. Uma notificao de evento de domnio uma requisio
externa cujo efeito uma mudana na base de informaes do sistema, correspondendo a um
evento de domnio. Nem todas as mudanas na base de informaes de um sistema so
admissveis. Os fatos nessa base mudam ao longo do tempo, mas no de maneira arbitrria.
Os eventos de domnio definem, exatamente, as mudanas admissveis. Por meio de
notificaes de eventos de domnio, atores dizem para o sistema que um evento de domnio
ocorreu (OLIV, 2007). Por exemplo, quando ocorre no mundo real o evento de reserva de
um carro em uma locadora de automveis, um usurio, ao realizar o caso de uso
correspondente (p.ex., Reservar Carro), est notificando o sistema que esse evento ocorreu, o
que inicia uma sequncia de aes (os passos do caso de uso), por meio da qual o sistema sabe
que o evento ocorreu no domnio.
Um evento de domnio corresponde a um conjunto no vazio de eventos estruturais,
percebido ou considerado como uma alterao nica no domnio. Um evento estrutural, por
sua vez, uma ao elementar que insere ou remove um fato na base de informaes do
sistema. H quatro tipos bsicos de eventos estruturais: insero de entidade, remoo de
entidade, insero de relacionamento e remoo de relacionamento. Esses eventos so ditos
estruturais, porque eles so completamente determinados pelo esquema conceitual estrutural e
no so explicitamente mostrados no esquema comportamental (OLIV, 2007).
No desenvolvimento orientado a objetos, os eventos estruturais correspondem a
operaes bsicas das classes. Assim, toda classe tem, implicitamente, operaes para: criar
objetos da classe (evento estrutural de insero de entidade), dita operao construtora da
classe; eliminar objetos (evento estrutural de remoo de entidade), dita operao destruidora
da classe; estabelecer ligaes e atribuir valores para atributos (eventos estruturais de insero
de relacionamentos); e remover ligaes ou excluir valores de atributos (eventos estruturais de
remoo de relacionamentos). Essas operaes so consideradas bsicas e no precisam ser
mostradas explicitamente no modelo conceitual.
Seja o exemplo de um sistema de controle de produtos, cujo modelo estrutural
parcialmente apresentado na Figura 7.1. Nesse exemplo, quando a companhia comea a
trabalhar com um novo produto (p.ex., Prod1), o estado do domnio se altera, caracterizando
um evento de domnio. Esse evento de domnio corresponde a cinco eventos estruturais, a
saber: (1) a criao do objeto Prod1, (2) a atribuio de um valor para o atributo codigo, (3) a
atribuio de um valor para o atributo valor, (4) a atribuio de um valor para o atributo
quantidadeEstoque e (5) o estabelecimento da associao fornece com seu fornecedor. Esse
novo produto considerado um evento de domnio, porque o conjunto de cinco eventos
estruturais que o compe visto como um evento nico. muito mais fcil para um usurio
dizer ao sistema que o evento de domnio ocorreu do que dizer explicitamente cada um dos
eventos estruturais.
141
142
de vida do objeto. Ou seja, muitas vezes, o comportamento dos objetos de uma classe depende
do estado em que o objeto se encontra em um dado momento. Nestes casos, til especificar
o comportamento usando uma mquina de estados.
Classes com estados (ou classes modais) so classes cujas instncias podem mudar de
um estado para outro ao longo de sua existncia, mudando possivelmente sua estrutura, seus
valores de atributos ou comportamento dos mtodos (WAZLAWICK, 2004).
Classes modais podem ser modeladas como mquinas de estados finitos. Uma
mquina de estados finitos uma mquina que, em um dado momento, est em um e somente
um de um nmero finito de estados (OLIV, 2007). Os estados de uma mquina de estados de
uma classe modal correspondem s situaes relevantes em que as instncias dessa classe
podem estar durante sua existncia. Um estado considerado relevante quando ele ajuda a
definir restries ou efeitos dos eventos.
Em qualquer estado, uma mquina de estados pode receber estmulos. Quando a
mquina recebe um estmulo, ela pode realizar uma transio de seu estado corrente (dito
estado origem) para outro estado (dito estado destino), sendo que se assume que as transies
so instantneas. A definio do estado destino depende do estado origem e do estmulo
recebido. Alm disso, os estados origem e destino em uma transio podem ser o mesmo.
Neste caso, a transio dita uma autotransio (OLIV, 2007).
Diagramas de Transies de Estados so usados para modelar o comportamento de
instncias de uma classe modal na forma de uma mquina de estados. Todas as instncias da
classe comportam-se da mesma maneira. Em outras palavras, cada diagrama de estados
construdo para uma nica classe, com o objetivo de mostrar o comportamento ao longo do
tempo de vida de seus objetos. Diagramas de estados descrevem os possveis estados pelos
quais objetos da classe podem passar e as alteraes dos estados como resultado de eventos
(estmulos) que atingem esses objetos. Uma mquina de estado especifica a ordem vlida dos
estados pelos quais os objetos da classe podem passar ao longo de seu ciclo de vida. A Figura
7.2 mostra a notao bsica da UML para diagramas de grfico de estados.
143
144
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 7.2 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. O estado inicial
precisamente esse estado. Graficamente, um estado inicial mostrado como um pequeno
crculo preenchido na cor preta. Seu significado o seguinte: quando o objeto criado, ele
colocado no estado inicial e sua transio de sada automaticamente disparada, movendo o
objeto para um dos estados da mquina de estados (no caso da Figura 7.2, para o Estado1).
Toda mquina de estados tem de ter um (e somente um) estado inicial. Note que o estado
inicial no se comporta como um estado normal20, uma vez que objetos no se mantm nele
por um perodo de tempo. Ao contrrio, uma vez que eles entram no estado inicial, sua
transio de sada imediatamente disparada e o estado inicial abandonado. A transio de
sada do estado inicial tem como evento gatilho implcito o evento responsvel pela criao
do objeto (OLIV, 2007) e, na UML, esse evento no explicitamente representado. Estados
iniciais tm apenas transies de sada. As transies de sada de um estado inicial podem ter
condies de guarda e/ou aes associadas. Quando houver condies de guarda, deve-se
garantir que sempre pelo menos uma das transies de sada poder ser disparada.
Quando um objeto deixa de existir, obviamente ele deixa de estar em qualquer um dos
estados. Isso pode ser dito no diagrama por meio de uma transio para o estado final. O
estado final indica, na verdade, que o objeto deixou de existir. Na UML um estado final
representado como um crculo preto preenchido com outro crculo no preenchido ao seu
redor, como mostra a Figura 7.2. As transies para o estado final definem os estados em que
possvel excluir o objeto. Classes cujos objetos no podem ser excludos, portanto, no
possuem um estado final (OLIV, 2007). Assim como o estado inicial, o estado final no se
comporta como um estado normal, uma vez que o objeto tambm no permanece nesse estado
(j que o objeto no existe mais). Ao contrrio do estado inicial, contudo, uma mquina de
estados pode ter vrios estados finais. Alm disso, deve-se representar o evento que elimina o
objeto (na Figura 7.2, eventoDestruio).
Os eventos mostrados nas transies so os mesmos eventos de requisio de ao
discutidos na Seo 7.1. Contudo, importante indicar no diagrama de estados os eventos
maiores (eventos de domnio e requisies de aes) e no os eventos estruturais que
efetivamente alteram o estado do objeto. Assim, neste texto sugere-se indicar como eventos
de transies de uma mquina de estados as requisies de realizao de casos de uso do
sistema (ou de fluxos de eventos especficos, quando um caso de uso tiver mais de um fluxo
de eventos normal). Para facilitar a rastreabilidade, sugere-se usar como nome do evento
exatamente o mesmo nome do caso de uso (ou do fluxo de eventos). Seja o exemplo de uma
locadora de automveis, que possua, dentre outros, os casos de uso mostrados na Figura 7.3,
os quais possuem os fluxos de eventos mostrados nas notas anexadas aos casos de uso.
20
Por no se comportar como um estado normal, o estado inicial considerado um pseudoestado no metamodelo
da UML.
145
146
147
148
149
150
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.
151
Um atributo derivado quando seu valor pode ser deduzido ou calculado a partir de outras informaes
(atributos e associaes) j existentes no modelo estrutural.
152
somente na UML 2.0. At a UML 1.5, diagramas de atividades eram considerados um tipo
especial de diagrama de estados.
Os diagramas de atividades so muito usados para modelar processos de negcio e
fluxos de trabalho em organizaes (ver Seo 3.3), uma vez que esses processos / fluxos de
trabalho envolvem muitas pessoas e unidades organizacionais que realizam atividades
concorrentemente (BLAHA; RUMBAUGH, 2006). Principalmente no contexto de sistemas
corporativos e de misso crtica, o sistema em desenvolvimento estar funcionando no
contexto de processos de negcio de mais alto nvel e pode ser til usar diagramas de
atividades para modelar esses processos com o intuito de investigar as formas como humanos
e os vrios sistemas automatizados colaboram (BOOCH; RUMBAUGH; JACOBSON, 2006).
Esse importante uso dos diagramas de atividades, contudo, est fora do escopo deste texto e,
portanto, no ser aqui abordado.
No contexto da modelagem comportamental de sistemas (foco deste texto), os
diagramas de atividades podem ser usados para modelar o fluxo de trabalho em um caso de
uso. Para essa finalidade, os principais elementos de modelo dos diagramas de atividades da
UML utilizados so: atividades, fluxos de controle, pontos de iniciao e concluso, desvios
(ou ramificaes), bifurcao e unio, fluxos de objetos e regies de expanso. Na
modelagem de processos, utilizam-se tambm raias para indicar quem (que pessoa ou unidade
organizacional) responsvel por uma atividade.
Uma atividade uma poro significativa de trabalho dentro de um fluxo de trabalho.
Atividades podem ser atmicas ou complexas. Uma atividade atmica (i.e., que no pode ser
decomposta) dita uma ao na UML. Uma atividade complexa composta de outras
atividades (atmicas ou complexas) e na UML representada por um n de atividade. Assim,
um n de atividade representa um grupo de aes ou de outros ns de atividade aninhados,
que possui uma subestrutura visvel, representada em um outro diagrama de atividades
(BOOCH; RUMBAUGH; JACOBSON, 2006). Atividades so representadas por elipses
alongadas. Quando uma atividade concluda, o fluxo de controle passa imediatamente para a
atividade seguinte. O fluxo de controle mostrado por meio de uma seta no rotulada de uma
atividade para a sua sucessora.
O fluxo de controle inicia e termina em algum lugar. Os pontos de iniciao e de
concluso do fluxo de controle so mostrados em um diagrama de atividades usando a mesma
notao de estados inicial e final de diagramas de grficos de estados, respectivamente.
Quando um diagrama de atividades ativado, o fluxo de controle inicia no ponto de iniciao
e avana por meio da(s) seta(s) de fluxo de controle em direo (s) primeira(s) atividade(s) a
ser(em) realizada(s). Quando o ponto de concluso atingido, todo o processo encerrado e a
execuo do diagrama de atividades termina (BOOCH; RUMBAUGH; JACOBSON, 2006;
BLAHA; RUMBAUGH, 2006). A Figura 7.11 mostra a notao da UML para atividades,
fluxos de controle e pontos de iniciao e concluso.
153
154
155
A visibilidade de uma operao indica em que situaes ela visvel por outras
classes, podendo uma operao ser pblica, protegida, privada e de pacote, da mesma forma
que atributos (ver Seo 6.2.1). A informao de visibilidade inerente fase de projeto e no
deve ser expressa em um modelo conceitual.
Para nomear uma operao, sugere-se o uso de um verbo no infinitivo, o qual pode ser
combinado com complementos, omitindo-se preposies. A exceo fica por conta de
operaes com retorno booleano, para as quais se sugere usar um nome que d uma noo de
23
A UML admite outras informaes na assinatura de uma operao. Entretanto, essas so as notaes mais
comumente utilizadas.
156
uma pergunta sendo feita. O nome da operao deve ser iniciado com letra minscula,
enquanto os nomes dos complementos devem iniciar com letras maisculas, sem dar um
espao em relao palavra anterior. Acentos no devem ser utilizados. Ex.: calcularValor,
emAtraso.
Na assinatura de uma operao, podem ser indicados zero ou mais parmetros
separados por vrgula, cada um deles com a sintaxe abaixo24, onde nome_parmetro o nome
para referenciar o parmetro, tipo seu tipo de dados ou classe, e valor_padro o valor que
ser assumido se um valor no for informado.
nome_parmetro: tipo [= valor_padro]
24
157
Referncias do Captulo
BLAHA, M., RUMBAUGH, J., Modelagem e Projetos Baseados em Objetos com UML 2,
Elsevier, 2006.
BOOCH, G., RUMBAUGH, J., JACOBSON, I., UML Guia do Usurio, 2a edio, Elsevier
Editora, 2006.
OLIV, A., Conceptual Modeling of Information Systems, Springer, 2007.
WAZLAWICK, R.S., Anlise e Projeto de Sistemas de Informao Orientados a Objetos,
Elsevier, 2004.
158
159
160
Descries de
Casos de Uso
H6
H1
Diagrama de
Casos de Uso
Dicionrio de
Projeto
H2
H5
H3
Diagrama de
Atividades
H7
Diagrama de
Classes
H4
Diagrama de
Estados
H8
Figura 8.1 Tcnicas de Leitura Horizontal de Modelos Orientados a Objetos Fase de
Anlise de Requisitos.
161
162
Modele com um propsito: para que um certo diagrama seja elaborado, deve-se ter
uma finalidade em mente. Um diagrama deve ser til para comunicar informaes
para clientes e usurios, ajudando a se obter um entendimento comum dos
requisitos, ou deve ajudar desenvolvedores a compreender melhor algum aspecto
163
164
Diagramas de atividades s devem ser elaborados quando forem teis para refinar
o entendimento provido pela descrio de um caso de uso complexo, normalmente
com vrias atividades paralelas, iterativas, condicionais ou alternativas. Diagramas
de atividades tambm so uma boa opo para a modelagem de processos de
negcio (ver Seo 3.3).
165
Requisitos podem ser reutilizados de diversas maneiras, dentre elas pelo reso de
especificaes de projetos similares ao projeto atual, informalmente atravs da experincia
das pessoas ou pela reutilizao de artefatos desenvolvidos previamente com vistas ao reso.
Por exemplo, ao se analisar um projeto similar, desenvolvido para um mesmo domnio de
aplicao, pode-se concluir que diversos requisitos funcionais, no funcionais e at regras de
negcio podem se aplicar ao novo projeto em desenvolvimento. Neste caso, os requisitos
podem ser copiados, e adaptados, quando necessrio, de um projeto para o outro. Outra
abordagem bastante utilizada pelas organizaes consiste em definir equipes que atuam
sistematicamente em um certo domnio de aplicaes, de modo que seus membros possam
reutilizar o conhecimento que tm sobre esse domnio no desenvolvimento de novos projetos.
Ainda que essas abordagens mais informais e oportunistas tragam alguns benefcios,
elas no exploram adequadamente as potencialidades de uma reutilizao sistemtica. Em
uma abordagem sistemtica de desenvolvimento para e com reutilizao, primeiramente
artefatos so concebidos explicitamente para serem reutilizados. Depois, os projetos de
desenvolvimento reutilizam esses artefatos, fazendo as adaptaes necessrias. Uma vez que
esses itens tenham sido desenvolvidos para reso, o esforo de adaptao e reutilizao tende
a ser menor. Assim, para se obter os reais benefcios da reutilizao, importante que os
artefatos j sejam desenvolvidos pensando no reso posterior. Neste contexto, merecem
destaque trs abordagens, discutidas na sequncia: Engenharia de Domnio, Ontologias e
Padres de Anlise.
166
mais abstratos, fornecem uma base para o trato com requisitos no contexto de um projeto
especfico.
Para se fazer uma anlise de domnio, pode-se trabalhar de maneira anloga anlise
de requisitos convencional, consultando-se especialistas do domnio e modelando o
conhecimento capturado, de modo que esse conhecimento possa ser reutilizado nos vrios
projetos que faam parte desse domnio (ROBERTSON; ROBERTSON, 2006). H, ainda,
diversos mtodos de anlise de domnio, os quais procuram explorar as especificidades dessa
atividade, dentre eles FODA, ODM, EDLC, FORM, RSEB e Catalysis (GIMENES;
HUZITA, 2005). Contudo, qualquer que seja a abordagem de anlise de domnio empregada,
deve-se ter em mente que um modelo de domnio deve conter os elementos comuns s vrias
aplicaes do domnio e no detalhes especficos de uma ou de todas as aplicaes. Assim,
para ser realmente reutilizvel, um modelo de domnio deve ser mais geral e abstrato,
contendo o conhecimento de senso comum a respeito do domnio, sem incluir detalhes que
podem ser relevantes apenas para uma ou para poucas aplicaes.
Deve-se apontar, ainda, que a anlise de domnio apenas ser uma abordagem
interessante, caso haja uma real necessidade de reso no domnio em questo. A anlise de
domnio uma atividade complexa que consome tempo e recursos, podendo ser anterior ou
paralela a um processo de desenvolvimento de software. Assim, se no houver uma real
possibilidade de reso nesse domnio, a anlise de domnio torna-se invivel.
A Figura 8.2 ilustra o processo de Engenharia de Domnio e como ele pode apoiar o
processo de desenvolvimento de um sistema de software.
167
168
169
170
As figuras 8.4 e 8.5 mostram diferentes verses de um mesmo padro: o padro Plano.
O problema envolvido neste caso o planejamento de aes. Na verso da Figura 8.4,
considera-se que uma ao definida exclusivamente para um plano. Na verso da Figura 8.5,
considera-se que uma ao proposta pode fazer parte de diversos planos.
171
172
GAMMA, E., HELM, R., JOHNSON, R., VLISSIDES, J.M., Design Patterns - Elements of
Reusable Object-Oriented Software. Addison-Wesley, 1995.
GIMENES, I.M.S., HUZITA, E.H.M.; Desenvolvimento Baseado em Componentes:
Conceitos e Tcnicas. Editora Cincia Moderna, 2005.
GMEZ-PREZ, A., CORCHO, O., FERNANDEZ-LOPEZ, M.; Ontological Engineering:
with examples from the areas of Knowledge Management, e-Commerce and the Semantic
Web, 2nd edition, Springer, 2007.
GUIZZARDI, G., Ontological Foundations for Structural Conceptual Models, Telematics
Instituut Fundamental Research Series, The Netherlands, 2005.
JASPER, R., USCHOLD, M.; A Framework for Understanding and Classifying Ontology
Applications, Proceedings of the IJCAI99 Workshop on Ontologies and Problem-Solving
Methods, Stockholm, Sweden, 1999.
NUSEIBEH, B., EASTERBROOK, S., Requirements Engineering: A Roadmap, In:
Procedings of the Future of Software Engineering, ICSE2000, Ireland, 2000, p. 37-46.
ROBERTSON, S., ROBERTSON, J. Mastering the Requirements Process. 2nd Edition.
Addison Wesley, 2006.
SUREZ-FIGUEROA, M.A., et al., NeOn Development Process and Ontology Life Cycle,
2007.
Disponvel
em
http://www.neon-project.org/webcontent/index.php?option=com_weblinks&view=category&id=17&Itemid=73.
ZAMBORLINI, V., GONALVEZ, b., GUIZZARDI, G.; Codification and Application of a
Well-Founded Heart-ECG Ontology, Proceedings of the 3rd Workshop on Ontologies
and Metamodels in Software and Data Engineering, Campinas, Brazil, 2008.
173
A ISO/IEC 9126 encontra-se em fase de transio para uma nova famlia de normas, a
ISO/IEC 25000 - Software Product Quality Requirement and Evaluation (SQuaRE).
Entretanto, o modelo de qualidade de produto de software proposto nessa norma continua
vlido. Esse modelo, descrito na ISO/IEC 9126-1 (ISO/IEC, 2001), dividido em duas partes:
(i) qualidade interna e externa; (ii) qualidade em uso.
O modelo de qualidade interna e externa especifica seis caractersticas, as quais so
por sua vez subdivididas em subcaractersticas. Essas subcaractersticas so manifestadas
externamente quando o software utilizado e so resultado de atributos internos. Qualidade
externa a qualidade do produto percebida quando o software executado, ou seja, uma
percepo da qualidade do ponto de vista do usurio. A qualidade interna, por sua vez, referese percepo da qualidade do ponto de vista de desenvolvedores. A Figura A.1 mostra o
modelo de qualidade interna e externa da ISO/IEC 9126-1, suas seis caractersticas de
qualidade, desdobradas em subcaractersticas.
Qualidade
externa e interna
Funcionalidade
Adequao
Acurcia
Interoperabilidade
Segurana de
acesso
Conformidade
Confiabilidade
Maturidade
Tolerncia a Falhas
Recuperabilidade
Conformidade
Usabilidade
Inteligibilidade
Apreensibilidade
Operacionalidade
Atratividade
Conformidade
Eficincia
Manutenibilidade
Comportamento em
relao ao tempo
Comportamento em
relao aos recursos
Analisabilidade
Modificabilidade
Estabilidade
Testabilidade
Conformidade
Conformidade
Portabilidade
Adaptabilidade
Capacidade para
ser instalado
Co-existncia
Capacidade para
substituir
Conformidade
174
175
176