Running Checkstyle on Larger Projects

Scalability is about being able to handle more work without this causing issues. For most software, scalability is about the number of people using it. If a million people suddenly open your website at the same time, your server should be able to handle this. As Checkstyle is only run locally or as part of a continuous integration pipeline, this aspect of scalability is not an issue. What can however grow, is the size of the project Checkstyle is run on, and the number of checks to be run.

AssertJ Core: Scalability

Over the past few weeks, we have been exploring the product vision, the architecture, and the quality of AssertJ Core. For this final essay, we will be exploring the scalability of this Java assertion library. The dimension we focus on is processing time and we examine this using an experiment directed at the low code health spots of the library. AssertJ Core is a testing library, focused on providing tailored assertions to specific JDK types.

Wireshark - Scalability

Introduction In his paper 1, André B. Bondi introduces the terms structural and load scalability as follows: “Structural scalability is the ability of a system to expand in a chosen dimension without major modifications to its architecture. Load scalability is the ability of a system to perform gracefully as the offered traffic increases”. In the following sections we analyze the structural scalability of Wireshark by focusing on its core, as well as dissectors and Lua API2, while the load scalability and power usage is studied by measuring Wireshark’s performance under a (simulated) high network throughput, and the effect of memory leaks on the space is considered at the end.

Faceting Snakemake: The Added Value of a Plugin System

Introduction Snakemake 1 is an open source workflow management system inspired by the GNU Make 2 build automation tool. Snakemake aims to facilitate sustainable data analysis by supporting reproducible, adaptable, and transparent data research. In this essay we analyze scalability challenges for Snakemake and propose a solution for the identified issues. We opted for a different approach than the original assignment, analyzing the scalability of the userbase and development of Snakemake instead of technical scalability.

Dolphin - Scalability

Dolphin is an emulator that lets users play GameCube (GC) and Wii games which is therefore highly dependent on the performance of the machine of the user. A significant reduction in resources will have an immediate effect on the application’s performance and thus the user experience. The big scalability challenge of Dolphin is increasing the performance of the application. Dolphin developers are always looking for a more efficient implementation or solution so the end-user can play the games at a desirable framerate without crashes.

Egeria: Scalability Analysis

Egeria is an open-source project that provides open metadata governance, allowing easy sharing of metadata across systems. In our previous 3 essays we have covered Egeria’s vision, architecture, and the code quality. We have seen examples of how ING and IBM use Egeria to share metadata across different services using Egeria as a middleman 1. We have also seen that Egeria invests in being open-source, adaptable, extendable, and lightweight to run for both reaching a high adoption rate and being a flexible platform2.

MetaMask - Scalability

Figure: MetaMask Logo In this final essay on the Metamask wallet extension we will dive into the scalability concerns regarding the performance and usability of the app. For a short introduction to the project itself, we like to refer you to essay 1. In this essay, we will first identify MetaMask’s scalability challenges and dimensions, after which we will take you along with our journey of finding out how the scalability can be improved along one specific dimension.

Log4j2 - Scalability

Scalability is a design concept that represents our vision of the future. “Even if a system is working reliably today, that doesn’t mean it will necessarily work reliably in the future”1. Therefore, when certain aspects change in the future, we hope that based on the existing architecture, developers can achieve a linear increase in overall system performance with only a few changes. Simply put, it is to adapt the current design to uncertain future changes.

Moby - Scalability

In our previous blog posts, we analyzed the Moby project’s vision and architecture and its quality and evolution over the last decade. This time we will delve into an essential aspect of the modern software engineering world - scalability. In the world of Big Data and computers being omnipresent in the lives of billions of people, the ability to scale the developed solution and ensure its high availability became essential rather than optional.
Moby
March 28, 2022

Audacity - Scalability

Audacity’s Scalability Challenges Audacity, as an application has to deal with many challenges such as managing or importing files of different sizes, and processing various audio editing related tasks. These are all handled by different algorithms, and in this section, we try to identify any scalability issues related to them. Feature Scaling A core principle which comes to mind when considering an open-source project, is how easy it is to contribute and integrate new features.

Robot Framework - Scalability and Performance

Scalability is a crucial factor for any software solution in the world today. Whenever scalability is being addressed, it usually means that the software should respond the same for 100, 10000 users and so on, as it responds for 1 user. Be it a streaming service or an e-commerce website the ability to cater to a dynamic number of users directly correlates with the key performance metrics of platforms. In terms of workload and resource utilization, unlike cloud-based testing software, Robot Framework doesn’t fit the quintessential meaning of scalability.

Storybook - Scalability

Scalability for Storybook In this post, we will discuss the notion of scalability concerning the StoryBook project. As scalability is an aspect where software architecture plays a particularly important role, this had to be analyzed in our series of posts about the project. Scalability challenges Fortunately for the Storybook project, most known scalability challenges do not apply to it. Examples of these challenges are database scaling and insufficient caching 1. Storybook is used locally on the machine of the developer, where each developer has his own copy of Storybook as a node module dependency.

React Native: Scalability

When we talk about scalability of React Native, we talk about how much a developed app can handle. This could be, for example, the response time of the app, the amount of memory that the app can handle or what the battery drainage of the app is. Identification of the system’s key scalability challenges under a plausible scenario. The moderators of React Native state on their website that performance is a serious issue in React Native.

Backstage - Scalability, Maintainability & Extensibility

Scalability in Backstage One of the potential benefits from using Backstage is that it enables extensibility and scalability by letting you easily integrate new tools and services (via plugins), as well as extending the functionality of existing ones. Backstage, as described by its creators, is more like a visual tool for managing services in cloud platforms that also holds the documentation for those services. By then using cloud clusters to run Backstage, which can be entirely split up into separate services, it enables Backstage to become a fully scalable system.

Scalability Analysis

Sonic Pi: Scalability Analysis Key Scalability Scenario and Challenge Scalability is an important issue when we need to deeply evaluate a software’s architecture. It shows its ability to handle the increased workload or reduced recources. In this article, we elvaluate Sonic Pi’s scalability mainly based on the a multi-threading scenario, which is very common in music production. Sonic Pi is a software for producing sounds. It works locally without connecting to the internet and it does not use any database.

SerenityOS - Architectural decisions

Indentification of key scalability challenges SerenityOS is an graphical Unix-like operating system which supports the x86 and x86-64 instruction sets, features a preemptive kernel, and hosts multiple complex applications including its own web browser and integrated development environment (IDE)1. All stakeholders have various needs and preferences and what they expect from SerenityOS are quite different. Therefore, it would be advantageous to stakeholders if SerenityOS exhibits great scalability. In this article, we discuss the scalability of SerenityOS in four aspects: Modularity, Reusablity, Configurability and Design Consistency.

Scalability

Scalability is a function of how performance is affected by changes in workload or in the resources allocated to run your architecture 1. There are various dimensions for Scalability: i.e Administrative, Functional, Geographical, Load, Generation and Heterogeneous scalability 2. Since Scrapy is a single process library it can be shipped to each new user individually, and thus it is Administrative(ly) scalable. Additionally, since Scrapy’s design allows every component to be extensible, it is also Functionally scalable.

ReactJS - Scalability

In the previous three posts, we have discussed the vision, architecture, and software quality of ReactJS. ReactJS is one of the most used front-end JavaScript frameworks. Since many people access ReactJS every day via their web browsers, it is crucial for developers to make sure that their ReactJS application is scalable in terms of time and space performance. In this last post, we discuss the main elements that affect React App’s scalability and its performance and also analyze the changes that can be made to those applications.

Mattermost Mobile — Performance as a Scalability Challenge for Mobile Apps

Mattermost is a collaboration platform for teams of any size. The system needs to be equipped to handle communication in large teams. The local mobile app will only be used by one person (namely the user of that specific phone) at a time, but there are still scalability challenges. In this essay, we outline a few challenges related to performance and user experience and propose a few solutions. Key Challenges The number of active users in a Mattermost channel might be very large.

Mattermost Server - Scalability

Our team had the opportunity to interview Zef Hemel, former TUD student and now Senior Engineering Lead at Mattermost. The interview covered many different topics, both Mattermost in general and very specific questions about the architecture. However, we mostly tried to direct the interview towards scalability. As the lead of the platform teams at Mattermost, Zef has a good vision on the architecture and was able to provide us with great insights regarding Mattermost scalability, especially on the server side, as this is what we focus on.

Express.js - Scalability

So far we have discussed many aspects of Express including its goal, its design and architecture, and we have analysed the software’s component along with its key quality attributes and the quality culture of the project. The resulting picture is one of a robust and solid framework for web application, qualities that indeed earned Express its popularity amongst the web developers community. Nonetheless, we want to conclude this series of essays with a detailed report on Express performance and the framework’s scalability and prospects.

PMD - Scalability

Scalability is a system’s ability to meet its quality requirements in the presence of some strain on the system, such as increased workload or reduced resources. In this essay, we will explore the current performance of PMD at scale and propose reasonable changes to improve the scalability of PMD: PMD’s Scalability Challenges Scalability Quantitative Analysis PMD’s Scalability Concerns Current solutions Proposals of future improvements In Practice - Feasibility Check Testing the Improvement - Validation Procedures References PMD’s Scalability Challenges The PMD static code analysis tool is used in various contexts that each have unique scalability challenges.
PMD
March 27, 2022

Wikipedia Android: Scalability

In this essay, we will investigate the scalability of the Wikipedia Android app. Since our project concerns the client application rather than the Wikipedia infrastructure and we described API design in an earlier essay, we will not focus on infrastructure or API scalability. Rather we will examine how the Wikipedia Android app performs on low-resource devices such as entry-level phones and compare that to performance on high-end phones. We will do this by setting up two emulators simulating an entry-level and a high-end Android phone and collecting several performance metrics.

Quod Libet: Scalability

Introduction Scalability is an important quality attribute for many software projects, sometimes it can even be a direct prerequisite for success. With this in mind, what does scalability mean for the Quod Libet project? Unlike some, Quod Libet will scale to libraries with tens of thousands of songs. 1 Quod Libet markets itself on its scalability, specifically promoting its suitability for massive music collections. It makes sense for us to evaluate Quod Libet’s scalability along the same axis it evaluates itself, so this article will focus primarily on how the program scales to very large music collections.

Element - Scalability

The goal of Element is to provide a decentralized communication platform. This is achieved by using the Matrix protocol for exchanging messages. To recap from the previous essays: Element Web uses the Matrix client/server protocol to communicate with a Matrix server and the Matrix servers use the Matrix server/server protocol to communicate with each other. Therefore, two different points can be identified that influence scalability, the Element Web client and the Matrix servers.

Essay 4

Identification of the system’s key scalability challenges under a plausible scenario. Ghidra’s time performance Ghidra is a Software Reverse Engineering (SRE) framework, which includes a suite of full-featured, high-end software analysis tools that enables users to analyze compiled code on a variety of platforms, including Windows, macOS and Linux as described here. Therefore it is not really designed to be used on systems like tablets/phones. Even if these devices were capable of running Ghidra, it would not have been very useful, since analyzing code on small screens is not very user friendly.

Prettier - Scalability

Introduction to Prettier Prettier is an opinionated code formatter with support for a wide range of programming languages and frameworks1. Prettier can be run either locally, via a CLI2, a pre-commit hook3, or in a supported IDE. Some companies also run Prettier in their CI/CD-pipeline. Prettier should cover a lot of different use cases, from the programmer wanting to format the single file he is currently working on through his IDE, to huge companies wanting to format their whole codebase in a CI/CD-pipeline.

Podman - how does it scale?

Essay 4: Scalability When any software project is growing, scalability challenges inevitably arise. Podman does not inherently have a direct scalability problem since it tackles local container orchestration. Many of the obstacles for scalability presented by Hull (2013)1 do not apply to Podman, but we identified some indirect issues. What happens if you start up thousands of containers at once? What is the difference between Docker and Podman in terms of power usage?

Checkstyle: Quality and Evolution

For a project like Checkstyle, being able to assure some quality standards is both beneficial for developers and users, as it has the advantage of likely making the software more reliable, as well as creating a project that is easier to maintain. Checkstyle makes an attempt to ensure quality by going through several measures. In this essay, we will be evaluating the actions the Checkstyle team has chosen to ensure quality, analyse them together with some discussion, and find possible reasons for their choices.

Audacity - Quality and Evolution

As a large open-source project, Audacity relies on the contributions provided by a large collaborative community. In this paper, we provide a retrospective on the quality and evolution of Audacity, investigating their contribution pipeline, the overall quality culture, and the technical debt that has been accumulated. Software Quality Processes Audacity uses two primary development tools to ensure a proper contributions are made with a maintainable format. Forking For developers to contribute to the Audacity code-base, they need the first fork the Github repository.

Snakemake: Keeping the polish

Introduction Snakemake 1 is an open source workflow management system inspired by the GNU Make 2 build automation tool. Snakemake aims to facilitate sustainable data analysis by supporting reproducible, adaptable, and transparent data research. In this essay we analyze the code quality and how this is tested as well as the evolution of the codebase. This article is based on an interview we conducted with the code owner of Snakemake, Johannes Köster, as well as our own research into the repository of Snakemake.

AssertJ Core: Quality & Evolution

In our previous essay, we focused on the architecture of AssertJ Core and examined how architectural decisions influence the quality attributes. We begin this essay by summarising the degree to which these attributes are currently satisfied, and then we focus on the different means through which the quality of AssertJ Core is safeguarded. This includes quality assurance steps taken, means of automating these steps with CI, as well as an analysis of hotspot components and technical debt.

Dolphin - Quality and Evolution

Dolphin is an emulator for the GameCube (GC) and Wii and so its main capability is being able to play GC and Wii games. The key quality attributes of the system are therefore mostly focused on functionality and operation attributes. Correctness and completeness, for example, are two main key quality attributes. Correctness, in this case, points to the fact that the game runs exactly as it does on real GC and Wii hardware.

Wireshark - Quality and Evolution

Introduction Having seen Wireshark’s product vision and architecture, this essay will focus on the quality of the application and its evolution. Key quality attributes When it comes to quality and evolution, the qualities of Wireshark that stand out are compatibility, consistency, modularity, and robustness. Cross-platform compatibility and portability are ensured in the continuous integration/continuous deployment (CI/CD) pipeline, as it runs workflows on the three most popular OS architectures: Windows, macOs and Linux (Ubuntu).

Moby - Quality and Evolution

In the previous post, we went through the architectural design of the Moby project and its main part - the Docker daemon. We also discussed multiple views and how it relates to other parts of the modern container ecosystem. A question that remains is how the key quality attributes that are identified in our first essay (modularity, composability, ease of integration, usability, security, and reusability) are ensured. Some of the modularity and security features can generally be tested automatically.
Moby
March 21, 2022

Egeria: Quality and Evolution

Introduction Egeria is an open-source project that provides open metadata governance, allowing to easily share metadata across systems. In our previous essays, we have discussed Egeria’s product vision and the software architecture. In this essay, we discuss the implemented key quality attributes, look at the code and process quality, code change hotspots, and technical debt. Implemented key quality attributes The system’s key quality attributes, which you can find in the architectural design principles1, consist of the following: autonomic, integratable, adaptable, extensible, fair ecosystem, trustworthy, inclusive, and educational.

Robot Framework - Evolution of Quality

Robot framework (RF) is a robotic process automation tool designed to make QA personnel’s jobs easier. Since the focus of this project is to integrate with as many external systems (to be tested) as possible, a lot of effort goes into making the code optimally interpretable. The architectural decisions and the vision which shapes those decisions have been discussed in our previous posts. This essay talks about the code quality of the open-source system and the various processes which are a part of the continuous integration effort for this project.

Storybook - Quality and Evolution

Storybook is the addition to your web front-end project, which allows you to easily build reusable UI components. In the previous essays12, we have already discussed some of the key qualities of Storybook that makes it the convenient, unmissable, and easy to use tool it is today. We will re-visit some of the key qualities and see to what extent they are currently satisfied by the system. Qualities & processes First of all, the main key quality of Storybook is of course reusability.

Mattermost Server - Quality and Evolution

Mattermost is an open-source cross-platform solution for collaborative communication among teams. In previous posts, we discussed Mattermost’s vision and the overview of its architecture. As we extensively covered the key quality attributes in previous posts, we do not address them here. In this post, we look into the processes put in place to ensure good code quality. We also dive deeper into the analysis of hotspot components and future evolution of the various parts of Mattermost.

React Native: Quality and Evolution

Key Quality Attributes React Native is a framework that builds native applications for iOS and Android using JavaScript, based on React, a JavaScript library1. React Native was created by Meta and is now an open source project, with over 2000 contributors. To ensure quality of the code React Native has a modular architecture and there are some rules and guidelines. Before getting in detail of quality assurance let’s take a look at the key quality attributes that React Native satisfies.

Backstage - Quality and evolution

Quality and evolution We already have discussed the vision behind Backstage and the architecture that makes up the Backstage product. In this essay we talk about the quality control of Backstage and how the project is evolving. Key attributes The key attributes for Backstage can be divided into two categories: external qualities and internal qualities. We will first discuss the systems internal quality attributes and afterwards discuss the external attributes.

PMD - Quality and Evolution

PMD is a powerful code quality analysis tool, but what about the quality of PMD itself? In this essay, we will discuss how PMD’s own quality attributes are fulfilled through the following sections. Software Quality Processes Continuous Integration Test Processes Hotspot Components File-Level Hotspots Package-Level Hotspots Modularity and Serviceability in Hotspots Code Quality Analysis Quality Culture Technical Debt References Software Quality Processes The software quality processes of PMD are equipped with a standardized continuous integration (CI) routine establised with a clear guideline1.
PMD
March 21, 2022

Quality and Evolution

Netdata is created by the Netdata company, who is still mainly responsible for the development of the project. Because Netdata is an open-source project, many people with many different coding styles contribute to Netdata concurrently. To maintain high code quality for Netdata, the company has set up a set up rules and guidelines for contributors. This essay describes the safeguards for the quality and integrity of Netdata’s software. Satisfying the key quality attributes In Essay 1, we described the four key quality attributes of Netdata to be: functionality, cost, security, and scalability.

Wikipedia Android: Quality and Evolution

This essay describes how quality is defined for the Wikipedia Android app and how quality control is applied throughout the development process. The evolution of quality through time is also discussed. System key quality attributes The system’s key quality attributes have been discussed in detail in the previous essay1 and so they will only be summarized here, so that more focus can be put on Accessibility, the attribute found to need more work.

Essay 3

The degree to key quality attributes satisfied Key quality attributes that make Ghidra unique are extensions (such as plugins), Ghidra server for multi-user collaboration and the GUI. Extensions: Ghidra is currently highly extensible, and a large portion of it is composed of plugins. One large portion of changes are related to development and fixes of extensions. By supporting the option to extend Ghidra according to one’s personal needs, Ghidra becomes a multifunctional platform that can be used in many different contexts.

SerenityOS - Quality and Evolution

Degree of achieving Quality attributes We have explained three key quality attributes in Essay 1: Functionality, Usability, and Consistency. This section will introduce how the extent to which these quality attributes are achieved. Functionality: As an operating system, SerenityOS undoubtedly does a good job of providing basic operating system functionality. This includes a web browser, email, desktop composer, and various desktop applications and games. All the features that can be implemented are included in the project manual1.

Mattermost Mobile — Quality and Evolution

Introduction In this essay, we look at the quality and evolution of Mattermost Mobile, a team collaboration app for Android and iOS. We first look at how code is developed, tested and reviewed. Then we take a look at the current current source code to find so-called hotspots, pieces of code that change often, and assess the technical debt of this project. This should give us an idea how the architecture could still be improved.

Podman - how good is it?

Essay 3: Quality and Evolution If you have any experience with a container orchestration tool, you know it can be challenging at first, using a daemon or configuring Containerfiles, but the added benefit outweighs the development costs. In the previous essays, we gave a contextual overview and architectural analysis of the Podman project. In this essay, we question the satisfaction of the system’s key quality attributes and how they are safeguarded over time.

Quality and Evolution

Sonic Pi: Quality and Evolution In the previous essays, we discussed about the project vision and the architectural view of Sonic Pi. In this essay we will discuss about the quality control of Sonic Pi, and its evolution process. Key attributes Figure: The key quality attributes of Sonic Pi Figure ‘The key quality attributes of Sonic Pi’ shows the key quality attributes of Sonic Pi, where we divide them into external qualities and internal qualities.

Log4j2 - Quality and Evolution

Key quality attributes and current status The key quality attributes discussed in previous essays are performance and security. Performance Peak throughput is one of the critical indexes of a logging system. It measures the maximum throughput over a short period and describes the system’s ability to handle bursts. Log4j2 featuring using an Asynchronous logger can provide the best performances compared to the major counterparts and is even capable of offering larger throughput with more threads, while others remain the same or decrease 1.

Element - Quality and Evolution

In order to keep the quality of the architecture and code of Element high, a couple of measures are taken in the development process. The measures that need to be taken by the contributor are clearly explained in a contributing document 1. Every contribution needs to be reviewed in order to get merged. This will mainly be done by the Element core team. In addition, each feature addition also means that tests must be added.

Quality and Evolution

Introduction The Quod Libet project has been under development since 2004 1. Over nearly two decades, the project has evolved significantly. The project has developed processes which help it satisfy its most important quality attributes, but it has also accumulated technical debt which can make it difficult to satisfy others. Satisfaction of Quality Attributes Quod Libet has placed a strong focus on certain quality attributes, such as performance, maintainability, and modularity.

MetaMask - Quality and Evolution

Figure: MetaMask Logo Introduction In our previous two essays, we mainly talked about the vision and the architecture behind the Metamask browser extension. In this essay, we guide you through the code quality and the quality culture that exists in this project. We have already emphasized the importance of enforcing the key quality attributes of this project, so we hope you enjoy reading our analysis.

ReactJs - Quality And Evolution

ReactJs - Quality And Evolution In one of our previous posts, we briefly described what the key quality attributes are and explored how ReactJS realizes these key concepts through its component-based architecture. In this post, we focus on the means to safeguard the quality and architectural integrity of the underlying system. System’s key quality attributes There are two perspectives on how key quality attributes can be realized. The first perspective is from the end-user’s point of view in which web developers use the ReactJS framework.

Audacity - From Vision to Architecture

In this post, we further investigate the set of fundamental concepts and properties of Audacity, notably the container, component, connector, development and run-time views. What is most interesting to note, however, is that despite the age of the Audacity application, very little refactoring was finalized1. The main architectural style The software was first developed by Dominic Mazzoni, whose main intention was to create a platform where developers can build and debug audio processing algorithms2.

Dolphin - From Vision to Architecture

Learning about the architecture of Dolphin is not an easy task. The developers did not document their system well and a lot of the limited documentation that is available is outdated. Even one of the developers said that the only way to learn about the structure of the system is to just look at the directories of the source code. An explicit main architectural style seems to be missing, but traces of a model-view-controller architecture1 can be found.

Wireshark - From vision to architecture

While the previous post focused on the general, top-level view of Wireshark as a product and its goals and ethical implications, this time we will be taking a deep dive into its architecture. Everything from architectural style, to the C4 model1, and even the API will be discussed and analyzed. Main architectural style The Wireshark project consists of both a graphical user interface (GUI) as well as a command-line interface named TShark.

Digging deeper into Snakemake: architectural gold and pyrite

Introduction Snakemake is an open source workflow management system inspired by the GNU Make 1 build automation tool. Snakemake aims to facilitate sustainable data analysis by supporting reproducible, adaptable, and transparent data research. The core of a Snakemake workflow consists of a Snakefile that defines all the steps of a workflow as rules. These rules determine how output files are created from input files, while Snakemake automatically resolves dependencies between the rules.

AssertJ Core: From Vision to Architecture

This essay explores the architecture and implementation of key quality attributes of AssertJ Core in relation to the previously defined key concepts and product vision. We first look at the architecture as a whole and then dive into the various views which provide insights into the design. This includes discussing the components, their connections, and the way they act at runtime and during development. We also reflect on the realisation of the key quality attributes and explore the API design principles used.

Egeria: From Vision to Architecture

Introduction In our previous essay we focused on the product vision and the underlying problem Egeria is trying to tackle. Now we will see how this product vision translates to the Egeria architecture, and with what underlying principles that architecture was designed and how it evolved. We will start with a general overview of the systems architecture with the design trade-offs, followed by a more in-depth discussion of the architecture through different views and the Egeria API.

Checkstyle: Architecture for Extensibility

As discussed in our previous essay, The Checkstyle Vision: Keeping Your Code in Check, Checkstyle is a static analysis tool that can help a Java development team keep the same coherent code style across their project, which keeps the code readable, maintainable, and consistent. This essay will talk about the core architecture of Checkstyle. Firstly, we will talk about the main design pattern used in Checkstyle: the visitor pattern. Then, we will go over four different levels of overview: the container view, the component and connector view, the development view, and the runtime view.

Storybook - Architecture

In our second essay about Storybook, we will focus on the way Storybook works under the hood, and how the large software project is structured to ensure maintainability, testing, and performance. We will take a look at some overarching motifs, and then we will keep zooming in onto the different views (Container, Component, etc.) that are specified in the C4 model1. Finally, we will look at how this all relates to Storybook achieving their key quality attributes as outlined in our first essay2.

Mattermost Server - Architectural decisions

Main architecture Mattermost consists of several applications that are interconnected so that the project can run as a whole. Although our project is mattermost-server, we will present Mattermost as a whole in this section, while focusing on mattermost-server in the further sections. Mattermost describes its backend as: “… a single-compiled Go binary that is exposed as a Restful JSON web server with Javascript and Go clients.”1 We observe that the key architectural styles and decisions are:

Backstage - From Vision to Architecture

From vision to architecture The first essay gave a description of the vision of Backstage. It states how Backstage is aimed at building developer portals. This essay will build on top of the first one, and explore what the architecture of Backstage looks like. The analyses in this essay range from the main patterns used up till the containers and development views. Main architectural pattern The main architectural pattern used by Backstage is a common one for web applications.

PMD - System Architecture

The main architectural style In PMD - Product Vision, we focused on the vision and context of the PMD project. In this essay, we will focus on a high-level view of the architecture of the system. The main architecture pattern is the pipe and filter pattern1, and the concrete overviews of architectural views are given: The main architectural style Container View Component and Connector Views Development View Documentation Source code Tests Runtime View Key Quality Attributes and Trade-offs API Design Principles Conclusion References According to the workflow documentation of PMD2, the main pattern applied is the pipe and filter pattern1, which has main entities called filters.
PMD
March 14, 2022

Robot Framework - A Modular Architecture for Automation Testing

The Robot Framework (RF) aims to be an open-source robotic process automation (RPA) 1 testing solution that users may customize in any way. RF’s key architectural design decisions are based on supporting the following: Scalability: As RF is free to use without any license payments, anybody can run as many Robot Framework RPA processes as they like in parallel. In enterprise-scale projects, Jenkins 2 plugins provide orchestration functionality. Limitless extensibility through modularity: RF’s extensibility is possible because of its modular design, which is built on top of extension libraries.

From Vision to Architecture

Scrapy, as explained in our previous essay, is a framework that allows for easy, fast and custom web-crawling for a variety of tasks. More information about Scrapy can be found in the official documentation page. Scrapy’s Architectural Style Scrapy’s architectural style does not follow a single pattern, but rather extracts different characteristics from different architectural styles. Scrapy’s maintainer Adrían Chaves informed us that Scrapy was initially based on Django for the networking engine, but the team very soon decided to switch to - and still remains on - Twisted, a popular open-source, asynchronous and event-driven networking engine written in Python 1.

Mattermost Mobile — From Vision to Architecture

Introduction This is the second essay in a series of four essays, as a part of Delft Students on Software Architecture 20221. Mattermost is an open-source platform for team communication, and Mattermost Mobile is the app to use Mattermost on mobile devices In the previous essay, we explored the problem Mattermost is trying to solve and the vision behind the Mattermost Mobile app. Now we dive into the architectural choices the Mattermost team made to realize this vision.

From vision to architecture

Sonic Pi, From Vision to Architecture According to the last product vision essay, Sonic Pi is a live coding music synthesizer that aims to provide a joyful use experience to its users by transforming codes into music fluently and assisting code-beginners to easily learn how to code. The focus of this essay shifts to an examination of Sonic Pi’s architecture. Let’s begin our journey by looking at Sonic Pi’s architectural style.

ReactJS - From Vision to Architecture

Architectural style and patterns ReactJS does not enforce a particular way to organize and structure the codebase of a web application. Beyond some design principles and recommended file structure, the developer is completely free in how to use React. The versatile nature allows a developer or team of developers to decide on their own architectural patterns. However, a project with no structure means that everyone can do whatever they want. Thus, developers must decide on their architectural structure to keep the project productive in the long term and to make the codebase easy to navigate, modify and scale.

Log4j2 - From Vision to Architecture

To capture the architectural elements and relationships of Log4j2, in this essay, we first explore the architectural style and design patterns applied in Log4j2, then we depict the architecture from multiple views, finally, we briefly summarize the API design principles of Log4j2. Main architectural style At the beginning of Log4j2 design, its goal is to implement a simple and efficient logging framework that is perfectly compatible with existing logging tools such as SLF4J or Log4j 1.

SerenityOS - From version to architecture

Architectural style Every system has an architecture and SerenityOS is no exception. As an operating system running on x86, SerenityOS has a layering architecture consisting of three layers: kernel, system function, and applications. The kernel controls the hardware of the computer and resides at the core of the architecture. System calls act as the interface between the kernel and applications. In the beginning, SerenityOS relied on a few external libraries. However, it has gradually gotten rid of them and developed by itself instead.

Moby - From Vision to Architecture

Previously we discussed what the Moby project is, how it relates to its downstream product Docker and how its vision helped shape the modern containerization ecosystem. This time we will discuss the architectural decisions made by the Docker team and describe the structure of the ecosystem. Although Docker can work with many operating systems that provide process isolation capabilities, the rest of the essay will be mainly presented from the perspective of the Linux container variant since it’s most well studied and most widely used.
Moby
March 11, 2022

Element - From Vision to Architecture

For Element to fulfill its design vision of being a decentralized messaging, VoIP platform, and much more, it has to follow some design principles. Therefore, the creators of Element have created a large specification list where these principles have been implemented. The principles Element follows are 1: Web-friendly APIs Keep It Simple & Stupid: provide a simple architecture with minimal third-party dependencies. Fully open: Fully open federation: Anyone should be able to participate Fully open standard: Fully documented and no intellectual property Fully open-source: Provide open-source reference material Empowering the end-user: The user should be able to choose the server and clients they use The user should be able to control how private their communication is The user should know precisely where their data is stored Fully decentralized: no single point of control over conversations or the network as a whole Learning from history to avoid repeating it Learn from other protocols whilst trying to avoid their failings To keep to these principles Element has decided on the following overall architecture:

Wikipedia Android: From Vision to Architecture

In this second essay, we will look at how the vision of the product is applied by investigating the architecture of the project. This analysis of the architecture will be done at several different levels, ranging from the main pattern and container views, down to the development view. Finally, the quality attributes identified in essay 1 are revisited to see how they are realized with the application’s architecture. Main architectural pattern One of the most popular architectural patterns applied in Android applications is the Model-View-Controller pattern.

Essay 2

Architectural style used in Ghidra Ghidra is a very large project with a lot of different features. Therefore we will focus on one of the many features of Ghidra, the Function graph. The function graph displays the functions that are decompiled from the binaries as code blocks in the GUI. The main architectural style used in the function graph feature of Ghidra is the model-view-controller architecture. This architectural style is commonly used for developing user interfaces that divide the related program logic into three interconnected elements, namely the view, the controller and the model.

React Native: From Vision to Architecture

Main Architecture In the beginning React, the website focused framework on which React Native is based, was advertised as the V in the Model View Controller architecture 1. However, the phrase implies that some other technology should implement the Model and the Controller. This phrasing was something Facebook already discontinued and moved away from in 2013 1. A more applicable architecture pattern or style that really defines React Native is the Container / Component pattern 2.

MetaMask - From Vision to Architecture

Now that we have discussed MetaMask’s product vision and problem analysis in our previous essay, we continue to discuss the system’s architecture. Most importantly, we aim to explain how and why the MetaMask developers made the design decisions to come to the current product. We will zoom in throughout this essay, starting with the system context, all the way to how MetaMask has realized its key scenarios and quality attributes.

Quod Libet: From Vision to Architecture

Introduction In this post, we look at Quod Libet’s architecture and how it achieves its goals. First, we examine the project’s architectural style and the forces that have guided it. Next, we show the structure of the program’s Containers, Components, and Connectors. Finally, we explain what the program’s structure means for Quod Libet’s development and Runtime, and how it has helped the project achieve its quality attributes. Architectural Style Quod Libet is generally structured as a typical GTK application.

Express.js - Architecture of Express.js

The Layered Architecture of Express.js Express.js is a standalone web application framework for Node.js that provides its users with a robust and complete set of features for web and mobile applications along with HTTP utility methods and middleware for API development. As stated by the team itself, Express’s mission is to guarantee a pleasant web development experience and to do that by means of an abstract layer of fundamental web application features that are accessible and easy to use.

Prettier - Quality and Evolution

Satisfaction of Quality Attributes Usability Since Prettier does not have a graphical user interface, it focuses on smoothly integrating into users’ existing coding tools. Prettier can therefore be used in a variety of IDEs, in the shell, and in a CI/CD-pipeline. Prettier enables users to format their code automatically, with the click of a button, or with a command. The fact that users can decide for themselves how to use Prettier makes it easy for them to learn and memorize its use.

The Checkstyle Vision: Keeping Your Code in Check

Most of us probably remember the advertisements: ‘more than 3 billion devices run Java!’, and since the time when these ads were common, the Java ecosystem has continued evolving. It is hard to overstate the influence of Java: it is used extensively in server development, it is a key pillar in Android, and its object-oriented approach has influenced the development of many other languages. At the end of 2018, there were an estimated 7.

Audacity - Product Vision

Audacity - Product Vision Figure: Audacity logo Audio editing and recording is a discipline used in many fields, such as the music industry, podcast creation and even in medical applications. There exist a multitude of tools able to edit audio files, with Audacity standing out as one of the most popular programs, despite being created over two decades ago. Audacity is a free-to-use, open-source audio recorder and editor software designed for use on multiple operating systems, such as Windows, macOS and many Unix-like systems.

Mattermost Server - Product Vision and Problem Analysis

In recent times, many workforces and teams across different industries have had to work online and communicate with their colleagues remotely. To facilitate this requirement, organizations readily searched for collaboration platforms to adopt for its employees and their internal operations. While there have been wide adoptions of dedicated solutions for specific requirements like Zoom for video conferencing, generalized collaboration platforms present a different choice for the organizations. In this space, Microsoft Teams, Cisco Webex Teams, and Slack have seen widespread adoption in the recent past.

Egeria: Product Vision and Problem Analysis

In this essay we will explain the underlying issue that Egeria is trying to solve, efficiently utilising all value in and managing metadata. In addition to giving a layout of what Egeria is currently doing and planning to do to tackle this challenge. We start by introducing the Egeria project, explaining the key concepts and the underlying domain model. Then, we present the features, benefits, interested parties, and ethical implications of the system before talking about where the project currently stands and its future roadmap.

AssertJ Core: Product Vision & Problem Analysis

AssertJ is a testing library for Java which provides users with clear and specific assertions. It is used by testers to test production code, by developers to understand the bugs in their code, and (indirectly) by users of software which AssertJ tests. It is an open-source project used widely across the Java community and has many stakeholders and desired quality attributes. This essay focuses on determining the product vision and analysing the domain.

Product Vision and Problem Analysis

Product Vision and Problem Analysis Introduction Scrapy is a “batteries included” framework which allows users to crawl the web by providing an easy to use and programmable Spider API, which can also scrape the pages and structure them in well-known formats. Scrapy’s goal is to provide its users with most of the functions they may need for crawling, scraping and structuring data from webpages, and error handling out of the box.

Snakemake: A Hidden Gem for Sustainable Data Science from the Field of Bioinformatics

Problem analysis Snakemake is an open source workflow management system inspired by the GNU Make [^gnu-make] build automation tool. Snakemake aims to facilitate sustainable data analysis by supporting reproducible, adaptable, and transparent data research. This is done by using workflows, which are data analysis pipelines. The core of a Snakemake workflow consists of a Snakefile that defines all the steps of a workflow as rules. These rules determine how output files are created from input files, while Snakemake automatically resolves dependencies between the rules.

Podman - under the hood

Essay 2: the system’s architecture In our earlier essay, we gave an overview of the product vision and the context in which Podman is used. This essay dives deeper into the system’s architecture and its design choices. We investigate what these decisions mean for the project based on various system views12 and evaluate the insights where improvement could be achieved. For readers who are unfamiliar with the world of containers, our first essay contains a list of key definitions.

Backstage - Product Vision and Problem Analysis

Product vision and problem analysis Backstage is an open platform that can be used to build developer portals. It is used by companies to give developers a platform that can store information about their tooling, data, software components and documentation. It aims to give back control of the infrastructure to the developer. Backstage does this through three main elements: a software catalog, software templates and a documentation platform (TechDocs). The software catalog is used to manage all of the company’s software.

Robot Framework - A Keyword Driven Automation Testing Framework

As we move towards a more digitally integrated world, software’s effect is becoming increasingly important. It now plays a crucial role in all aspects of everyday life, including industrial/commercial purposes. All that is required is for the software to run smoothly and without errors. The shocking tales from around the world demonstrate the irreversible damage that software failure may inflict. According to a survey published by Tricentis in 2017, worldwide enterprises have reported a loss of 1.

Mattermost Mobile — Product Vision and Problem Analysis

Team communication is essential for knowledge workers. The COVID pandemic has forced employees and students alike to work from home. The goal of Mattermost is to allow teams to communicate by developing secure, open source collaboration software1. Their software integrates with other software development and project management tools. Its development happens on public GitHub repositories, although certain enterprise management and compliance functions are only available in a paid, closed-source edition of the software.

Wireshark - Product Vision and Problem Analysis

Whether you are a student learning about computer networks and protocols for the first time or a big tech company trying to find the source of a bug within the internal network, a method of capturing packets can prove indispensable. There are various means of accomplishing this task, such as tcpdump, WinDump, and others, but Wireshark stands out with its simple and stylish graphical user interface (GUI), easy to understand filters, and wide range of functionalities.

PMD - Product Vision

Putting PMD into Context Imagine you are implementing an algorithm for an application using Java. The application is runnable, and you are satisfied by the output because it is exactly what you need. The application gets popular on the Google store, and you decide to add functionalities to attract more users. Some new colleagues are hired to work on the same project. But you find your colleagues are slow to get familiar with the source code.
PMD
March 7, 2022

Product Vision and Problem Analysis

Netdata was created because of a frustration that the COO, Costa Tsaosis, had while trying to pinpoint a performance problem using existing tools1. Because of the, according to him, shockingly small number of metrics and resolutions, he couldn’t pinpoint the problem. To fix this, he decided to create Netdata with the vision to provide high-fidelity infrastructure monitoring and performance troubleshooting, while keeping the system Open-source, free, preconfigured, secure, and easy to use.

ReactJs - Product Vision and Problem Analysis

React.js React, (also known as ReactJS or React.js) is a popular free and open-source front-end Javascript framework that is used for building UI components and user interfaces. The framework was constructed by Jordan Walke together with FaceBook in early 2011 which then carried the name “FaxJS”. It is still maintained by FaceBook with an ever-growing community of developers and companies. To this day, React is one of the leading front-end frameworks together VueJS and Angular 1.

Sonic Pi - Product Vision and Problem Analysis

Project Aim As a programmer, after one-day coding in front of a small desk, maybe there was a moment when you were listening to the music that you imagined: “what if I was a musician?”; as a musician, maybe there was also a moment for you to be curious about “how those codes are working under the screens?”. Some people always have curiosities in the domains they have never touched before, and Sonic Pi provides a nice beginning for those people.

Log4j2 - Product Vision & Problem Analysis

Figure: Apache Log4j2 Logo Introduction A log file is a collection of files used to record system operation events. It plays an important role in processing historical data, tracing problems, and understanding system activities. In software development, developers use a variety of logging frameworks to record the running information of the program. The presence or absence of logs does not affect the performance of the application, but an application without logs is incomplete because of its importance at all stages of development.

Dolphin - Product Vision and Problem Analysis

Figure: The Dolphin Emulator The GameCube (GC) and Wii made by Nintendo are two popular video game consoles with over 122 million sold units worldwide1. Because the production of the GC, Wii and even the Wii U (which is backward-compatible with Wii games) stopped years ago, it has become harder to find such a console and play their games. This is where Dolphin comes in.

Storybook - Product Vision

If you are anything like us, you will have come across the urge to be able to focus on developing your UI components by building and testing them in an isolated environment. This is exactly what Storybook1 allows us to do! In this essay, we will describe what Storybook aims to do and the vision that they have laid out. In addition, we will present a short product analysis of Storybook.

Quod Libet: Product Vision & Problem Analysis

Introduction The Quod Libet project aims to create an audio player that puts users in control of how their content is organized 1. The project is built in Python and based on the Mutagen music tagging library 2. It places a special focus on being feature-rich and customizable through plugins, and has an architecture which is designed to scale to extremely large music libraries. Ex Falso is a related piece of software produced as part of the Quod Libet project.

Moby - Product Vision and Problem Analysis

What is the Moby project? At the first glance it might not sound like something that revolutionized the world of software engineering in the last decade. However, it is in fact a community-driven upstream for Docker1, the widely known containerization ecosystem. In this blog we talk about Moby and Docker’s capabilities, common use cases, as well as analyze their stakeholders. We also discuss the key quality attributes, project’s roadmap and potential ethical considerations.

Prettier - From Vision to Architecture

Prettier is an opinionated code formatter for JavaScript and many other web languages. It was released in 2017 and now about 60% of JavaScript developers used it regularly in 20201 2. We have previously written a post about Prettier’s vision and the problem it tries to solve. We will dive into the project’s architecture in this post. Main architectural patterns We start our analysis by getting an overview of the system.

MetaMask - Product Vision and Problem Analysis

Figure: MetaMask Logo Introduction MetaMask aims to be the singular gateway to the world of blockchain applications. It aims to give everyone everything they need to manage their digital assets in their digital life, like Ethereum and Binance coins. Our project focuses on the MetaMask wallet browser extension, which gives users simple access to blockchain-based apps. Its main utility is providing an interface between your ‘distributed’ wallet and a distributed web application.

SerenityOS - Product Vision and Problem Analysis

The project aims SerenityOS is a free and open-source operating system, the operating interface simulates the interface of the 90s (picture shows below). Figure: Serenity OS User Interface The system aims to be a modern Unix-like operating system, and supports the x86 and x86-84 instruction sets, with a preemptive kernel. Support for multiple applications on the system, such as a proprietary Web browser and integrated development environment (IDE), as well as the ability to change system themes and run simple games.

Express.js - Product Vision and Problem Analysis

Aims Express.js - or simply, Express - is the leading backend framework on Node.js. It aims to be the backend side of the “Javascript everywhere” idea that became a reality with Node. Express aims to be a very minimalist and unopinionated framework. While many backend frameworks force a certain backend structure such as MVC (model-view-controller), Express leaves this choice to the developer. This approach allows other backend frameworks such as Sails to build on top of Express, so one might say another aim of Express is to be the skeleton for more opinionated and complex backend frameworks.
Expressjs
February 28, 2022

React Native: a Product Vision and Problem Analysis

React Native is an exciting framework made by Meta that enables developers to write an application in one language and deploy it to many different operating systems. It allows deployment mainly for Andriod and iOS, but also for tvOS and the web1. The framework was designed to increase productivity and allow developers to really focus on designing and developing their product, without having to worry about the ins and outs for each operating system with their specific programming languages2.

Podman – a daemonless container experience

Essay 1: Context and Product Vision If you are new to Docker, containers, daemons and/or Kubernetes, please follow the links to familiarise yourself with these concepts before reading. Very basic introduction videos can be also found here for Docker and Kubernetes. Containers play a crucial role nowadays in simplifying the production, distribution, discoverability, and usage of applications with their dependencies and default configuration files. There is nothing worse than struggling with dependency or configuration bugs only to explain to yourself that ‘it works on my machine’.
Podman
February 21, 2022

Prettier - Product Vision and Problem Analysis

What the project aims to achieve Prettier is an opinionated code formatter with support for a wide range of programming languages and frameworks, like JavaScript, TypeScript, Vue, and Angular1. It aims to be the definitive “style guide” that that everybody uses, by having a formatter that automatically takes care of all the formatting for you. This means that teams and projects will not have to argue over which style to use anymore, since Prettier does all the work for them.
Prettier
February 19, 2022

Wikipedia Android: Product Vision and Problem Analysis

This is the first out of four essays surrounding the open-source Wikipedia Android app. In this essay, we will focus on the product vision behind the app. Project Characterisation The most important aim of the Wikipedia Android project is to bring the Wikipedia encyclopedia to Android devices making it accessible to millions of users. The co-founder of Wikipedia, Jimmy Wales, described the product vision of Wikipedia as: “Imagine a world in which every single human being can freely share in the sum of all knowledge.

Element - Product Vision & Problem Analysis

Element1 aims to achieve a more decentralized alternative to other communication tools. Meaning that you are in control of your data by choosing where it is stored. There are also no parties mining the data you create with your peers. This is accomplished due to Element being built on Matrix2, which is an open network created for secure and decentralized communication. Besides being able to manage your data, messages are also end-to-end encrypted to protect your conversations from prying eyes.
Element
February 16, 2022

Essay 1

Ghidra’s goal Ghidra is a free and open-source software reverse engineering suite developed by the National Security Agency (NSA). Ghidra has a suite of full-featured, high-end software analysis tools which enable users to analyze compiled code (since compiled code is not readable by humans). It works by decompiling the binaries such that they become human-readable. Ghidra can disassemble, assemble, decompile among hundreds of other things. It has support for a wide variety of processor instruction sets and executable formats, from ransomware running on Windows to fully inspecting the firmware that is dumped from an Arduino board.
Ghidra
February 3, 2022

Bitwarden - Architecting software for security

Introduction Bitwarden strives to build a safe and secure password manager that everyone can use1. In our previous posts, we have discussed this vision, how it translates to software design decisions and to the code base of the project. This week we want to lay the focus on the security of the Bitwarden project. As a password manager security is a key component of the Bitwarden product. Users trust the encryption utilized by Bitwarden as well as the company with all of their logins or files.

Scalability

This final essay describes the scalability of Netdata, its scalability challenges, and its scalability solutions. From the insights we gained while writing Essay 1, we could already see that scalability is one of Netdata’s key quality attributes. Because of this, scalability lies at the heart of Netdata’s infrastructure, and it is kept in mind throughout the development. In Essay 2 we learned that there are numerous architectural decisions made to ensure the scalability of Netdata, in line with Netdata’s vision to provide scaling at marginal costs1.

Issues and Improvements

Meet the project Figure: Cheat Engine logo Cheat Engine is a tool for memory analysis and manipulation, for the purpose of modding and reverse engineering processes. It operates on one of the lowest possible levels of abstraction and gives a real insight into the inner workings of other processes. Directly observing the behaviour of processes also allows for reverse engineering of secondary artefacts, such as encryption keys, file formats, and communication protocols.

Bitwarden - Quality and Evolution

Bitwarden strives to build a safe and secure password manager that everyone can use1. In our previous posts we discussed this vision and how such a vision translates itself to a software architecture. This week we will discuss the quality and evolution the Bitwarden software has been through. As a password manager security is a key component of the Bitwarden product. For such a product clean code is not only a system to keep the project maintainable and readable for developers.

Quality and Evolution

Key Quality Attributes Scrapy, as explained in the previous essays, is a framework that allows for easy, fast and custom web-crawling for a variety of tasks. The main selling points of Scrapy are performance, extensibility and portability1. In order to achieve high performance, Scrapy bases its architecture on Twisted2, a networking framework that facilitates asynchronous and event-driven programming. Twisted is built based on the Reactor pattern and facilitates a construct that waits for events and performs callback functions.

Bitwarden - From Vision to Architecture

Main architectural style Bitwarden’s main vision translated into a architectural relevant sentence is as follows: Build a safe and secure password manager that everyone can use 1. In the same slide and presentation, the Bitwarden company states that this lead to four early architectural decisions: Cloud native Scalable Flexible Enterprise friendly These architectural decisions go hand in hand. Making a the system scalable requires making it native to the cloud.

From Vision to Architecture

This second essay describes the way that Netdata transforms its vision, which we described in Essay 1, into an actual architecture. Main architectural style Netdata’s main architectural style is a component-based, data centric style. Netdata can be split up into multiple components, as can be seen in containers and components view below. Next to this, Netdata’s main functionallity is collecting and transforming data, making the data its primary asset. Looking at the picture below, we can see that Netdata has multiple external dependencies/actors.

From Vision to Architecture

Introduction In our previous essay, we talked about the product vision of Cheat Engine. In this essay we focus on the underlying architecture of Cheat Engine, thus looking at the source code and the dependencies and interactions of different components. The source code can be found on their Github page 1. By analyzing the source code, we hope to get a better understanding of the system’s architectural elements and relationships, as well as the software’s principles of the design.

Quality and Evolution

Introduction One of the most important factors in the success of a software project is the software quality. In this essay, we will look at the overall quality process and the key elements of the continuous integration process of Cheat Engine. At the same time, we will cover the rigor of the testing process, the past and present changes in Cheat Engine’s hotspot components, and evaluate its code quality. Finally, the paper will also assess the technical liabilities of the system.

Bitwarden - Product Vision and Problem Analysis

During the last year in the midst of a global pandemic, many companies were forced to bring their businesses online. Meetings, documents and whiteboards were all kept online so each employee could access these from their desk at home. Many of the applications that enable online collaboration require the employees to create an account. The application uses this as authorization to view the company’s confidential content. The application itself might have sophisticated security measures against cyber breaches, protecting the companies confidential information.

Product Vision and Problem Analysis

Meet the project Figure: Cheat Engine logo Cheat Engine is a tool for memory analysis and manipulation, for the purpose of modding and reverse engineering processes. It operates on one of the lowest possible levels of abstraction and gives a real insight into the inner workings of other processes. Directly observing the behaviour of processes also allows for reverse engineering of secondary artefacts, such as encryption keys, file formats and communication protocols.