登陆注册
27082000000032

第32章 Software Engineering(2)

To transform requirements into a working system, designers must satisfy both customers and the system builders on our development team. The customers understand what the system is to do. At the same time, the system builders must understand how the system is to work. For this reason, design is really a two-part, iterative process. First, we produce conceptual design that tells the customer exactly what the system will do. Once the customer approves the conceptual design, we translate the conceptual design into a much more detailed document, the technical design, what allows system builders to understand the actual hardware and software needed to solve the customers’ problem. The process is iterative because, in actuality, the designers move back and forth among activities involving understanding the requirements, proposing possible solutions, testing aspects of a solution for feasibility, presenting possibilities to the customers, and documenting the design for the programmers. Sometimes the design is described in one document, but often there are two. The two design documents describe the same system, but in different ways because of the different audiences for the documents. Thus, the conceptual design concentrates on the system's functions, and the technical design describes the form the system will take.

Object-oriented methodology is an approach to system lifecycle development that takes a top-down view of data objects, their allowable actions, and the underlying communication requirement to define system architecture. The data and action components are encapsulated, that is, they are combined together, to form abstract data types. Encapsulation means that if I know what data I want, I also know the allowable processes against that data. Data are designed as lattice hierarchies of relationships to ensure that top-down, hierarchic, inheritance and sideways relationships are accommodated. Encapsulated objects are constrained only to communicate via messages. At a minimum, messages indicate the receiver and action requested. Messages may be more elaborate, including the sender and data to be acted upon.

Object orientation is the usual approach to developing applications in aerospace and defense organizations, and experiments with its use are occurring in most large companies. Object-oriented design appears to be the best suited method for real-time applications, and is useful for on-line applications.

【Vocabulary】

discipline

n. 纪律,学科 vt. 训练

automate

vt. 使自动化

identification

n. 辨认,证明,鉴定

sufficient

adj. 充分的,足够的

terminology

n. 术语学

prototype

n. 原型

vehicle

n. 交通工具,车辆,媒介

debug

vt. 调试,除错

validation

n. 确认

correspond

vt. 符合,协调,相应,相当

substantial

adj. 坚固的,实质的,充实的

implementation

n. 执行

deteriorate

v. 使恶化

maintenance

n. 维护,保持,抚养

iterative

adj. 重复的,反复的

capsule

n. 胶囊,太空舱

feasibility

n. 可行性,可能性

audience

n. 观众,听众,接见,拜见

architecture

n. 建筑,建筑学

elaborate

vt. 精心制作,详细阐述

aerospace

n. 航空宇宙

methodology

n. 方法学,方法论

【参考译文】

软件工程

软件工程是工具、方法和规则的应用,用于产生和维护一个现实世界问题的自动化解决方案。它要求我们识别出一个问题,一台执行某一软件产品的计算机及其软件产品存在的环境(包含人员、设备、计算机、文档等)。显然没有计算机程序就没有软件产品,更没有软件工程。但这只是一个必要而非充分条件。

一个大规模的软件工程需要跨越相当长的时间来完成。这段时期可以划分为不同的阶段,这些阶段一起构成所谓的“软件生命周期”。

虽然实际的名称可能不同,但是大多数作者都认为软件生存周期分为五个关键阶段。

第一阶段,需求定义,表示在这个阶段内系统希望的需求,也就是精确说明它的功能特性和运行细节。该阶段的输入是陈述(一般是不太确切的陈述)对该软件的要求。通常,一个“需求文档”是该阶段的输出,是经过明确说明的特征或约束条件的集合,这也是最终产品必须满足的。这虽然不是设计,但是必须在设计之前,规定系统应该做什么而不规定它如何去做。一个需求文档的存在,提供一些针对设计的(该生存周期的下一个阶段)并可以使其有效化的东西。有的时候一个快速开发的原型可能是调试需求的一个有用的工具。

对任何阶段,都不允许把错误带到后续阶段是十分重要的。例如,在需求方面,一个错误陈述的功能导致一个有错误的设计和一个并不要求做的事情的实现。如果没有查明,让错误一直发展到测试阶段,则修正这个错误(包括重新设计和重新实现)的代价就可能很大了。

第二阶段,设计,在这个阶段创造性占统治地位,虽然有人表明创造性是内在的而不能够被训练和提高,但是借助于良好的步骤和工具它肯定可以被提高。这个阶段的输入是一份(已经调试而且已经有效化的)需求文档,该阶段的输出则是以某种形式(如伪代码)表示的一个设计。一个设计的有效化是重要的。在需求文档中的每一个需求都必须有一个相应的设计片段来满足它。正式验证,虽然在有限程度上是可能的,但是一般却是极其困难的。更多的非正式验证在整个设计团队,管理人员甚至客户处循环出现。

第三阶段,实现,是对第二阶段中开发设计的实际编码。该阶段的诱惑力是强大的,所以有很多鲁莽的程序员没有经过前两个阶段的充分准备就跳到了这个实现阶段。结果是许多要求没有完全理解,因而设计也是有缺陷的。实现阶段盲目的进行,结果会出现许多问题。

第四阶段,测试,用来证明所实现的程序的正确性。某些测试不可避免地作为前两个阶段的一部分已经被执行。任何有经验的程序员,在任何正式测试阶段之前,每产生一条线路时都会从内心去检测它,也会从内心模拟任何模块的执行。测试决不是容易的。Edsger Dijkstra 写到,虽然测试能够有效的显示出错误的存在,但从不显示它们的不存在。一次“成功”的测试运行仅仅意味着在所测试的特定环境中没有错误被发现;关于其他环境它却没有说明什么。在理论上,测试是显示出一个程序是否正确的唯一途径,好像所有可能的情况都被尝试了(如众所周知的穷举测试),甚至对最简单的程序在技术上都是一种不可能的情况。例如,假设我们已经写了一个程序来计算一次考试的平均分。一次穷举测试将需要分数和班级大小的所有可能的组合;它可能要花费很多年来完成该测试。

第五阶段,程序维护阶段。不幸的是,学生程序员们很少能够涉及本阶段。但是它在现实世界中的重要性也不能被过分地强调。因为维护一个被广泛应用的程序的成本可以达到或着超过开发它的成本。与硬件维护不同,软件维护不涉及已损坏的部件的修复,而涉及设计者缺陷的修复,它可能包括附加功能的供应来满足新的要求。程序员生产各新程序的能力明显受到他们维护旧程序耗费的时间长短的影响。维护的不可避免性必须被承认,且必须采取各个步骤以减少它的时间耗费。

软件设计可以用相同方式考察。我们使用需求规范来定义该问题。那么,如果它能够满足该规范中的所有要求的话,我们就声明它是一个问题的解决方案。在许多情况下,可能的解决方案的数目是没有限制的。一个顾客可以从若干可能性中选择一种以实现一种解决方案。

为了将各个需求转变为一个工作系统,设计师们必须使顾客和我们的开发团队中的诸系统建造师两者都满意。顾客要知道该系统将要做什么,同时建造师也必须理解该系统如何工作。由于这个原因,设计实际上是一两部分的迭代过程。第一,我们生产概念设计,它确切地告诉顾客该系统将要做什么。一旦顾客批准了该设计理念,我们就要将概念设计翻译成一个更详细的文档,该技术设计允许诸系统建造师理解为解决该顾客的问题所需要的实际硬件和软件。这个过程是反复的,因为在现实中设计师往返于理解各项要求、提出可能的解决方案、测试解决方案的可行性、向顾客提供可能的各个解决方案以及为程序员们编写设计文档。有时该设计被描述于一个文档,但往往有两个文档。这两个设计文档描述同一个系统,但是以不同的方式描述,因为诸文档针对不同的读者。这样,概念设计集中于系统的诸功能,而技术设计则描述该系统将采用的形式。

面向对象的方法学是针对系统生命周期开发的一种方法,该方法对诸数据对象允许的动作和基本的通信需求采取一个由顶向下的视图来定义一个系统的体系结构。这些数据及动作部件被封装,也就是它们被组合在一起以形成抽象的数据模型。封装意味着如果我们知道需要什么数据,那么我们就还知道针对该数据的各个许可的进程。各个数据被设计成格状层次关系,以确保自顶向下关系、层次关系、继承性关系、横向关系等被接受。封装的各个对象被约束只是为了通过报文进行通信。最低限度下各个报文指明接收者和所请求的行动。各个报文可以更加复杂,包括发送者和作用于它上面的数据。

面向对象是在宇航和国防机构中开发各种应用程序的常用方法,对它使用的各个试验也正在大多数的大公司中发生。面向对象程序设计对于实时应用是一种最合适的方法,对在线应用也是很有用的。

【Reading Material】

Software Life Cycle

同类推荐
  • 带本英语书游世界

    带本英语书游世界

    本书章节分为Chapter1万事俱备Chapter2快乐出发Chapter3平安到达Chapter4享受美食Chapter5遨游世界Chapter6疯狂购物每个章节详细描写了相关旅游出行的细节,词汇补给、旅游应急句、实用情景对话帮助读者轻松出行。
  • STAGE-LAND

    STAGE-LAND

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 英语PARTY——纯正口语对话室

    英语PARTY——纯正口语对话室

    本套书籍带你领略英语世界风景,感悟英语学习氛围,有助于英语学习。
  • 飘(共2册)(英文版)

    飘(共2册)(英文版)

    《飘(共2册)(英文版)》是一个以美国南北战争为背景的爱情故事。小说的主人公斯佳丽·奥哈拉是美国佐治亚州一位富足且颇有地位的种植园主的女儿。父亲杰拉尔德是爱尔兰的移民。刚到佐治亚州时,杰拉尔德身无分文,靠赌博赢得了塔罗庄园的所有权。于是就开始在这块红色的土地上创业,编织着他的美国之梦。直到43岁的时候,他才和芳龄15的埃伦——一个东海岸法国移民的女儿——结了婚。杰拉尔德心地善良,但脾气暴躁,而年轻的妻子则有着良好的家庭教育和严格的道德观念。她亲手操持着整个庄园的日常事务,甚至还为庄园里的黑奴看病,接生。因此,夫妇俩受到周围白人庄园主的尊敬,也深得黑人奴隶的爱戴。女儿斯佳丽在这种环境中慢慢长大了。
  • 谜语绕口令英语

    谜语绕口令英语

    谜语和绕口令是英语文学中两种比较独特的语言艺术形式。前者既饶有情趣,又可以启发心智,增进思考和想像能力;后者结构巧妙,诙谐风趣,富有音乐性,最适合口头背诵,深受广大英语读者的喜爱。
热门推荐
  • 废材女逆天行

    废材女逆天行

    弃女重生,既不是小姐也不是公主,而是一头小白猪!还要给傻子做宠物!不要不要,我要掌握自己的命运!
  • 全世界只有我不知道我是高人

    全世界只有我不知道我是高人

    作为一个凡人,被一群修行者脑补成隐世高人,是什么样的体验?林止水就是这样,但他还回答不了这个问题。因为他至今都还没有发现——他家字画店这些热爱传统文化的客人们……其实都是隐世修行的奇人异士,而那些他以为得了绝症离世的客人……更是羽化登仙了!客人们也未曾想过,这位最神秘莫测的大人物,竟然只是一个爱打哑谜的凡人?所谓——跨服交流无障碍,指点迷津靠脑补。全世界都知道我是高人,就我还不知道是什么鬼?……【ps:已有三本均订破万的作品,较为短小,轻喷,orz】
  • 万古乾坤界

    万古乾坤界

    少年张元初一步一步走向巅峰,期间经历了千奇百怪的故事。
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 佛说九色鹿经

    佛说九色鹿经

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 集游巡旅

    集游巡旅

    单机游戏同人黑暗之魂3、鬼泣4、最后生还者1、饥荒:巨人国、上古卷轴5、最终幻想7、最后生还者2、公主连结R、后续待定
  • 女帝登基记事

    女帝登基记事

    顾晨涵是皇女,所以她能比任何人都清楚的看到大殿之上的那个位子,但也因为顾晨涵是皇女,所以他明明之离那把椅子有一步之遥,却永远不可能得到那把椅子。一步之遥,如隔山海,但她就要跨过这山海又如何?
  • 帝皇传奇

    帝皇传奇

    一个十三岁的初中生在小区的垃圾桶前捡到一个金黄色的带着生锈样子的腰带,开启了什么?世界会出现什么危机?究竟一个十三岁的小屁孩能拯救这个已经被污染了的地球吗?究竟这个世界能否回到和平的地方?究竟这个十三岁的男孩身上背负着什么重要的任务?帝皇的世界为之轰动,他将会怎么样克服重重艰难险阻才能到达巅峰?!风潇潇兮易水寒,吹云肠断一瞬间!QQ群:201288351
  • 极品全能上门女婿

    极品全能上门女婿

    “叶浪,你到红日集团,当投资经理,三年投资五个项目,通通失败,给集团造成十个多亿的损失,董事会投票决定开除你······”“董事长,我投资的都是中长期项目,最短的项目也必须五年后才能见到成效······”“公司的投资规则已经写得很清楚,你为什么要违规操作?”“我没有违规操作,我的申请获得董事会的批准!”“董事会没有批准!”“董事长,字可都是您亲自签的!”“有证据吗?”“······”
  • 末世之剑气激荡

    末世之剑气激荡

    末世来临降临者的强大,人类的渺小拔地而起而起的基地挥手间断山填海的强者一一登台谱写他们曲折的英雄战歌