Análise do Sistema
Alexandre Mota
(acm@cin.ufpe.br)
Desenvolvendo o Sistema
Documento
de
Requisitos
Sub-sistemas
Problema
Solução
...
Form. Matrícula
: Estudante
1: entra id
2: verifica id
3: entra semestre atual
4: cria novo cronograma
5: processa
Modelo dos
requisitos
Detalhes e
Dec. de projeto
Perspectiva
do Usuário
Perspectiva do
Desenvolvedor
Modelo UML: “Visão 4+1”
Funcionalidade
Logical View
Development View
Class diagrams,
Sequence diagrams
Component diagrams
Configuração
Use Cases/
Scenarios
Use Case diagrams,
Sequence diagrams
Performance
Process View
Physical View
Deployment diagrams
Deployment diagrams
Topologia
Modelo

Para criarmos um modelo do sistema,
temos que identificar:


Objetos
Classes




Atributos
Métodos
Associações entre classes
Outros relacionamentos entre classes
Classes
<< Estereótipo >>
NomeDaClasse
+ atribPub: Tipo = Inicial
# atribProt
- atribPriv
<< constructor>>
new()
<<query>>
getRiscos(o: Cliente)
*
* pode ser:
{persistent}
Semântica das Classes

A descrição da classe deve


Focar em seu propósito (funcionalidade) e
não em sua implementação
Na análise, as classes só devem estar
relacionadas ao domínio do problema
Essência é “O QUÊ” e não “COMO”
Análise
Projeto
Abordagem 1: Linguagem


Para identificar objetos, classes e
interfaces, liste todos os nomes
(substantivos), pronomes e frases do seu
documento de requisitos/casos de uso
Nomes próprios e frases que indiquem
unicidade representam objetos


João, ela, minha conta, o elevador 1
Nomes comuns ou no plural indicam
classes ou interfaces

Clientes, contas, um elevador
Abordagem 1: Linguagem

Para identificar serviços (métodos),
atente para os verbos ou frases verbais


Clientes podem depositar na poupança
Para identificar atributos, analise as
frases que expressam propriedades de
objetos/classes

Clientes possuem uma senha, ou
A senha do cliente deve ser de no mínimo
8 caracteres
Abordagem 1: Linguagem

Verbos também podem identificar
associações entre objetos, classes ou
interfaces


Uma disciplina tem pelo menos 3 alunos
matriculados
Assim como, relacionamentos de
herança, dependência, etc.

Uma poupança é um tipo especial de conta
bancária
Infelizmente...



Na documentação informal, existirão
nomes que não serão objetos, classes e
nem interfaces
Não há um algoritmo que nos permita
modelar um sistema da forma perfeita
Tudo depende de experiência e
julgamentos corretos na hora de
escolher o grau de abstração certo
Utilidade dos casos de uso




Casos de uso são mais interessantes
que texto informal pois são mais
estruturados e orientados a serviços
Casos de uso naturalmente são vistos
como métodos
As intenções de um subconjunto de
casos de uso revelam as classes
Demais elementos são obtidos pelos
fluxos de ações ou diag. de seqüência
Diagrama de Seqüências
Sistema
Gerente
BD
Abre Conta
Solicita Info Cliente
Info Cliente Fornecida
Solicita Tipo de Conta
Tipo de Conta Fornecida
Solicita Saldo Inicial
Saldo Inicial Fornecido
Confirmação
Cria Conta
Abordagem 2: Cartões CRC


CRC vem de Class-ResponsibilityCollaboration
Um cartão CRC mostra


Nome da classe e descrição
Suas responsabilidades



Conhecimento interno (atributos)
Seus serviços (métodos)
Os colaboradores das responsabilidades

Um colaborador é uma classe cujos serviços são
necessitados por uma responsabilidade
Uma sessão CRC



Grupo de pessoas desenvolvem um
cenário
Um cartão é criado para cada objeto no
cenário
Cada participante é associado a grupo
de cartões

A pessoa torna-se a “classe”
Uma sessão CRC



Os cenários definidos são praticados
pelos participantes
Os cartões são anotados com as
responsabilidades e colaborações
Novos cartões surgem para novos
objetos descobertos
Exemplo de CRC
Class Name
Atributos
Métodos
{
{
Responsibilities
Catalog number
Catalog store
Add Book
Remove Book
Catalog
Collaborations
Book
Atualizações
Class Name
Atributos
Métodos
{
{
Responsibilities
Catalog number
Catalog
Collaborations
Book
Catalog store
Add Book
Remove Book
Diagrama de Classes + Diagrama de Seqüências
Evolução

Trabalho vai bem se . . .



Todas as classes têm nomes significativos,
domínio específico e pequeno conjunto de
colaboradores
Não há classes “instáveis” (uma classe que
colabora com alguém precisa ser redefinida completamente)
Mudança nos requisitos só envolve classes
Evolução

E mal se . . .



Várias classes não têm responsabilidades
Mesma responsabilidade atribuída a várias
classes
Todas as classes colaboram com todas as
outras classes
Estereótipos (<< >>)



Um estereótipo representa a
classificação de uma classe
Toda classe deve ter apenas um
estereótipo
Mais comuns

Boundary, Entity, Control, Exception, Utility
Boundary


Classe boundary modela a comunicação entre
a parte interna e externa do sistema
Mais comuns




Windows (GUI)
Protocolo de comunicação (interface do sistema)
Interface com a impressora
Sensores
<<boundary>>
Class Name
Boundary

Informações entre ator e sistema devem
estar contidas em classe boundary

Diagramas de seqüência são examinados
para identificar o conteúdo da classe
Form. Matrícula
: Estudante
1: entra id
2: verifica id
3: entra semestre atual
4: cria novo cronograma
5: processa
<<boundary>>
Form. Matrícula
Janelas

Protótipos (desenhos) de janelas podem
ser criados para representar a classe
boundary ao usuário
Interface com outros Sistemas


Classe boundary também pode ser
usada para modelar interface com
outros sistemas
Suas características são:


Informação a ser comunicada com o outro
sistema
Protocolo de comunicação usado nesta
transferência
Entidade

Classe de entidade modela informação
geralmente “persistente”


Valores de seus atributos são freqüentemente
fornecidos por um ator
Exemplos seriam




Curso
Estudante
Professor
Conta
<<entity>>
Conta
Diagrama de Seqüência

Os diagramas de seqüência são
atualizados


Classes adicionais são incluídas no
diagrama
Objetos no diagrama são associados a
classes
Diagrama Atualizado
John :
Student
:Registration
Form
1: enter id
:Schedule
Form
:Registration
Manager
:Catalogue
:Course
:Student
Record
:Course
Roster
2: validate id
3: enter current
4: create new
5: display
6: display
7: select course
8: process
9: create schedule
10: get prerequisite
11: prerequisite taken ?
12: add student (John)
13: print
14: send to billing system
15: registration complete
16: registration complete
:Schedule
:Billing
System
Bibliografia



Sommerville, I. Software Engineering
Kruchten, P. The Rational Unified
Process: An Introduction
Tepfenhart, W. et al. Practical ObjectOriented Development with UML and
Java
Download

Análise do Sistema