[vc_row][vc_column][vc_column_text]Many people don’t really know the difference between software architecture and software design. Even for developers, the line is often blurry and they might mix up elements of software architecture patterns and design patterns.[/vc_column_text][vc_title_v1_init title_heading=”The Definition of Software Architecture”][vc_column_text]In simple words, software architecture is the process of converting software characteristics such as flexibility, scalability, feasibility, reusability, and security into a structured solution that meets the technical and the business expectations.[/vc_column_text][vc_title_v1_init title_heading=”The Characteristics of Software Architecture”][vc_column_text]As explained, software characteristics describe the requirements and the expectations of a software in operational and technical levels. Thus, when a product owner says they are competing in a rapidly changing markets, and they should adapt their business model quickly. The software should be “extendable, modular and maintainable” if a business deals with urgent requests that need to be completed successfully in the matter of time. As a software architect, you should note that the performance and low fault tolerance, scalability and reliability are your key characteristics. Now, after defining the previous characteristics the business owner tells you that they have a limited budget for that project, another characteristic[/vc_column_text][vc_column_text]comes up here which is “the feasibility.”[/vc_column_text][vc_column_text]We work to meet this ambitious goal by focusing on these key areas of conservation.[/vc_column_text][vc_image_box_v2_init image_one=”1758″][vc_column_text]SOLID refers to Single Responsibility, Open Closed, Liskov substitution, Interface Segregation and Dependency Inversion Principles.[/vc_column_text][vc_title_v1_init title_heading=”Software Design”][vc_column_text]While software architecture is responsible for the skeleton and the high-level infrastructure of a software, the software design is responsible for the code level design such as, what each module is doing, the classes scope, and the functions purposes, etc.[/vc_column_text][listitems_v1_init list_style=”type_three” list_items_repeater=”%5B%7B%22icon_fonts%22%3A%22fa%20fa-glass%22%2C%22list_items%22%3A%22Single%20Responsibility%20Principle%20means%20that%20each%20class%20has%20to%20have%20one%20single%20purpose%2C%20a%20responsibility%20and%20a%20reason%20to%20change.%22%2C%22transitions%22%3A%220%22%7D%2C%7B%22icon_fonts%22%3A%22fa%20fa-glass%22%2C%22list_items%22%3A%22Open%20Closed%20Principle%3A%20a%20class%20should%20be%20open%20for%20extension%2C%20but%20closed%20for%20modification.%20In%20simple%20words%2C%20you%20should%20be%20able%20to%20add%20more%20functionality%20to%20the%20class%20but%20do%20not%20edit%20current%20functions%20in%20a%20way%20that%20breaks%20existing%20code%20that%20uses%20it%22%2C%22transitions%22%3A%220%22%7D%5D”][vc_image_box_v2_init imageboxstyle=”style_three” video_icon_fonts_one=”fa fa-play” video_button_link_one=”https://www.youtube.com/embed/lvYnfMOUOJY” image_one=”1753″][vc_column_text]SOLID refers to Single Responsibility, Open Closed, Liskov substitution, Interface Segregation and Dependency Inversion Principles.[/vc_column_text][/vc_column][/vc_row][vc_row][vc_column][quotes_v1_init quotes_style=”type_two” quotes_description=”Thanks for reading! If you are interested in machine learning (or just want to understand what it is), check out my Machine Learning is Fun! series too.”][/vc_column][/vc_row]