During our years of experience with our software architecture consulting service we have been witnesses of how people underestimate the importance of Software Architecture, some don’t even know what it is or how it can benefit them to clearly define their software architecture requirements before programming new software.Let’s say a programmer is like a a builder. Can a builder start constructing without an architect? Well, in theory this is possible but in the long run the house or building will not have a proper foundation to support an earthquake or any other structural change if expansion is required. Solid foundation for the software project will warrant that the project will be scalable and powerful.So in order to understand the key forces that are framing architectural decisions at the moment that will have an effect in future decisions for scalable projects we need to talk about user demand, business demand, the concept of support to work with different work styles and workflows, and most importantly the improvement of adaptability of software design. Here are some key concepts to understand the different approaches of software architecture:Service Oriented Architecture (SOA) or user empowerment: Is driven by vendors, products and technologies. It always represents a business activity with an specific outcome and a given aim. Besides, since it is intended for the end user it has to be intuitive and has to be concerned with correct behavior, good performance and flexibility. Making it easy for the customer to interact with the application instead of misleading with poor user experience like many do. Understanding of scenarios and the process of making them as simple as possible will deliver an excellent user experience.Market Maturity: Take advantage of the maturity of the market by assessing existing platforms and technology options provided. This way you would save time and rely on frameworks that already provide rich sources of proven solutions for common problems and focus in what really matters to you which is the aim of your application.FURPS: Take into account capability, reusability, security, the human factor such us aesthetics, reliability, performance, capacity, testability, maintainability and localizability when building software architecture. The just mentioned points are some of the factors to take into account but not the only ones, so be on the lookout for new trends, composition models, the increase of network bandwidth, hardware performance, cloud-based computing and any other operation you can automate within the software.The current thinking on architecture is evolution so if you want to grow you must have a very consolidated base of variety of different development opportunities so you can scale your software.These are some questions you might consider when building software architecture: What are the foundational parts of the architecture that represent the greatest risk if you get them wrong?What are the parts of the architecture that are most likely to change, or whose design you can delay until later with little impact?What are your key assumptions, and how will you test them?What conditions may require you to refactor the design?To wrap it up, start with a baseline to get the big picture a then consider using a tried and true classification scheme for architectural requirements and gather requirements of a system of users, customers and other stakeholders to help you not overlook any potential problems in the evolving future.