Confidentiality: File Name Location
Confidentiality: File Name Location
Document Location
Confidentiality
This document is distributed on a restricted basis, is commercial in confidence to the recipient,
and may not be used for any purpose other than that associated with a project. The contents of
this document may not be disclosed to any third parties without the expressed advance written
authorisation.
• Introduction
[The introduction of the Architecture Design Document should provide an overview of the entire
Document. It should include the purpose, scope, definitions, acronyms, abbreviations and
references.]
•Purpose
This document provides a comprehensive architectural overview of the system, using a number
of different architectural views to depict different aspects of the system. It is intended to capture
and convey the significant architectural decisions that have been made on the system.
[This section defines the role or purpose of the Software Architecture Document, in the overall
project documentation, and briefly describes the structure of the document. The specific
audiences for the document should be identified, with an indication of how they are expected to
use the document.]
•Scope
[A brief description of what the Software Architecture Document applies to; what is affected or
influenced by this document.
Regarding small projects (defined in Project Management Plan), just need diagram / views and
simple explanation in each section.]
•References
[This subsection should provide a complete list of all documents referenced elsewhere in the
Software Architecture Document. Each document should be identified by title, report number (if
applicable), date, and publishing organisation. Specify the sources from which the references
can be obtained. This information may be provided by reference to an appendix or to another
document.]
•Overview
[This subsection should describe what the following sections of the Software Architecture
Document contain and explain how the Software Architecture Document is organised.]
• Architectural Representation
[This section describes what software architecture is for the current system, and how it is
represented. For Use-Case, Logical, Process, Deployment, and Implementation Views, it should
list the views that are necessary, and for each view, explain what types of model elements it
contains.]
• Use-Case View
[This section lists use cases or scenarios from the use-case model if they represent some
significant, central functionality of the final system, or if they have a large architectural coverage
- they exercise many architectural elements, or if they stress or illustrate a specific, delicate
point of the architecture.]
• Use-Case Realisations
[This section illustrates how the software actually works by giving a few selected use-case (or
scenario) realisations and explains how the various design model elements contribute to their
functionality.]
• Logical View
[This section describes the architecturally significant parts of the design model, such as its
decomposition into subsystems and packages, and for each significant package, its
decomposition into classes and class utilities. It should show any architecturally significant
classes and describe their responsibilities, as well any key important relationships, operations,
and attributes.]
[The logical view is concerned with the functionality that the system provides to end-users. UML
Diagrams used to represent the logical view include Class diagram, Communication diagram,
and Sequence diagram]
• Overview
[This subsection describes the overall decomposition of the design model in terms of its
package hierarchy and layers.]
• Description
Package Name Description
Package 1
Package 2
…
•Common Sequence Diagram
<Include common sequence diagram of the system>
For each significant class in the package, include its name, brief description, and optionally a
description of some of its major responsibilities, operations and attributes.]
[The development view illustrates a system from a programmer's perspective and is concerned
with software management. This view is also known as the implementation view. It uses the
UML Component diagram to describe system components. UML Diagrams used to represent
the development view include the Package diagram]
• Process View
[This section describes the system's decomposition into lightweight processes (single threads of
control) and heavyweight processes (groupings of lightweight processes). The section should
be organised by groups of processes that communicate or interact. The main modes of
communication between processes should be described, such as message passing, interrupts,
and rendezvous.]
[The process view deals with the dynamic aspects of the system, explains the system
processes and how they communicate, and focuses on the runtime behaviour of the system.
The process view addresses concurrency, distribution, integrators, performance, and scalability,
etc. UML Diagrams to represent process view include the Activity diagram]
•Overview
[This subsection names and defines the various layers and their contents, the rules that govern
the inclusion to a given layer and also the boundaries between layers. A component diagram
that shows the relations between layers should be included.]
•Layers
[For each layer a subsection with its name should be included, along with an enumeration of the
subsystems located in the layer, and a component diagram.]
• Quality
[A description of how the software architecture contributes to all capabilities (other than
functionality) of the system: extensibility, reliability, portability, and so on. If these characteristics
have special significance, for example safety, security or privacy implications, they should be
clearly stated.]
• Other Considerations
[This section provides a description of other approach/ solutions that were considered in
selection process for the above architecture, i.e., a brief explanation of advantages and
disadvantages of the selected architecture in comparison with others. It should be a clear
answer to the question why the above architecture is selected for this system, not the others.]
Depends on the nature of the project – TA decides which non-functional requirement is
applicable or not and list all of them here with corresponding solutions.
•Scalability
[The web application will support hosting on a load-balanced web server farm.]
•Portability
[The application will be able to be accessed via standard PC/Laptops running the latest MS
Windows operating system.]
•Security
The system shall be designed not to be prone to the OWASP top 10 Web Application Security
and well compliant with data protection rules.
Security Risks:
• A1: Injection
The detail of items to implement is descripted in the Secure Coding Checklist tab of
CodingReviewChecklist file but it will be tailored before starting the project.
[For data protection, clarify with the client what sensitive data must be secured, how it should be
handled in the system, and provide a solution to protect it.]
•User Interface
[Most effort of development stage including bug fixing is spent on GUI almost. Ex: on iPad
Safari browser, it does not support cancel the action when clicking on the back button, so
implementing the dirty checking for this browser maybe impossible.]
•Usability
[Usability is very important to end-users, so customer will take care much on this. Propose a
solution should count usability will be always good.]
•Performance
[It’s very hard to determine a fixed number such as how many seconds a page will load in an
application until we have an almost completed flow. So, if possible, never commit any fixed
number, instead propose actions for tuning if there is any performance issue occurred.
Solution which is proposed should cover the number of concurrent users which is the main
factor impact quite much on performance.
Many performance issues relate to database design which is not good. Considering tuning
database performance, replication, clustering…
In some case, software solution cannot solve performance issue, considering hardware
configuration includes load balancing (software / hardware) or clustering.]
•Supportability
[Making an application display good on almost browser is always a difficult mission. Considering
limit the browser and its version.
Considering environment on client side and on developer side, if there’re differences may lead
some hard-reproduced issues.]
•Transaction Management
To put corresponding solution
•Exception Handling
To put corresponding solution
•Logging
To put corresponding solution.
• RabbitMQ
• xUnit, Moq, Specs: For writing the unit and integration testing
• Angular 2
• Automapper
• log4net
• AutoFac
The following diagram is based on a proven system architecture which has been running for
over six years with a high volume of traffic, with some added improvements to support fail-over
fully within a data centre.
Figure xxxx. System overview which supports scalability and failover within one data centre.
No Item Name Description
• Optional
3 Proxy Server (for Load • HTTP load balancer using IIS ARR. We also
Balancing) can apply hybrid solution by using common
open source such as Nginx, HAproxy run on
Linux OS.
4 Web Server • Server that hosts the website with IIS web
server installed. Recommend using IIS 8.x
6 File Server Role • A Windows server that installs the File Server
Role feature which is the built-in to Windows.
• Supports failover
• Connection String:Data
Source=myServerAddress;Failover
Partner=myMirrorServerAddress; Initial
Catalog=myDataBase;Integrated
Security=True;
Workflow:
• User requests a page of the domain xyz.com for the first time
• Browser lookups DNS records on the DNS server to identify the ARR cluster’s IP
address
• If CDN is enabled, the browser will download static content from CDN servers, and
dynamic content will be downloaded from the ARR cluster
• Depending on the configuration of ARR, the user’s request will be served by a specified
web server. If sticky session is enabled in ARR, after the second request, all the content
will be served by the web server which has served the first request.
• If a request is made for a media file (thumbnail, video…), content will be served by the
File Sharing cluster.
• If the request relates to the Cache which is implemented in the Application tier, content
will be served by Redis.
As Redis is used as a distributed cache service, all the web servers will return the
identical result if they are given a request for the same cached object.
• Normally, most of requests will relate to the database. With support from Witness,
application software does not need to know whether the principle is down or not. Auto
switching is done in the background without human intervention.
As shown in the above diagram, Option 1 will be costly in terms of buying servers and licenses.
The below diagram describes the system architecture which supports scalability with less
failover capabilities.
Figure xxxx. System overview which supports scalability without failover.
Redis cache server will be merged into the File Server. In this case, Redis will run on Windows
64 bit and is installed as a Windows Service.
•
Project can refer ArchitectureDesign_Example on PAL (Process Asset Library) as an example.
Especially, project applies.NET and uses Common library can use this document and modify it
based on project characteristic. It will save about 70% effort for design document.