Understand the Business Domain

Understand the Business Domain
Mark Richards
EFFECTivE SoFTWARE ARCHiTECTS understand not only technology but also the business domain of a problem space. Without business domain knowl- edge, it is difficult to understand the business problem, goals, and require- ments, and therefore difficult to design an effective architecture to meet the requirements of the business.
It is the role of the software architect to understand the business problem, business goals, and business requirements and translate those requirements into a technical architecture solution capable of meeting them. Knowing the business domain helps an architect decide which patterns to apply, how to plan for future extensibility, and how to prepare for ongoing industry trends. For example, some business domains (e.g., insurance) lend themselves well to a service-oriented architecture approach where as other business domains (e.g., financial markets) lend themselves more toward a workflow-based architec- ture approach. Knowing the domain helps you decide which architecture pat- tern may work best to satisfy the specific needs of the organization.
Knowing the industry trends of a specific domain can also help a software architect in designing an effective architecture. For example, in the insurance domain, there is an increasing trend toward “on-demand” auto insurance, where you only pay for auto insurance when you actually drive your car. This type of insurance is great if you park your car at the airport on Monday morn- ing, fly off to your work destination, and return Friday to drive back home.

Understanding such industry trends enables you as a software architect to plan for these trends in the architecture, even if the company you are working with hasn’t planned for them yet as part of its business model.
Understanding the specific goals of the business also helps you design an effec- tive architecture. For example, do the goals of the particular business you are working for include non-organic growth through heavy mergers and acqui- sitions?
The answer to this question may influence the type of architecture you design. If the answer is yes, the architecture might include many layers of abstraction to facilitate the merging of business components. If the goals of the business include increased market share through a heavy online presence, then high availability is most likely going to be a very important attribute. As a software architect, always understand the goals of the company you are work- ing with, and validate that the architecture can support these goals.
The most successful architects I know are those who have broad hands-on technical knowledge coupled with a strong knowledge of a particular domain. These software architects are able to communicate with C-level executives and business users using the domain language that these folks know and understand. This in turn creates a strong level of confidence that the software architect knows what he or she is doing. Knowing the business domain allows a software archi- tect to better understand the problems, issues, goals, data, and processes, all of which are key factors when designing an effective enterprise architecture.
Author bio available on page 11.
Collective Wisdom from the Experts 61


Programming.Is. an.Act.of.Design Einar Landre
KRiSTEn nygAARd, FATHER oF oBjECT-oRiEnTEd pRogRAMMing and the Simula programming language, used to say programming is learning. Accepting the fact that programming—or more precisely, software develop- ment—is a processes of discovery and learning, not a process of engineer- ing and construction, is fundamental to bringing software practices forward. Applying the concepts of traditional engineering and construction on software development does not work. The problems have been documented and com- mented upon by leading software thinkers for more than 30 years. As an exam- ple, in 1987 Fredric Brooks, Jr., stated in the “Report of the Defense Science Board Task Force on Military Software” that the document-driven, specify- then-build approach lies at the heart of many software problems.
So where should the software industry look to improve its practices? What about the industries involved in production of sophisticated mass-market products such as cars, pharmaceutical drugs, or semiconductors?
Let’s take a look at the car industry. When planning a new model, the first thing is to choose a concept or archetype. It’s primarily an architectural positioning mechanism. The BMW X6 is an example of a new concept that combines the properties of an SUV and a coupe into what BMW calls a sports activity coupe. Before you can purchase a new X6, BMW has invested thousands of hours and millions of dollars in both its vehicle and manufacturing design. When BMW receives your order, one of its assembly lines will kick in and produce your customized version of the X6.
Understand the Business Domain的更多相关文章
- Domain Driven Design
在Spring官网的第一个tutorial中看到了这种 设计模式 Domain Driven Design 找到了篇介绍这个得文章: What is Domain Driven Design? &qu ...
- domain or business logic
Here are a few of the questions you should ask when writing business logic: ¡Do you fully understand ...
- Domain Driven Design and Development In Practice--转载
原文地址:http://www.infoq.com/articles/ddd-in-practice Background Domain Driven Design (DDD) is about ma ...
- The Business Of Open Source
http://oss-watch.ac.uk/resources/businessofopensource by Matthew Langham, Indiginox on 3 February 20 ...
- ORM Entities vs. Domain Entities under Entity Framework 6.0
I stumbled upon the following two articles First and Second in which the author states in summary th ...
- BA Practice Lead Handbook 1 - Why Is Business Analysis Taking The World By Storm?
The articles in this series are focused on individual Business Analysts and their managers. https:// ...
- 【ASP.NET MVC 5】第27章 Web API与单页应用程序
注:<精通ASP.NET MVC 3框架>受到了出版社和广大读者的充分肯定,这让本人深感欣慰.目前该书的第4版不日即将出版,现在又已开始第5版的翻译,这里先贴出该书的最后一章译稿,仅供大家 ...
- Follow me to learn what is repository pattern
Introduction Creating a generic repository pattern in an mvc application with entity framework is th ...
- Event Sourcing pattern
Event Sourcing pattern Instead of storing just the current state of the data in a domain, use an app ...
随机推荐
- TSS (任务状态段)的作用及结构
1.什么是TSS TSS全称Task State Segment ,是操作系统在进行进程切换时保存进程现场信息的段 2.TSS什么时候用,有什么用 TSS在任务(进程)切换时起着重要的作用,通过它保存 ...
- MongoDB学习-->命令行增删改查&JAVA驱动操作Mongodb
MongoDB 是一个基于分布式文件存储的数据库. 由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关 ...
- [译]pandas中的iloc loc的区别?
loc 从特定的 gets rows (or columns) with particular labels from the index. iloc gets rows (or columns) a ...
- activemq的安装启动
Activemq安装和启动 官网:http://activemq.apache.org/ 安装启动: $ tar -zxvf apache-activemq-5.11.1-bin.tar.gz ...
- iOS学习笔记48-Swift(八)反射
一.Swift反射 所谓反射就是可以动态获取类型.成员信息,在运行时可以调用方法.属性等行为的特性. 在使用OC开发时很少强调其反射概念,因为OC的Runtime要比其他语言中的反射强大的多.不过在S ...
- java面试题之Thread和Runnable是什么关系?
Thread实现了Runnable接口,使得run方法支持多线程: 因类的单一继承原则,推荐多实用Runnable接口
- python 序列化之pickle模块 json模块
一 pickle import pickle s='dd' print(pickle.dumps(s)) 输出: b'\x80\x03X\x02\x00\x00\x00ddq\x00.' pickle ...
- ACE的饼图显示保留两位小数
修改源js文件:jquery.flot.pie.min.js <script src="/static/assets/js/jquery.flot.pie.min.js"&g ...
- 解决c#所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 转载
最近做一个后来程序,启动了事务后有一段操作业务,当运行一段时间后,出现这个异常 CLR 无法从 COM 上下文 0x1b1c38 转换为 COM 上下文 0x1b1da8,这种状态已持续 60 秒.拥 ...
- uva 12723 概率dp
Dudu is a very starving possum. He currently stands in the first shelf of a fridge. This fridge isco ...