Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Introdução
Produzir software de qualidade, com custo e prazos reduzidos deixou de ser desejável e
passou a ser uma necessidade. Diversas técnicas, metodologias e ferramentas vêm sendo
propostas com o intuito de dar suporte e auxiliar a produção de software de qualidade.
Um dos mais importantes avanços na comunidade de engenharia de software foi o
surgimento da Linguagem de Modelagem Unificada (UML, Unified Modeling
Language) (BOOCH et al., 2000).
A UML é uma linguagem visual que permite modelar sistemas dos mais
diversos tipos e arquiteturas, utilizando o paradigma de orientação a objetos (OMG,
2011; RAMOS, 2006). A UML é um conjunto de diagramas que representam visões
parciais do sistema, juntos estes diagramas buscam definir o sistema como um todo
(OMG, 2011; BOOCH et al., 2000).
Apesar do grande poder de representatividade da UML, o conhecimento dessa
linguagem por si só não garante sucesso no processo de modelagem de sistemas. A
UML não consiste em um método para desenvolvimento de software, não descreve os
passos que se deve seguir para modelar um sistema. Esta linguagem limita-se,
exclusivamente, a representar o software durante toda a fase de desenvolvimento e em
diferentes níveis de abstração. Portanto recomenda-se a utilização de um processo de
desenvolvimento uniformizado, que quando aplicado corretamente em conjunto com
uma linguagem de modelagem, como a UML, resulta em um software de melhor
qualidade (ANDRETO et al, 2006).
Um processo de desenvolvimento de software consiste em um conjunto de
técnicas e metodologias que guiam o processo de concepção de sistemas de informação
(SOMMERVILLE, 2003). Grande parte dos processos de software utilizam a UML
como linguagem de modelagem. Vários modelos de processo de software foram
propostos, tais como: RUP (Rational Unified Process) (KRUCHTEN, 2003), XP
(Extreming Programing) (BECK 1999) e Catalysis (D’SOUZA et al., 1999). De acordo
com o tipo de aplicação um modelo pode ser mais adequado do que outro.
Muitos dos problemas associados ao processo de desenvolvimento de software
iniciam-se na fase de análise de requisitos (SANTANDER; CASTRO, 2000).
Requisitos mal definidos (inconsistentes) ou incompletos resultam em um produto final
que não atendem as necessidades dos usuários, pois é a partir dos requisitos que se
implementa o sistema requerido. Levantar as características e as funcionalidades que
são realmente relevantes para os usuários não é uma tarefa simples. De acordo com
Santander e Castro (2000), a dificuldade na definição de requisitos se deve
principalmente a dois fatores: a dificuldade da comunicação entre o usuário e o
desenvolvedor e o fato dos clientes não saberem o que realmente desejam do sistema.
Considerando o exposto, propõe-se neste artigo uma abordagem para auxiliar o
desenvolvimento das fases iniciais de um projeto de software, sobretudo a análise de
requisitos. Este conjunto de técnicas provê suporte a construção dos diagramas de caso
de uso concomitantemente aos protótipos de interface, os quais por sua vez dão suporte
ao desenvolvimento dos diagramas os classe e sequência de forma sistemática. Apesar
de propor um conjunto de técnicas para auxiliar o desenvolvimento de alguns diagramas
da UML, não objetiva-se neste trabalho apresentar um novo processo de software; e sim
apresentar um conjunto de técnicas que podem ser adaptadas nas primeiras fases dos
processos já existentes. Acredita-se que a aplicação destas técnicas torne o processo de
construção dos diagramas da UML mais rápido e fácil e com qualidade, de forma que
os diagramas resultantes sejam coerentes e coesos.
O restante deste artigo esta organizado da seguinte forma: na Seção 2 é
apresentada uma breve descrição da UML; na Seção 3 são apresentados os principais
conceitos acerca da prototipação; em seguida, na Seção 4 é apresentada a abordagem
proposta e ilustrada através de um estudo de caso, um sistema para biblioteca estudantil;
por fim, na Seção 5 são apresentadas as conclusões.
2. UML
A UML é uma linguagem não proprietária desenvolvida para especificar, construir,
visualizar e documentar software. É mantida pelo OMG (Object Management Group) e
recebeu contribuições e direito de autoria de várias empresas privadas, como a HP,
IBM, Microsoft, Oracle, ObjectTime, Platinum, Ptech, Rational, ICON Computing, i-
Logix, InteliCorp, Electronic Data Services, Reich, Softam, Sterling, Taskon A/S e
Unisys (BOOCH et al., 2000; RAMOS, 2006).
O objetivo da UML é ser uma linguagem de modelagem independente da
linguagem de programação, de ferramentas CASE e de processos de desenvolvimento.
Ela não é uma metodologia de desenvolvimento, ou seja, ela não define os passos para
o desenvolvimento de um projeto, mas fornece um meio de representação de sistemas
de informação que auxilia a documentação, compreensão do projeto e a comunicação
entre os desenvolvedores.
A documentação de um software utilizando a UML é feita através da
representação do sistema em diagramas, cada um dando uma visão e nível de
detalhamento específico e complementar aos outros. Cada visão deve ser intimamente
relacionada com as outras visões, de forma que os diagramas se apresentem coesos e
coerentes em relação aos demais (BOOCH et al., 2000).
A UML 2.0 define 13 diagramas, divididos em três categorias: seis diagramas
estruturais (diagrama de classes, diagrama de objetos, diagrama de componentes,
diagrama de instalação, diagrama de pacotes, diagrama de estrutura), três diagramas
comportamentais (diagrama de caso de uso, diagrama de estados, diagrama de
atividade) e quatro para diagramas de interações (diagrama de sequência, diagrama de
interatividade, diagrama de colaboração ou comunicação, diagrama de tempo) (OMG,
2011).
Neste trabalho são abordadas técnicas para auxiliar a concepção dos diagramas
de casos de uso, de classe e de sequência, que apresentam respectivamente visões do
comportamento externo, estrutural e interativo do sistema. Estes diagramas são os mais
usados nas fases iniciais da maioria dos processos de software.
3. Prototipação
A prototipação, no contexto de sistemas de informação, consiste na produção rápida de
sistemas simplificados (protótipos) com os quais podem ser realizadas experimentações
e verificações para avaliar e validar suas funcionalidades. Essa técnica é muito usada
para a elucidação e refinamento de requisitos, bem como para validação destes
(SOMMERVILLE, 2003).
A prototipação é útil quando não se tem muitas informações sobre os requisitos
de um sistema, seja pela dificuldade em obtê-los dos usuários ou pela própria
complexidade do sistema. Um erro grave que ocorre na prototipação é o aproveitamento
do protótipo para construir o sistema a ser entregue ao usuário. É importante observar
que este protótipo deverá servir apenas para validar e elucidar os requisitos
(PRESSMAN, 2006) (SOMMERVILLE, 2003).
A atividade de prototipação reduz os riscos de fracasso no processo de
desenvolvimento de software pois, equívocos entre usuários e desenvolvedores são mais
facilmente expostos nas fases iniciais do processo de desenvolvimento do sistema. Bem
como funcionalidades esquecidas e mal definidas podem ser identificadas e corrigidas.
Neste trabalho utilizamos a prototipação de interfaces que têm o objetivo de
ajudar no processo de comunicação entre o engenheiro de software e o usuário para
melhor definição dos requisitos. Com requisitos definidos, a elaboração do diagrama de
casos de uso é facilitado e daí os outros diagramas podem ser gerados.
4. Abordagem Proposta
A abordagem proposta será apresentada por meio de um exemplo, um sistema de
biblioteca, um sistema razoavelmente simples e bem conhecido. Será dada uma ênfase
na qualidade dos requisitos levantados visto que ela influencia diretamente na qualidade
final do produto de software.
O desenvolvimento dos diagramas UML e dos protótipos de interface foi
dividido em seis passos: 1º- Definição dos Requisitos do Sistema; 2º- Construção do
Diagrama de casos de Uso e dos Protótipos de Interface; 3 º- Construção dos Cenários;
4 º- Validação dos Casos de Uso Através dos Protótipos de Interface; 5 º- Construção
do Diagrama de Classes; e 6º- Construção dos Diagramas de Sequência, Figura 1.
4.4. Passo 4 - Validação dos Casos de Uso Através dos Protótipos de Interface
Deve-se apresentar os protótipos das interfaces ao(s) usuário(s) explicando-lhe(s) a
sequência de operações realizadas e a sequência de telas exibidas durante a realização
de uma funcionalidade. Essas sequências devem estar coerentes com os cenários
desenvolvidos. Todos os cenários primários e secundários devem ser descritos
utilizando os protótipos e interface. Durante o processo, as dúvidas do usuário devem
ser esclarecidas e todos os comentários e sugestões pertinentes devem ser registrados.
As deficiências encontradas nessa iteração devem subsidiar a elaboração de novos
diagramas de casos de uso, interfaces e cenários que devem ser novamente validados
pelo usuário. Esta etapa encerra-se após a definição completa e detalhada dos casos de
uso, interfaces e cenários validados pelo usuário.
A utilização de protótipos de interface provê um processo mais objetivo de
validação dos requisitos funcionais com o usuário do que o uso direto do diagrama de
casos de uso. Apesar de natural para os engenheiros de requisitos experientes, o
diagrama de casos de uso não é facilmente compreendido pelo usuário, o protótipo de
interface provê uma representação mais real do sistema em desenvolvimento, próximo
da utilização cotidiana do sistema. A construção de protótipos de interfaces é mais
simples do que a construção de um protótipo funcional, podendo ser realizada por um
profissional sem conhecimento de nenhuma linguagem de programação. Outro
benefício é que o processo resulta na criação de alguns documentos (diagramas de caso
de uso e cenários), validados pelo usuário, que serão usados nas fases seguintes da
modelagem.
5. Conclusões
A abordagem apresentada neste artigo pretende tornar o processo de modelagem de
requisitos mais fácil e eficiente, provendo através do uso de protótipos de interface uma
forma mais simples de interagir com os usuários e, assim, validar os requisitos
modelados no diagrama de casos de uso. Também apresenta uma forma de construir os
diagramas de classe e de sequência de forma mais objetiva, garantindo a coerência entre
as representações do sistema. Essa coerência é garantida pelo fato de um diagrama ser
gerado a partir de informações de outro, previamente construído.
Esta abordagem não é uma regra que precisa ser seguida rigorosamente.
Consiste em várias técnicas que podem ser aplicadas em conjunto, ou isoladamente, ou
até mesmo adaptadas de acordo com os conhecimentos e necessidades de cada
indivíduo. Ela abordagem pode ser usada junto com a maioria dos processos de
desenvolvimento de software modernos.
Pretende-se avaliar esta abordagem de forma qualitativa usando como grupo de
teste composto por alunos de graduação do curso de Engenharia da Computação da
UNIVASF, submetendo-os a atividades de desenvolvimento de diagramas da UML
seguindo a abordagem proposta e em seguida aplicando questionários visando avaliar a
efetiva eficácia das técnicas propostas.
Referências
ANDRETO, D. E. et al. Desenvolvendo de Software: Uso da Prototipação na fase de
Concepção do Modelo de Processo de Software RUP. Iniciação Científica
CESUMAR. v. 08, n.01, p.27-33 Maringá - PR, Brasil. 2006. Disponível em:
<http://www.cesumar.br/pesquisa/periodicos/index.php/iccesumar/article/viewFile/
133/71>. Acesso em: 5 Nov 2011.
BECK, K. Embracing change with extreme programming. IEEE Computer, n.10,
v.32, p.70-78.
BOOCH, G., et. al. UML, guia do usuário. Rio de Janeiro: Campus, 2000.
D’SOUZA, D. F. et al. Objects, Components and Frameworks with UML – The
Catalysis Approach. USA: Addison Wesley Publishing Company, 1999.
DEBONI, J. E. Z.; CASTRO, J. F. B. Breve Introdução aos Diagramas da UML.
Voxxel Consultoria de sistemas 2009. Disponível em:
<http://www.marcelocampos
.com.br/academico/estagio1/download/aula003ex2.pdf>. Acesso em: 5 Nov 2011.
OMG. Introduction to OMG's Unified Modeling Language™ (UML®). 2011.
Disponível em: <http://www.omg.org/gettingstarted/what_is_uml.htm>. Acesso em:
27 Mar 2011.
KRUCHTEN, Philippe. Introdução ao RUP - Rational Unified Proccess. Rio de
Janeiro: Ciência Moderna, 2003.
PRESSMAN R. S. Engenharia de Software. 6a edição - McGraw-Hill Interamericana
do Brasil, 2006.
RAMOS, R. A. Treinamento Prático em UML. São Paulo: Digerati, 2006. v. 1. 144
p.
SANTANDER, V. F. A.; CASTRO, J. F. B. Desenvolvendo Use Cases a Partir da
Modelagem Organizacional. III Workshop de Engenharia de Requisitos, Rio de
Janeiro - RJ, Brasil. 2000. Disponível em:
<http://wer.inf.puc-rio.br/WERpapers/artigos/artigos_WER00/santander.pdf>.
Acesso em: 5 Nov 2011.
SOMMERVILLE, I. Engenharia de software. 6. ed. São Paulo: Addison Wesley,
2003.