On Automatically Assessing Code Understandability

Total Page:16

File Type:pdf, Size:1020Kb

On Automatically Assessing Code Understandability 1 On Automatically Assessing Code Understandability Simone Scalabrino, Student Member, IEEE, Gabriele Bavota, Member, IEEE, Christopher Vendome, Member, IEEE, Mario Linares-Vásquez, Member, IEEE, Denys Poshyvanyk, Member, IEEE, Rocco Oliveto, Member, IEEE Abstract—Understanding software is an inherent requirement for many maintenance and evolution tasks. Without a thorough understanding of the code, developers would not be able to fix bugs or add new features timely. Measuring code understandability might be useful to guide developers in writing better code, and could also help in estimating the effort required to modify code components. Unfortunately, there are no metrics designed to assess the understandability of code snippets. In this work, we perform an extensive evaluation of 121 existing and new code-related, documentation-related, and developer-related metrics. We try to (i) correlate each metric with understandability and (ii) build models combining metrics to assess understandability. To do this, we use 444 human evaluations from 63 developers and we got a bold negative result: none of the 121 experimented metrics is able to capture code understandability, not even the ones assumed to assess quality attributes apparently related, such as code readability and complexity. While we observed some improvements combining metrics in models, their effectiveness is still far from making them suitable in practice. Finally, we conducted interviews with five professional developers to understand the factors that influence their ability to understand code snippets, aiming at identifying possible new metrics. Index Terms—Software metrics, Code understandability, Empirical study, Negative result F 1 INTRODUCTION Developers spend most of their time (∼70%) under- to 5: high readability). However, the perceived readability standing code [1]. While such a finding might look sur- is something different from the actual understandability of prising, it only highlights the pivotal role that code un- the code; a developer could find a piece of code readable derstanding plays in any code-related activity, such as fea- while still experiencing difficulties in understanding it, for ture implementation or bug fixing. While the importance example due to unknown APIs used. Let us consider the of code understandability is undisputed for maintenance- code fragment listed below: related activities [2], [3], [4], [5], [6], [7], there is no empirical AsyncHttpClient client=new AsyncHttpClient(); foundation suggesting how to objectively assess the under- String cookies=CookieManager.getInstance().getCookie(url); Log.e(TAG, cookies); standability of a given piece of code. Indeed, our knowl- client.addHeader(SM.COOKIE, cookies); edge of factors affecting (positively or negatively) code understandability is basically tied to common beliefs or is A developer, as well as all readability metrics proposed focused on the cognitive process adopted when understand- in the literature [10], [11], [12], [13], [14], [15], would con- ing code [8], [9]. For example, we commonly assume that sider this snippet of code as readable, since it is concise code complexity can be used to assess the effort required and utilizes meaningful identifier names. Nevertheless, this to understand a given piece of code. However, there is no snippet of code is not necessarily easy to understand for empirical evidence that this is actually the case. Similarly, any given developer, because the used APIs could be un- researchers have designed models and proposed metrics to known to her and even poorly documented. For example, evaluate the readability of code by correlating them with the the developer may not understand the implications of the readability perceived by developers [10], [11], [12], [13], [14], getCookie(url) method call without prior experience using [15]. This typically means that the developers participating the API or without reading the documentation, e.g., she in the evaluation are required to read a fragment of code might not know whether getCookie(url) could throw an and rate its readability on a given scale (e.g., from 1: low exception, return a null value, or produce some other side effects. Having a metric to estimate the effort required to under- • S. Scalabrino and R. Oliveto are with the University of Molise, Italy. stand a given piece of code would have a strong impact on E-mail: {simone.scalabrino, rocco.oliveto}@unimol.it • G. Bavota is with the Università della Svizzera italiana (USI), Switzer- several software engineering tasks. For example, it would be land. possible to use such a metric to (i) improve the estimation E-mail: [email protected] of the time needed to fix a bug (the lower the under- • C. Vendome is with Miami University, USA. standability, the higher the time to comprehend the code E-mail: [email protected] • D. Poshyvanyk is with the The College of William & Mary, USA. and thus to fix the bug); (ii) create search-based refactoring E-mail: [email protected] recommender systems using code understandability as a • M. Linares-Vásquez is with the Universidad de los Andes, Colombia. fitness function; or (iii) assess the quality of code changes E-mail: [email protected] during code reviews. 2 While we have possible proxies for code understand- • We used combinations of feature models to predict ability, such as code complexity and readability, we do not the independent variables that we define as proxies of (i) know whether these proxies actually correlate with the understandability; effort required to understand a piece of code, and (ii) have • We conducted structured interviews with five expe- a metric able to provide an estimation for code understand- rienced developers to understand what makes code ability. Previous attempts to define a code understandability understandable/not understandable to them; we used model [4], [16], [6] have not been empirically evaluated, such information to propose possible future directions consider understandability as a factor in a quality model [2], for code understandability assessment. [17], or measure understandability at the level of a whole Paper structure. Section 2 provides background infor- software system [18]. mation about code characteristics possibly related to its In this work, we investigate 121 metrics to determine understandability. Section 3 describes the 121 metrics used the extent to which they correlate with code understand- in our empirical study, while Section 4 presents the proxies ability. These metrics can be categorized into three types: we used to assess the developers’ understandability of a (i) code-related metrics (105 metrics), (ii) documentation- given code snippet. The design and results of the study related metrics (11), and (iii) developer-related metrics (5). are presented in Sections 5 and 6, respectively. Section 7 The code-related metrics are comprised of classic code met- discusses the threats that could affect our findings, while rics, like LOC and cyclomatic complexity, and readability Section 8 concludes the paper and highlights future research metrics, like text coherence [14], [15] and code indentation directions. [10]. As the aforementioned example illustrates, a developer may be able to read some code snippet, but it may use unknown code. Thus, we included existing documentation- 2 BACKGROUND &RELATED WORK related metrics, like the availability of external documen- In this section, we describe metrics and models that have tation, and introduced nine new documentation-related been proposed to measure code readability. All these metrics metrics. Finally, we included developer-related metrics to have been included in our study. Afterwards, we briefly understand the extent to which the developer’s experience describe related work presenting metrics for measuring un- and background might influence code comprehension. derstandability (at system level) as a single quality attribute To run our investigation, we performed a study with 63 and as part of a quality model. participants using the 121 metrics to determine their cor- relation with the understandability of code snippets. Each 2.1 Code Readability participant was required to understand up to eight code snippets, leading to a total of 444 evaluations. We consider Identifiers and comments play a crucial role in program understandability from two perspectives: perceived and ac- comprehension, since developers express domain knowl- tual understandability of the code snippets. The participants edge through the names that they assign to the code entities were presented a code snippet to understand and they were at different levels (i.e., packages, classes, methods, variables) asked whether they could understand it (perceived under- [20], [21], [22], [23], [24]. Thus, source code lexicon impacts standability). If their answer was positive, they were asked the psychological complexity of a program [14], [25]. An- to answer three verification questions (actual understandabil- other aspect that also contributes to the readability (and ity). We also monitored the time spent understanding each potentially understandability) of source code are structural snippet to estimate the effort. aspects such as indentation, code entity length [10], [11], and visual/spatial aspects such as syntax highlighting, code By performing an extensive statistical analysis, we ob- formatting, and visual areas covered by code entities [12]. tained a negative empirical result: none of the considered All the aforementioned aspects have been used as fea-
Recommended publications
  • What Is Open Source?
    Putting OPen SOurce tO WOrk in the enterPriSe: A guide tO riSkS And OPPOrtunitieS © Copyright 2007 SAP AG. All rights reserved. HTML, XML, XHTML and W3C are trademarks or registered trademarks of W3C®, World Wide Web Consortium, No part of this publication may be reproduced or transmitted in Massachusetts Institute of Technology. any form or for any purpose without the express permission of SAP AG. The information contained herein may be changed Java is a registered trademark of Sun Microsystems, Inc. without prior notice. JavaScript is a registered trademark of Sun Microsystems, Inc., Some software products marketed by SAP AG and its distributors used under license for technology invented and implemented contain proprietary software components of other software by Netscape. vendors. MaxDB is a trademark of MySQL AB, Sweden. Microsoft, Windows, Excel, Outlook, and PowerPoint are registered trademarks of Microsoft Corporation. SAP, R/3, mySAP, mySAP.com, xApps, xApp, SAP NetWeaver, Duet, PartnerEdge, and other SAP products and services IBM, DB2, DB2 Universal Database, OS/2, Parallel Sysplex, mentioned herein as well as their respective logos are trademarks MVS/ESA, AIX, S/390, AS/400, OS/390, OS/400, iSeries, pSeries, or registered trademarks of SAP AG in Germany and in several xSeries, zSeries, System i, System i5, System p, System p5, System x, other countries all over the world. All other product and service System z, System z9, z/OS, AFP, Intelligent Miner, WebSphere, names mentioned are the trademarks of their respective compa- Netfinity, Tivoli, Informix, i5/OS, POWER, POWER5, POWER5+, nies. Data contained in this document serves informational OpenPower and PowerPC are trademarks or registered purposes only.
    [Show full text]
  • Opencms Documentation Version 5.0
    OpenCms Documentation Version 5.0 This document contains introductory material about OpenCms. The full 5.0 documenta- tion is only available in the form of OpenCms content modules. Please see chapter 1 to learn how to obtain and install these modules. www.opencms.org www.opencms.org May 5, 2003 Contents I. Introduction to OpenCms 1 1. About this documentation 3 1.1. Version of this document ............................ 3 1.2. The documentation structure of OpenCms 5.0 ................ 3 1.3. Where to get the documentation modules ................... 4 1.3.1. OpenCms documentation base ..................... 4 1.3.2. OpenCms JSP basic documentation .................. 4 1.3.3. OpenCms JSP taglib documentation ................. 4 1.3.4. OpenCms JSP scriptlet documentation ................ 4 1.3.5. OpenCms Flexcache documentation .................. 5 1.3.6. OpenCms module documentation ................... 5 1.3.7. Flex examples set 1 ........................... 5 1.3.8. Flex examples set 2 ........................... 5 1.3.9. Flex examples set 3 ........................... 6 1.3.10. Original JSTL 1.0 standard taglib examples ............. 6 1.3.11. Original Tomcat 4.x JSP examples .................. 6 1.3.12. Howto: JSP template development .................. 6 1.3.13. Howto: Translating the OpenCms workplace ............. 7 2. Installation of OpenCms 5.0 9 2.1. Install the Java JDK .............................. 9 2.2. Install Tomcat .................................. 9 2.3. Install MySQL ................................. 10 2.4. Deploy the opencms.war file .......................... 10 2.5. Install OpenCms using the Setup-Wizard ................... 11 2.6. Now your system is ready ........................... 11 2.7. Security issues .................................. 11 3. Client Setup 13 3.1. Configuring MS Internet Explorer 5.5 and 6.x Clients ...........
    [Show full text]
  • Collection Titles
    Direct e-Learning Solutions for Today’s Careers CBT Direct’s IT Pro Collection Available: 7476 Collection Titles Coming Soon: 557 .NET 2.0 for Delphi Programmers Architecture Tivoli OMEGAMON XE for DB2 Performance .NET 3.5 CD Audio Player: Create a CD Audio 3D Computer Graphics: A Mathematical Expert on z/OS Player in .NET 3.5 Using WPF and DirectSound Introduction with OpenGL A Field Guide to Digital Color .NET Development for Java Programmers "3D for the Web: Interactive 3D animation using A First Look at Solution Installation for .NET Development Security Solutions 3ds max; Flash and Director " Autonomic Computing .NET Domain-Driven Design with C#: Problem - 3D Game Programming All in One A Guide to Global E-Commerce: Issues to Design - Solution 3D Graphics ReferencePoint Suite Consider When Selling Internationally Over the .NET E-Commerce Programming 3D Modeling in AutoCAD: Creating and Using Internet .NET Enterprise Development in C#: From 3D Models in AutoCAD 2000; 2000i; 2002; A Guide to MATLAB Object-Oriented Design to Deployment Second Edition Programming .NET Enterprise Development in VB.NET: From 3D Programming for Windows: Three- A Guide to Software Configuration Design to Deployment Dimensional Graphics Programming for the Management .NET for Visual FoxPro Developers Windows Presentation Foundation A Guide to Software Package Evaluation and .NET Framework ReferencePoint Suite 3ds max 5 Bible Selection .NET Framework Solutions: In Search of the 3ds max 5 For Dummies A Guide to the Project Management Body of Lost Win32 API
    [Show full text]
  • Technischer Fragenkatalog Für Opencms Stand: 15.10.2015
    OpenCms – technische FAQ Technischer Fragenkatalog für OpenCms Stand: 15.10.2015 comundus GmbH Heerstraße 111 71332 Waiblingen Telefon +49 7151 96528-0 Telefax +49 7151 96528-999 www.comundus.com [email protected] Seite 1/18 OpenCms – technische FAQ Inhaltsverzeichnis Infrastruktur ................................................................................................................................ 3 Archivierung ............................................................................................................................... 5 Integration .................................................................................................................................. 6 Allgemeine Funktionalitäten ....................................................................................................... 7 Sicherheit ................................................................................................................................... 8 Mehrsprachigkeit ....................................................................................................................... 9 Mobile Endgeräte ....................................................................................................................... 9 Benutzer- und Rollensystem ...................................................................................................... 9 Suche ........................................................................................................................................10 Edit, Publishing und Workflow...................................................................................................10
    [Show full text]
  • Opencms 8.5.1 Documentation
    ® ® Alkacon Alkacon Software GmbH An der Wachsfabrik 13 DE - 50996 Köln Geschäftsführer Alexander Kandzior Amtsgericht Köln HRB 54613 Tel: +49 (0)2236 3826 - 0 Fax: +49 (0)2236 3826 - 20 http://www.alkacon.com OpenCms 8.5.1 Documentation Thursday, February, 7, 2013 Document version 1.2 ® ® OpenCms 8.5.1 Documentation Alkacon February 7, 2013 Document version 1.2 Contents 1 Introduction ................................................................................................................ 5 2 Page editor.................................................................................................................. 6 2.1 Toolbar ..................................................................................................................... 6 2.2 Edit points ................................................................................................................ 6 2.3 Add content .............................................................................................................. 6 2.3.1 Creating new content ........................................................................................................................ 6 2.3.2 Searching existing content ................................................................................................................ 8 2.4 Clipboard .................................................................................................................. 8 2.5 Context menu ..........................................................................................................
    [Show full text]
  • Innovation That Matters Open Standards, Open Source
    Linux and Open Source @ IBM Open Standards, Open Source, and Linux Jim Elliott Advocate – Linux, Open Source, and Virtualization and Manager – System z Operating Systems IBM Canada Ltd. Innovation that matters © 2006 IBM Corporation Linux and Open Source @ IBM L11 – Open Standards, Open Source, and Linux IBM has a vision of the future which can only become a reality in a world of Open Computing which covers Open Standards, Open Architectures, and Open Source (including Linux). Jim will delve into the Open Computing with a focus on Linux, the benefits of Linux, and the tremendous growth of Linux around the world as a direct result of these benefits. He will also review the participation of IBM in the Open Computing world including Linux and Open Source usage at IBM. Updated version of charts available at ibm.com/vm/events/sysz0610.html and ibm.com/vm/devpages/jelliott/events.html 2 System z Expo 2006 - Session L11 2006-10-09/10 Linux and Open Source @ IBM Agenda Open Standards and Open Source Linux Linux and Open Source @ IBM 3 System z Expo 2006 - Session L11 2006-10-09/10 Linux and Open Source @ IBM Key business challenges for IT Increased expectations of accessibility to services – Incomplete view of data and end-user services – Difficult to deliver new services and/or respond to new requirements Empowering workforce to deliver higher value, productivity – Difficulty in finding experts and sharing best practices Improving operational and organizational effectiveness – Costly and slow paper-based processing – Labor intensive
    [Show full text]
  • Openshift Origin on Openstack
    Date 12/26/2016, by ​@cloudsskyone QuadrupleO: Enjoy OpenShift Origin On OpenStack … enhancements in process (new enhancements will be tweeted with #quadrupleo hashtag) History: Date Decription 12/22/16 1st version (3 node install) 12/30/16 2nd version (9 node HA env. with Terraform) 01/01/17 Added Git Repo for Terraform config files 01/09/2017 IoT OCP Example added Overview Let’s start with the work! Preparation is the Key for a Successful Deployment! Prepare the Ansible node Prepare the Master node Prepare the Worker nodes (node1 and node2) Configuring Docker Storage on master and worker nodes Adjust the Security Group Settings on OpenStack NFS Share Storage Setup Mount the nfsshare on node1 and node2 Create the ansible inventory file DNS Configuration Provision your OpenShift Origin Cluster on OpenStack Verify your installation Configuration Create Persistent Volumes and Persistent Volume Claims Adding Users to a project, assign roles, change password Switch to the project test project Create a user named test-user Set the password for the test-user Access the Atomic Registry Example I: Let’s Run Rancher on OpenShift Example II: Run the Zeppelin IoT App on OCP Scaling Your Pods Scaling Up Your Cluster for HA Adding Master and Worker Nodes Verify your HA deployment Troubleshooting Service restart for master and nodes Uninstall Known Issues Web Console becomes sometimes unresponsive Exited containers don’t get purged automatically References and useful links Getting help Appendix The final Ansible inventory file Terraform Configs for Creating OpenShift Hosts on OpenStack Provision your Origin base cluster Overview This walkthrough should work on bare metal servers or any other public cloud environments with CentOS 7.2 / 7.3 by leaving out some OpenStack specific steps or with some minor adjustments for public cloud environments.
    [Show full text]
  • Opencms 7 Development
    OpenCms 7 Development Dan Liliedahl Chapter 1 "Overview" In this package, you will find: A Biography of the author of the book A preview chapter from the book, Chapter NO.1 "Overview" A synopsis of the book’s content Information on where to buy this book About the Author Dan Liliedahl is the founder and CTO of eFoundry Corporation, a premier consulting company with expertise in selecting, specifying, and delivering Open Source and commercial content management portal and collaboration systems. Since starting eFoundry in 1998, he has architected and developed Web solutions for Fortune 500 companies such as JPMorganChase, Disney, Sirius Satellite Radio, and AMTRAK. Prior to starting eFoundry, Dan was a principal consultant and architect with FutureTense, a start up commercial CMS product vendor, and Open Market, whose products continue to have a strong market presence under a new company name. In addition to his full-time work, Dan frequently donates his marketplace and technical expertise to selected non-profit organizations. He holds a degree in Electrical Engineering and Computer Science from the University of New Hampshire and has over 20 years of industry experience. In his spare time, he enjoys alpine skiing, ice hockey and coaching his kids' soccer. For More Information: www.packtpub.com/opencms-7-development/book I would like to thank the people at Packt who have helped me along the way with this book, especially Douglas Paterson, Senior Acquisition Editor for his initial guidance and ongoing support. Thanks also to Abhijeet Deobhakta for his patience and for putting up with many delays and missed deadlines.
    [Show full text]
  • Open Source: Open for Business Open Source: Open for Business for Open Source: Open LEF09/3Cover.Qxd 9/3/04 1:18 PM Page 2
    LEF09/3cover.qxd 9/3/04 1:18 PM Page 1 THE LEADING PRESENTS: FORUM EDGE THE LEADING EDGE FORUM PRESENTS: Open Source: Open for Business Open Source: Open for Business LEF09/3cover.qxd 9/3/04 1:18 PM Page 2 CSC’s Leading Edge Forum is a global thought leadership program that examines the technology trends and issues affecting us today and those that will impact us in the future. As part of the CSC Office of Innovation, the LEF explores emerging technologies through sponsored inno- vation and grants programs, applied research, awards for the most innovative client solutions, and alliances with research labs. The LEF examines technology marketplace ABOUT THE LEF DIRECTORS trends and best practices, and stimulates innovation and collaboration among CSC, our clients and our alliance partners. In this ongoing series of reports about technology directions, the LEF looks at the role of innovation in the marketplace both now and in the years to come. By studying technology’s current realities and anticipating its future shape, these reports provide organizations with the necessary balance between tactical decision making and strategic planning. PAUL GUSTAFSON WILLIAM KOFF Director, Leading Edge Forum, and Senior Partner, Vice President, Leading Edge Forum CSC Consulting Group Paul Gustafson is an accomplished technologist and Bill Koff is a leader in CSC’s technology community. proven leader in emerging technologies, applied He chairs the Leading Edge Forum executive committee, research and strategy. As director of the Leading Edge whose members are the chief technologists from each Forum, Paul brings vision and leadership to a portfolio of CSC’s business units.
    [Show full text]
  • Open Source Web Content Management in Java
    Open Source Web Content Management in Java Release 1.0 February 2008 Open Source Web Content Management Options in Java Seth Gottlieb Version 1.0, Workgroup License Copyright © 2007 Content Here, Inc. License Agreement and Disclaimer Workgroup License This report is licensed under a "Workgroup License" that allows your company to make this report available to up to ten (10) staff members. It may not be shared with customers or copied, reproduced, altered, or re-transmitted in any form or by any means without prior written consent. Any rankings or scoring information may not be used in promotional materials. Disclaimer This report is intended to be an overview of the technologies described and not a recommendation or endorsement of a specific platform or technology strategy. The most appropriate platform for your use depends on the unique requirements, legacy architecture, and technical capabilities of your organization. Content Here, Inc., cannot ensure the accuracy of this information since projects, vendors, and market conditions change rapidly. Content Here, Inc., disclaims all warranties as to the accuracy or completeness of the information in this report and shall have no liability for errors, omissions, or inadequacies in the information presented. All Rights Reserved. Not for Redistribution. Copyright 2007 Content Here, Inc. Version 1.0, Workgroup License Page 2 All Rights Reserved. Not for Redistribution. Copyright 2007 Content Here, Inc. Version 1.0, Workgroup License Page 3 All Rights Reserved. Not for Redistribution. Acknowledgements Thanks to the following people for reviewing sections of this report for accuracy • Elie Auvray (Jahia) • Kevin Cochrane (Alfresco) • Arjé Cahn • Alexander Kandzior (OpenCms) • Boris Kraft (Magnolia) • Steven Noels (Daisy) Jennifer Gottlieb provided copyedit services and general encouragement to help me complete this report.
    [Show full text]
  • Sun Certified Java Programmer
    Jörg Baumann Sun Certified Java Programmer Software-Development Java / Java EE Berlin Prenzlauer Berg Born in 1970 Employments: 2001 – 2003 Concept AG / Ogilvy Interactive (Software-Developer) 1999 – 2001 Eurotel NewMedia GmbH (Web-Developer) Freelancer since 2003 http://www.runningjeese.de [email protected] Last updated: 02/16/2021 Profile Jörg Baumann, Software-Development Java / Java EE, Last updated: 02/16/2021 Professional Focus I focus on developing Java EE-based web applications, having experience of many years in designing and programming for the business-, data- and presentation layer/webservices against different application servers, thereby using multiple Java EE implementations and extending frameworks. Further topics include build-processes, standard Java SE applications, geographic data management, OSGi/Eclipse, SWT/Eclipse-Plugins as well as Web-Frontend. Project Work I am familiar with established project workflows like bug-tracking, version control or continuous integration, as well as with development methodologies like scrum, kanban or the waterfall model. When part of a team, I set a high value on a fair and targeted cooperation, which I think to be one of the most important requirements on the way to a successful solution. Service Range Programming Development of stable, efficient, clear and appropriate commented Java code, emphasizing on modularity, easy maintainability and extendability and high reusability. Reasonable measures for quality with unit- and integration testing and appropriate logging. Support on technical project setup, deployment processes, markup for JSP, jsf, velocity etc., creation of technical documentation, product descriptions, manuals etc. Design Creation of technical conceptions and component- and class-diagrams, as well as database modeling, aiming to keep complexity as little as possible while providing the best possible modularity.
    [Show full text]
  • Opencms Highperf Module
    How Fujitsu Racing is super-charging its OpenCMS performance Author: Dammian Miller About me • From an island called Australia • Web developer for 10+ years - Java focus, government, corporate, private, consulting • OpenCMS since 2005 • Implemented a number of small and large projects using OpenCMS, notably: • Australia's leading loyalty program website • Australia's leading department store members site • Fujitsu Racing V8 Supercars team website • And a blatant product placement - my company's fully managed multi- site OpenCMS offering • OpenCMS evangelist Here to introduce the open-source OpenCMS HighPerf module But before I do, a brief history leading to its creation. Once upon a time... Business Case: OpenCMS powered V8 Supercars Fujitsu Racing V8 Supercars Team Website Complex site comprising many components : • News • Events • Merchandise • Image Gallery • Video Gallery • Form • Edit areas • RSS feeds The client - delivery requirements • Trackside update of news, image and video gallery • Fine-grained user permissions • Sub-2 second initial browser display - HTML delivery • Sub 8 second until completion time • Performance to be delivered at up to 100 concurrent users • Delivered yesterday Heard that before - OpenCMS is my choice, again, however... OpenCMS - highly dynamic software With great power comes great responsibility...and system requirements • A rule of thumb - the more flexible the software, the slower it will be • More calls to data sources • Local - datastore - low latency • Remote - RSS feeds, web services - high latency • Data aggregation and formatting requires additional steps • The slower a system, the less it will scale as existing resources are unavailable for longer How we made OpenCMS lightning fast Decision criteria: • Local audience - Content Delivery Network (CDN) == overkill • Time constraint - due in 2 weeks • Limited budget - more hardware not an option We chose to implement a reverse proxy cache/HTTP cache in front of our Tomcat + Apache web stack.
    [Show full text]