Jadson Santos, Gleydson Lima, U. Kulesza, Demóstenes Sena, Felipe A. P. Pinto, Jalerson Lima, Alexandre Vianna, D. D. Pereira, V. Fernandes
This paper presents the Conditional Execution design pattern that aims to help the implementation of fine-grained variabilities in the context of software product lines of information systems. The pattern has been used successfully in three product lines of web information systems developed by Informatics Superintendence (SINFO) at Federal University of Rio Grande do Norte.
{"title":"Conditional execution: a pattern for the implementation of fine-grained variabilities in software product lines","authors":"Jadson Santos, Gleydson Lima, U. Kulesza, Demóstenes Sena, Felipe A. P. Pinto, Jalerson Lima, Alexandre Vianna, D. D. Pereira, V. Fernandes","doi":"10.1145/2591028.2600810","DOIUrl":"https://doi.org/10.1145/2591028.2600810","url":null,"abstract":"This paper presents the Conditional Execution design pattern that aims to help the implementation of fine-grained variabilities in the context of software product lines of information systems. The pattern has been used successfully in three product lines of web information systems developed by Informatics Superintendence (SINFO) at Federal University of Rio Grande do Norte.","PeriodicalId":417896,"journal":{"name":"Latin American Conference on Pattern Languages of Programs","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123831050","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This paper presents a test pattern for developing automated system tests for distributed applications. System tests are those intended to test the whole, completely integrated application. Developing such tests is hard because it demands the probing and analysis of data from distributed objects that sometimes present asynchronous operations. The Distributed Test Agents pattern is intended to guide the testers in the development of automated system tests for distributed applications. During the development of the tests, testers can abstract several details regarding the configuration of the distributed components and they can use and access these components in a simple and synchronous way.
{"title":"Distributed test agents: a pattern for the development of automatic system tests for distributed applications","authors":"Giovanni Farias, A. Dantas, R. Lopes, D. Guerrero","doi":"10.1145/2591028.2600817","DOIUrl":"https://doi.org/10.1145/2591028.2600817","url":null,"abstract":"This paper presents a test pattern for developing automated system tests for distributed applications. System tests are those intended to test the whole, completely integrated application. Developing such tests is hard because it demands the probing and analysis of data from distributed objects that sometimes present asynchronous operations. The Distributed Test Agents pattern is intended to guide the testers in the development of automated system tests for distributed applications. During the development of the tests, testers can abstract several details regarding the configuration of the distributed components and they can use and access these components in a simple and synchronous way.","PeriodicalId":417896,"journal":{"name":"Latin American Conference on Pattern Languages of Programs","volume":"126 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114995880","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Free/Libre/Open Source Software (FLOSS) projects are developed in a collaborative manner, by communities of contributors that work on publicly available source code. However, many potential contributors are still daunted by the FLOSS world. The Patterns for Engagement in Free Software Projects present solutions for recurring problems that emerge when prospective contributors are willing to select a FLOSS project to get involved and to contribute with. They are organized around three clusters: (a) Selection Patterns, that help prospective contributors to find suitable projects, (b) Involvement Patterns, that deal with the first steps towards getting familiar and involved with the selected project, and (c) Contribution Patterns, that document best practices for submitting different kinds of contribution to a free software project. The Patterns for Engagement in Free Software Projects catalog is itself a FLOSS project. Its license allows free reuse of the text, as long as the modified versions are distributed under the same license.
{"title":"Patterns for engagement in free software projects","authors":"A. Terceiro, Rodrigo R. G. Souza, C. Chavez","doi":"10.1145/2591028.2600812","DOIUrl":"https://doi.org/10.1145/2591028.2600812","url":null,"abstract":"Free/Libre/Open Source Software (FLOSS) projects are developed in a collaborative manner, by communities of contributors that work on publicly available source code. However, many potential contributors are still daunted by the FLOSS world. The Patterns for Engagement in Free Software Projects present solutions for recurring problems that emerge when prospective contributors are willing to select a FLOSS project to get involved and to contribute with. They are organized around three clusters: (a) Selection Patterns, that help prospective contributors to find suitable projects, (b) Involvement Patterns, that deal with the first steps towards getting familiar and involved with the selected project, and (c) Contribution Patterns, that document best practices for submitting different kinds of contribution to a free software project. The Patterns for Engagement in Free Software Projects catalog is itself a FLOSS project. Its license allows free reuse of the text, as long as the modified versions are distributed under the same license.","PeriodicalId":417896,"journal":{"name":"Latin American Conference on Pattern Languages of Programs","volume":"43 17","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"113974509","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Demóstenes Sena, Felipe A. P. Pinto, Gleydson Lima, Jadson Santos, Jalerson Lima, U. Kulesza, D. D. Pereira, V. Fernandes, Alexandre Vianna
This paper presents an industrial experience of design pattern application for the modularization of variabilities from software product lines of web information systems. These web systems were developed at the Superintendência de Informática (SINFO) from Federal University of Rio Grande do Norte (UFRN). The work describes details about the adoption and composition of traditional design patterns to the modularization of variabilities (optional, alternative and or-feature) that are usually used in web information systems. Furthermore, it also reports some usage scenarios of the conditional execution annotative technique in the implementation of fine-grained variabilities, which are not adequately implemented using traditional design patterns.
本文介绍了web信息系统的软件产品线的变异性模块化的设计模式应用的工业经验。这些网络系统是由北里奥格兰德联邦大学(UFRN)在Superintendência de Informática (SINFO)上开发的。该工作详细描述了采用和组合传统设计模式以实现通常在web信息系统中使用的可变性(可选的、可选的和特性的)的模块化。此外,它还报告了条件执行注释技术在细粒度变量实现中的一些使用场景,这些使用传统设计模式无法充分实现。
{"title":"Modularization of variabilities from software product lines of web information systems (in Portuguese)","authors":"Demóstenes Sena, Felipe A. P. Pinto, Gleydson Lima, Jadson Santos, Jalerson Lima, U. Kulesza, D. D. Pereira, V. Fernandes, Alexandre Vianna","doi":"10.1145/2591028.2600820","DOIUrl":"https://doi.org/10.1145/2591028.2600820","url":null,"abstract":"This paper presents an industrial experience of design pattern application for the modularization of variabilities from software product lines of web information systems. These web systems were developed at the Superintendência de Informática (SINFO) from Federal University of Rio Grande do Norte (UFRN). The work describes details about the adoption and composition of traditional design patterns to the modularization of variabilities (optional, alternative and or-feature) that are usually used in web information systems. Furthermore, it also reports some usage scenarios of the conditional execution annotative technique in the implementation of fine-grained variabilities, which are not adequately implemented using traditional design patterns.","PeriodicalId":417896,"journal":{"name":"Latin American Conference on Pattern Languages of Programs","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123822752","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Mirla R. R. Braga, C. Bezerra, José Maria S. Monteiro, Rossana Andrade
This paper presents a pattern language for agile software estimation. The proposed language is composed of eight patterns and their relationships, which were identified through an extensive literature research and interviews with several companies that use agile methodologies. The patterns identified can help agile teams to obtain the main estimates needed in the context of agile software projects.
{"title":"A pattern language for agile software estimation","authors":"Mirla R. R. Braga, C. Bezerra, José Maria S. Monteiro, Rossana Andrade","doi":"10.1145/2591028.2600814","DOIUrl":"https://doi.org/10.1145/2591028.2600814","url":null,"abstract":"This paper presents a pattern language for agile software estimation. The proposed language is composed of eight patterns and their relationships, which were identified through an extensive literature research and interviews with several companies that use agile methodologies. The patterns identified can help agile teams to obtain the main estimates needed in the context of agile software projects.","PeriodicalId":417896,"journal":{"name":"Latin American Conference on Pattern Languages of Programs","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122635396","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
The patterns in this collection are an addition to those that appeared in our book, Fearless Change: Patterns for Introducing New Ideas. Our passion for this topic didn't end when the book was published. Rather, we continue to read, observe, take extensive notes and, most importantly, listen to comments and suggestions from our readers. We have not stopped learning about leading change. As Alexander wrote in A Timeless Way of Building: "As people exchange ideas about the environment, and exchange patterns, the overall inventory of patterns in the pattern pool keeps changing. Of course, this evolution will never end."
{"title":"Additional patterns for fearless change, part IV","authors":"Mary Lynn Manns, L. Rising","doi":"10.1145/2591028.2600818","DOIUrl":"https://doi.org/10.1145/2591028.2600818","url":null,"abstract":"The patterns in this collection are an addition to those that appeared in our book, Fearless Change: Patterns for Introducing New Ideas. Our passion for this topic didn't end when the book was published. Rather, we continue to read, observe, take extensive notes and, most importantly, listen to comments and suggestions from our readers. We have not stopped learning about leading change. As Alexander wrote in A Timeless Way of Building: \"As people exchange ideas about the environment, and exchange patterns, the overall inventory of patterns in the pattern pool keeps changing. Of course, this evolution will never end.\"","PeriodicalId":417896,"journal":{"name":"Latin American Conference on Pattern Languages of Programs","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121372507","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Thiago Bonfim, Jesse Nery Filho, R. Ramos, M. Boratto
The High Performance Computing has achieved a high level in terms of processing capacity at reduced cost using Graphics Processing Units to perform algorithms of high computing cost. The massively parallel systems based on GPU have to deal with hundreds of processing cores embedded in a single chip, leading to exceptional computing gains. The CUDA (Computing Unified Device Architecture) is a computing architeture of general purposes that uses paralel computing in GPUs to solve high cost computing problems in less time when compared to its execution in CPU (Central Process Unit). The Barracuda Design Pattern supplies a layer of abstraction to the application of massively parallel solutions using CUDA which is easier to handle and similar to the other layers found in existing API's (Application Programming Interface) which are regularly used by programmers that use High Performance Computing.
{"title":"The barracuda design pattern (in Portuguese)","authors":"Thiago Bonfim, Jesse Nery Filho, R. Ramos, M. Boratto","doi":"10.1145/2591028.2600816","DOIUrl":"https://doi.org/10.1145/2591028.2600816","url":null,"abstract":"The High Performance Computing has achieved a high level in terms of processing capacity at reduced cost using Graphics Processing Units to perform algorithms of high computing cost. The massively parallel systems based on GPU have to deal with hundreds of processing cores embedded in a single chip, leading to exceptional computing gains. The CUDA (Computing Unified Device Architecture) is a computing architeture of general purposes that uses paralel computing in GPUs to solve high cost computing problems in less time when compared to its execution in CPU (Central Process Unit). The Barracuda Design Pattern supplies a layer of abstraction to the application of massively parallel solutions using CUDA which is easier to handle and similar to the other layers found in existing API's (Application Programming Interface) which are regularly used by programmers that use High Performance Computing.","PeriodicalId":417896,"journal":{"name":"Latin American Conference on Pattern Languages of Programs","volume":"32 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131035246","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
E. Coutinho, C. Bezerra, Rossana Andrade, J. Souza
Software development is an activity that works several aspects of Software Engineering. One of them is requirements elicitation and its writing in an understandable notation for software developers. Non-Functional Requirements are those associated to the qualitative aspects of software such as performance, safety and usability. Normally the identification of non-functional requirements is conducted on an adhoc basis, and developed later. In this paper, a pattern is proposed for the treatment (identification and selection) of conflicting non-functional requirements in the early stages of its development, to not harm the quality of the system and also to be more suitable to customer needs.
{"title":"Conflict of requirements: a pattern for the treatment of conflicting non-functional requirements","authors":"E. Coutinho, C. Bezerra, Rossana Andrade, J. Souza","doi":"10.1145/2591028.2600813","DOIUrl":"https://doi.org/10.1145/2591028.2600813","url":null,"abstract":"Software development is an activity that works several aspects of Software Engineering. One of them is requirements elicitation and its writing in an understandable notation for software developers. Non-Functional Requirements are those associated to the qualitative aspects of software such as performance, safety and usability. Normally the identification of non-functional requirements is conducted on an adhoc basis, and developed later. In this paper, a pattern is proposed for the treatment (identification and selection) of conflicting non-functional requirements in the early stages of its development, to not harm the quality of the system and also to be more suitable to customer needs.","PeriodicalId":417896,"journal":{"name":"Latin American Conference on Pattern Languages of Programs","volume":"72 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124659110","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
A test class is an isolated piece of software that is responsible for verifying the expected behavior of a class, a component or an application. Because test classes can be developed without consideration of good design, sometimes individual test classes might include redundant code or become large and unwieldy. This paper presents two patterns that propose the introduction of a common superclass for test classes in order to reduce code bulk, reuse more test code and achieve a better test organization.
{"title":"Patterns for introducing a superclass for test classes","authors":"E. Guerra, Bruno Kinoshita","doi":"10.1145/2591028.2600815","DOIUrl":"https://doi.org/10.1145/2591028.2600815","url":null,"abstract":"A test class is an isolated piece of software that is responsible for verifying the expected behavior of a class, a component or an application. Because test classes can be developed without consideration of good design, sometimes individual test classes might include redundant code or become large and unwieldy. This paper presents two patterns that propose the introduction of a common superclass for test classes in order to reduce code bulk, reuse more test code and achieve a better test organization.","PeriodicalId":417896,"journal":{"name":"Latin American Conference on Pattern Languages of Programs","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116490890","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
The development of Information Technology (IT) demands the integration of systems (legacy or new), so that they can operate in a distributed way and promoting the reuse of design, code and information in a high granularity level. Enterprise Application Integration (EAI) plays a fundamental role in this scenario. It can be conducted by different means, for example, by sharing the access to databases or using Web Services (WS). Both solutions are being adopted by organizations, although they present advantages and disadvantages that should be analysed. Several restrictions can be present in the particular integration scenario, causing problems to be solved before deciding if the integration should be done by data access or WS. So, this work has the objective of documenting these problems and solutions in the pattern format, in order to make available to other developers the knowledge acquired when doing EAI. These solutions can be used to improve reuse in certain integration contexts, depending on the organization business rules.
{"title":"Patterns for enterprise application integration","authors":"Eliana Kaneshima, R. Braga","doi":"10.1145/2591028.2600811","DOIUrl":"https://doi.org/10.1145/2591028.2600811","url":null,"abstract":"The development of Information Technology (IT) demands the integration of systems (legacy or new), so that they can operate in a distributed way and promoting the reuse of design, code and information in a high granularity level. Enterprise Application Integration (EAI) plays a fundamental role in this scenario. It can be conducted by different means, for example, by sharing the access to databases or using Web Services (WS). Both solutions are being adopted by organizations, although they present advantages and disadvantages that should be analysed. Several restrictions can be present in the particular integration scenario, causing problems to be solved before deciding if the integration should be done by data access or WS. So, this work has the objective of documenting these problems and solutions in the pattern format, in order to make available to other developers the knowledge acquired when doing EAI. These solutions can be used to improve reuse in certain integration contexts, depending on the organization business rules.","PeriodicalId":417896,"journal":{"name":"Latin American Conference on Pattern Languages of Programs","volume":"11 suppl_1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2012-09-20","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133267435","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}