Im studying about software architecture but Im with some doubts. Because for example if you dont have any or much experience in developing a application how can you build an useful architecture for a application?

For example if we already have the requirements phase for a web application like a ecommerce app where we have use cases like: buy product, create new product, login, etc, with a structure like the use case below for create a new product.

How we can go from these requirements use cases to build/describe an useful architecture before building the system if you only know that you will use a framework like codeigniter but you only know how to do basic things, but never created a complete app? That is, how to build/describe an useful software architecture for a system if you never build a complete app and therefore you dont know very well how you will build the app, so how can we build/describe that architecture before implementing it?

Example of use case:

enter image description here

  • Here are some samples for bottom->top approach: extract the model from everything that is said and modelize it properly, find common behaviour to implements for multiple cases : forms validation & error messages, specific components like grids/tree, search engine. For top->bottom approach, you_ would start by group use cases together to form a coherent set of functionnalities that will work together, from that create an API representing each set of functionnalities. Each of those coherent should be the master of their own datas (tables, validation). – Walfrat Oct 12 '17 at 12:48
  • What does 'Insert' mean? Description of the type of information (e.g. geral supplier information) only serves to clutter the 'flow' descriptions. Add a 'Notes' section where you'd record random stuff like that and leave the 'flow' clean. Each sentence should say who does what to whom. Thus, 2 should be more like 'The administrator submits the product information to the system'. Now you can create a sequence diagram from that sentence. Also, notice how I gave an explicit name to the information instead of 'filled information'. What happens after the information is submitted? – Dunk Oct 12 '17 at 17:24

Software Architecture as a practice is really about the art of communicating constraints and quality attributes of a system. Your use cases help you to discover the functional requirements of the system that you build, however the architecture helps you to discover the design details and qualitative non-functional requirements of the system.

List of Software Quality Attributes

The goal of the architecture though is to help with the communication of the system, either to others or even yourself if you will be personally implementing this software. If you cannot realize what it is that has to be built, either because of lack of experience or some other reason, then you are correct you don't have enough information yet to formalize documentation around a software architecture.

No software engineer knows everything going into it, but generally what I do when I run into this situation is begin implementing a proof-of-concept on various technical details of the system until I have a clear understanding of the product I want to build. POC's can come in many different types and complexities. Some are near products in and of themselves, while others focus on a framework that you may not be terribly familiar with or a vendor product that is new to you. You can keep working on a POC until you think you have a firm grasp on the architecture of the system.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.