610 likes | 824 Views
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
E N D
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
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
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”.
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)
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)
Principais Conceitos - MDA • MDA – Model Driven Architecture
Principais Conceitos – PIM, PSM PIM Platform Independent Model PSM Platform Specific Model Transformações Mapeamentos
Principais Conceitos – ...CIM CIM Computation Independent Model (domain model / business model) PIM Platform Independent Model PSM Platform Specific Model
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.
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.
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
Abordagens Pesquisadas • Web Modeler • Rational Rose Enterprise Edition (IBM) • Screen Painter Diagram • System Architect (Telelogic) • UML Web Profile • HENNICKER, KOCH, 2001. • GUILayout • BLANKENHORN, 2004.
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...
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.
Requisitos (1/2) • Um diagrama deve modelar o layout da GUI...; • O diagrama deverá ser fácil de aprender, utilizar e entender; • A criação de um digrama em uma ferramenta especializada de modelagem deverá ser uma tarefa de poucos minutos; • A criação de um diagrama não deve exigir muito trabalho adicional; • A simbologia utilizada no diagrama deverá representar os elementos fundamentais utilizados em interfaces gráficas...;
Requisitos (2/2) • O modelo deverá oferecer alguma forma de extensão...; • 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...; • O modelo deverá ser abstrato o suficiente para possibilitar utilizá-lo na camada PIM da arquitetura MDA...; • 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..; • 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...;
Requisito 8: PIM PIM Platform Independent Model UGUI Profile PSM Platform Specific Model WEB UGUI Profile Transformações Mapeamentos
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)
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
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.
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.
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.
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.
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.
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.
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
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.
Estereótipo: TextBox • “Edit box” • Atributos • Value: String • MaxLength: Integer • MinLength: Integer = 0 • PasswordMode: Boolean = false • Required: Boolean = true • Mask: String • FieldName: String
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
Estereótipo: RichBox • MemoBox com conteúdo formatado • Atributos • Value: String • MaxLength: Integer • MinLength: Integer = 0 • Required: Boolean = true • FieldName: String • ContentType: String
Estereótipo: ComboBox • Lista drop-down com scroll • Atributos • Items[*]: String • SelectedIndex: Integer • Required: Boolean = true • FieldName: String • Sorted: Boolean = false • Editable: Boolean = false
Estereótipo: Media • Conteúdo multimídia • Atributos • Value: String[*] • Required: Boolean = true • FieldName: String • ContentType: String • Editable: Boolean = false • Stretch: Boolean = false
Estereótipo: Table • Conteúdo tabular • Atributos • TotalCols: Integer • Titles: String[*] • Items: String[*] • Editable: Boolean = false • FieldName: String • SelectedIndex: Integer
Estereótipo: Gauge • Informação quantitativa • Atributos • Style: GaugeStyle = HorizontalBar • Progress: Integer = 0 • ShowText: Boolean = true • FieldName: String
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
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
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.
Estereótipo: RadioButton • Opções exclusivas • Atributos • Hint: String • Checked: Boolean = false • CheckedValue: String • FieldName: String • Required: Boolean = true
Estereótipo: CheckBox • Ligado/desligado • Atributos • Hint: String • Checked: Boolean = false • CheckedValue: String • FieldName: String
Estereótipo: Button • Botão de comando • Atributos • DefaultButton: Boolean = false • Hint: String • IconFilename: String • UseAcceleratorChar: Boolean = false • Execute: String
Estereótipo: Label • Texto não editável • Atributos • Style: String • Alignment: AlignmentStyle = Left
Estereótipo: LinkedLabel • Texto hyperlink não editável • Atributos • Style: String • Alignment: AlignmentStyle = Left • Execute: String • Hint: String