10th Latin American Conference on Pattern Languages of Programs

SugarLoaf PLoP 2014

Accepted papers

Group A - The Observers - Facilitator Rossana Andrade

Padrões para Criação de Objetos de Aprendizagem (Writer's Workshop)

Katia C. A. Damaceno Borges, Iris F. De Barcelos Tronto, José L. Braga, Eduardo Guerra

Há uma busca pelo uso de TICs dentro de salas de aula, visando uma maior interação do aluno no ambiente escolar. Dentro deste contexto surgem os objetos de aprendizagem - OA, como forma de apoio ao uso da tecnologia na educação. Estes prometem não apenas integrar o ensino tradicional as novas tecnologias, mas também tornar o ensino menos monótono. Entretanto, existe a necessidade de que se garanta um requisito básico a esses OAs, ou seja, o reuso. Assim, deve ser padronizada a forma com a qual estes são desenvolvidos, a fim de que possam ser recuperados e reutilizados. Neste sentido este artigo propõe a criação de uma linguagem de padrões de desenvolvimento de OAs.

Partial View: Um padrão para reutilização de views na arquitetura MVC (Writer's Workshop)

Ricardo Viana,Thalisson Oliveira, Fernando Trinta, Rossana Andrade

Nesse trabalho, apresentamos o padrão Partial View, que pode ser utilizado por desenvolvedores de sistemas para Internet criados sob o padrão MVC (Model-View-Controller). Na construção de views (camada de visualização), muitas vezes, faz-se necessária a repetição de partes de funcionalidades para a montagem das páginas. Sendo assim, usando o padrão Partial View, pode-se evitar a duplicidade de código separando esse fragmento de funcionalidade em um único arquivo. Depois, pode-se incluir essa parte isolada em várias partes do sistema, centralizando a funcionalidade e facilitando modificações futuras. Esse arquivo pode conter código dinâmico ou não, e pode receber parâmetros para diferenciar algumas partes da view.

A Pattern to Argue the Compliance of System Safety Requirements Decomposition (Writer's Workshop)

André Luiz De Oliveira, Rosana T. V. Braga, Paulo C.Masiero,Ibrahim Habli, Tim Kelly

Safety case is a structured argument aimed to argue the system is acceptably safe to operate in a specific environment. Safety cases have been successfully used as documentation to support the certification process of safety-critical systems. Safety case patterns have been used to document recurrent safety argumentation solutions that have evolved over time by providing a simple and efficient solution to a particular problem. There are in the literature safety case patterns providing recurrent solutions for arguing the safety of product and process, and the compliance of development processes with safety standards. These patterns may require information provided by safety analysis to be instantiated. The decomposition of system safety requirements (SSRs) throughout component-level failures is one of the activities of the system safety analysis. Existing model-based safety analysis tools provide the capability of automatically allocate SSRs to component failures. In this context, there is a need for an structured safety argument arguing the conformance of the allocation of SSRs provided by these tools with requirements allocation rules prescribed by safety standards as ISO 26262 and ARP 4754A. In this paper, we propose safety case pattern describing a reusable argument structure to argue the compliance of the requirements allocation with the assignment rules prescribed by safety standards. The pattern addresses to support safety analysts in developing safety arguments to justify sufficiency and compliance of the requirements decomposition with the target safety standard. This pattern was applied in the design of arguments of two systems from automotive and avionics domains.

Gerência de Variabilidades na Plataforma Android (Writing Group)

Adorilson Bezerra, Uirá Kulesza, Rodrigo Bonifácio, Elder Cirilo, Edmilson Campos Neto

Over the past few years there has been rapid growth in the use and demand for mobile application development. Android platform being the most used worldwide. Devices running Android have different characteristics, different size, different sensors, different versions of the API. In addition, different users have different requirements of their applications. This paper presents techniques for management of variability that can be used on the Android platform to address these aspects. We use as case study the software product line MobileMedia, an application to manage multimedia files that were originally created for Java Micro Edition, and now migrated to Android. In the version for JME techniques were used as conditional compilation and programming oriented aspects, while the Android version to use native platform resources, and technicals as conditional execution and object-oriented programming, such as polymorphism.

Group B - The Visitors - Facilitator Ralph Johnson

Prevalent Systems: A Pattern Language (Invited Paper)

Ralph Johnson, Klaus Wuestefeld

Data often needs to be persistent to survive loss of power and to be accessible in the future. There are many ways to make data persistent, such as storing it in a local file system or storing it in a relational database management system. Each way has advantages and disadvantages. Prevalence is a way of achieving persistence that is fast and simple, easy to reason about and easy to implement. It can be extremely reliable and can work in all kinds of environments. Its main limitation is that data must all fit in memory, but when even a cell phone will have gigabytes of memory, many applications that once required a standard DBMS would be better if they used prevalence. Prevalence is well suited for object-oriented programming, since it lets the programmer think of the entire system from an object-oriented point of view. In fact, the prevalent system can be built using any paradigm, so it allows the programmer to chose the point of view that best suites the project. But its main advantage is speed. A prevalent system can provide the features of a database with the speed of main memory.

Change Cipher Specification Message Drop Attack: A Misuse Pattern for the SSL/TLS Server Authentication Handshake Protocol (Writer's Workshop)

Ali Alkazimi, Eduardo B. Fernandez

Transport Layer Security (TLS) is a cryptographic protocol that provides a secure channel between a client and a server. TLS is the successor to the Secure Sockets Layer (SSL) protocol. The client/server secure connection prevents an attacker from eavesdropping an established connection. The SSL/TLS security protocol is layered between the application protocol layer and the TCP/IP layer and includes as one of its sub-protocols the handshake protocol. It is used in most internet communications for enabling secure web browsing. We present here a misuse pattern for the SSL/TLS Server Authentication Handshake Protocol: Change Cipher Specification Message Drop Attack, where the attacker performs a Man in The Middle attack to intercept and drop the "ChangeCipherSpec"" message which causes the server to never leave its pending state and the communication will not happen.

A pattern for a secure and safe port loading facility (Writer's Workshop)

Eduardo B. Fernández, Raúl Monge, René Carvajal

A cyber-physical system (CPS) integrates computing and communication capabilities with the monitoring and control of entities in the physical world. We present here a pattern for a secure and safe port loading facility, where we have added security and safety patterns on a model for a port loading facility that describes the basic operations of such a system. The specific security and safety patterns are deduced following a systematic methodology.

The Dynamic Relations Pattern (Writing Group)

Sinval Vieira, Rodrigo Vilar, Ayla Dantas

Este trabalho apresenta um padrão de projeto de apoio à implementação de relacionamentos entre entidades representadas por metamodelos em sistemas dinamicamente adaptáveis. Os relacionamentos que o Dynamic Relations contempla são dependências simples, relacionamentos de associação, um para um, um para muitos e muitos para muitos.

Group C - The Prototypes - Facilitator Takashi Iba

The Last Two TestDriven Development Step Patterns: Bug Locator and Pause for Housekeeping (Writer's Workshop)

Eduardo Guerra, Joseph Yoder, Maurício Finavaro Aniche, Marco Aurélio Gerosa

Test-driven development (TDD) is a development technique often used to design classes in a software system by creating tests before their actual code. The TDD Steps pattern language is an effort to document the different kinds of actions that a developer can perform on TDD to drive class behavior and design. In two previous papers, we introduced eight patterns of this language. This paper aims to introduce the two remaining patterns. One pattern focus on the creation of a test to locate a known bug, and the other one a pause for a more deep refactoring before introducing a new functionality.

QA to AQ Part Three - Shifting from Quality Assurance to Agile Quality: "Tearing Down the Walls" (Writer's Workshop)

Joseph W. Yoder, Rebecca Wirfs-Brock, Hironori Washizaki

As organizations transition to agile processes, Quality Assurance (QA) activities and roles need to evolve. Traditionally, QA activities occur late in the process, after the software is fully functioning. As a consequence, QA departments have been "quality gatekeepers" rather than actively engaged in the ongoing development and delivery of quality software. Agile teams incrementally deliver working software. Incremental delivery provides an opportunity to engage in QA activities much earlier, ensuring that both functionality and important system qualities are addressed just in time, rather than too late. Agile teams embrace a "whole team" approach. Even though special skills may be required to perform certain development and Quality Assurance tasks, everyone on the team is focused on the delivery of quality software. The patterns in this paper are focused on "breaking down the walls" or removing barriers between people and traditional roles as this is key for any change within an organization that is transitioning to being more Agile at Quality.

Presentation Patterns: A Pattern Language for Creative Presentations, Part I (Writer's Workshop)

Takashi Iba, Taichi Isaku

In this paper, we present some patterns from the Presentation Patterns, a pattern language for creative presentations. The Presentation Patterns consists of 34 patterns describing practical knowledge for designing presentations. Some patterns were already presented in the EuroPLoP conference (Iba, et al., 2012), however those patterns were in the first version and were written in short, simple sentences. After publishing the paper, our pattern language received several revisions and, in 2013, we have published a Japanese book of the Presentation Patterns (Iba and Iba Laboratory, 2013). This is the first of a series of papers in which we will present this new version of the Presentation Patterns, a few patterns at a time. After all patterns are presented and shepherded in the series of papers, we plan to publish the English version of the Presentation Patterns book.

Mining Interview Patterns: Patterns for Effectively Obtaining Seeds of Patterns (Writer's Workshop)

Takashi Iba, Joseph Yoder

When creating a new pattern language, it is important to mine the seeds of the patterns from best experiences. Kerth and Cunningham identified three general approaches to pattern mining (Kerth & Cunningham 1997). If the author(s) already have experience in the domain of the pattern language, they can easily get the seeds of the patterns by their own experiences (introspective approach). The author(s) can do this by using a pattern writing sheet proposed elsewhere (Iba, 2014) or other informal methods such as those proposed by Ward Cunningham (Cunningham 1994) and Joseph Yoder (2007-2012). Another approach mentioned by Kerth and Cunningham was pattern mining by examining many related systems or architectures, noticing the commonality and pattern mining the best practices from this analysis (artifactual approach). For example, the GoF patterns [GoF 1994] were mined from these two approaches. However, if you are motivated to create and write a pattern language in an area where you have little or no experience, it is important to conduct interviews with experienced people to help collect the key information needed to write the patterns (sociological approach). Both authors have conducted various interviews for mining the seeds of patterns and one has written a couple of these into pattern languages. (Iba, et al., 2011) (Iba & Takenaka, 2013). There have been other approaches like Holistic Mining Approach (Iba & Isaku, 2012). During an interview, it is important to ask key questions to experienced people along the following lines: Solution, Problem, and Context. This seems very straightforward; however many pattern writers still have difficulty getting the information they need. Therefore, we decided to write these patterns (meta-patterns) to assist with the interview process while mining the seeds of patterns. In this paper, we present 8 patterns to assist with the interview while mining the seeds of patterns. The patterns presented in this paper are: (0) Mining Interview, (1) Keys Worth Sharing, (2) Problem Digging, (3) Context Catching, (4) Venture of Asking, (5) Sympathetic Response, (6) Experience Overlapping, (7) Interesting Point. They are primarily intended for anyone wanting to write patterns specifically about topics where they are not the subject expert. Our patterns are written using a modified version of Takashi Iba's Patterns 3.0 format (Iba 2011). While similar to the traditional Alexandrian pattern form, the most important differentiation of the Pattern Language 3.0 is their orientation towards pattern readers who explicitly use patterns to design their own actions in a collaborative environment.

Software Development Patterns for Startups (Writing Group)

Jorge A. Melegati, Gonçalves Alfredo Goldman

Technology startups are recently founded companies focused on innovation, generally, under lack of resources. Then, a highly uncertain environment is created that influence how they develop their software. This set of patterns tries to capture the expertise found in literature to help founders and employee developers to optimize software development under these unique circumstances that a startup faces. Until incipient, we could present five new patterns (Be Agile, Use Open Source Solutions, Simple Tools, Validate your Hypothesis with Early Adopters and Empower Team Members or Have a Flexible Structure) based on literature.

PATTERN APPLICATIONS

Personal Picture Method for Self Design

Arisa Kamada, Sumire Nakamura, Masafumi Nagai, Rika Sakuraba, Takashi Iba

In this paper, we present a method to self-design your life with your own hands by applying the Personal Culture Patterns, a pattern language for a life with continuous self-fulfillments, to the Personal Picture Method. We will introduce an example of a workshop using Personal Picture Method named the Self Travel Cafe and analyze its results. Through the Personal Culture Patterns and Personal Picture Method, each individual will be able to reflect about and design their life on their own.

Um Estudo Exploratório da Arquitetura e Projeto de Aplicativos Android

Edmilson Campos Neto, Uirá Kulesza, Roberta Coelho

Este artigo apresenta um estudo exploratório de análise de arquiteturas de aplicações desenvolvidas para a plataforma Android. Ao todo foram analisados código de seis aplicativos opensource, selecionados por amostragem entre os mais populares da loja oficial de aplicativos Android, a Google Play. A metodologia do trabalho consistiu em extrair o código dos aplicativos diretamente dos seus repositórios e aplicar técnicas de engenharia de reversa para investigar a arquitetura de cada um deles. O objetivo principal do estudo foi investigar as decisões comuns adotadas por desenvolvedores para a modularização da arquitetura de aplicações Android. O artigo apresenta análises qualitativas realizadas sobre as arquiteturas extraídas, com base em três critérios predefinidos no estudo: (i) análise arquitetural; (ii) utilização de padrões de projeto gerais ou específicos da plataforma Android; e (iii) política de tratamento de exceções adotada.

OWSE-AF: Um Framework para Desenvolvimento de Aplicações Web

Leo Silva, Uirá Kulesza, Ulisses Telemaco

Este artigo apresenta um framework para desenvolvimento de aplicações web, chamado de OWSE-AF. Ele detalha a arquitetura e projeto do framework desenvolvido com o propósito de melhorar a produtividade de desenvolvimento de sistemas web implementados na linguagem Java. Padrões de projeto adotados no framework são apresentados para detalhar seu projeto. O artigo detalha, também, a experiência de uso do framework em projetos de desenvolvimento de software.

Support

Organization

Sponsoring

©SugarLoafPLoP 2014 / PLoP® is a registered trademark of The Hillside Group.