Curso de Bacharelado em Ciência da Computação PROFILE EM UML PARA MODELAGEM SIMPLIFICADA DE INTERFACES GRÁFICAS EM APLICATIVOS André Sandri Aluno Prof. Me. Carlos Michel Betemps Orientador 30 de junho de 2006. Roteiro O Problema (Introdução) Objetivo Principal Principais Conceitos Abordagens Pesquisadas A Solução Proposta Requisitos e Limitações O Projeto Avaliação do Modelo Conclusões e Trabalhos Futuros 2 O Problema (Introdução) Foi constatado que não existe um modelo padrão para a modelagem de GUI Fabricantes disponibilizaram soluções proprietárias A relevância deste assunto afeta o futuro e o provável sucesso da arquitetura MDA – Model Driven Architecture 3 Objetivo Principal Demonstrar a criação de um profile UML para possibilitar a modelagem de interfaces gráficas de forma simplificada com ênfase em características de usabilidade para utilização em projetos de sistemas empresariais, podendo ser estendido para outras abordagens de desenvolvimento de software. Refinando o objetivo: “Criar um profile UML para possibilitar a modelagem de interfaces gráficas com foco na apresentação de widgets sob o ponto de vista da qualidade e da usabilidade para ambientes de desenvolvimento de software que utilizam MDD”. 4 Principais Conceitos - MDE MDE – Model Driven Engineering MIC - Model-Integrated Computing (sistemas embarcados) DSL - Domain-Specific Language (Microsoft Software Factories Initiative) MDA - Model-driven Architecture (OMG) Tecnologias MDE oferecem uma abordagem promissora para tratar a incapacidade das linguagens de terceira geração de diminuir a complexidade das diferentes plataformas, buscando expressar de forma eficaz os conceitos do domínio do problema. (SCHMIDT, 2006) 5 Principais Conceitos - MDD MDD – Model Driven Development MDD visa utilizar modelos na maior parte do tempo durante um processo de desenvolvimento de software, e prevê automação através da execução de modelos, transformações e técnicas de geração de código. (KLEPPE, WARMER, BAST, 2003) Ganhos de 70% durante a fase de manutenção do software. A equipe que utilizou MDD completou cinco recursos 37% mais rápido do que a equipe tradicional, em 165 horas contra 260 horas. (COMPUWARE, 2005) 6 Principais Conceitos - MDA MDA – Model Driven Architecture 7 Principais Conceitos – PIM, PSM PIM Platform Independent Model Mapeamentos PSM Platform Specific Model Transformações 8 Principais Conceitos – ...CIM CIM Computation Independent Model (domain model / business model) PIM Platform Independent Model PSM Platform Specific Model 9 Principais Conceitos – MOF MOF – Meta-object Facility UML – Unified Modeling Language CWM - Common Warehouse Metamodel XMI - XML Metadada Interchange QVT - Query, Views, and Transformations MOF é um framework de integração extensível para definir, manipular e integrar metadados e dados de forma independente de plataforma. 10 Principais Conceitos - UML UML 2.0 – Unified Modeling Language Superestrutura Infra-estrutura OCL - Object Constraint Language Diagram Interchange A especificação da Superestrutura contém os conceitos de profiles, stereotypes e tagged values. 11 Principais Conceitos - Usabilidade É a extensão na qual um produto pode ser usado por usuários específicos para alcançar objetivos específicos com efetividade, eficiência e satisfação em um contexto de uso específico. (ISO 9241-11) CUA - Common User Access (IBM) Microsoft Windows User Experience RIA - Rich Internet Applications IUI - Inductive User Interface Widgets 12 Abordagens Pesquisadas Web Modeler Screen Painter Diagram System Architect (Telelogic) UML Web Profile Rational Rose Enterprise Edition (IBM) HENNICKER, KOCH, 2001. GUILayout BLANKENHORN, 2004. 13 Web Modeler Rational Rose Enterprise Edition - IBM 14 Screen Painter Diagram System Architect - Telelogic 15 UML Web Profile HENNICKER, KOCH, 2001 16 GUILayout BLANKENHORN, 2004 17 A Solução Proposta Técnica: Profile, MOF, outras? UML 2.0 + DI Foco na usabilidade (widgets) Independente de plataforma (PIM) Como validar? Protótipo x Ferramenta comercial Engenharia-reversa de GUI Outras formas... 18 Aspectos de Usabilidade Permitir... Modelagem do posicionamento/hierarquia de widgets; Modelar expressões textuais (títulos, rótulos, etc.); Utilização de boxes/containers; Oferecer... Widgets comumente utilizados em ferramentas de programação; Propriedades que permitam a modelagem de troca de estados destes componentes; Propriedades que possam determinar o conteúdo de cada componente, estaticamente ou dinamicamente, através de simples expressões textuais (do tipo String) ou através de expressões OCL. 19 Requisitos (1/2) 1) Um diagrama deve modelar o layout da GUI...; 2) O diagrama deverá ser fácil de aprender, utilizar e entender; 3) A criação de um digrama em uma ferramenta especializada de modelagem deverá ser uma tarefa de poucos minutos; 4) A criação de um diagrama não deve exigir muito trabalho adicional; 5) A simbologia utilizada no diagrama deverá representar os elementos fundamentais utilizados em interfaces gráficas...; 20 Requisitos (2/2) 6) O modelo deverá oferecer alguma forma de extensão...; 7) O modelo deverá seguir as premissas do UML, ou seja, ser simples, compreensível para pessoas que não são da área de desenvolvimento de software...; 8) O modelo deverá ser abstrato o suficiente para possibilitar utilizá-lo na camada PIM da arquitetura MDA...; 9) Prever a utilização de OCL nos widgets possibilitando assim automatização do funcionamento do sistema gerado em ferramentas que suportam a execução do modelo..; 10) O modelo deverá ser criado para utilização em ferramentas de modelagem que suportem a criação e utilização de profiles UML de acordo com a especificação da OMG...; 21 Requisito 8: PIM UGUI Profile PIM Platform Independent Model WEB UGUI Profile Mapeamentos PSM Platform Specific Model Transformações 22 Limitações Navegação; Interação entre outros diagramas; Prototipação; Outros. Restrições em OCL (sem possibilidade de validar com os meta-modelos utilizados) 23 O Projeto Levantamento principais widgets Estereótipos para extensão Framework de Execução Instanciar conforme plataforma Validação de conteúdo Persistência de conteúdo Ajuda de Contexto Drag & Drop Widgets não incluídos: PopupMenu, TreeView, ListView 24 UGUI Profile – Visão Parcial (1/3) 25 UGUI Profile – Visão Parcial (2/3) 26 UGUI Profile – Visão Parcial (3/3) 27 Estereótipo: Container Estereótipo abstrato (Component) Atributos Visible: Boolean = true Enabled: Boolean = true Resizable: Boolean = true Restrições Deverá haver pelo menos um estereótipo estendido de container no diagrama. 28 Estereótipo: Window Janela (aninhar outros widgets) Atributos Title: String IconFilename: String Style: WindowStyle = Normal Restrições Um Window não pode aninhar outro Window. 29 Estereótipo: Panel Área virtual (borda) Atributos BorderVisible: Boolean = true Caption: String Alignment: AlignmentStyle = Center Restrições Um Panel não pode aninhar um Window. 30 Estereótipo: GroupBox Agrupar elementos relacionados Atributos Caption: String Restrições Um GroupBox não pode aninhar um Window. Um GroupBox não pode aninhar um Panel. 31 Estereótipo: TabSheetGroup Agrupar TabSheet Atributos ActivePage: String TabPosition: TabSheetStyle = Top Restrições Este elemento deve possuir pelo menos um elemento TabSheet. Somente o elemento TabSheet pode ser incluído neste container, nada mais. 32 Estereótipo: TabSheet “Página com aba” Atributos Caption: String IconFilename: String Restrições Todo TabSheet deve pertencer a um TabSheetGroup. Um TabSheet não pode conter um Window. Um TabSheet não pode conter um TabSheetGroup. 33 Estereótipo: ExtendedContainer Estereótipo de Extensão Pode ser utilizado quando nenhum dos estereótipos previstos no modelo atende às necessidades do projeto Possível adicionar novos atributos conforme ferramenta de modelagem Atributos Type: String 34 Estereótipo: BoxedWidget Estereótipo Abstrato Atributos Visible: Boolean = true Enabled: Boolean = true Hint: String Restrições Todo BoxedWidget deverá ser incluído dentro de um Window, Panel, GroupBox ou TabSheet. 35 Estereótipo: TextBox “Edit box” Atributos Value: String MaxLength: Integer MinLength: Integer = 0 PasswordMode: Boolean = false Required: Boolean = true Mask: String FieldName: String 36 Estereótipo: MemoBox “Edit Box” com várias linhas Atributos Value: String MaxLength: Integer MinLength: Integer = 0 Required: Boolean = true FieldName: String WordWrap: Boolean = false 37 Estereótipo: RichBox MemoBox com conteúdo formatado Atributos Value: String MaxLength: Integer MinLength: Integer = 0 Required: Boolean = true FieldName: String ContentType: String 38 Estereótipo: ComboBox Lista drop-down com scroll Atributos Items[*]: String SelectedIndex: Integer Required: Boolean = true FieldName: String Sorted: Boolean = false Editable: Boolean = false 39 Estereótipo: Media Conteúdo multimídia Atributos Value: String[*] Required: Boolean = true FieldName: String ContentType: String Editable: Boolean = false Stretch: Boolean = false 40 Estereótipo: Table Conteúdo tabular Atributos TotalCols: Integer Titles: String[*] Items: String[*] Editable: Boolean = false FieldName: String SelectedIndex: Integer 41 Estereótipo: Gauge Informação quantitativa Atributos Style: GaugeStyle = HorizontalBar Progress: Integer = 0 ShowText: Boolean = true FieldName: String 42 Estereótipo: TrackBar Visualizar/alterar um valor quantitativo limitado Atributos MinValue: Integer = 0 MaxValue: Integer = 10 Orientation: TrackBarOrientation = Horizontal Value: Integer ShowText: Boolean = false FieldName: String 43 Estereótipo: ExtendedBox Estereótipo de extensão Pode ser utilizado quando nenhum dos estereótipos previstos no modelo atende às necessidades do projeto Possível adicionar novos atributos conforme ferramenta de modelagem Atributos Type: String 44 Estereótipo: TextualWidget Estereótipo abstrato Atributos Name: String Visible: Boolean = true Enabled: Boolean = true UseAcceleratorChar: Boolean = false Restrições Todo TextualWidget deverá ser incluído dentro de um Window, Panel, GroupBox ou TabSheet. 45 Estereótipo: RadioButton Opções exclusivas Atributos Hint: String Checked: Boolean = false CheckedValue: String FieldName: String Required: Boolean = true 46 Estereótipo: CheckBox Ligado/desligado Atributos Hint: String Checked: Boolean = false CheckedValue: String FieldName: String 47 Estereótipo: Button Botão de comando Atributos DefaultButton: Boolean = false Hint: String IconFilename: String UseAcceleratorChar: Boolean = false Execute: String 48 Estereótipo: Label Texto não editável Atributos Style: String Alignment: AlignmentStyle = Left 49 Estereótipo: LinkedLabel Texto hyperlink não editável Atributos Style: String Alignment: AlignmentStyle = Left Execute: String Hint: String 50 Estereótipo: ExtendedText Estereótipo de extensão Pode ser utilizado quando nenhum dos estereótipos previstos no modelo atende às necessidades do projeto Possível adicionar novos atributos conforme ferramenta de modelagem Atributos Type: String 51 EXEMPLO 1 Fonte: Microsoft WordPad 52 EXEMPLO 2 Fonte: Banrisul Remote Banking 53 Avaliação do Modelo Para avaliar e testar o modelo e a abordagem escolhida, foram utilizadas duas ferramentas de modelagem comerciais que suportam a criação e a utilização de profiles (UML 2.0): - Together Architect 2006 - Enterprise Architect 6.1 54 Avaliação - Together Architect Suporte de especificação visual do profile de forma semelhante à proposta da OMG Representação gráfica (SVG 1.1) Ícone (paleta de componentes) Problemas Restrições OCL (editor, definição) “Component” com imagem (comportamento não previsto pela OMG) Nome e texto com imagem 55 Avaliação - Together Architect 56 Avaliação - Enterprise Architect Especificação visual de forma semelhante ao Together (XML) Representação gráfica (EMF ou WMF) Suporta restrições OCL (sem editor) Problemas Problemas semelhantes com imagens Mostra o nome do elemento (superior) Permite mover para fora dos limites do elemento pai sem alterar a estrutura hierárquica 57 Conclusões O modelo oferece um recurso para possibilitar a modelagem de GUI com aspectos de usabilidade para ambientes MDD (PIM do MDA), pois: É independente de tecnologia (plataforma) Possibilita modelar o comportamento básico dos widgets ao serem executados Prevê propriedades para serem utilizadas para a validação, persistência e apresentação dos dados Permite construir o diagrama de forma aproximada aos elementos que compõem as atuais interfaces gráficas 58 Conclusões Com a avaliação em cima de ferramentas de modelagem foram encontrados problemas referentes à utilização de imagens nos estereótipos e da utilização de restrições OCL. Portanto, conclui-se que existe uma necessidade de amadurecimento das ferramentas quanto a estes aspectos, além de que é recomendável reforçar a padronização da OMG para evitar estes tipos de problemas, já que estas especificações não previram explicitamente estes tipos de necessidades. 59 Trabalhos Futuros Avaliar a utilização do profile durante a construção de um software real Especificar e avaliar um modelo semelhante ao proposto utilizando MOF ou DSL Avaliar e sugerir modificações nos padrões da OMG Avaliar e sugerir correções para as ferramentas de modelagem Especificar, construir e validar um framework de execução para este profile Realizar a conversão das restrições para OCL Sugerir navegação, interação, etc. 60 Muito Obrigado! André Sandri www.sandri.cjb.net Esta apresentação, a monografia e os arquivos do profile para ambas ferramentas de modelagem serão disponibilizadas na terceira semana de julho na página do autor. 61