entities – solution architecture

Introduction

Background

entities is a web application that helps users keep track of their enterprise architecture elements.

Vision

Supplementary documentation

Revisions

Solution overview

Processes

Information

Design constraints

Life expectancy

Policies

PolicyDescriptionDesign notes
Try before registering.To overcome some users’ reluctance to register before trying a new tool, factors automatically starts up in demo mode.In demo mode, data is only stored in the session cookie, which prevents filling up the database on the web server with demo data.

Visitors must give their consent to storing the session cookie, and are informed that the demo session expires after 12 hours.

The session cookie expires after 12 hours.

In demo mode, data can’t be downloaded or uploaded.
No credit card required.Demanding that new users set up a payment method to start a free trial might deter some users from signing up.Editing is blocked when the trial expires. Users can always start a subscription to regain editing capabilities.

Standards

StandardDescriptionDesign notes
MaterialDesign standard initially developed by Google, now managed as open source.Adopting the Material design results in a look and feel that’s likely to be recognized by many users, thereby lowering the risk that some users might postpone or decide not to try the application.

The chosen UI framework, DevExtreme, supports the Material standard as one of the included themes.

Technologies

TechnologyDescriptionDesign notes
NET CoreOpen source platform from Microsoft. Supported by most development tools and hosting companies.Free, well-documented, rich and well-performing.
Requires use of JavaScript and C#.
Simply.comHosting company that offers ASP hosting required to run NET Core on the app server. Affordable and well-performing. Easily scalable.Cheap, well-performing, and supports NET Core with the ASP.NET web hotel.
JavaScriptScripting language supported by all major browsers. Part of the HTML returned by the web server and rendered (executed) in the user’s browser. Creates UI widgets that interact with the user, and event handlers that control the widgets and communicate with the app server.Necessary in order to use DevExtreme.
DevExtremeRich set of user interface widgets developed and marketed by DevExpress. Enables sophisticated user interfaces that has a standardized look and feel.Requires JavaScript in the web page to set up and handle events from the browser and the DevExtreme widgets.
C#Programming language managed by Microsoft.Required to build the web application backend.
RiderDevelopment tool by JetBrains. Used to code the JavaScript and C# components.Advanced programming and debugging tool, necessary to write JavaScript and C# code.

While Microsoft offers a free Visual Studio, Rider offers better productivity.
WordPressThe CMS used to manage UGLEBERG.dk. Introduces factors to new users, and is home to manuals and support.Required to operate a website, which showcases factors and user manuals.
umlSimple lightweight web application.Used to create and maintain some of the illustrations in this document.
LucidchartAdvanced diagramming web application.Used to create and maintain some of the illustrations in this document.
BCryptHashing technique that gives a high level of protection against attempts at guessing other users’ password.A BCrypt library is added to the code base, and called to hash passwords before storing.

Design principles

PrincipleDescriptionDesign notes
Enter password only once.When selecting a new password, just ask users to enter it once – not twice, which too many other systems require, and which is considered user unfriendly.Provide one input field that initially masks the entered characters, but which can be switched to display them. Also, provide a easily accessible password reset feature.
Disable editing when trials or subscriptions expire.Prevents users from continuing using factors after their trial or subscription expires.All input and action widgets in the user interface are in read only mode if the user’s trial or subscription has expired.

A note in the toolbar indicates that the trial or subscription has expired.
Combine Razor pages with Web API.The web application combines the Razor pages and Web API features of NET Core.Razor pages are used to implement the views (or pages) that render the web application’s user interface.

Web APIs are used to implement backend services, which are called via AJAX from the JavaScript code in the views.
Implement multiple Web API services.Rather than building a single all-purpose Web API service, group closely related service operations in separate services. This makes the code more maintainable and reusable.One such service is the metrics service, which allows the JavaScript code running in the user’s browser to send metrics, which can be saved in the web application’s database on the web server.
Use sessions to survive browser refresh.If a user refreshes the browser, the browser’s session storage (which is kept in a cookie on the user’s disk) remembers the web application’s state so it can be accurately recreated by the appropriate Razor page. The web application is configured to use a session cookie that expires after 12 hours, which more than covers its use throughout a long workday.

Design properties

Auditability

Compliance

Security

Integrity

Authentication

Authorization

Non-repudiation

Usability

Concurrency

Capacity

Performance

Observability

Scalability

Availability

Testability

Operability

Recoverability

High-level design

Interfaces

User interface

Behavior

Structure

Development

Testing

Deployment

Operation