Lessizmo

Aspects of System Design

System design is a complex process that requires attention to multiple factors. Below is a list of key aspects to consider, which can serve as a guide during sytem design or as a checklist when reviewing it. This list is not exhaustive, and the importance of each aspect may vary depending on the system being designed. Each section is presented as questions to help you think about the aspect, and assumes that the system is being modified to make it applicable not only to initial design but to the entire lifecycle of a system.

User Interface

Are there any changes to the user interface? This includes, but is not limited to:

External Interface

Are there any changes to the external interfaces of the system? External interfaces include:

The same applies to well-defined internal interfaces of the system, if any, such as REST APIs used internally or interfaces between subsystems.

Storage

Are there any changes to how storage is used? Storage includes:

Data Compatibility and Migration

Will existing data be compatible with the new code? If not, how will the data be migrated?

Configuration

Are there any changes to the configuration of the system? Configuration includes:

Core Logic

Are there any critical changes to the core logic of the system? This may include but is not limited to:

Security

Are there any changes to the security of the system? Security includes:

Performance and Scalability

Are there any performance or scalability concerns? Does a performance test need to be conducted?

Traceability

Can important actions be traced back to the user who performed them? This is important for auditing and debugging purposes.

Testability

How can the changes be tested? Should a test be added to the regression test suite?

Deployment

Is the deployment process, including installations and upgrades, affected in any way? Can the changes be deployed without downtime? If not, how much downtime is required?

English | 日本語
Copyright © 2016 - 2025 Lessizmo LLC