官术网_书友最值得收藏!

Architecture: First Steps

How do business requirements dictate architectural decisions? Lets understand this through a quick and small example. Assume that a software company, Takshila Inc., has recently bagged the contract for building a new inventory management system for a local cosmetics manufacturing firm. After the initial talks with the stakeholders, the business analyst from Takshila comes up with high-level specifications, which are:

  • The system should be accessible from any online location
  • The system should be able to process multiple orders at the same time
  • The system should be able to interact and process information from different locations having different databases
  • The system should interact with other software packages (such as financial software) already in use by the company
  • The system should be easy to customize later by the internal development team

With these requirements in mind, and after detailed discussions with team members, the software architect has come up with the following architectural specifications for the proposed inventory management software:

  • The system should be web based, using a thin-client architecture.
  • The system should have built-in multithreading capabilities.
  • The system should be database-independent, which means that the system should be able to work with multiple types of databases without changing the code—probable use of dependency injection.
  • The system should expose a set of functions as an API, and should also be able to import data from other sources and process this data in its own tables.
  • The system should have loosely-coupled tiers, so that each individual tier has no dependency on the other and can be used with any other tier.

Note how the business requirements have been translated into architectural specifications, and still there is not a word about a programming or development platform! So the architecture has nothing to do with development platforms, programming languages, design and so on. We can create a system satisfying the above requirements in many ways, using different designs and probably using different platforms too (for example, one could either use ASP.NET or JSP/J2EE). In short, the architecture does not care whether you use LINQ, AJAX, or Ruby on Rails. As long as you are meeting the architectural specifications, you are free to choose your own technology and tools.

主站蜘蛛池模板: 商河县| 商都县| 木兰县| 巫溪县| 米易县| 十堰市| 林口县| 包头市| 崇阳县| 淳安县| 阿拉尔市| 江安县| 林州市| 承德县| 丹寨县| 黄冈市| 巨鹿县| 珠海市| 海原县| 庆安县| 轮台县| 闽清县| 永顺县| 东方市| 翁源县| 浦城县| 渭源县| 塔河县| 逊克县| 深泽县| 田阳县| 罗定市| 崇文区| 华宁县| 旬阳县| 石河子市| 陵水| 弥勒县| 南木林县| 阜康市| 新郑市|