A Practical Guide to Architecting
Like an artist staring at a blank canvas, a politician starting with a clean slate, or a land developer overlooking a new piece of property — the green field that an IT manager faces at the beginning of a new project can be both energizing and scary.
In fact, building a software system from the ground up is not unlike most processes. You develop short term goals based upon your intended outcome, and lay out the steps needed to reach each of these. The key to success is often in adhering to the KIS rule: Keep It Simple. When defining architecture, there is a tendency to try to plan for anything that may happen with the business. It is far better to build something practical for today, however, aligning with the planning horizon and expected solution lifespan. For those organizations with the will and the capacity to manage project architecture themselves, here is six-step overview.
Six steps to designing a new solution architecture
-
Identify architectural patterns. These includes layered design, SOA or client/server. Since 80+ % of Coherent Solutions' work is in layered web applications — with elements of SOA — we will use that pattern, which partitions the concerns of a software system into stacked layers and usually includes:
- The database
- Data abstractions
- Algorithms
- The user interface
-
Define the layers and cross-cutting concerns. Your business requirements and use cases will help you describe these, but typical layers include the data source, data access, business, services (which provide interfaces between the system being developed and the outside) and the user interface. These get crosscut with must-haves, like security, caching, performance, scalability, maintainability, etc. The table below shows how these needs and wants can be graphically portrayed in relation to business analysis artifacts.
Use Cases/Requirement Services Layer Present Layer Business Layer Data Layer Notes Use Case 1 x x x Use Case 2 x x x x Business Requirement 1 x Business Requirement 2 x Business Requirement 3 x x -
Create the high-level design. This is done by determining the components of the system, based on requirements, and mapping these to the layers. In a bank's mortgage system, for example, components would include credit bureau information, property indexes, and a rate calculator, which would be mapped to the layers of the system, including data access, business, services and user interface layers. You will need to determine the logical services within the components, and in developing the design you want full traceability between analysis and the design artifacts.
-
Develop the physical architecture. Define how your logical architecture will map to the physical entities such as servers, data centers (for large solutions), infrastructure like firewalls, load balancers, etc. In mapping the flow of information to these components, you must also keep in mind how security, performance and maintenance will work within the structure. You don't want to end up with an entire system that shuts down for any small repair, or slows down beyond a few users when you expect to eventually have thousands.
-
Use available frameworks and toolsets. Many technical components can be purchased or appropriated from your other systems to work in the new one. You can often simplify the development process and improve the quality of the resulting solution, when you leverage code generation software, unit testing libraries, caching frameworks, validation, presentation controls and more. Use these!
-
Prioritize and validate quality attributes. Performance, scalability, security and maintenance are the primary quality concerns and, without endless resources, one often has to give to accommodate another. So if you expect frequent changes and updates, you may have to settle for less speed. And if you want the system to scale up to one million users from one thousand, you need to build in the necessary infrastructure to handle that load.
Learn more about our Java Web development, as well as .Net application development services.
| Next > |
|---|







