System Architecture - How to analyze and model it
While there are many ways to model a system's logical design and use (e.g. web flow diagrams depict how web pages link together, ERDs show how database tables are designed and relate, and business process flows show the steps required to complete a task), it can also be critical to understand all the components your as-is or to-be system requires to properly function. What are the relevant technical components of a system? There are a few ways to think about this but applications tend to include standard layers that you may recall from the "layer cake" discussed in MIS301.
- User
- Application Layer (e.g. code files to create the views/forms, queries or model code to connect front-end and back-end database)
- Database Layer (DBMS, Database, Tables)
- Operating System (The OS your system runs on top of impacts things like compatibility which affects the choice of database platform and application tools used to build the system)
- Hardware (In today's cloud-based world, this may not be as relevant. You can also think about this has your hosting package which all other layers are built upon)
Here's a general example of how systems are architected:
Another example: MIS 333K - Consider the components of your system from MIS 333K. You used Azure hosting to spin up a server running Windows Server edition. You installed SQL Server and built your database and relevant tables using Entity Framework. Using C#, your C# controller files took HTTP user requests and communicated to the model file which retrieved or updated the appropriate data and materialized that in HTML views which were displayed to the user using a bootstrap styling.
Checklist framework to analyze system architecture
Consider the 333K example above. Remembering all of these components and how they worked together to form your final web application could be a challenge. In order to ensure we fully can grasp the system architecture of the client's as-is system and the future "to-be" system, we'll start by using a System Architecture Checklist as a framework to know how to properly inventory all the key parts of a system. The checklist serves as a set of questions grouped by system layer to help you identify all the systems used, how they are configured, and how they interact with each other and the users.
How to properly use the checklist:
- Start by downloading the System Architecture Review Checklist template Download System Architecture Review Checklist template and note how the criteria are broken up in the different layers of a system. Be sure to notice the tips and notes that accompany the criteria.
- Print this out and take it with you in your initial meetings with the client to aid you in your as-is system analysis.
- After you complete a thorough analysis, you'll have a much better picture of what the as-is system is but also what tools the client has at their disposal which is useful to know before you come up with to-be solutions.
Template & Example:
- Checklist Template: Click the link to download the System Architecture Review Checklist template Download System Architecture Review Checklist template.
- Checklist Example: Custom Real Estate Website Download Custom Real Estate Website
System Architecture Model Example: Below is a system architecture model based on the example listed above (Custom Real Estate Website) Download Custom Real Estate Website). Download the example of the completed checklist template and see how the checklist reveals the detail need to depict the model below.
Why does modeling the system architecture matter?
An engineer wouldn't begin building a house without knowing what materials they have at their disposal and what components must all come together to realize the solution. Even if you're creating a simple Wordpress site, you need to know things like:
- What version of PHP the host is running
- If plugins you've chosen are compatible with that version of PHP
- If plugins are incompatible with other plugins
- What hosting package you have and what limits there are on it
- What kind of database your website is using (note: if it's Wordpress, it's MySQL)
- What are the name and login credentials of the database and server
By modeling the system's components and architecture, it forces you to go to that deeper, engineering level of detail that is going to be critical to know what is technically feasible when designing your system.