ad是什么的缩写| 两个b型血能生出什么血型的孩子| 日后好相见的前一句是什么| 无功无过是什么意思| 今年二十岁属什么生肖| 古驰属于什么档次| 现在有什么好的创业项目| 幽门螺旋杆菌吃什么药| 梦见好多猪是什么意思| 吃什么补充维生素| 时过境迁什么意思| 下巴痘痘反复长是什么原因| 情趣内衣是什么意思| 娇韵诗属于什么档次| 什么地点头| 什么叫辅酶q10| 7月22日什么星座| 低血糖是什么| 读什么| 经常做噩梦的原因是什么| 敛是什么意思| 气溶胶传播是什么意思| cip是什么| 姑姑和我是什么关系| 障碍性贫血是什么病| 夹心饼干是什么意思| 精修是什么意思| 带银饰有什么好处| 乳腺疼挂什么科| 什么叫黑户| 厘米为什么叫公分| 雪花鱼是什么鱼| 狮子座是什么象星座| 92年是什么年| 壬水命是什么意思| 草头是什么菜| 总胆红素高是怎么回事有什么危害| 什么方法可以快速入睡| 敛财什么意思| 做生意的人最忌讳什么| 肉什么结构| 老打嗝是什么病的前兆| 中国的国酒是什么| 中国第一艘航空母舰叫什么| 彩礼什么时候给女方| 1908年中国发生了什么| 红小豆和赤小豆有什么区别| 52是什么意思| 生产批号是什么意思| 倚老卖老什么意思| 华丽转身什么意思| 血热皮肤瘙痒吃什么药| 专属是什么意思| 苑字五行属什么| 口腔老是出血是什么原因| 边界是什么意思| cba什么意思| 什么叫世家| 鲤鱼打挺是什么意思| 鼠标cpi是什么意思| 贡菜是什么菜做的| 脑ct都能查出什么病| 有妇之夫是什么意思| 枸杞子和什么泡水喝补肾壮阳| 饮食清淡的标准是什么| 立冬吃什么东西| 尿潜血是什么原因造成的| 四季豆不能和什么一起吃| 大头菜又叫什么菜| 3.15是什么星座| 卖什么小吃简单挣钱| 吃什么能让月经快点来| 地下党是什么意思| 猪狗不如是什么生肖| 谷草谷丙偏高是什么原因| 脸上长粉刺是什么原因引起的| 什么东西含铅| 尿蛋白可疑阳性是什么意思| 京东e卡是什么| 二氧化钛是什么东西| 飞行员妻子有什么待遇| 女人吃什么补气血效果最好| 保鲜卡是什么原理纸片| ua是什么| 牙齿痒是什么原因| 什么情况下要打狂犬疫苗| 坨坨什么意思| 动脉硬化是什么意思| 孕妇梦见黑蛇是什么意思| 生理期吃什么好| 劫煞是什么意思| 考试用什么笔| 叶芽是什么| 大白刁是什么鱼| 活动无耐力与什么有关| 什么时候做人流才是最佳时间| 毛字出头念什么| 感染hpv用什么药| 丰胸吃什么| 苏轼的弟弟叫什么| 国色天香是什么生肖| 梦见自己鞋子破了是什么意思| 美团和美团外卖有什么区别| 苦瓜泡酒有什么功效和作用| 孕妇肾积水是什么原因引起的| 1972年出生属什么生肖| 笑气是什么东西| 2005年属鸡的是什么命| 胃酸分泌过多是什么原因造成的| 小孩脱发是什么原因引起的| 嗓子疼可以吃什么水果| 滑膜炎吃什么药| 贡品是什么意思| 人中短代表什么| 肌酐高是什么原因引起的| 三位一体是什么生肖| 心烦意乱吃什么药| 金鱼藻是什么植物| 汤去掉三点水念什么| 怕得什么| 12月25日是什么日子| 必有近忧是什么意思| 饭后痰多是什么原因| 伤到什么程度打破伤风| 山西属于什么地区| 全期猫粮什么意思| moncler是什么牌子| 撅眼是什么原因造成的| 舌苔厚有齿痕吃什么药| 立加羽念什么| 运是什么结构| 还人是什么意思| 暗里着迷什么意思| 小孩小腿疼是什么原因引起的| 胃肠镜能检查出什么病| 丁亥年五行属什么| 什么时候降温| 188什么意思| a型血可以接受什么血型| 79年的羊是什么命| 道士是什么生肖| 忽必烈姓什么| 龙须菜是什么植物| 人参补什么| 什么是三高| 脸上长痘痘是什么原因引起的| 十岁小孩尿床是什么原因| 男人梦见蛇是什么征兆| ufc是什么意思| 履约是什么意思| 剥皮实草是什么意思| 聚精会神的看是什么词语| 拔智齿挂什么科| 氧化性是什么意思| 凝滞是什么意思| 美瞳是什么| 孕妇梦见棺材是什么征兆| 参事是什么级别| 棉是什么面料| 拉拉裤和纸尿裤有什么区别| 带鱼为什么是扁的| 腊月十八是什么星座| 儿童坐飞机需要带什么证件| 勃起不够硬吃什么药| 冲击波治疗有什么效果| 2010年属什么生肖| 肝气犯胃吃什么中成药| 夏季有什么花| 跑完步头疼是为什么| 四菜一汤是什么意思| 这是什么英文| 丹毒用什么抗生素| 操逼是什么感觉| 内化是什么意思| 背疼是什么原因| 下水道井盖为什么是圆的| 什么是平年| 颅压高有什么症状| 处暑的含义是什么意思| 男生为什么要做包皮手术| 孕妇吃什么能马上通便| 腹膜后是什么位置| 尿常规白细胞3个加号什么意思| 送向日葵代表什么意思| 感冒没胃口吃什么好| 中国什么时候灭亡| 双侧骶髂关节致密性骨炎是什么病| 牛肉和什么炒最好吃| 胃一阵一阵的疼吃什么药| 缺少雌激素吃什么可以补充| 229什么星座| 徽音是什么意思| 暖手宝里面是什么| 狗眼屎多是什么原因| 青岛是什么省| 艾滋病有什么症状| 桂花树施什么肥| 样本是什么意思| 一鸣惊人指什么动物| 史迪奇是什么动物| 大便有点绿色是什么原因| 长期失眠吃什么药好| 1980年是什么命| 南下是什么意思| 疼和痛有什么区别| 下过海是什么意思| 慢性咽炎有什么症状| 老马识途是什么意思| 三峡大坝什么时候建成的| 狗狗咳嗽吃什么药好得快| 盆腔少量积液是什么问题| 离岸是什么意思| pvs是什么意思| 排卵期出血是什么原因引起的| 尿频尿急是什么原因| 遮挡车牌属于什么行为| 藏红花有什么作用和功效| 注是什么意思| 公务员国考和省考有什么区别| 六月初二是什么星座| bella是什么意思| 什么才叫幸福| feno是什么检查| 克加寸念什么| 世界上最大的哺乳动物是什么| 什么饮料去火| 半路杀出个程咬金是什么意思| 什么茶降血压| 心肌缺血是什么原因| 白鳍豚用什么呼吸| 胆红素偏高有什么危害| 甲状腺腺体回声欠均匀是什么意思| 什么不能托运| bbs是什么意思| 5月26日什么星座| 胃窦黄斑瘤是什么病| 白细胞低是怎么回事有什么危害| 小暑是什么意思| po是什么| 白头翁是什么意思| 北京中秋节有什么活动| 什么样的菊花| 黄芪主治什么病| 爱钻牛角尖是什么意思| 怀孕失眠是什么原因| 天天喝绿茶有什么好处和坏处| 禅让制是什么意思| 天天射精对身体有什么危害| 舜字五行属什么| 蛇胆疮是什么引起的| 03属什么| 男人吃秋葵有什么好处| 青蛇是什么蛇| 房间朝向什么方向最好| 物料是什么意思| 67是什么意思| 1938年属什么| 你的生命有什么可能| 2b铅笔和hb铅笔有什么区别| 两肋插刀是什么意思| 同型半胱氨酸高挂什么科| 情面是什么意思| 护理学是干什么的| 动不动就出汗是什么原因| 百度

Home > Articles

国产大型客机C919通过首飞技术评审

This chapter is from the book

Design is the process of making decisions. Which decisions? Ideally, the ones that will lead to project success! But decision-making is hard. It is fraught with uncertainty. We are often uncertain about our project requirements and project resources. We are uncertain about the evolutionary trajectories of the technologies we build upon. We are uncertain about our planning horizon. We may be uncertain about the costs of the choices we are making. We may even be uncertain about our own knowledge (although architects and others often fail in the other direction, being overconfident rather than underconfident—this is known as overconfidence bias).

As architects we are responsible for the decisions that we make. This is as it should be. So which practices are available to us to ensure that the decisions that we make are the best ones, given our abilities? That is the subject of this chapter. We begin by reviewing a set of decision-making techniques. Then we turn to the body of knowledge that we can employ, as architects, to make better, more confident decisions.

3.1 Making Design Decisions

We are seldom explicitly taught how to make decisions. It is somehow assumed that, given a proper education, we will make prudent choices. But this is not necessarily so. The field of design is littered with examples of “What were they thinking?!” The architects who are really good decision makers are often ones with decades of experience. They achieved their status through years of trial and error, by making mistakes and learning from their failures. This is clearly a suboptimal form of training—expensive and inefficient and not very scalable. Can we do any better? We think that we can!

3.1.1 Decision-Making Principles

In what follows we present nine general decision-making principles. By following these principles, or strategies, you are not guaranteed to make a perfect decision. That is clearly too high a bar. But you can certainly increase the likelihood that the decision you are making is a sound, well-reasoned one—which is why we recommend these principles. And while all of them are “common sense”, we see them violated over and over again in practice. The result of these (frequently avoidable) violations is projects with high technical debt, poor performance, poor scalability, stability issues, poor usability, and so on.

Principle 1: Use Facts

A fact is something that we believe to be true. Facts, and the evidence for them, are the foundations of logical reasoning. Incorrect or incomplete information may lead to invalid conclusions. An architect may hear praise for a new technology and base a decision on that, instead of testing it themselves. For example, a colleague of ours chose a NoSQL database in the Query side of a CQRS-based system (see Section 3.3.2) he was designing because he felt it was a good fit; he had not done any prototyping or analysis, but made this decision based on hearsay, experience, and gut feelings. Was this the right choice? Time will tell. To check the facts, he could have consciously considered: “What evidence supports the assumption that NoSQL will meet the system’s requirements now and in the future?” When we cannot have all the facts, we make assumptions, as we will discuss next. We make a similar decision, as you will see, in Chapter 8 (the case study where this decision was made). Was this the right decision?

Principle 2: Check Assumptions

In the absence of facts, we often make assumptions so that we can continue with the process of design. For instance, we may not know if a technology can perform adequately until we prototype the software. When we consciously make assumptions, we are saying that these assumptions will be good ones. Explicit assumptions can be checked. Implicit assumptions, by comparison, are more devious. We may even be unaware we have made them. For example, if we build our application with node.js based on an existing three-tier client-server architecture (which contains a monolithic database) without assessing the compatibility with the database’s performance characteristics, then this implicit assumption would not be checked, and that might create a performance risk for the system.

Principle 3: Explore Contexts

Contexts are conditions that influence software decisions. There are many contextual factors, such as development resources, financial pressures, legal obligations, industry norms, user expectations, and past decisions. For example, we might want to implement a scalable and highly reliable database system, but have a limited budget. Even though the budget is not a system requirement, it affects our decision on database license procurement. Some contexts will end up being constraints on design, such as team experience or expectations. Design contexts shape our decisions implicitly, yet are not necessarily technology related. Exploring contextual factors can broaden our design considerations. To check that we have considered contexts we may ask: “What are the contexts that could influence X?”, “Have I missed any contexts?”, and “Does the team have the experience in implementing X?”

Principle 4: Anticipate Risks

A risk is the possibility of an undesirable outcome. A documented risk contains an estimate of the size of the loss and the probability of the loss. There are many risks that an architect needs to estimate, such as extreme spikes of demand and security attacks. Anticipating and quantifying risks is the process of exploring the unknowns, including estimating the possibility of risks occurring and, if they occur, their impacts. Architects may reflect on risks by asking questions such as “What are the potential undesirable outcomes?” or “Is there a chance that X would not work?”

Principle 5: Assign Priorities

Priorities quantify the relative importance of choices, choices such as which requirement to implement or which solution to use. If we can afford to implement only one of the two requirements, which one is more important? Prioritization is required when the things that we desire are competing for the same limited resource (e.g., time, money, developer skills, CPU, memory, network bandwidth). Some of these priorities emanate from contextual factors. To sort out our priorities, we can ask: “Which requirement is more important?”, “What can we do without?”, and “What should we use this resource for?”

Principle 6: Define Time Horizon

The time horizon defines the time period relevant to a decision and its impacts. Risks, benefits, costs, needs, and impacts can change over time, and we want to anticipate how they might change. For example, we might estimate that the system processing load will reach 85 percent capacity in 3 years, or we might choose to deploy the system on premises in the short term while keeping alive the option to deploy it on a public cloud if that becomes more cost-effective.

Defining the time horizon allows architects to explicitly state and evaluate the pros and cons of specific actions (and nonactions) in terms of their short- and long-term impacts. Without explicit considerations of the time horizon and the reasoning that goes along with it, long-term considerations may be undermined, or short-term needs may be ignored. To define the time horizon, the architect may ask questions such as “What would be affected in the short and long term if I decide on X?” or “What needs to be considered in different time horizons for X?”

Principle 7: Generate Multiple Solution Options

Some architects will go with the first solution they think of without considering further options. If the architect is experienced and the problem is well understood and low risk, this approach may be ideal. But in more challenging contexts, considering only a single solution may be risky; the first solution is not necessarily the best one, especially when an architect is inexperienced or faces an unfamiliar situation. This behavior may be due to anchoring bias—a refusal to let go of the first idea. Generating multiple solution options helps an architect broaden the menu of solution choices and stimulate creativity. We can create a larger set of solution ideas by asking ourselves questions such as “Are there other solutions to this problem?” or “Can I find a better solution than X?”

Principle 8: Design Around Constraints

Constraints are limitations that set the boundaries of our design options. Constraints may come from requirements, contexts, technologies, and existing design choices. For instance, a CPU can compute only W instructions per second; the budget of the project is $X; the number of concurrent users supported by a software license is Y; platform Z doesn’t support a certain protocol; developers have no experience with some technology; and so forth. In software development, we often find interconnected sets of constraints: If we choose component A, we must also use component B. When there are no apparent solutions, architects must design around constraints and introduce novel solutions, relax constraints, or manipulate the contexts. An architect can check on constraints by asking, “If I choose X, would it limit other design options?” or “Are there any constraints that could impede this design choice?”

Principle 9: Weigh the Pros and Cons

Pros and cons represent the arguments for and against each of the choices in a selection. Weighing the pros and cons is heavily bound up with examining tradeoffs. The evaluation of the pros and cons allows architects to decide what to choose and what to avoid. A quantitative evaluation can be based on measurable elements such as costs, benefits, priorities, immediacy (i.e., time horizon), and risks. However, some pros and cons cannot be easily quantified. Consider the navigation menu design of a mobile app: How can one quantify the pros and cons of a hamburger menu versus a set of tabs? In this case, qualitative arguments such as ease of access, ease of learning, and effort to implement can be marshaled. Weighing the pros and cons offers architects the chance to think about the relative benefits and drawbacks and who they might affect. To check tradeoffs, the architect can ask questions such as “Are there more benefits from solution X than from solution Y?” or “Have we done a thorough tradeoff evaluation?”

Now that we have enumerated a set of principles, let us turn our attention to the design concepts that we use to structure the system and to support our most important quality attributes.

InformIT Promotional Mailings & Special Offers

I would like to receive exclusive offers and hear about products from InformIT and its family of brands. I can unsubscribe at any time.


水镜先生和司马懿是什么关系 吕布是什么生肖 2月25日是什么星座 后背痒是什么病的前兆 尿液清澈透明说明什么
洋溢着什么样的笑容 sph是什么意思 经常拉稀是什么原因 早上三点是什么时辰 早餐吃什么简单又营养
属蛇的是什么命 什么症状提示月经马上要来了 dyf是什么意思 县公安局局长是什么级别 杀破狼是什么意思
一什么城市 凌晨三四点是什么时辰 尿的颜色有点红褐色是什么原因 dna里面有什么 pashmina是什么面料
生物技术专业学什么hcv8jop2ns1r.cn 成都有什么特产hcv9jop2ns3r.cn 下发是什么意思hcv8jop0ns3r.cn 嘘寒问暖是什么意思hcv9jop2ns8r.cn 子代表什么意思gysmod.com
谷草转氨酶是什么意思hcv8jop4ns6r.cn 康什么大道hcv8jop3ns4r.cn 530是什么意思hcv8jop6ns2r.cn 卫戍部队是什么意思hcv8jop7ns4r.cn 肺栓塞有什么症状cj623037.com
小孩的指甲脱落是什么原因hcv9jop2ns2r.cn 截石位是什么意思hcv8jop4ns5r.cn 激素水平是什么意思hcv7jop5ns4r.cn 烟酸是什么hcv7jop6ns3r.cn 氧化性是什么意思hcv8jop7ns2r.cn
石人工念什么hcv9jop7ns1r.cn 虎父无犬子什么意思cj623037.com 粘鞋子用什么胶水最好hcv9jop3ns0r.cn 藕带是什么hcv8jop8ns0r.cn 眼压高是什么意思xjhesheng.com
百度