With new and hot technologies skyrocketing across the software industry on a regular basis, most of the attention in system development is turned towards tools, development methods, and user experience, as opposed to the software architecture itself. The system architecture, consisting of the software requirements and specifications, database design, and high-level system organization, defines the cohesive vision that guides construction of the software. More than any other factor, the system architecture will define the reliability, maintainability, flexibility, and scalability of an application.
In contrast to other industries, such as residential and commercial building design where the architects are the rock stars of the industry, software architects often find themselves in the midst of conflict. Drafting the vision itself is rarely enough to bring a project to fruition – building software requires high maintenance throughout the course of development to make sure that the final software achieves its user requirements and goals. With challenges in adapting to changing user requirements, overcoming technology limitations, and managing competing factors of budget, reliability, and the long-term system goals of maintainability and flexibility, system architecture is a demanding profession.
What makes system architecture more of an art than a science, however, is the lack of a cohesive set of principles that define a successful system. A layperson viewing an application can rarely tell if it will stand the test of time, successfully handling business requirements of both today and those ten and twenty years down the road. Even experienced programmers can rarely tell the difference between an application that is good and one that is great. In fact, if defining great applications as those that deliver the most return on investment over the life-cycle of the software, the great applications can often even be disliked by some of their users, by preventing them from taking certain actions that might destabilize the software. Saying “no” to certain features can be a better long-term choice than a consistent “yes.”
For business software, however, there are two key areas where software architecture needs to say “yes.” One is in making sure that the system grows with the user data, so that key information relating to sales and operations is stored in the system and not kept on external notes and spreadsheets. The other key factor in successful system architecture is enabling business analytics and insights that will help grow the business and identify potential opportunities for productivity enhancement or increased revenue. A system that can adapt to changing business models and still provide decisive business insights in each subsequent use-case is truly great.
While there have been attempts at formalizing system architecture, from design patterns to design methodologies, few have stood the test of time. Still, software development is its relative infancy, with information systems a new field of study compared to the other arts and sciences. Perhaps twenty to fifty years from now, when software components have become more standardized, the art of software architects will finally have the chance to shine.
Written by Andrew Palczewski
About the Author
Andrew Palczewski is CEO of apHarmony, a Chicago software development company. He holds a Master's degree in Computer Engineering from the University of Illinois at Urbana-Champaign and has over ten years' experience in managing development of software projects.
Google+
there are softwares that you could learn how to desgin or build your own home.. I’m not familiar with Dwell mag.. in SIMSONLINE..we used to desgin and build all kinds of homes, shops, for fun and learning ..sounds funny but there is contest for most artistic and unique desgins….hope you desgin and build soon your future home.