发布!软件的设计与部署[试读]
1.1 瞄准正确的目标
学校或社会开设的软件设计课程极其不完整,它只谈了系统该做什么,而没有涉及系统不该做什么。系统不应该崩溃、宕机、丢失数据、侵犯隐私、损失金钱、损害公司,或者导致客户流失。 在本书中,我们会探讨为这个混乱、扭曲的真实世界架构、设计和构建软件,特别是构建分布式系统的方法。为应对那些行事疯狂、难以预测的用户,我们要做好准备。软件从发布的那一刻起就会遭受攻击,它需要抵抗台风般的快闪族、Slashdotting,抑或Fark或者Digg 上的链接。我们将仔细研究无法通过测试的软件,找到方法确保软件能经受现实世界的考验。 现今的软件设计就像20世纪90年代早期的汽车设计,完全脱离现实世界。那时候,汽车... 查看全部[ 1.1 瞄准正确的目标 ]
1.2 使用决断力
早期决策对系统的最终形态影响最大。最初的决策最难以更改。这些关于系统边界和子系统划分的早期决策,渗入到了团队结构、经费分配、程序管理结构甚至工时表中。团队分配是架构的第一稿(参见7.2节知识框)。极具讽刺意味的是,这些早期决策也是在信息获取最少的情况下做出的。这就是说,你的团队在这个时候对软件的最终结构最无知,但你必须要做出某些不可更改的决策。 即使是“敏捷”项目 ,也最好有远见地做出决策。为了选择最健壮的设计,设计者预测未来的时候似乎必须有决断力。由于不同的选择通常会有相似的实现成本,却带来完全不同的生命周期开销,因而考虑每种决策对可用性、能力和灵活性的影响就显得格外重要。我将结合较好和较... 查看全部[ 1.2 使用决断力 ]
1.3 生活的质量
发布1.0版是软件生命的开始,而不是项目的结束。1.0版发布后,你的生活质量取决于你在这个重要里程碑之前所做的选择。 不管你是按小时收费的技术支持工程师,还是雇用这些人的雇主,都需要知道你要维护的是一个经得起严格测试、坚不可摧,并能推进你的事业向前发展的汽车,而不是一个只在卖场摆放的花瓶。... 查看全部[ 1.3 生活的质量 ]
1.4 挑战的范围
“软件危机”已经超过30年了。就金主而言,软件耗资依然太大(参见Why Does Software Cost So Much?[DeM95])。就目标捐助者而言,即便进度表是以月而非年来衡量的,软件的开发周期依然很长。很明显,过去30年设想的生产效率提高只是一场幻影。 这些术语来自于敏捷社区。金主(gold owner)是指为软件付费的人。目标捐助者(goal donor)是指你正在满足其需求的人。他们一般都不是同一个人。 另一方面,我们获得的某些实际的生产效率提高方法,可能被用来攻克更大的问题,而不是快速廉价地开发同样的软件。在过去的十年里,系统的规模呈指数级膨胀。 在安逸懒散的客户... 查看全部[ 1.4 挑战的范围 ]
1.5 随手一松就是一百万
项目的成功、股票期权或利润分红、公司的生存,甚至你的工作,所有这些都岌岌可危。为QA测试而构建的系统,通常在操作成本、宕机时间、软件维护等方面,都需要很大的持续支出,它们根本没法盈利,更别说有什么净现金收益了(这是指系统减去了构建成本之后的利润)。这些系统的可用性低,直接导致了收入减少,有时甚至因损害品牌形象而产生更大的间接损失。对于我的很多客户来说,宕机的直接损失每小时在10万美元以上。 在一年里,98%的正常运行时间和99.99%的正常运行时间,二者在收益上的差别将超过1700万美元 。请想象一下,仅仅通过更好的设计就能为账户添加1700万美元! 在繁忙紧张的项目开发期间,你很可能会决... 查看全部[ 1.5 随手一松就是一百万 ]
1.6 务实的架构
两种不同的活动都归结到了架构这一术语。一种类型的架构追求高度抽象,以做到更灵活的跨平台移植,并更少地关联硬件、网络、电子和光子等复杂细节。这种方法的极端形式会造就一座“象牙塔”——一间Kubrickesque式的整洁房间,盒子和箭矢装饰着每面墙,超然不俗的大师居住在这里。命令从象牙塔发出,降临在劳苦的程序员身上。“使用EJB的CMP完成数据库操作!”“所有UI使用JSF构建!”“所有过去、现在和将来的数据都要保存在Oracle数据库中!”如果你曾经为了遵守这些“公司标准”而在编码时咬紧牙关(用其他的技术完成会容易十倍),那你就是象牙塔架构师的受害者。我敢保证,一个不愿倾听团队成员意见的架构师,... 查看全部[ 1.6 务实的架构 ]
书名: 发布!软件的设计与部署
作者: [美] Michael T·Nygard
出版社: 人民邮电出版社
原作名: Release It!: Design and Deploy Production-Ready Software
译者: 凃鸣
出版年: 2015-2-1
页数: 228
定价: 49.00元
装帧: 平装
ISBN: 9787115380456