factors – Solution architecture

Introduction

Background

factors is a subscription-based web application that allows users to easily develop business cases that demonstrate the likely outcome of an investment with quantifiable probability using the Monte Carlo method.

Glossary

TermDescriptionReferences
Business caseDemonstrates the estimated financial impact of an investment with quantifiable probability.Business case (Wikipedia)
Monte-Carlo methodGenerating large quantities of probable financial impacts, each randomized using probability theory.Monte Carlo methods in finance (Wikipedia)
Probability theoryExplains how to use mathematical numbers distribution to randomize values within estimated intervalsProbability theory (Wikipedia)
Estimated intervalDefines a factor interval within which the estimator is 90% certain the actual value will lie.
FactorA variable in a simulation the value of which is randomly generated using a distribution formula.
Simulation

Supplementary documentation

DocumentDescriptionLocation

Revisions

RevisionDescriptionPublished (yyyy-mm-dd)Author
0.1Draft, outline phase.Not published yet.Lars Ugleberg

Solution overview

Users and the administrator interact with factors through their favorite browser. The web server returns an HTML page that renders the application’s user interface, which is comprised of widgets and event-handling code that calls the application’s services.

The administrator also uses the Rider tool to view and edit database records directly. Furthermore, the administrator uses dashboards that are part of supporting services to control their behavior.

Processes

The system supports the processes for developing and updating business cases, and supporting processes for incident management, support, monitoring and control.

@startuml
skinparam monochrome true

usecase UC1 as (Develop business case)
usecase UC2 as (Update business case)
usecase UC3 as (Report problem)
usecase UC4 as (Request support)

UC1 -[hidden]- UC2
UC2 -[hidden]- UC3
UC3 -[hidden]- UC4

User -> UC1
User -> UC2
User -> UC3
User -> UC4

usecase UC5 as (Monitor system)
usecase UC6 as (Control system)

Admin -> UC5
Admin -> UC6
Admin -left- UC3
Admin -left- UC4

UC5 -[hidden]- UC6

@enduml

Develop business case

A user creates a new business case, defines the relevant factors, runs simulations, and analyzes the results. The business case can be saved at any point.

Update business case

A user deletes or updates a business case.

Report problem

A user reports a problem, and the administrator responds.

Request support

A user requests support, and the administrator provides it.

Monitor system

The administrator monitors current activity and long-term activity, and analyzes capacity and performance.

Control system

The administrator shuts down the system gracefully, uploads new versions, and restarts the system.

Information

Account

Account information is used to manage users’ access to the system, and protect their data from being accessed by other users.

AttributeTypeDescription
IdTextA unique account id (GUID).
UsernameTextThe user’s full name, which will be visible in the application’s toolbar.
PasswordTextThe user’s current password, hashed and encrypted.
EmailTextThe user’s current and confirmed email address.
UnconfirmedEmailTextThe user’s new and unconfirmed email address.
EmailConfirmationCodeTextThe confirmation code issued when the user requested an email address change, which is yet to be confirmed.

Folder

Each account has a root folder, which can contain business cases and subfolders.

AttributeTypeDescription
IdTextA unique account id (GUID).
NameTextThe folder’s name.

BusinessCase

The user can create a business case in any folder. Business cases contain any number of simulations.

AttributeTypeDescription
IdTextA unique account id (GUID).
NameTextA brief name.
DescriptionTextAn optional and potentially much longer description of the business case.

Simulation

A simulation defines factors and holds the simulation results for the user’s analysis.

AttributeTypeDescription
IdTextA unique account id (GUID).
NameTextA brief name.
DescriptionTextAn optional and potentially much longer description of the simulation.
PeriodsNumber
BreakevenNumber
ProbabilityNumber

Factor

Constant

Estimate

Formula

Scenario

Period

Value

Set

Design constraints

Life expectancy

The solution will exist until I retire – maybe longer if anyone wants to take over.

Policies

z

Standards

StandardDescriptionDesign notes
Material

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 illustrations in this solution architecture document.

Design principles

PrincipleDescriptionDesign notes
Use the Material look and feel.Standardized (managed by Google), hence widely recognizable user interface style. Will make factors more approachable to new users.Simple selected as the theme in the HTML that lays out factors in the user’s browser.

Design properties

Auditability

z

Compliance

z

Security

z

Integrity

z

Authentication

z

Authorization

z

Non-repudiation

z

Usability

z

Concurrency

z

Capacity

z

Performance

z

Observability

z

Scalability

z

Availability

z

Testability

z

Operability

z

Recoverability

z

High-level design

Interfaces

z

Behavior

z

Structure

z

Development

z

Testing

z

Deployment

z

Operation

z