This paper is an experience report of a long running Scrum project, conducted in a collaboration between industry and research, in a so called "Joint Research and Development Laboratory". Over time in the collaboration, we experienced a constant decrease in the pace of our development progress. Planning forward only within the limits of single sprints was the main reason for this. It resulted in a degenerating design and therefore a lack of flexibility that affected the agility of our project. Therefore, we introduced the concept of "epic-architectures", an architecture design for a coherent group of user stories. Shifting the planning horizon further, across single sprints, helped us to create more stable and reusable concepts and to construct simpler, more elegant, and more maintainable solutions. We were able to significantly reduce the refactoring effort and increase the development speed, without significant overhead. With reporting on our experiences we hope to provide practically applicable guidance on how to integrate lightweight architecting in agile development processes, to sustain agility while creating high quality products.
{"title":"Sustaining Agility through Architecture: Experiences from a Joint Research and Development Laboratory","authors":"Balthasar Weitzel, Dominik Rost, Mathias Scheffe","doi":"10.1109/WICSA.2014.38","DOIUrl":"https://doi.org/10.1109/WICSA.2014.38","url":null,"abstract":"This paper is an experience report of a long running Scrum project, conducted in a collaboration between industry and research, in a so called \"Joint Research and Development Laboratory\". Over time in the collaboration, we experienced a constant decrease in the pace of our development progress. Planning forward only within the limits of single sprints was the main reason for this. It resulted in a degenerating design and therefore a lack of flexibility that affected the agility of our project. Therefore, we introduced the concept of \"epic-architectures\", an architecture design for a coherent group of user stories. Shifting the planning horizon further, across single sprints, helped us to create more stable and reusable concepts and to construct simpler, more elegant, and more maintainable solutions. We were able to significantly reduce the refactoring effort and increase the development speed, without significant overhead. With reporting on our experiences we hope to provide practically applicable guidance on how to integrate lightweight architecting in agile development processes, to sustain agility while creating high quality products.","PeriodicalId":346971,"journal":{"name":"2014 IEEE/IFIP Conference on Software Architecture","volume":"98 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-04-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116915704","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 goal of this research is to understand the various dimensions along which the architectures in an ecosystem should scale to support successful software-intensive products. We used a case study approach in which we first identified characteristics of scalability from the research literature and then examined ecosystems to determine the extent to which their primary architectures possessed these characteristics. We also examined the architectures of the platform extensions. We found that each architecture exhibited those characteristics although through different mechanisms and to different degrees.
{"title":"Scalability of Ecosystem Architectures","authors":"Simone da Silva Amorim, E. Almeida, J. McGregor","doi":"10.1109/WICSA.2014.36","DOIUrl":"https://doi.org/10.1109/WICSA.2014.36","url":null,"abstract":"The goal of this research is to understand the various dimensions along which the architectures in an ecosystem should scale to support successful software-intensive products. We used a case study approach in which we first identified characteristics of scalability from the research literature and then examined ecosystems to determine the extent to which their primary architectures possessed these characteristics. We also examined the architectures of the platform extensions. We found that each architecture exhibited those characteristics although through different mechanisms and to different degrees.","PeriodicalId":346971,"journal":{"name":"2014 IEEE/IFIP Conference on Software Architecture","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-04-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126135821","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}
Every software program that interacts with a user requires a user interface. Model-View-Controller (MVC) is a common design pattern to integrate a user interface with the application domain logic. MVC separates the representation of the application domain (Model) from the display of the application's state (View) and user interaction control (Controller). However, studying the literature reveals that a variety of other related patterns exists, which we denote with Model-View- (MV) design patterns. This paper discusses existing MV patterns classified in three main families: Model-View-Controller (MVC), Model-View-View Model (MVVM), and Model-View-Presenter (MVP). We take a practitioners' point of view and emphasize the essentials of each family as well as the differences. The study shows that the selection of patterns should take into account the use cases and quality requirements at hand, and chosen technology. We illustrate the selection of a pattern with an example of our practice. The study results aim to bring more clarity in the variety of MV design patterns and help practitioners to make better grounded decisions when selecting patterns.
{"title":"A Journey through the Land of Model-View-Design Patterns","authors":"Artem Syromiatnikov, Danny Weyns","doi":"10.1109/WICSA.2014.13","DOIUrl":"https://doi.org/10.1109/WICSA.2014.13","url":null,"abstract":"Every software program that interacts with a user requires a user interface. Model-View-Controller (MVC) is a common design pattern to integrate a user interface with the application domain logic. MVC separates the representation of the application domain (Model) from the display of the application's state (View) and user interaction control (Controller). However, studying the literature reveals that a variety of other related patterns exists, which we denote with Model-View- (MV) design patterns. This paper discusses existing MV patterns classified in three main families: Model-View-Controller (MVC), Model-View-View Model (MVVM), and Model-View-Presenter (MVP). We take a practitioners' point of view and emphasize the essentials of each family as well as the differences. The study shows that the selection of patterns should take into account the use cases and quality requirements at hand, and chosen technology. We illustrate the selection of a pattern with an example of our practice. The study results aim to bring more clarity in the variety of MV design patterns and help practitioners to make better grounded decisions when selecting patterns.","PeriodicalId":346971,"journal":{"name":"2014 IEEE/IFIP Conference on Software Architecture","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-04-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123981750","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}
Bruno Costa, Paulo F. Pires, Flávia Coimbra Delicato, P. Merson
The use of Representational State Transfer (REST) as an architectural style for integrating services and applications brings several benefits, but also poses new challenges and risks. Particularly important among those risks are failures to effectively address quality attribute requirements such as security, reliability, and performance. An architecture evaluation early in the software life cycle can identify and help mitigate those risks. In this paper we present guidelines to assist architecture evaluation activities in REST-based systems. These guidelines can be systematically used in conjunction with scenario-based evaluation methods to reason about design considerations and trade-offs. This paper also presents a proof of concept to describe how to use the guidelines in the context of an Architecture Trade-off Analysis Method (ATAM) evaluation.
使用具象状态传输(Representational State Transfer, REST)作为集成服务和应用程序的架构风格带来了一些好处,但也带来了新的挑战和风险。在这些风险中,特别重要的是未能有效地处理质量属性需求,如安全性、可靠性和性能。在软件生命周期的早期进行架构评估可以识别并帮助减轻这些风险。在本文中,我们提出了指导方针,以帮助基于rest的系统中的体系结构评估活动。这些指导方针可以系统地与基于场景的评估方法结合使用,以对设计考虑和权衡进行推理。本文还提供了一个概念证明,以描述如何在架构权衡分析方法(ATAM)评估的上下文中使用指南。
{"title":"Evaluating a Representational State Transfer (REST) Architecture: What is the Impact of REST in My Architecture?","authors":"Bruno Costa, Paulo F. Pires, Flávia Coimbra Delicato, P. Merson","doi":"10.1109/WICSA.2014.29","DOIUrl":"https://doi.org/10.1109/WICSA.2014.29","url":null,"abstract":"The use of Representational State Transfer (REST) as an architectural style for integrating services and applications brings several benefits, but also poses new challenges and risks. Particularly important among those risks are failures to effectively address quality attribute requirements such as security, reliability, and performance. An architecture evaluation early in the software life cycle can identify and help mitigate those risks. In this paper we present guidelines to assist architecture evaluation activities in REST-based systems. These guidelines can be systematically used in conjunction with scenario-based evaluation methods to reason about design considerations and trade-offs. This paper also presents a proof of concept to describe how to use the guidelines in the context of an Architecture Trade-off Analysis Method (ATAM) evaluation.","PeriodicalId":346971,"journal":{"name":"2014 IEEE/IFIP Conference on Software Architecture","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-04-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125929331","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}
Advanced asset health management solutions blend business intelligence with analytics that incorporate expert operational knowledge of industrial equipment and systems. Key challenges in developing these solutions include: streamlining the capture and prepackaging of operational experts' knowledge as analytic modules, efficiently evolving the modules as knowledge grows, adapting the analytics in the field for diverse operating circumstances and industries, and executing the analytics with high performance in industrial and enterprise software systems. A Quality Attribute Workshop (QAW) was used to elicit and analyze variability at development time and runtime for creating, integrating, evolving, and tailoring reusable analytic modules for ABB/Ventyx asset health solution offerings. Dynamic software product line (DSPL) architecture approaches were then applied in designing an analytics plug in architecture for asset health solutions. This paper describes our approach and experiences in designing the analytics product line architecture and its SME Workbench toolset, and how we achieved significant improvements in speed and flexibility of deploying industrial analytics.
{"title":"A Dynamic Software Product Line Architecture for Prepackaged Expert Analytics: Enabling Efficient Capture, Reuse and Adaptation of Operational Knowledge","authors":"Karen Smiley, Shakeel Mahate, Paul Wood","doi":"10.1109/WICSA.2014.11","DOIUrl":"https://doi.org/10.1109/WICSA.2014.11","url":null,"abstract":"Advanced asset health management solutions blend business intelligence with analytics that incorporate expert operational knowledge of industrial equipment and systems. Key challenges in developing these solutions include: streamlining the capture and prepackaging of operational experts' knowledge as analytic modules, efficiently evolving the modules as knowledge grows, adapting the analytics in the field for diverse operating circumstances and industries, and executing the analytics with high performance in industrial and enterprise software systems. A Quality Attribute Workshop (QAW) was used to elicit and analyze variability at development time and runtime for creating, integrating, evolving, and tailoring reusable analytic modules for ABB/Ventyx asset health solution offerings. Dynamic software product line (DSPL) architecture approaches were then applied in designing an analytics plug in architecture for asset health solutions. This paper describes our approach and experiences in designing the analytics product line architecture and its SME Workbench toolset, and how we achieved significant improvements in speed and flexibility of deploying industrial analytics.","PeriodicalId":346971,"journal":{"name":"2014 IEEE/IFIP Conference on Software Architecture","volume":"4 2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-04-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126261710","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}
Although a lot of research has been carried out in the domains of technical architecture and functional architecture of software systems, up to this point both domains were treated as separate. Additionally, design and documentation of software architecture is still often found absent or incomplete. In this paper, we present the Functional Architecture Modeling method, a streamlined system allowing for quick iterations of software architecture with a focus on ease of use and communicability while maintaining a high quality of designs. The Functional Architecture Modeling method combines elements and lessons learned from the functional and technical software architecture domains into a single software architecture design method.
{"title":"The Functional Architecture Modeling Method Applied on Web Browsers","authors":"Wilbert Seele, Shaheen Syed, S. Brinkkemper","doi":"10.1109/WICSA.2014.40","DOIUrl":"https://doi.org/10.1109/WICSA.2014.40","url":null,"abstract":"Although a lot of research has been carried out in the domains of technical architecture and functional architecture of software systems, up to this point both domains were treated as separate. Additionally, design and documentation of software architecture is still often found absent or incomplete. In this paper, we present the Functional Architecture Modeling method, a streamlined system allowing for quick iterations of software architecture with a focus on ease of use and communicability while maintaining a high quality of designs. The Functional Architecture Modeling method combines elements and lessons learned from the functional and technical software architecture domains into a single software architecture design method.","PeriodicalId":346971,"journal":{"name":"2014 IEEE/IFIP Conference on Software Architecture","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-04-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128934148","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}