Introdução
O Processo Unificado (PU) surgiu como um processo popular para o desenvolvimento de software visando à
construção de sistemas orientados a objetos (o RUP – Rational Unified Process é um refinamento do PU). É
um processo iterativo e adaptativo de desenvolvimento e vem ganhando cada vez mais adeptos devido a
maneira organizada e consistente que permite conduzir um projeto. Este artigo apresenta uma breve
introdução das práticas e abordagens adotadas pelo PU (Basicamente um resumo do capitulo referente ao
baseado em refinamentos e incrementos sucessivos a fim de convergir para um sistema adequado. Em cada
iteração incrementa-se um pouco mais o produto, baseando-se na experiência obtida nas iterações anteriores
e no feedback do usuário. Cada iteração pode ser considerada um miniprojeto de duração fixa, sendo que
cada um destes inclui suas próprias atividades de análise de requisitos, projeto, implementação e testes.
Figura 1 – Desenvolvimento iterativo e incremental.
O resultado de cada iteração é um sistema executável, porém incompleto. Ele não está pronto para ser
colocado em produção e pode continuar nesta situação ainda por muitas iterações. Vale ressaltar também
que cada iteração produz um sistema com qualidade de produto final, e não um protótipo.
Ao invés de combater a inevitável mudança que ocorre no desenvolvimento de software (principalmente nas
fases iniciais), o PU prega uma atitude de aceitar a mudança e a adaptação como fatores inevitáveis e,
de fato, essenciais. Não se deve tentar especificar completa e corretamente o sistema em uma tacada só, com
Em cada iteração é escolhido um pequeno subconjunto de requisitos, os quais são rapidamente projetados,
implementados e testados pelos usuários. Isso leva a uma realimentação rápida - baseada em dados
concretos de usuários, desenvolvedores e testes – que possibilita modificar ou adaptar a compreensão dos
requisitos do projeto. Os usuários finais podem ver um sistema parcial, utilizá-lo e assim terão mais
subsídios para criticar ou aprovar. Esse ciclo de avaliações e detecção de falhas não traduz um erro, mas
sim, representam um modo hábil de progredir e descobrir o que é de real valor para os interessados
no projeto. Além de melhorar a compreensão dos requisitos, a implementação precoce possibilita detectar
se o projeto está no caminho certo ou, por exemplo, se alguma mudança na arquitetura central deve ser feita.
Consequentemente o trabalho progride por meio de uma série de ciclos estruturados em construção-
realimentação- adaptação. É melhor resolver e por à prova as decisões arriscadas e fundamentais de projeto
? o aprendizado obtido em uma iteração pode ser usado para melhorar o próprio processo de
desenvolvimento.
Fases do PU
É altamente recomendado pelo PU que as iterações tenham tempo fixo pré-determinado e que se cumpra o
prazo de cada iteração. Iterações pequenas, entre duas a seis semanas, é o ideal pois são mais gerenciáveis e
permitem rápida realimentação e adaptações. Iterações longas subvertem a motivação central para o
Conclusão
O Processo Unificado foi criado para ser um processo ágil de desenvolvimento e prega uma abordagem
realística para a condução de um projeto. Ao contrário do modelo em cascata, onde cada etapa do ciclo de
vida é realizada integralmente e de uma só vez (e que é mais apropriado para a construção de prédios do que
para softwares), no PU as atividades são repetidas quantas vezes forem preciso, em ciclos organizados. Não
há um plano detalhado para todo um projeto. Há um plano de alto nível (chamado Plano de Fases) que
estima a data de término do projeto e outros marcos de referência principais, mas ele não detalha os passos
de granularidade fina para se atingir tais marcos. Um plano detalhado (chamado Plano de Iterações) somente
planeja a iteração a ser feita em seguida. O planejamento detalhado é feito de forma adaptativa, de iteração
para iteração.
UML
Por Marina Martinez
Diagramas Estruturais
De Classe: Este diagrama é fundamental e o mais utilizado na UML e serve de
apoio aos outros diagramas. O Diagrama de Classe mostra o conjunto de
classes com seus atributos e métodos e os relacionamentos entre classes.
De Objeto: O diagrama de objeto esta relacionado com o diagrama de classes
e, é praticamente um complemento dele. Fornece uma visão dos valores
armazenados pelos objetos de um Diagrama de Classe em um determinado
momento da execução do processo do software.
De Componentes: Está associado à linguagem de programação e tem por
finalidade indicar os componentes do software e seus relacionamentos.
De implantação: Determina as necessidades de hardware e características
físicas do Sistema.
De Pacotes: Representa os subsistemas englobados de forma a determinar
partes que o compõem.
De Estrutura: Descreve a estrutura interna de um classificador.
Diagramas Comportamentais
De Caso de Uso (Use Case): Geral e informal para fases de levantamento
e análise de Requisitos do Sistema.
De Máquina de Estados: Procura acompanhar as mudanças sofridas por um
objeto dentro de um processo.
De Atividades: Descreve os passos a serem percorridos para a conclusão de
uma atividade.
De Interação: Dividem-se em:
1. De Sequência: Descreve a ordem temporal em que as mensagens são
trocadas entre os objetos.
2. Geral interação: Variação dos diagramas de atividades que fornece visão
geral dentro do sistema ou processo do negócio.
3. De comunicação: Associado ao diagrama de Seqüência, complementando-
o e concentrando-se em como os objetos estão vinculados.
4. De tempo: Descreve a mudança de estado ou condição de uma instância
de uma classe ou seu papel durante o tempo.
Diagramas da UML
Vamos falar uma linguagem mas simples para isto vamos para um ambiente que você
conhece bem: A sua casa !
Agora vamos olhar a sua estante , o seu guarda-roupa , o seu armário , a sua cozinha.
Em todos estes lugares você classificou coisas no seu domínio e , somente de olhar
para eles você já sabe relacionar a classificação que utilizou em cada um deles e
como classificou as coisas que estão neste lugares.
Na estante você agrupou e organizou os livros , no guarda roupa suas camisas, calças
, meias , ternos , etc. Todos os objetos que você classificou nestes lugares foram
organizados baseado em alguma concepção que você possuía sobre eles.
As rodas e o motor são atributos comuns a qualquer carro. Já uma Ferrari possui
atributos que somente ela possui : o seu alto valor por exemplo.
Encapsular significa "ocultar informações" ele define que cada objeto contém todos
os detalhes de implementação necessários sobre como ele funciona e oculta os
detalhes internos sobre como ele executa os serviços.
Quando você acelera um carro você esta enviando uma mensagem ao motor do carro
usando o acelerador e o carro sabe que tem que acelerar.
Você não precisa saber como é feita a aceleração no motor você apenas pisa fundo no
acelerador , a implementação de como é feita a aceleração esta encapsulada do
cliente.
Polimorfismo significa muitas formas , na orientação a objetos você pode enviar uma
mesma mensagem para diferentes objetos e fazê-los responder da maneira correta.
Você pode enviar a mensagem de dar marcha-ré para cada objeto semelhante a um
carro e cada um vai se comportar de maneira diferente para atender a sua
solicitação.
Neste capítulo, as primeiras noções de orientação a objetos serão introduzidas. Esta breve visão
geral do paradigma permitirá entender melhor os conceitos associados à programação orientada
a objetos e, em particular, às construções da linguagem C ++.
Definições
Um objeto é uma entidade do mundo real que tem uma identidade. Objetos podem representar
entidades concretas (um arquivo no meu computador, uma bicicleta) ou entidades conceituais
(uma estratégia de jogo, uma política de escalonamento em um sistema operacional). Cada
objeto ter sua identidade significa que dois objetos são distintos mesmo que eles apresentem
exatamente as mesmas caraterísticas.
Cada classe descreve um conjunto (possivelmente infinito) de objetos individuais. Cada objeto é
dito ser uma instância de uma classe. Assim, cada instância de uma classe tem seus próprios
valores para cada atributo, mas dividem os nomes dos atributos e métodos com as outras
instâncias da classe. Implicitamente, cada objeto contém uma referência para sua própria classe -
- em outras palavras, ele sabe o que ele é.
Polimorfismo significa que a mesma operação pode se comportar de forma diferente em classes
diferentes. Por exemplo, a operação move quando aplicada a uma janela de um sistema de
interfaces tem um comportamento distinto do que quando aplicada a uma peça de um jogo de
xadrez. Um método é uma implementação específica de uma operação para uma certa classe.
Polimorfismo também implica que uma operação de uma mesma classe pode ser implementada
por mais de um método. O usuário não precisa saber quantas implementações existem para uma
operação, ou explicitar qual método deve ser utilizado: a linguagem de programação deve ser
capaz de selecionar o método correto a partir do nome da operação, classe do objeto e
argumentos para a operação. Desta forma, novas classes podem ser adicionadas sem necessidade
de modificação de código já existente, pois cada classe apenas define os seus métodos e
atributos.
No mundo real, alguns objetos e classes podem ser descritos como casos especiais,
ou especializações, de outros objetos e classes. Por exemplo, a classe de computadores pessoais
com processador da linha 80x86 é uma especialização de computadores pessoais, que por sua
vez é uma especialização de computadores. Não é desejável que tudo que já foi descrito para
computadores tenha de ser repetido para computadores pessoais ou para computadores pessoais
com processador da linha 80x86.
Conceitos Básicos
A abordagem de orientação a objetos favorece a aplicação de diversos conceitos considerados
fundamentais para o desenvolvimento de bons programas, tais como abstração e encapsulação.
Tais conceitos não são exclusivos desta abordagem, mas são suportados de forma melhor no
desenvolvimento orientado a objetos do que em outras metodologias.
Abstração
Abstração consiste de focalizar nos aspectos essenciais inerentes a uma entidade e ignorar
propriedades ``acidentais.'' Em termos de desenvolvimento de sistemas, isto significa
concentrar-se no que um objeto é e faz antes de se decidir como ele será implementado. O uso
de abstração preserva a liberdade para tomar decisões de desenvolvimento ou de implementação
apenas quando há um melhor entendimento do problema a ser resolvido.
Encapsulação
Encapsulação, também referido como esconder informação, consiste em separar os aspectos
externos de um objeto, os quais são acessíveis a outros objetos, dos detalhes internos de
implementação do objeto, os quais permanecem escondidos dos outros objetos. O uso de
encapsulação evita que um programa torne-se tão interdependente que uma pequena mudança
tenha grandes efeitos colaterais.
O uso de encapsulação permite que a implementação de um objeto possa ser modificada sem
afetar as aplicações que usam este objeto. Motivos para modificar a implementação de um
objeto podem ser por exemplo melhoria de desempenho, correção de erros e mudança de
plataforma de execução.
Compartilhamento
Técnicas de orientação a objetos promovem compartilhamento em diversos níveis distintos.
Herança de estrutura de dados e comportamento permite que estruturas comuns sejam
compartilhadas entre diversas classes derivadas similares sem redundância. O compartilhamento
de código usando herança é uma das grandes vantagens da orientação a objetos. Ainda mais
importante que a economia de código é a clareza conceitual de reconhecer que operações
diferentes são na verdade a mesma coisa, o que reduz o número de casos distintos que devem ser
entendidos e analisados.
O Modelo de Objetos
Um modelo de objetos busca capturar a estrutura estática de um sistema mostrando os objetos
existentes, seus relacionamentos, e atributos e operações que caracterizam cada classe de
objetos. É através do uso deste modelo que se enfatiza o desenvolvimento em termos de objetos
ao invés de mecanismos tradicionais de desenvolvimento baseado em funcionalidades,
permitindo uma representação mais próxima do mundo real.
Uma vez que as principais definições e conceitos da abordagem de orientação a objetos estão
definidos, é possível introduzir o modelo de objetos que será adotado ao longo deste texto. O
modelo apresentado é um subconjunto do modelo OMT (Object Modeling Technique), proposto
por Rumbaugh e outros1.1. OMT também introduz uma representação diagramática para este
modelo, a qual será também apresentada aqui.
Objetos e Classes
Objeto é definido neste modelo como um conceito, abstração ou coisa com limites e significados
bem definidos para a aplicação em questão. Objetos têm dois propósitos: promover o
entendimento do mundo real e suportar uma base prática para uma implementação
computacional. Não existe uma maneira ``correta'' de decompor um problema em objetos; esta
decomposição depende do julgamento do projetista e da natureza do problema. Todos objetos
têm identidade própria e são distinguíveis.
Uma classe de objetos descreve um grupo de objetos com propriedades (atributos) similares,
comportamento (operações) similares, relacionamentos comuns com outros objetos e uma
semântica comum. Por exemplo, Pessoa e Companhia são classes de objetos. Cada pessoa tem
um nome e uma idade; estes seriam os atributos comuns da classe. Companhias também podem
ter os mesmos atributos nome e idade definidos. Entretanto, devido à distinção semântica elas
provavelmente estariam agrupados em outra classe que não Pessoa. Como se pode observar, o
agrupamento em classes não leva em conta apenas o compartilhamento de propriedades.
Todo objeto sabe a que classe ele pertence, ou seja, a classe de um objeto é um atributo
implícito do objeto. Este conceito é suportado na maior parte das linguagens de programação
orientada a objetos, tais como C ++.
OMT define dois tipos de diagramas de objetos, diagramas de classes e diagramas de instâncias.
Um diagrama de classe é um esquema, ou seja, um padrão ou gabarito que descreve as muitas
possíveis instâncias de dados. Um diagrama de instâncias descreve como um conjunto particular
de objetos está relacionado. Diagramas de instâncias são úteis para apresentar exemplos e
documentar casos de testes; diagramas de classes têm uso mais amplo. A Figura apresenta a
notação adotada para estes diagramas.
Atributos
Um atributo é um valor de dado assumido pelos objetos de uma classe. Nome, idade e peso são
exemplos de atributos de objetos Pessoa. Cor, peso e modelo são possíveis atributos de
objetos Carro. Cada atributo tem um valor para cada instância de objeto. Por exemplo, o
atributo idade tem valor ``29'' no objeto Pedro Y.Em outras palavras, Pedro Y tem 29 anos de
idade. Diferentes instâncias de objetos podem ter o mesmo valor para um dado atributo.
Cada nome de atributo é único para uma dada classe, mas não necessariamente único entre todas
as classes. Por exemplo, ambos Pessoa e Companhia podem ter um atributo chamado endereço.
No diagrama de classes, atributos são listados no segundo segmento da caixa que representa a
classe. O nome do atributo pode ser seguido por detalhes opcionais, tais como o tipo de dado
assumido e valor default. A Figura mostra esta representação.
Figura: Representação diagramática de OMT para classes e objetos com atributos. Um diagrama de classe com atributos é
apresentado à esquerda. Um possível diagrama de instâncias com os respectivos valores é apresentado à direita.
Não se deve confundir identificadores internos de objetos com atributos do mundo real.
Identificadores de objetos são uma conveniência de implementação, e não têm nenhum
significado para o domínio da aplicação. Por exemplo, CIC e RG não são identificadores de
objetos, mas sim verdadeiros atributos do mundo real.
Operações e Métodos
Uma operação é uma função ou transformação que pode ser aplicada a ou por objetos em uma
classe. Por exemplo, abrir, salvar e imprimir são operações que podem ser aplicadas a objetos
da classe Arquivo. Todos objetos em uma classe compartilham as mesmas operações.
Uma mesma operação pode se aplicar a diversas classes diferentes. Uma operação como esta é
dita ser polimórfica, ou seja, ela pode assumir distintas formas em classes diferentes.
A assinatura de um método é dada pelo número e tipos de argumentos do método, assim como
por seu valor de retorno. Uma estratégia de desenvolvimento recomendável é manter assinaturas
coerentes para métodos implementando uma dada operação, assim como um comportamento
consistente entre as implementações.
Em termos de diagramas OMT, operações são listadas na terceira parte da caixa de uma classe.
Cada nome de operação pode ser seguida por detalhes opcionais, tais como lista de argumentos
e tipo de retorno. A lista de argumentos é apresentada entre parênteses após o nome da operação.
Uma lista de argumentos vazia indica que a operação não tem argumentos; da ausência da lista
de argumentos não se pode concluir nada. O tipo de resultado vem após a lista de argumentos,
sendo precedido por dois pontos (:). Caso a operação retorne resultado, este não deve ser
omitido -- esta é a forma de distinguí-la de operações que não retornam resultado. Exemplos de
representação de operações em OMT são apresentados na Figura .
Ligações e Associações
Ligações e associações são os mecanismos para estabelecer relacionamentos entre objetos e
classes. Uma ligação é uma conexão física ou conceitual entre duas instâncias de objetos. Por
exemplo, Pedro Y trabalha-para Companhia W. Uma ligação é uma instância de uma
associação. Uma associação descreve um grupo de ligações com estrutura e semântica comuns,
tal como ``uma pessoa trabalha-para uma companhia.'' Uma associação descreve um conjunto
de ligações potenciais da mesma forma que uma classe descreve um conjunto de objetos
potenciais.
A notação de diagramas OMT para associação é uma linha conectando duas classes. Uma
ligação é representada como uma linha conectando objetos. Nomes de associações são
usualmente apresentada em itálico. Se entre um par de classes só existe uma única associação
cujo sentido deva ser óbvio, então o nome da associação pode ser omitido. A Figura apresenta
um exemplo de diagrama OMT com associações.
Figura: Representação diagramática de OMT para associações entre classes (topo) e ligações entre objetos (abaixo).
Alguns atributos podem dizer respeito a associações, e não a classes. Para tais casos, OMT
introduz o conceito de atributo de ligação. Quando a associação tem ainda operações
associadas, então ela pode ser modelada como uma classe que está ``conectada'' à associação.
Um exemplo deste caso é apresentado na Figura .
Figura: Representação diagramática de OMT para associações entre classes com atributos. Neste caso, os atributos da
associação estão representados através de uma classe explícita, Autorização. O círculo preto no final da linha da associação
indica que mais de um objeto de uma classe podem estar associados a cada objeto da outra classe. Um círculo vazado indicaria
que possivelmente nenhum objeto poderia estar associado, ou seja, o conceito de associação opcional.
Agregação
Uma agregação é um relacionamento do tipo ``uma-parte-de,'' nos quais objetos representando
os componentes de alguma coisa são associados com objetos representando uma montagem. Por
exemplo, o texto de um documento pode ser visto como um conjunto de parágrafos, e cada
parágrafo é um conjunto de sentenças (Figura ).
Agregação é uma forma de associação com alguma semântica adicional. Por exemplo, agregação
é transitiva: se A é parte de B e B é parte de C, então A é parte deC. Agregação também é anti-
simétrica: se A é parte de B, então B não é parte de A.
Generalização e Herança
Generalização e herança são abstrações poderosas para compartilhar similaridades entre classes e
ao mesmo tempo preservar suas diferenças.
Generalização e herança são transitivas, isto é, podem ser recursivamente aplicadas a um número
arbitrário de níveis. Cada classe derivada não apenas herda todas as características de todos seus
ancestrais como também pode acrescentar seus atributos e operações específicos.
Uma classe derivada pode sobrepor1.2 uma característica de sua classe base definindo uma
característica própria com o mesmo nome. A característica local (da classe derivada) irá refinar e
substituir a característica da classe base. Uma característica pode ser sobreposta, por exemplo,
por questões de refinamento de especificação ou por questões de desempenho.
Entre as características que podem ser sobrepostas estão valores default de atributos e métodos
de operação. Uma boa estratégia de desenvolvimento não deve sobrepor uma característica de
forma inconsistente com a semântica da classe base.
Sugestões de desenvolvimento
Na construção de um modelo para uma aplicação, as seguintes sugestões devem ser observadas a
fim de se obter resultados claros e consistentes:
Problema
Uma prefeitura de uma cidade de 60 mil habitantes deseja melhorar o processo de matriculas de alunos em suas
creches. A secretaria da educação detectou a seguinte falha: existem alunos matriculados em duas creches
durante o mesmo período letivo. Em determinados dias da semana o pai deixa o aluno na creche A e em outros
dias na creche B. Este procedimento diminui o número de vagas. Importante salientar o processo de matricula nas
creches não é centralizado.
A modelagem do problema, mapeada na figura abaixo, mostra que o processo de matricula não é centralizado.
Não existe uma comunicação entre as creches.
Desenvolvimento de um software que possibilite a integração de todo o processo de matricula nas creches. As
informações sobre o processo estão disponíveis em um servidor de dados e as creches acessam este servidor (via
rede) e efetuam o matricula.
A MODELAGEM DO NEGÓCIO (vide figura abaixo) provê uma alternativa para resolver o problema.
Centralizar o processo de matricula na secretaria municipal de educação. Diariamente as creches informam, via
telefone, se existem vagas (pois o cancelamento da matricula pode ser feito diretamente na creche). A secretaria
possui uma planilha eletrônica com as informações de todos os alunos matriculados. Os pais ou responsáveis
efetuam a matricula na secretaria. A secretaria consulta a planilha. Se as informações do aluno estiverem
cadastradas na planilha, a matricula é recusada.
no desenvolvimento do software;
na aquisição do servidor e das estações de trabalho;
na conexão das máquinas;
no estabelecimento e implementação de um protocolo de comunicação.
Discussão
O envelhecimento de processos, assim como o nosso, vem com más notícias. Saca
aquela dorzinha na coluna que nunca tivemos? Bom, é por aí. E aqui entramos num
ponto relativamente polêmico do trabalho dos Analistas de Negócios (AN‟s). É mal
traçada a linha que os separa daqueles tradicionais Consultores de Negócios. Há
quem diga que um AN não deve “se meter” com os problemas do negócio. Oras, o
que justificaria tamanha “vista grossa”?
Outros Corpos
Como eu disse lá em cima, foi uma semana bem agitada. Em nosso grupo de
discussão, parcialmente restrito aos participantes de meus eventos, surgiu um
conversa meio “subversiva”: elaborar o que o amigo Jefferson chamou de “BABoK
Apócrifo”! Acho que (ainda) não é o caso, mas um fruto imediato aquela discussão
toda já gerou: nascerá (muito) em breve um Fórum que tratará exclusivamente do
BABoK e da profissão AN. Ao contrário do grupo, acho que o Fórum será público.
Acho. A turma decidirá.
A análise e especificação dos requisitos de software deve ser vista como uma sub-atividade da
análise de sistemas. Normalmente ela é iniciada juntamente com a análise do sistema, podendo
se estender após a elaboração do documento de especificação do sistema e do planejamento do
desenvolvimento, quando serão refinados os requisitos do software.
O objetivo da definição dos requisitos é especificar o que o sistema deverá fazer e determinar os
critérios de validação que serão utilizados para que se possa avaliar se o sistema cumpre o que
foi definido.
4.1.1 O que são requisitos?
Como sistemas computacionais são construídos para terem utilidade no mundo real. Modelar
uma parte do mundo real, o domínio de aplicação é uma atividade extremamente importante
para se compreender a necessidade e a importância do sistema a ser construído e definir os
requisitos que tornam o sistema útil.
Requisitos são objetivos ou restrições estabelecidas por clientes e usuários do sistema que
definem as diversas propriedades do sistema. Os requisitos de software são, obviamente,
aqueles dentre os requisitos de sistema que dizem respeito a propriedades do software.
Um conjunto de requisitos pode ser definido como uma condição ou capacidade necessária que
o software deve possuir (1) para que o usuário possa resolver um problema ou atingir um
objetivo ou (2) para atender as necessidades ou restrições da organização ou dos outros
componentes do sistema.
"o software deve possibilitar o cálculo dos gastos diários, semanais, mensais e anuais
com pessoal".
"o software deve emitir relatórios de compras a cada quinze dias"
"os usuários devem poder obter o número de aprovações, reprovações e trancamentos
em todas as disciplinas por um determinado período de tempo.
"a base de dados deve ser protegida para acesso apenas de usuários autorizados".
"o tempo de resposta do sistema não deve ultrapassar 30 segundo".
"o software deve ser operacionalizado no sistema Linux"
"o tempo de desenvolvimento não deve ultrapassar seis meses".
A necessidade de se estabelecer os requisitos de forma precisa é crítica na medida que o
tamanho e a complexidade do software aumentam. Os requisitos exercem influência uns sobre
os outros. Por exemplo, o requisito de que o software deve ter grande portabilidade (por
exemplo, ser implementado em Java) pode implicar em que o requisito desempenho não seja
satisfeito (programas em Java são, em geral, mais lentos).
4.1.2 A Engenharia de Requisitos
Os diversos relacionamento e restrições que os requisitos exercem uns sobre os outros são
muito difíceis de ser controlados. Principalmente se considerarmos que algumas decisões de
design que afetam um ou mais requisitos só serão tomadas mais adiante do desenvolvimento.
Por exemplo, a decisão de implementar em Java pode ser decidida apenas após o design da
arquitetura. Desta forma, os requisitos precisam ser gerenciados durante todo o
desenvolvimento.
A importância e complexidade desta atividade levou ao surgimento, no início dos anos 90,
da Engenharia de Requisitos. O objetivo desta denominação é ressaltar que o processo de
definir os requisitos de software é uma atividade extremamente importante e independente das
outras atividades da engenharia de software. Ela requer fundamentação e processos próprios, e
que devem ser planejados e gerenciados ao longo de todo o ciclo de vida.
Clara e não-ambígua
Completa
Correta
Compreensível
Consistente
Concisa
Confiável
Entrevistas
Observação in loco
Encontros
Estas três técnicas são complementares e podem todas ser usadas numa mesma análise de
requisitos. A entrevista é normalmente a primeira técnica utilizada. Analistas entrevistam
clientes para definir os objetivos gerais e restrições que o software deverá ter. A entrevista
deve ser feita de forma objetiva visando obter o máximo de informações do cliente. Diversas
seções de entrevistas podem ser marcadas.
Cada desenvolvedor utiliza um modelo específico para elaborar este documento. A sua estrutura
muitas vezes depende do método que está sendo utilizado. Em linhas gerais este modelo deve
ser basicamente textual, utilizando o mínimo de termos técnicos, e ilustrados como modelos
gráficos que demonstrem mais claramente a visão que os analistas tiveram dos problemas e dos
requisitos para o futuro sistema.
1. Referências do Sistema
2. Descrição Geral
3. Restrições de projeto do software
a. Fluxo de Dados
b. Fluxo de Controle
3. Descrição do controle
a. Especificação do controle
b. Restrições de projeto
1. Estados do Sistema
2. Eventos e ações
V. Critérios de Validação
1. Limites de desempenho
2. Classes de testes
3. Reação esperada do software
4. Considerações especiais
VI. Bibliografia
VII Apêndice
Cada caso de uso define um requisito funcional do sistema. Por exemplo, num sistema
bancário, consulta de saldo, empréstimos e saques de dinheiro são exemplos de casos de uso.
O caso de uso descreve um conjunto de seqüências de ações que o sistema desempenha para
produzir um resultado esperado pelo usuário. Cada seqüência representa a interação de entidades
externas e o sistema. Estas entidades são chamadas de atores e que podem ser usuários ou
outros sistemas. No caso de usuários, um ator representa na verdade uma função de usuários.
Os casos de uso podem ser compostos por outros casos de uso mais específicos. Esta estrutura
deve estar em conformidade com o particionamento do sistema em sub-sistemas. Desta forma
tanto é possível descrever casos de uso que aplicam-se ao sistema global, quanto casos que são
específicos para cada uma das partes do sistema.
Casos de uso também podem ser especializados, por exemplo uma consulta pode ser
especializada em consulta de saldo e consulta de extrato, que por sua vez podem ser
especializados, cada um , em consultas a conta-corrente ou a conta-poupança.
Um caso de uso é representado por uma elipse. Cada caso de uso disntigue-se de um outro por
um nome que normalmente é um verbo seguido do seu objeto.
Um ator que pode ser uma ou mais função de usuário é representado por uma figura simples de
um indivíduo (um boneco-de-palitos).
Os atores são conectados a casos de uso por uma associação representadas por uma linha.
O comportamento associado a cada caso de uso pode ser descrito como um cenário. Cada
cenário descreve textualmente o fluxo de eventos ou seqüência que caracteriza o comportamento
do ator e as respostas do sistema. Um cenário é uma instância do caso de uso.
Por exemplo num caixa eletrônico bancário, o caso de uso validar cliente pode ser descrito pelo
seguinte cenário:
Os casos de uso também podem ser descritos de maneira mais estruturada e formal, por
exemplo, usando pré- e pós-condições. Diversas técnicas e notações para especificações
formais permitem descrever o comportamento da funções da aplicação em termos de pré- e
pós-condições. As pré-condições estabelecem as condições que devem estar satisfeita antes
que a função seja executada pelo sistema, enquanto que as pós-condições determinam o que
deve ser válido ao final da execução. Estes estados iniciais e finais do sistema descrevem o
comportamento independente de como será implementado, isto é, quais os algoritmos,
estrutura de dados e linguagem de programação a serem utilizados. As especificações formais
não são abordadas neste curso.
Os casos de uso podem ainda ser descritos através de outros diagramas UML. Os diagramas de
atividades descrevem os diversos estados e as transições entre cada um deles. Os diagramas de
interação permitem descrever as interações entre o ator e o componente do sistema que
implementa o caso de uso. Estes diagramas serão estudados mais adiante no capítulo 5.
Veja o exemplo acima especificado através de diagramas de estados e de atividades na seção
5.2.7.
Casos de Uso
Atores
Relacionamentos de dependência, generalização e associações
Além destas regras básicas, algumas dicas ajudam a construir diagramas mais claros.
4.3.1 Cenários
Do ponto de vista de usabilidade, o desenvolvimento de um novo sistema implica na
transformação das tarefas e práticas atuais dos usuários e da organização. Conhecer a situação
atual e antecipar o impacto que um novo sistema deve ter é fundamental para o seu sucesso.
Isso ocorre porque quando se introduz novas tecnologias, parte do contexto de tarefa de uma
organização é alterado. Nessa reengenharia, novas tarefas e práticas são incorporadas
enquanto que outras são eliminadas.
O levantamento de informações sobre as tarefas e os usuários pode ser melhor realizado quando
os analistas procuram descrever situações do processo de trabalho. Os métodos baseados
em cenários consistem de uma coleção de narrativas de situações no domínio que favorecem o
levantamento de informações, a identificação de problemas e a antecipação das soluções.
Cenários são uma maneira excelente de representar, para clientes e usuários, os problemas atuais
e as possibilidades que podem surgir.
Os cenários têm como foco as atividades que as pessoas realizam nas organizações
possibilitando uma perspectiva mais ampla dos problemas atuais onde o sistema será inserido,
explicando porque ele é necessário. Eles proporcionam um desenvolvimento orientado a tarefas
possibilitando maior usabilidade do sistema.
Não é objetivo dos cenários oferecer uma descrição precisa, mas provocar a discussão e
estimular novos questionamentos. eles permitem também documentar o levantamento de
informações a respeito dos problemas atuais, possíveis eventos, oportunidades de ações e riscos.
Por sua simplicidade, cenários são um meio de representação de fácil compreensão para os
clientes e usuários envolvidos (muitas vezes de formação bastante heterogênea) que podem
avaliar, criticar e fazer sugestões, proporcionando a reorganização de componentes e tarefas do
domínio. Cenários oferecem um "meio-intermediário" entre a realidade e os modelos que serão
especificados possibilitando que clientes, usuários e desenvolvedores participem do
levantamento das informações e especificação dos requisitos. Em resumo, os cenários permitem
compreensão dos problemas atuais pelos analistas e antecipação da situação futura pelo clientes
e desenvolvedores.
Elaborando Cenários
Como toda atividade de análise e especificação de requisitos, a descrição do domínio através
de cenários requer técnicas de comunicação e modelagem.
A descrição de cenários deve ser apoiada pelas três técnicas de comunicação vistas
anteriormente. Antes de descrever os cenários, os analistas devem entrevistar clientes para
entender os problemas e requisitos iniciais. A entrevista com usuários permite que cada um
descreva as suas tarefas e os problemas associados a cada uma delas. A observação direta in
loco é fundamental para que os analistas possam descrever a situação de uso como ela realmente
vem ocorrendo na prática.
Uma técnica que está bastante relacionada com cenários, por permitir descrever situações de
uso, é o storyboarding. Essa técnica envolve a descrição através de quadros com imagens que
ilustram as situações do domínio. Cada quadro deve apresentar a cena que descreve a situação,
os atores e as ações que cada um deve desempenhar. Abaixo de cada quadro devem estar
descritas ações que os atores desempenham. Os storyboards são bastante utilizados em cinemas
como forma de comunicação entre roteiristas, diretores, atores e técnicos.
Existem ferramentas computacionais que podem ser utilizadas para a descrição de cenários
como o Scenario's Browser [Rosson 99].
Exemplos de cenários
Como exemplo vamos considerar o domínio de uma locadora de fitas de vídeo.
João gostaria de assistir a um filme de guerra. Ele vai a uma locadora de fitas e,
chegando lá, utiliza um sistema de consulta. Ele não lembra o título nem o diretor, mas
sabe que se passava na guerra do Vietnã e lembra bastante da trilha sonora. Utilizando o
sistema ele solicita as opções de filmes de guerra. Os sistema oferece a ele as
possibilidades de escolher os filmes por local da guerra ou por época. João escolhe a sua
opção (guerra) e obtem uma lista com dezenas de filmes sobre o vietnam. Ele pode
organizar esta lista, por diretor, atores e título. Na tela do sistema aparecem a ilustração
com o cartaz de divulgação do filme e uma opção para ele visualizar o trailler. O
sistema, entretanto, não possibilita ele ouvir a trilha sonora.
Após analisar algumas opções ele finalmente encontra o filme desejado, mas uma
informação na tela do sistema indica que o filme está alugado. João quer saber quando o
filme será devolvido, mas esta informação não consta no sistema. Ele entretanto pode
reservar e o sistema enviará para ele um e-mail avisando quando o filme estiver
disponível. Ele sai da loja pensando "Que tempo perdido. Seria melhor que eu pudesse
consultar o sistema de casa".
Nessa técnica, cada questão é uma ponte entre uma idéia e outra. Uma resposta a uma questão
sobre um componente da narrativa revela outras conexões que são críticas para o seu
entendimento. Realizando, sistematica e exaustivamente muitos tipos de questões sobre
componentes da narrativa e iterativamente fazendo perguntas sobre as respostas geradas, o
analista elabora um mapa conceitual (rede de proposições) que representa as estruturas do
conhecimento do domínio.
Nos passos iniciais obtem-se informações sobre agentes, interações e objetos abstratos do
domínio. Usando a técnica, pode-se chegar a um conhecimento mais profundo do domínio que
permite aos analistas e projetista a elaboração de modelos funcionais do sistema.
Exemplo
Considere o seguinte cenário sobre um caixa eletrônico.
Questão de elicitação do cenário:
Cenário:
Primeiro ponha o seu cartão do banco no caixa eletrônico, digite a sua senha e pressione
o botão "saque rápido". Depois pegue o dinheiro.
A partir dessas proposições, o analista determina que o cartão e o cliente são agentes de
ações. Numa análise voltada para a elicitação de requisitos da interação, seria determinado
como usuário do sistema, o cliente. A ações são portanto: digita, pressiona e pega. São objetos
da interação a senha, o botão e o dinheiro. Outros objetos são o caixa eletrônico e o cartão. É
preciso determinar que tipo de objetos são esses. Uma outra dúvida é a respeito do cartão ser
objeto ou agente.
Obviamente, como esse exemplo é bastante simples e a aplicação também é muito conhecida,
parece desnecessário obter mais conhecimentos a respeito. Entretanto, como o objetivo aqui é
exemplificar a técnica, mostraremos como pode-se questionar a respeito dessa aplicação.
O analista deve então realizar uma série de questões sobre as proposições. Nesse
questionamento o analista precisa determinar qual o relacionamento entre a resposta e a
proposição que originou a pergunta.
As questões da categoria por que, visam responder "razões" (metas) e "causas" a respeito de
eventos da narrativa. As questões da categoria como oferecem maiores detalhes a respeito de
determinados eventos, permitindo determinar sub-tarefas e maiores detalhes sobre a interação.
Questões da categoria o que podem ser feitas sobre objetos, e revelam atributos e hieraquias de
objetos. Perguntas de verificação podem ser feitas para se saber se as proposições estão sendo
entendidas corretamente. As perguntas de verificação são as que têm resposta sim/não. Uma
taxonomia mais completa ainda está sendo pesquisada pelos autores do método.
Questões "como"
Observe que se o analista estivesse utilizando essa técnica para num método orientado a
objetos, outras questões poderiam ser realizadas com outros objetivos de acordo com as
necessidades do método, como, por exemplo, para determinar classes e hierarquia de classes.
Os métodos em geral, e esse não deve fugir à regra, devem ser usados, não como uma camisa-
de-força que limite o processo de análise, mas como ferramentas que orientam os analistas e
aumentam sua capacidade intelectual.
Perfil do Usuário
Nome do Sistema:
____________________________________________________________________
Função do Usuário:
___________________________________________________________________
Experiência com computadores Experiência com sistema similar Conhecimento sobre o domínio
( ) Iniciante ( ) Utiliza bastante um similar ( ) Elementar
( ) Intermediário ( ) Já utilizou um similar ( ) Intermediário
( ) Experiente ( ) Nunca utilizou um similar ( ) Especialista no domínio
Características Físicas
Manipulação Deficiências
( ) Canhoto ( ) Auditiva
( ) Destro ( ) Visual
( ) Ambidestro ( ) Corporal
( ) Vocal
O perfil deve dar as informações necessárias que os desenvolvedores precisam para tomar as
suas decisões. A análise do perfil pode ser adaptada de acordo com as características do sistema
e com as necessidades de analistas e desenvolvedores. Por exemplo, pode ser interesse dos
designers saber se os usuários têm algumas experiência com interfaces gráficas e qual o padrão
(Windows, Motif, Macintosh, etc.) eles estão acostumados a utilizar.
Uma tarefa é, genericamente, uma atividade na qual um ou mais agentes tentam atingir uma
meta especificada, através de uma mudança de estado em uma ou mais entidades do mundo.
Num domínio de aplicação, as tarefas são as atividades que modificam estados de elementos
deste domínio. A construção de um sistema computacional em um certo domínio tem por
objetivo apoiar a realização de algumas destas atividades. Durante o processo de análise, deve-
se determinar quais as do domínio e identificar quais delas podem ser auxiliadas pelo sistema.
A análise e modelagem de tarefas visa descrever as principais as tarefas que cada usuário do
sistema terá de realizar para que os projetistas possam elaborar quais funções o sistema deve
oferecer para que elas possam ser desempenhadas. Estas tarefas são descritas em termos de
metas e um planejamento de possíveis atividades necessárias para atingi-las. As tarefas podem
ser descritas a partir das informações obtidas nos cenários e devem ser agrupadas por papéis de
usuário.
A análise de tarefas pode ser utilizadas nas diversas fases do ciclo de vida do software. Na fase
de análise de requisitos ela pode ser utilizada para identificar problemas na maneira de como as
tarefas vêm sendo realizadas. Os modelos de tarefas também podem descrever quais tarefas
podem ser realizadas com o auxílio do sistema e como os usuários gostariam que ela fosse
realizada. A análise de tarefa também é utilizada na avaliação do sistema para se determinar se
como os usuários estão utilizando o sistema e se os objetivos foram atingidos. Nestes casos, a
análise de tarefas ajuda ao projetista da interface ter uma visão da aplicação sob a perspectiva do
usuário, isto é, um modelo das tarefas do usuário quando executando sessões da aplicação.
4.5.1 Modelo de tarefas como base para a especificação de requisitos funcionais
A análise e modelagem de tarefas pode ser utilizada como base para a especificação de
requisitos funcionais. Para isto é preciso descrever as metas associadas a cada papel de
usuário, que permitirão saber o que os usuário querem.
Por exemplo, suponhamos que uma pessoa tem como meta avisar a um amigo, através de uma
carta, que sua filha nasceu. Para atingir seu objetivo a pessoa deve estabelecer duas sub-metas:
Escrever a carta e Colocá-la no correio. A sub-meta escrever carta pode ser atingida pelo
método: Conseguir papel e lápis eEscrever mensagem. Escrever mensagem já pode ser
considerada uma operação, enquanto que conseguir papel e lápis requer um novo planejamento
que determine as seguintes operações: ir até o escritório, abrir o armário, pegar o papel e o
lápis, levá-los até a mesa.
O grão de refinamento do que podemos considerar com sendo uma operação é bastante
subjetivo. Vai depender das dificuldades de quem realiza o plano. Na prática o plano é
necessário quando a pessoa que vai realizar as ações não sabe ainda qual o método. Com a
experiência o método torna-se automático e podemos considerar uma sub-meta como uma
operação
Vejamos um exemplo. Suponha que o usuário esteja escrevendo uma carta utilizando um editor
de texto e tenha como meta formatar um documento.Para atingir esta meta ele estabelece as
seguintes sub-metas: Formatar página, Formatar parágrafos, Formatar fontes. Para cada uma
destas sub-metas ele estabelece novas sub-metas até que ele identifique no software funções que
o sistema pode realizar que permitam que as sub-metas sejam atingidas. Por exemplo, formatar
página pode ser decomposta na função da aplicação especificar tamanho da página e na sub-
meta definir margens. Esta última por sua vez pode ser atingida pelas operações especificar
valor da margem superior, especificar valor da margem inferior, especificar valor da margem
esquerda e especificar valor da margem direita.
Vejamos o plano deste usuário
PLANO:
...
...
O modelo de tarefas é extremamente útil para determinarmos as metas dos usuários e quais
funções da aplicação eles gostariam que o sistema oferecesse. Por exemplo, a especificação
dos requisitos pode determinar que deve existir uma função da aplicação para formatar
documento de maneira que a meta do usuário pudesse ser atingida pelo sistema sem a
necessidade de planejamento algum.
É importante ressaltar que uma meta pode ser satisfeita por uma única ou por várias funções da
aplicação e que também mais de um método pode ser atingido uma mesma função da
aplicação.Por exemplo, ao utilizar o Word 7.0, o usuário pode ter como meta formatar um estilo.
Ao construir o seu plano o usuário em determinado momento pode estabelecer a sub-meta
Especificar atributos do parágrafo. Esta sub-meta requer as mesmas funções de aplicação do
plano para a meta formatar parágrafo. Assim, temos um grupo de funções da aplicação que são
utilizadas para duas (ou mais) metas distintas.
Para que o usuário solicite ao sistema que execute uma determinada função de usuário, ele deve
realizar operações que correspondam a um comando de função. Por exemplo, para o usuário
solicitar ao sistema operacional que realize a função de copiar um arquivo de um diretório para
outro ele deve escrever um comando do tipo copy nome1 dir1 dir2 ou se estiver numa interface
gráfica, mover o ícone correspondente ao arquivo da janela do diretório para a do outro
diretório. Ao realizar o comando, o usuário precisa realizar operações com os dispositivos de
interface do sistema, como pressionar mouse, digitar número, teclar enter, etc.
Apenas com a descrição das operações do usuário é que um plano para atingir uma meta fica
completo. Quando o sistema está pronto, o plano tem que determinar exatamente as operações
necessárias para comandar a função e, conseqüentemente, ter a meta atingida com o auxílio do
sistema.
Na especificação de requisitos é suficiente decompor as metas que o usuário quer atingir nas
correspondentes sub-metas. Caberá ao designer do software determinar qual o conjunto de
funções que permita atingir o maior número possível de metas para cada papel de usuário e
quais devem ser os comandos de interface para cada uma das funções.
Regras de Seleção - Pode existir mais de um método para se atingir uma meta. Uma
regra de seleção especifica certas condições que devem ser satisfeitas antes que um
método possa ser aplicado. Uma regra de seleção é uma expressão do tipo "condição-
ação".
O GOMS permite que se construa modelos de tarefas bem mais complexos e detalhados do
que o necessário numa tarefa de análise para a especificação de requisitos. Usaremos uma
versão simplificada do GOMS, pois:
Uma vez que a hierarquia de metas representa um aumento no nível de detalhe, se nos
limitarmos à descrição de metas e submetas de mais alto nível, nenhuma decisão de design
será envolvida.
Faça a análise "top-down" - comece das metas mais gerais em direção as mais
específicas.
Use termos gerais para descrever metas - não use termos específicos da
interface.
Examine todas as metas antes de descer para um nível mais baixo - isso facilita
reuso de metas.
Considere todas as alternativas de tarefas - as regras de seleção possibilitam
representar alternativas.
Use sentenças simples para especificar as metas - estruturas complexas indicam
a necessidade de decomposição da meta em submetas.
Retire os passos de um método que sejam operadores - os operadores são
dependentes da interface.
Pare a decomposição quando as descrições estiverem muito detalhadas -
quando os métodos são operadores ou envolvem pressuposições de design.
Se, para uma determinada aplicação, a função do usuário for um fator crítico dominante
na análise de usuários, deveremos ter modelos de tarefas diferentes para cada função de
usuário. No GOMS simplificado, veremos como representar as tarefas para cada usuário
num só modelo. Antes de estudarmos a notação do modelo, vejamos algumas regras para
modelos com múltiplas funções de usuários:
ex.: Gerente de vendas (FU1): responsável pela vendas nas lojas. Tem
acesso a todos os dados do sistema.
ex.: FU1;...
Se uma meta é usada para mais de uma função de usuário, elas devem ser
separadas por uma vírgula (,).
ex.: *;...
Cada passo num método é numerado numa ordem seqüencial, com cada nível de
decomposição separado por um ponto (.), e com a endentação apropriada para
reforçar a noção de hierarquia. Após o último número usa-se dois-pontos (:).
Um comentário começa com duas barras inclinadas para direita (//) e acaba ao
final da linha.
ex.:
1. Reutilizando Metas
ex.:
...
2. Diretrizes adicionais
3: Recalcular valores.
1. Métodos de Conversação:
O método de conversação fornece um meio de comunicação verbal entre duas ou mais pessoas. Sendo
uma forma natural de expressar as necessidades, idéias e responder às perguntas, é bastante eficaz para
identificar e compreender as necessidades do entrevistado. Proporciona a comunicação verbal entre um ou
mais participantes e ajuda a comunicação eficaz com os mesmos. Esses métodos fornecem a maneira
natural de expressar as necessidades e as idéias e identificar os requisitos do produto.
1.1 Entrevistas (Interviews): A entrevista é uma das técnicas tradicionais mais simples de utilizar e que
produz bons resultados na fase inicial de obtenção de dados. Convém que o entrevistador dê espaço ao
entrevistado para esclarecer as suas necessidades. É uma discussão do projeto desejado com diferentes
grupos de pessoas.
Principais Vantagens Principais Desvantagens
1) Com um plano geral bem elaborado, o analista terá 1) Podem ocorrer desvios de curso, no decorrer da
facilidade em descobrir que informação o usuário está entrevista;
mais interessado e usar um estilo adequado ao 2) Consumir mais tempo e recursos com sua realização;
entrevistar; 3) Tratamento diferenciado para os entrevistados;
2) Poder alterar o curso da entrevista de forma a obter 4) É necessário ter um plano de entrevista para que não
informações sobre aspectos importantes que não tinham haja dispersão do assunto principal e a entrevista fique
sido previstos no planejamento da entrevista; longa, deixando o entrevistado cansado e não produzindo
3) Poder alterar a ordem seqüencial das perguntas; bons resultados;
4) Poder eliminar perguntas anteriormente planejadas; 5) O usuário tem dificuldade de concentração em
5) Poder incluir perguntas que não estavam na reuniões muito longas;
programação da entrevista;6) Poder motivar o 6) O entrevistado pode não saber expressar corretamente
entrevistado no decorrer do processo; suas necessidades ao analista.
1.2 WorkShop: Trata-se de uma técnica de elicitação em grupo usada em uma reunião estruturada. Devem
fazer parte do grupo uma equipe de analistas e uma seleção dos stakeholders que melhor representam a
organização e o contexto em que o sistema será usado, obtendo assim um conjunto de requisitos bem
definidos.
Principais Vantagens Principais Desvantagens
1) Obtêm um conjunto de requisitos bem definido; 1) Por ser realizado por convocação por dia e horário,
2) Trabalho em equipe tornando o levantamento de pode ocasionar problemas no presenciais dos
requisitos mais eficaz; stakeholders;
3) Baixo custo e resposta relativamente rápida; 2) Não abre caminho para ideias externas além da equipe
4) Tempo de obtenção de informações é reduzido. de analistas; Dados excessivamente agregados.
1.4 Questionário: Diferente da entrevista, essa técnica é interessante quando temos uma quantidade
grande de pessoas para extrair as mesma informações. As questões são dirigidas por escrito aos
participantes com o objetivo de ter conhecimento sobre opiniões das mesmas questões. São auto-
aplicáveis pois o próprio informante responde.
Principais Vantagens Principais Desvantagens
1)Atinge um grande número de pessoas; Menores custos; 1) Não há garantia de que a maioria dos participantes
2) Permite que os participantes respondam no momento respondam o questionário;
em que acharem conveniente;3) Questões padronizadas 2) Os resultados são bastante críticos em relação ao
garantem uniformidade. objetivo, pois as perguntas podem ter significados
diferentes a cada participante questionado.
1.5 Grupo Focal (Focus Group): É um grupo de discussão informal e de tamanho reduzido (até 12 pessoas),
com o propósito de obter informação qualitativa em profundidade. As pessoas são convidadas para
participar da discussão sobre determinado assunto.
Principais Vantagens Principais Desvantagens
1) Baixo custo, resposta rápida e Flexibilidade; 1) Exige facilitador/moderador com experiência para
2) Obtêm informações qualitativas a curto prazo;3) conduzir o grupo; Não garante total anonimato;
Eficiente para esclarecer questões complexas no 2) Depende da seleção criteriosa dos participantes;3)
desenvolvimento de projetos; Informações obtidas não podem ser generalizadas.
2. Métodos de Observação:
Utilizado para a compreensão do domínio da aplicação, observando as atividades humanas.
2.1 Etnografia (Ethnographic Study): É uma análise de componente social das tarefas desempenhadas numa
dada organização. É utilizado para desenvolver um entendimento completo e detalhado.
Principais Vantagens Principais Desvantagens
1) Capacidade de observar o comportamento do 1) Dificuldades para analisar e interpretar situações;
ambiente, gerando maior profundidade no conhecimento. 2) A amostra pode ser reduzida;
2) Apoia-se no comportamento real; 3) Requer treinamento especializado;
3) Permite uma abordagem integral. 4) As observações podem ter uma interpretação
complicada.
2.2 Observação (Observation): A técnica resume-se em visitar o local em foco com a finalidade de
observação do mesmo. Permitindo assim, coletar informações de acordo com o cotidiano das operações e
execução dos processos diários do local.
Principais Vantagens Principais Desvantagens
1) Capaz de captar o comportamento natural das 1) Polarizada pelo observador;
pessoas; 2) Requer treinamento especializado;
2) Nível de intromissão relativamente baixo; 3) Efeitos do observador nas pessoas;
3) Confiável para observações com baixo nível de 4) Não comprova/esclarece o observado;5) Número
inferência. restrito de variáveis.
2.3 Protocolo de Análise (Protocol Analysis): Análise de protocolo é uma forma de levantamento de
requisitos no qual o analista analisa as partes interessadas quando estão envolvidas em algum tipo de
tarefas.
Principais Vantagens Principais Desvantagens
1) Processo de extração de registro de tarefas via audio, 1) o analista deve ter conhecimento suficiente sobre
vídeo ou notas escritas. domínio atual, a fim de compreender melhor as tarefas.
3. Métodos Analíticos:
Conjunto de técnicas para analise de documentação e conhecimento existentes com o intuito de adquirir
requisitos através do levantamento de informação pertinentes ao sistema a ser especificado, como por
exemplo, domínio do negócio, fluxos de trabalho e características do produto.
3.4 Sorteio de Cartões: Utilizado para capturar informações e idéias sobre estrutura de requisitos de
especialistas de domínio. Neste método um conjunto de cartões é distribuído em um grupo de
stakeholders onde cada cartão é impresso com a descrição das entidades do domínio.
Principais Vantagens
1) Ajuda os stakeholders a levantar os conceitos do domínio e distinguir entre problemas de alto e baixo nível;
2) O resultado do método pode ser utilizado como insumo para outros métodos de levantamento de requisitos;
3.5 Repertory Grid: Método onde os stakeholders são questionados sobre atributos e valores destes,
referentes a uma série de entidades. Com esta informação é montada uma matrix de entidade X atributo.
4. Métodos Sintéticos:
Algumas vezes em projetos complexos um único método de levantamento de requisitos não é suficiente
para capturar os requisitos detalhadamente. Para solucionar este problema os analistas de requisitos
tentam utilizar diferentes métodos de levantamento de requisitos. Por exemplo, em alguns casos é
utilizado o método de entrevista antes de se fazer um estudo etinográfico. Ao invés de utilizar a
combinação de diferentes técnicas de levantamento de requisitos, é possível utilizar métodos sintéticos,
que são formados pela combinação das outras técnicas em uma única.
4.1 Sessões JAD/RAD: Consiste em workshops e sessões de grupo nos quais stakeholders e analistas de
requisitos se encontram para discutir as características desejadas do produto. Seu objetivo é envolver
todos os stakeholders importantes no processo de levantamento, através de reuniões estruturadas e com
foco bem definido. Depende diretamente do grau de envolvimento dos stakeholders bem como do líder
das sessões JAD.
O processo JAD consiste em três fases principais: customização, sessões e agrupamento. Na
customização, o analista prepara as tarefas para as sessões como organizar os times, preparar o material,
etc. Na fase de sessões, o analista marca uma ou mais reuniões com os stakeholders. No inicio da sessão
JAD o engenheiro de requisitos provê uma visão genérica sobre o sistema e a discussão com os
stakeholders continua até o fim do levantamento de requisitos. Na fase de agrupamento todos os
requisitos levantados nas fases anteriores são convertidos em documentos de especificação de requisitos.
4.2 Prototipação: Utilizado no estágio inicial do projeto. Ajuda aos stakeholders a desenvolver uma forte
noção sobre a aplicação a qual ainda não foi implementada, que através da visualização da mesma eles
podem identificar os reais requisitos e fluxos de trabalho do sistema. É muito utilizado quando os
stakeholders são incapazes de expressar os seus requisitos ou se os mesmos não têm nenhuma
experiência com o sistema.
Principais Vantagens Principais Desvantagens
1) Permite alcançar um feedback antecipado dos 1) Demanda um alto custo de investimento, em relação à
stakeholders; outros métodos, para ser realizado;
2) Reduão de tempo e custo de desenvolvimento devido a 2) Demanda um tempo maior para sua realização devido
detecção dos erros em uma fase inicial do projeto; a complexidade do sistema e a limitações técnicas;
3) Prove alto nível de satisfação dos usuários devido a
sensação de segurança ao ver algo próximo do real;
4.3 Questionário de Ambiente: Permite aos analistas o real entendimento das necessidades dos
stakeholders com a coleta detalhada de informações através de observação e interação com as pessoas no
ambiente de trabalho. Alguns profissionais são escolhidos e acompanhados a fundo para o completo
entendimento de suas práticas de trabalho.
Principais Vantagens Principais Desvantagens
1) Permite um levantamento profundo e detalhado das 1) Dependendo dos processos de trabalho, necessita de
necessidades dos stakeholders; uma grande quantidade de tempo e pessoas para ser
2) Pode ser utilizado para resolver problemas executado;
extremamente complexos;
4.4 Storyboards: São sessões interativas que descreve uma sequência de atividades e eventos para um caso
em específico para um processo genérico que é esperado que o sistema automatize.
Principais Vantagens
1) Método muito eficiente no esclarecimento de requisitos relacionados a processos, fluxos de dados e tarefas;
2) Método relativamente barato de ser executado;
Conclusão:
Todos os métodos de levantamento de requisitos possuem vantagens e desvantagens a serem
consideradas e nenhum deles é completo dadas as inúmeras variáveis de complexidade, perfil de
stakeholders, comunicação, nível de conhecimento do negócio, nível de qualificação dos profissionais de
levantamento de requisitos, situações políticas, nível de comprometimento dos stakeholders, etc. Com
isso, a utilização de mais de uma técnica, de forma combinada, ou a utilização de técnicas sintéticas, irá
ajudar na complementação de possíveis lacunas de levantamento, além de melhorar a qualidade e
completude dos requisitos visto que pode ocorrer o batimento cruzado de requisitos similares. Outro fator
importante é a utilização de um framework de decisão para a escolha dos métodos mais apropriados dado
o contexto do trabalho a ser realizado.
(45) (0)
Publicidade
Olá a todos.
Todos os meus artigos que publiquei na DevMedia até hoje foram artigos técnicos voltados para a linguagem C#.
Porém neste artigo, vamos sair um pouco dessa tônica e tentar explicar os fundamentos de uma linguagem muito
importante não só para desenvolvedores, mas para todos os profissionais que se envolvem em projetos de
Nesta série de artigos veremos o que é UML, para que serve e alguns exemplos práticos dos seus diagramas mais
comumente utilizados.
O que é UML?
UML é um acrônimo para a expressão Unified Modeling
Language. Pela definição de seu nome, vemos que UML é uma
linguagem que define uma série de artefatos que nos ajuda na
tarefa de modelar e documentar os sistemas orientados a
objetos que desenvolvemos.
a) Paciente
b) Secretária
c) Médico
a) Paciente
· Solicita Consulta
b) Secretária
· Consulta Agenda
· Marca Consulta
· Cancela Consulta
c) Médico
· Realiza Consulta
· Prescreve Medicação
· Solicita Realização de exames
Objetivo
Extend
· Sistema
Exemplo 1
Exemplo 2
Exemplos de Casos de Uso
Sistema de Vendas
1 Fazer Pedido - versão 1
Cenário informal
Atores
Cliente, Funcionário
Pré-condição:
Pós-condição:
Atores
Cliente, Funcionário
Pré-condição:
Cenário informal
Atores
Pré-condição:
Pós-condição:
Usado por:
2. Verificar Pedido
3. Cancelar Pedido
Estende
Pré-condição:
Pós-condição:
Pré-condição:
Pós-condição:
Observação
Observação
Você também pode criar uma linha da vida arrastando uma
classe existente, a interface, o ator ou o componente
deGerenciador de modelos UML para o diagrama.Isso
cria uma linha da vida que representa uma instância do tipo
escolhido.
2. Desenhe mensagens para mostrar como as linhas da vida colaboram
para atingir uma meta específica.
Para criar uma mensagem (3, 4, 6, 7), clique em uma ferramenta de
mensagem.Clique em linha de vida de envio no ponto onde você
deseja que a mensagem para iniciar e clique em linha de vida de
recebimento.
Uma ocorrência de execução (5) aparece na linha de vida de
recebimento.A ocorrência de execução representa um período de
tempo durante o qual a instância está executando um método.Você
pode criar outras mensagens que iniciar a partir de uma ocorrência
de execução.
3. Para mostrar uma mensagem que vem de uma origem de evento
desconhecida (9) ou transmite para destinatários desconhecidos (10),
desenhe uma mensagem assíncrona de ou para o espaço em branco
no diagrama.Essas mensagens são chamadas encontrou
mensagens (9) e mensagens perdidas (10).
Observação
Observação
Observação
Cuidado
Observação
Observação
Observação
Observação
sequência.
o Cria um vínculo entre o uso de interação e o novo diagrama de
sequência.
Para navegar até a sequência referenciada por um uso de
interação
Clique duas vezes o uso de interação.
-ou-
O uso de interação de atalho e, em seguida, clique em Ir à
sequência.
Criando um espaço reservado com um uso de interação
Você pode criar uma interação, use sem vinculá-lo a um outro
diagrama.Você pode usar isso como um espaço reservado para uma parte
da sequência cujos detalhes ainda estão para ser resolvidas.Use o nome
do uso de interação para indicar o resultado desejado.
Recolhendo grupos de linhas de vida
Você pode recolher um conjunto de linhas da vida juntos, para que o
grupo é exibido como uma linha da vida.Isso ajuda a visualizar um grupo
de objetos como um único componente.Mensagens e usos de interação
entre linhas de vida de um grupo recolhida ficam ocultos.Mensagens e
sequências de interação que incluem outras linhas da vida são mostradas.
Para recolher um grupo de linhas da vida juntos
1. Selecione duas ou mais linhas da vida.
2. Clique em um deles e, em seguida, clique em Recolher.
As linhas da vida separadas são substituídas por uma única linha da
vida.
Mensagens e usos de interação que envolvem somente os membros
do grupo estão ocultos.
3. Para renomear o grupo, clique no nome.
Observação
Observação
Atributos
Um atributo é um valor de dado assumido pelos objetos de uma classe. Nome, idade e peso são
exemplos de atributos de objetos Pessoa. Cor, peso e modelo são possíveis atributos de
objetos Carro. Cada atributo tem um valor para cada instância de objeto. Por exemplo, o
atributo idade tem valor ``29'' no objeto Pedro Y.Em outras palavras, Pedro Y tem 29 anos de
idade. Diferentes instâncias de objetos podem ter o mesmo valor para um dado atributo.
Cada nome de atributo é único para uma dada classe, mas não necessariamente único entre todas
as classes. Por exemplo, ambos Pessoa e Companhia podem ter um atributo chamado endereço.
No diagrama de classes, atributos são listados no segundo segmento da caixa que representa a
classe. O nome do atributo pode ser seguido por detalhes opcionais, tais como o tipo de dado
assumido e valor default. A Figura mostra esta representação.
Figura: Representação diagramática de OMT para classes e objetos com atributos. Um diagrama de classe com atributos é
apresentado à esquerda. Um possível diagrama de instâncias com os respectivos valores é apresentado à direita.
Não se deve confundir identificadores internos de objetos com atributos do mundo real.
Identificadores de objetos são uma conveniência de implementação, e não têm nenhum
significado para o domínio da aplicação. Por exemplo, CIC e RG não são identificadores de
objetos, mas sim verdadeiros atributos do mundo real.
Introdução
O modelo conceitual é o artefato mais importante criado
durante a análise
O modelo conceitual ilustra os conceitos importantes do
domínio do problema, suas associações e atributos
Falaremos de associações e atributos nos próximos
capítulos
Levantar um conjunto rico e expressivo de conceitos
(objetos) durante a análise ajuda muito a conduzir as
fases de projeto e implementação
É importante lembrar que os conceitos levantados aqui
são do domínio do problema e não conceitos associados a
software
Modelos conceituais
Ao fazer análise OO, a decomposição do domínio do
problema utiliza objetos e não funções ou processos como
na análise estruturada
Exemplo de um modelo conceitual (com conceitos,
associações e atributos)
Apenas a parte diagramática está sendo mostrada
UML permite associar descrições mais detalhadas dos
conceitos, atributos, etc.
Loja
Lugares
Aeroporto
Venda, Pagamento
Transações (um momento notável)
Reserva
Caixa
Papeis de pessoas
Piloto
Loja, Prateleira
Coleções de outras coisas (containers)
Aeronave
Item
Coisas dentro das coleções
Passageiro
Fome
Conceitos abstratos
Acrofóbia (medo de altura)
Departamento de vendas
Organizações
Voamos Baixo, Ltda.
Catálogo de produtos
Catálogos
Catálogo de peças
Linha de crédito
Instrumentos e serviços financeiros
Estoque
Manual do empregado
Manuais, livros
Manual de reparos
Se houver mais itens, o caixa pode A descrição e preço do item corrente são
informar a quantidadetambém exibidos
7. O cliente efetua
o pagamento com dinheiro, possivelmente
maior que o total da venda
Item de detalhe de
Item
uma venda
Loja Caixa
Venda Cliente
Pagamento Gerente
Catálogo de
produtos
Relatórios são objetos?
Um recibo é um relatório
Deveria ser um conceito (objeto)
A favor de excluir:
Um recibo é apenas um relatório de uma venda
Incluí-lo no modelo conceitual não seria útil porque
toda sua informação é derivada de outros objetos
A favor de incluir
Um recibo tem um papel importante nas regras de
negócio porque permite que o cliente devolva itens
comprados
Na primeira iteração de desenvolvimento, os Use Cases
não consideram a devolução do produto e não incluiremos
o objeto Recibo
Em outra iteração, poderá ser incluído
Modelando descrições
Não se deve incluir como atributos descrições de
conceitos a instâncias desses conceitos por dois motivos
Repetição de informação
A descrição some se não houver instância
Exemplo: Não está correto incluir a descrição de um
produto no conceito Produto
É melhor criar um novo conceito DescriçãoDeProduto
que descreve instâncias de Produtos
Outro exemplo: O conceito Vôo deveria incluir toda a
descrição do vôo?
Não! Se nenhum vôo RG321 ocorrer, a descrição do
vôo RG321 deve continuar em algum lugar: é um
conceito à parte
int seculoDeNascimento() {
return ...anoDeNascimento...;
}
int anoDePublicacao() {
return anoDePublicacao;
}
...
}
Estes atributos derivados são necessários pois
os valores de alguns atributos essenciais
geralmente devem ser visíveis. Da forma
ilustrada acima, garante-se que os valores de
alguns atributos essenciais podem ser lidos por
clientes (usuários) dos objetos, mas não
diretamente alterados.
Observando que classes são (descritas por) um
tipo especial de módulo e que private é um
mecanismo para esconder informações,
ressalta-se a importância do uso de private para
definir atributos essenciais.
Métodos e Mensagens
Programação 3: Orientação a Objetos e Java
Assim como atributos, métodos são relativos a
uma classe e as suas descrições fazem parte da
descrição da classe. Um método é representado
por uma operação que realiza ações e modifica
os valores dos atributos do objeto responsável
pela execução do método. Em Java, métodos
são especificados da seguinte maneira:
class Conta {
private double saldo;
private long numero;
void printSaldo() {
System.out.println("Conta: " + numero + " Saldo: R$"
+ saldo);
}
}
Através do método print_saldo, um objeto
de Conta se comunica com a tela do computador.
Na prática, esta comunicação se daria não
em Conta, mas em uma classe que
representasse uma interface de objetos
de Conta com usuários. Note que concatenação
de strings é representada por + e os valores de
outros tipos são automaticamente convertidos
para strings.
Inicializadores
Programação 3: Orientação a Objetos e Java