登陆注册
23770800000032

第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

同类推荐
  • 英语PARTY——高地之邦·苏格兰

    英语PARTY——高地之邦·苏格兰

    本套书籍带你领略英语世界风景,感悟英语学习氛围,有助于英语学习。
  • 欧·亨利经典短篇小说

    欧·亨利经典短篇小说

    欧·亨利是一位高产的作家,一生共留下了一部长篇小说和三百多篇短篇小说。他的短篇小说构思精巧,风格独特,与当时其他作家着重表现纽约等大城市的上层社会不同,欧·亨利一直着力于表现繁华都会以及西部乡村里普普通通的“小人物”,描写了美国民众的日常生活以及他们对浪漫和冒险生活的追求。其以语言幽默、结局出人意料(即“欧·亨利式结尾”)而闻名于世。
  • 大学英语六级听力训练

    大学英语六级听力训练

    本书针对听力的每种题型进行了详细的分析,让考生透彻地了解听力考试的测试方向、命题规律。同时,还提供了相应的应试技巧,帮助考生正确理解和解答听力题。本书将练习和测试相结合,一步一个台阶地提高听力水平。
  • 我的第一本英语百科全书

    我的第一本英语百科全书

    本书的特色:全!全到不能再全的英语百科,内容涵盖口语、俚语、句型、短语、希腊神话一应俱全细!每个常识讲解非常的详尽,深入浅出,很好地解决了读者学习时的“输出”问题!酷!课堂上很少能接触到的美式英语。英语最实用常识一网打尽!值!超长美语录音MP3免费下载,标准美音,地道表达,犹如外教在身边,给读者以超值的学习体验!练口语,会俚语,学句型,知短语,晓故事,这些基础知识是学习好英语的基础,而《我的第一本英语百科全书》已完整收录了所有功能,相信读者在使用本书后,英文能力肯定能够得到全面提升!
  • 美国公民读本(彩色英文版+中文翻译阅读)

    美国公民读本(彩色英文版+中文翻译阅读)

    我希望这本书能实现双重功能:一方面能提供阅读练习,同时又能向读者提供一些知识;只要我们持之以恒地从书中汲取养分,而不是零星地、断断续续地这样做,那么这样的阅读可能会很有意义。我也希望本书能对老师在这些方面提供帮助,成为新的教学方式的核心,此类教学工作围绕它来进行。当然,每位老师都要以适合自己的方式来加以运用。我无意创作一部介绍公民学或研究美国历史的鸿篇巨著,而只是对我们政府的体制进行了概要描述,留给老师在其中填充血肉,并因地制宜地用于教学。至于历史,那似乎在了解特定的现存制度时才显得有用。倘若文中简洁的历史论述足以阐明政府的各方面主题,同时又能激发读者更广泛阅读,那么作者就非常满足了。
热门推荐
  • 穿越千金:邪王快走开

    穿越千金:邪王快走开

    她,淡漠无双,拥有绝美的容貌和无人能比的智商和势力。年纪轻轻,却是黑道上吃喝风云的第一黑帮‘荨阁’阁主。他,上帝的完美作品,霸道冷酷,这个名叫伊雪儿的女孩打乱了他的人生。
  • tfboys之我喜欢的是你的心

    tfboys之我喜欢的是你的心

    她的成绩各方面都不错,只是长得不是很好,大家都对她指指点点,讨厌长得难看的人,她很自卑,不想再在这世上活下去,她走到马路上,远离了世界…当她再醒过来的时候,已经在另一座城市了,面貌、声音也变了,长得很漂亮,声音很甜,母亲竟是M公司的董事长!!
  • 生活方式与长寿

    生活方式与长寿

    什么是健康呢?世界卫生组织曾经指出:“健康是身体上、精神上和社会适应能力上的完好状态,而不仅是身体的没有疾病或虚弱。”这就是说,一个人必须身体健康、心理健康、道德良好、人格健全,且具有适应社会(包括各种激烈的社会竞争)的能力,才能算得上是一个完全的健康人。由于工作繁忙和心理压力较大,现代人常常违背应有的作息规律。工作起来不分昼夜,娱乐起来又通宵达旦,这些都是不良的生活习惯,也是为什么现在这么多人处于亚健康状态的原因之一。实际上,远离亚健康,寻求健康长寿,应该从良好的生活习惯开始。
  • 龙皇至尊

    龙皇至尊

    神风大陆,兽潮涌动。东风城林栋在兽潮森林中浴血搏杀,觉醒血龙体脉。大陆争锋,百族争艳,一路遇神杀神,遇龙斩龙。“大陆巅峰,至尊唯我”……
  • 六十种曲西厢记

    六十种曲西厢记

    本书为公版书,为不受著作权法限制的作家、艺术家及其它人士发布的作品,供广大读者阅读交流。
  • 爆宠萌师:徒儿别撩我

    爆宠萌师:徒儿别撩我

    【萌萌哒甜宠文!】一句话简介:我被徒儿莫名其妙追到手的那段日子。情景一:拜师大典上。她:“跪下,叫师父。”某徒:“男儿膝下有黄金!”她:“那便不收你了。”扑通——膝盖撞击地面的声音。某徒:“有黄金我早发财了!”情景二:她从来没想过,有一天徒弟会莫名其妙的厉害了起来,实力甩了她几条街,这可不妙啊!她语重心长道:“一日为师,终身为娘,子曰:实力高强,也不可欺师灭祖……”某徒怪异的看了她一眼,红着脸跑开了。情景三:她从来没有想过,有一天会被徒儿扑倒,明明她的徒儿是那么的纯情……某徒:“师父何必这种眼神,是您自己说的一‘日’为师,终身为娘子,我们,早就该洞房了!”她:“……”她发誓她没这么说过!
  • 奉先意

    奉先意

    三言今古梦龙鸣,一语庸贤诗墨评;看破红尘心上雾,宁虚月静玉宵明。沉波诗友赠诗
  • 开宗立派的艺术家(3)

    开宗立派的艺术家(3)

    本书精选荟萃了古今中外各行各业具有代表性的有关名人,其中有政治家、外交家、军事家、谋略家、思想家、文学家、艺术家、教育家、科学家、发明家、探险家、经济学家、企业家等,阅读这些名人的成长故事,能够领略他们的人生追求与思想力量,使我们受到启迪和教益,使我们能够很好地把握人生的关健时点,指导我们走好人生道路,取得事业发展。
  • 特工穿越,EXO追妻记

    特工穿越,EXO追妻记

    他,是高冷的摄政王他,是霸气的鬼见愁他,是可爱的贵公子他,是呆萌的大将军他,是暖心的少竹马他,是帅气的少阁主……她,是21世纪的杀手王;她,也是无人不知、无人不晓的废物当他们遇上她,谁才能最终抱得美人归呢!
  • 末世重生:奇葩cp滚远点

    末世重生:奇葩cp滚远点

    一朝重生,她全系魔法师现代不照样混得风生水起。末世来临?打打丧尸,查查资料,日子倒也惬意。但麻烦谁先来把她身后的跟屁虫弄死?以身相许什么的,要不得啊要不得。夙玖最大的愿望,就是能摆脱自己身后那成天喊自己媳妇的男人,以及在这个奇葩横行的世界找到回家的路.....