What are the standards or recommendations for developing a high-level design of an existing software/application? Are there any reference guidelines that one can follow to build a high-level design? So that all the stakeholders understand the design in the same manner.
Software/Application High Level Design
609 Views Asked by Nabeel Abid At
2
There are 2 best solutions below
Related Questions in ARCHITECTURE
- Where to store secret token for an embeddable web widget?
- Separation of Students and Users in NestJS Microservice architecture
- What's the right ZMQ architecture for my scenario?
- Javers in microservice architecture
- How to prevent users from creating custom client apps?
- How to manage different repositories for different clients with the same project?
- Adding users file storage feature to my application
- Transform Load pipeline for a logs system: Apache Airflow or Kafka Connect?
- Shoulld I decode JWT only on auth server?
- How to stored last ~1500 events in Sorted Set in Redis
- Should data be standardized on the backend or the client (front-end, mobile app)?
- Can I treat CNN channels separately to make placement predictions?
- How to handle sync distributed transaction in microservices?
- Database design, authentication and authorization in a microservices ticketing system
- Is there any example or design of a queue system in microservices?
Related Questions in SOFTWARE-DESIGN
- Adding users file storage feature to my application
- How to use GoF design pattern for software robustness?
- Handling media in chat apps
- In DDD where to handle interaction with external services that is part of business logic? In Domain Model or in Command Handler?
- which programming language is suitable for this task?
- Is it good practice to derive a builder from the class it builds?
- Liskov Substitution Principle: Confusion about additional Functionalities of sub types
- Handle changes in calculation logic for order system
- Having all features in single application
- The best representation for duration between dates in rest api
- Broadcast events to all Application Instances
- Security and users in a microservice architecture
- Is "abc" + 5 considered an expression in python?
- Architecture, EF Core 8 and large SQL queries best practice question
- How to create database software with custom extension to save and reload later with C# WinForm App
Related Questions in HIGH-LEVEL
- How to use GoHighLevel API
- Display URL as an image in Javascript
- How to stop multiple threads (Tasks) from an external REST API call?
- How do high level languages [eg: c#, javascript, python....] create arrays
- Does this coding answer look good?
- Is there an argument that can be made the BASIC is a higher level language than Javascript?
- Translate "let static 2 = argument 1" to VM code
- Software/Application High Level Design
- How to handle sequential and concurrency in Event ticketing System Design
- Using the random() in LiveCode
- How to convert object into array of objects
- How to add a metric summary to a canned tensorflow Estimator?
- I have a confusion when differentiating between Source code, Object code, Assembly code, and Machine code
- React Best Practices for Multiple Widget Application
- Programming with HLA
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
As I understand, the question is about developing and representing the high level design of an existing application. Assuming that the stakeholders are from varied backgrounds and not only technical folks, there can be multiple ways to represent the design. I would start with something like below:
Use Case Diagram - Any system will generally have actors and the various scenarios where the actor interacts with the system. The use case diagram helps lay out different scenarios of a system - for example - for a shopping application - user browsing the products, user searching for a product, user viewing the details of a product, user making a purchase, etc. This way we can capture what all capabilities the system provides and how do different actors interact with the system. To keep it at high level, the important scenarios can be included and the non-important ones can be excluded.
Flow Chart - Although a very traditional kind of diagram, Flow Chart is still very effective to convey a lot of information. The flow of data or process can be represented by the flow chart. A system can have many sequential and/or parallel activities going on. Many systems have a start (trigger) point while some systems are cyclic (having a loop). Also the system can have alternate paths depending on the conditions. These decision points and alternate paths can be very well represented by flow charts.
ER Diagrams - Any system generally has some entities and the entities are associated with other entities in some fashion. For example, a customer entity is associated with the order entity and has one to many relationship. While the flow charts and use case diagrams focus on the flow of data/process and the interactions, the ER diagrams focus on the relationships between entities. It provides a great way to understand the high level entities involved in the system and how are they related. Usually these relationships are long lasting, they do not change as frequently as the the data flow or processes change.
Deployment Diagram - Another diagram that provides a different type of information is the deployment diagram of a system. However this is more technical and may not be required at a high level but I think it provides a great value. Basically in a deployment diagram we specify how the system is deployed. For example, in an online shopping application, the diagram can show a rectangular box representing a browser and then show the load balancers which would be contacted first when the requests first hit the servers, and then show the application servers that handle the request, include the caching servers, show the databases, queuing mechanisms such as Kafka and so on. By modelling the deployment, someone can get a high level overview of what computer systems are involved to make the whole system function.
Hope this answer makes sense and provides some pointers for your question.