2.4 Padr˜oes de Software
2.4.2 Classifica¸c˜oes de Padr˜oes
Padr˜oes de software possuem diversos n´ıveis de abstra¸c˜ao. Para facilitar a sua recupera¸c˜ao e utiliza¸c˜ao, padr˜oes podem ser divididos em categorias (Braga et al., 2001) de acordo com crit´erios de classifica¸c˜ao. De acordo com Santos (2004), o termo “classificacao” ´e utilizado para definir o processo de classificar ou distribuir por classes, e o termo “categoria” ´e empregado para referenciar uma classe particular de uma classifica¸c˜ao. O conjunto de categorias define um crit´erio de classifica¸c˜ao.
Classifica¸c˜ao de padr˜oes tamb´em agiliza o seu aprendizado, al´em de direcionar esfor¸cos na descoberta de novos padr˜oes (Gamma et al., 1995). Alguns crit´erios de classifica¸c˜ao s˜ao (Santos, 2004):
• Classifica¸c˜ao Segundo o Est´agio de Desenvolvimento de Software; • Classifica¸c˜ao Segundo o Dom´ınio da Aplica¸c˜ao;
• Classifica¸c˜ao Segundo a Camada de Aplica¸c˜ao do Padr˜ao; • Classifica¸c˜ao GoF (Gang of Four ) (Gamma et al., 1995);
CAP´ITULO 2. CONCEITOS B ´ASICOS • Classifica¸c˜ao POSA (Pattern-Oriented Software Architecture) (Buschmann et al.,
1996).
Classifica¸c˜oes n˜ao s˜ao rigorosas e alguns padr˜oes podem pertencer a mais de uma cate- goria (Braga et al., 2001). O Almanaque de Padr˜oes 2000 (Rising, 2000) indexa os padr˜oes por categorias, podendo ser classificados de acordo com o est´agio de desenvolvimento, o dom´ınio da aplica¸c˜ao ou as categorias utilizadas pela GoF.
No contexto deste trabalho de mestrado, duas classifica¸c˜oes podem ser destacadas: a Classifica¸c˜ao Segundo o Est´agio de Desenvolvimento de Software, detalhada na Se¸c˜ao 2.4.2.1, e a Classifica¸c˜ao Segundo o Dom´ınio da Aplica¸c˜ao, explicada na Se¸c˜ao 2.4.2.2.
2.4.2.1 Classifica¸c˜ao Segundo o Est´agio de Desenvolvimento de Software
A Engenharia de Software divide o desenvolvimento de software em cinco est´agios (Cor- riveau et al., 1997; Jacobson, 1992) apud (Andrade, 2001): captura de requisitos, an´alise, projeto, implementa¸c˜ao e teste. Ap´os cada est´agio, uma vis˜ao mais detalhada do sistema ´e produzida.
Assim, segundo Andrade (2001), padr˜oes de software podem ser classificados de acordo com o est´agio de desenvolvimento em que s˜ao aplicados: Padr˜oes de Requisitos, Padr˜oes
de An´alise, Padr˜oes de Projeto e Padr˜oes de Implementa¸c˜ao, ou Idiomas. De acordo com
Santos (2004), pode ser considerada uma quinta categoria, a de Padr˜oes de Testes. Na Figura 2.3 s˜ao ilustradas as categorias da classifica¸c˜ao por est´agios de desenvol- vimento de software. Destaca-se que durante o est´agio de projeto, al´em dos Padr˜oes de Projeto, existem os Padr˜oes Arquiteturais e Meta-Padr˜oes (Andrade, 2001; Santos, 2004).
Figura 2.3: Classifica¸c˜ao Segundo o Est´agio de Desenvolvimento de Software. (Andrade, 2001; Santos, 2004)
CAP´ITULO 2. CONCEITOS B ´ASICOS Os Padr˜oes de Requisitos documentam em um alto n´ıvel de abstra¸c˜ao as necessidades dos usu´arios e o comportamento geral do sistema (Andrade, 2001).
Padr˜oes de An´alise descrevem o conhecimento de um dom´ınio. Essa categoria de
padr˜ao tem por objetivo desenvolver, antes da etapa de projeto, um modelo de an´alise que descreva a estrutura conceitual do processo de neg´ocio de um software. Assim, a maior preocupa¸c˜ao dos Padr˜oes de An´alise ´e o modelo conceitual e a maneira como esse modelo afeta a flexibilidade e reusabilidade do sistema (Andrade, 2001).
Os Padr˜oes de Projeto s˜ao um m´etodo para refinar componentes de sistemas de softwa- res ou os relacionamentos entre eles. Esses padr˜oes s˜ao descri¸c˜oes de classes e de objetos comunicantes e customiz´aveis que solucionam um problema de projeto em um contexto particular. Uma classe representa como ser´a a implementa¸c˜ao de um objeto, definindo dados internos e opera¸c˜oes que ele pode desempenhar. Objeto cont´em dados e procedi- mentos que operam sobre dados (Andrade, 2001).
Os Padr˜oes Arquiteturais s˜ao relacionados a organiza¸c˜ao estrutural de uma aplica¸c˜ao, incluindo o projeto detalhado de componentes e a colabora¸c˜ao e a comunica¸c˜ao entre eles. Geralmente, Padr˜oes Arquiteturais s˜ao utilizados nas fases iniciais do projeto (Andrade, 2001).
Meta-Padr˜oes s˜ao conjuntos de Padr˜oes de Projeto que auxiliam a constru¸c˜ao de frameworks bem projetados e independentes do dom´ınio (Pree, 1995) apud (Andrade,
2001). Um framework constitui um bloco semi-constru´ıdo e pronto para ser utilizado (Andrade, 2001).
Padr˜oes de Implementa¸c˜ao ou Idiomas s˜ao guias sobre como Padr˜oes de Projeto devem
ser implementados em uma determinada linguagem (Andrade, 2001).
Segundo Santos (2004), Padr˜oes de Projeto e de Implementa¸c˜ao foram os primeiros padr˜oes de software a serem publicados. Depois surgiram os Padr˜oes de An´alise, de Requisitos e de Testes.
2.4.2.2 Classifica¸c˜ao Segundo o Dom´ınio da Aplica¸c˜ao
Desenvolvedores com pouca experiˆencia em padr˜oes costumam busc´a-los pela natureza da aplica¸c˜ao. Assim, a classifica¸c˜ao por dom´ınio de aplica¸c˜ao ´e um crit´erio muito utilizado e ´e comum encontrar na literatura categorias de padr˜oes como (Santos, 2004): Web,
GUI (Graphical User Interface), XML, Seguran¸ca de Sistemas, Redes, Banco de Dados e Sistemas Distribu´ıdos.
Alguns sites disponibilizam padr˜oes de acordo com a ´area espec´ıfica de pesquisa (San- tos, 2004), por exemplo, o SecurityPatterns.org1
, que possui padr˜oes de diversos autores
1
CAP´ITULO 2. CONCEITOS B ´ASICOS sobre seguran¸ca de sistemas, o Amsterdam Patterns Collection2
, que possui uma cole¸c˜ao de padr˜oes de projeto para Web, GUI e MobileUI (Mobile User Interface) e o HPR (Hy-
permedia Design Patterns Repository) (Bolchini et al., 2002), que ´e um reposit´orio para
padr˜oes hiperm´ıdia, melhor detalhado na Se¸c˜ao 3.4.2.
Tamb´em existem as categorias que fornecem apoio ao desenvolvimento de sistemas, por exemplo, Gerenciamento de Configura¸c˜ao, Organizacional, Processo, Modelagem de
Sistemas e Treinamento (Ambler, 2006; Coplien, 1995; Rising, 2000) apud (Santos, 2004).