登陆注册
23770800000031

第31章 Software Engineering(1)

5.1 Software Engineering

Software engineering is the application of tools?? methods?? and disciplines to produce and maintain an automated solution to a real-world problem. It requires the identification of a problem?? a computer to execute a software product?? and an environment ??composed of people?? equipment?? computers?? documentation?? and so forth?? in which the software product exists. Clearly?? without computer programs there would be no software product and no software engineering. But this is only a necessary condition; it is not sufficient.

A large-scale software project spans a considerable period of time. A number of distinct phases can be identified over this period of time. Together?? these make up what is known as the "software life cycle".

While the actual terminology may differ?? most authors identify five key phases in the software life cycle.

The first phase?? requirements definition?? refers to the period during which the requirements of the system desired?? that is?? its functional characteristics and operational details?? are specified. The input to this phase is the stated ??often rather loosely stated?? needs for the software. Typically?? a "requirements document" is the output of this phase?? a set of precisely stated properties or constraints that the final product must satisfy. This is not a design?? but rather precedes the design?? specifying what the system should do without specifying how it is to do it. The existence of a requirements document provides something against which a design ??the next phase in the life cycle?? can be validated. Sometimes a quickly developed prototype can be a useful vehicle for debugging requirements.

As with any of the phases?? it is important that errors not be allowed to move into subsequent phases. An error in requirements?? for example?? a misstated function?? leads to a faulty design and an implementation that does not do what is required. If this is allowed to proceed undetected?? say?? until the testing phase?? the cost of repairing this error ??including redesign and re-implementation?? can be substantial.

The second phase?? design?? is predominantly creative?? while some would argue that creativity is inherent and cannot be trained or improved?? it can certainly be enhanced by the use of good procedures and tools. The input to this phase is a ??debugged and validated?? requirements document?? the output is a design expressed in some appropriate form ??for example?? pseudo-code??. Validation of a design is important. Each requirement in the requirements document must have a corresponding design fragment to meet it. Formal verification?? while possible to a limited extent?? can be exceedingly difficult. More informal revolve the entire design team?? management?? and even the client.

The third phase?? implementation?? is the actual coding of the design developed in the second phase. The lure of this phase is strong?? and many a foolhardy programmer has been drawn to it before adequately laying the groundwork in the first two phases. As a result?? requirements are incompletely understood and the design is flawed. The implementation proceeds blindly?? and many problems arise as a result.

The fourth phase?? testing?? is concerned with demonstrating tile correctness of the implemented program. Inevitably some testing is performed as part of the previous two phases as well. Any experienced programmer mentally tests each line as it is produced and mentally simulates the execution of any module prior to any formal testing stage. Testing is never easy. Edsger Dijkstra has written that while testing effectively shows tile presence of errors?? it can never show their absence. A "successful" test run means only that no errors were uncovered with the particular circumstances tested; it says nothing about other circumstances. In theory?? the only way that testing can show that a program is correct as if all possible cases are tried ??known as an exhaustive test???? a situation technically impossible for even the ******st programs. Suppose?? for example?? that we have written a program to compute the average grade on an examination. An exhaustive test would require all possible combinations of marks and class sizes; it could take many years to complete the test.

The fifth phase is program maintenance phase. Student programmers?? unfortunately?? rarely become involved in this phase. Its importance in the real world?? however?? cannot be over emphasized?? since the cost of maintaining a widely used program can match or exceed the cost of developing it. Unlike hardware maintenance?? software maintenance deals not with repair of deteriorated components?? but with repair of design defects?? which may include the provision of added functions to meet new needs. The ability of programmers to produce new programs is clearly affected by the amount of time they spend maintaining old ones. The inevitability of maintenance must be recognized?? and steps must be taken to reduce its time consumption.

Software design can be viewed in the same way. We use the requirement specification to define the problem. Then?? we declare something to be a solution to a problem if it satisfies all the requirements in the specification. In many cases?? the number of possible solutions is limitless. A customer can choose to implement one solution from among several possibilities.

同类推荐
  • 硝烟中的黑虎

    硝烟中的黑虎

    读者朋友,可以从这些有趣的小故事中,看到动物世界的奇异景象。看到它们的生活习性,它们的生存竞争,它们的神奇本领。看到动物的千姿百态和动物与动物之间,动物与自然之间,动物与人类之间的种种复杂关系,而且还能从这些故事中找到勤劳、善良、友谊,智慧,勇猛等等美好的词汇。
  • 我在雨中等你

    我在雨中等你

    本书遵循语言学习的自然规律,将英语学习的知识点贯穿在阅读中,并逐一详解,使英语能力在潜移默化中得到提升!
  • 商务英语900句“袋”着走

    商务英语900句“袋”着走

    本书提炼出外企员工日常交流中使用最高频的话题情景,力求生活化,真实化。全书点面结合,通过句型替换,举一反三,以一句顶万句,方便记忆。 本书采用口袋书设计,方便携带,可谓挤地铁乘公交的上选佳品。便于随时随地学习,为自己充电。上班前看一眼,一天都能用得到。
  • 笑死你的英文书

    笑死你的英文书

    本书是一本世界笑话作品集。主要内容包括:爱情婚姻、家庭生活、商店购物、外出旅行等。
  • 世界500强企业员工都在说的英语口语大全

    世界500强企业员工都在说的英语口语大全

    本书以分类场景为着眼点,筛选出各种不同场景下的口语表达,分门别类,一应俱全。书中将人们共有23个场景单元,涉及生活、交际、工作、学习、交通、态度、情感等老外从早到晚都在用的话题,涵盖了工作、生活的方方面面。
热门推荐
  • 北宋清泉奇案

    北宋清泉奇案

    一个横空出世的大盗,行窃数十起从未失手一个年轻俊朗的算命先生,屡助官府破得奇案一个江南富家公子哥,只想行走江湖快意恩仇北宋元丰年间,青衣奇盗祸乱中原。为瓮中捉鳖,朝廷下令庸城城禁七日,只为拘捕大盗。人心惶惶的七日里,究竟发生了什么?第三部猜画正在修改,期间可去如下地点群聊:贴吧:北宋清泉奇案书迷群:203531848寻人可至新浪微博:七名小少爷
  • 十里红尘一场平生

    十里红尘一场平生

    我向来自命我是历来最没神仙样却有人情味的神仙,在活过百年之后,我对我的人生有了这么一个总结,我这一生,真没什么作为。旬空真人闲来无事与发癫魔女斗个法,一时用力过猛,不留神把仙元斗到我体内去了,于是他一命呜呼驾鹤回阴间,而我足聚祥云飞升去,而这不明所以的飞升令我在仙界十分不受待见,然我一直秉持良好心态没心没肺时,某日,一水灵灵的小闺女一颠一颠跑来抱住我膝盖糯糯唤我一声“娘亲”,一切即将逆袭……天说,所谓的因果,便是终有一天,要还回去。槐安树下,这纠葛,注定断不了
  • 有一种爱情叫学霸

    有一种爱情叫学霸

    S大性格呆萌的李佳人因真心话大冒险游戏被恶整,必须向男神表白,却表白错对象,撞上了学校ACCA学霸吾卿。本是误会,可外号“卿贵人”的吾卿意外地接受了佳人。佳人误以为吾卿是想摆脱女生骚扰,心存愧疚,只好配合吾卿演戏。被迫当众表白,不得已写五千字情书公开后,全校师生都知道了他们是情侣。高中好友爆料黑她,被男神误会后,吾卿挺身而出解围。李佳人骤然意识到自己对吾卿有了不一样的想法,却明白自己跟学霸之间的差距,只能伤神暗恋。为学分,学霸帮她补课不停,替她闺密牵线证券部,帮她争取戏剧社角色……这还让她怎么把持得住啊?一次酒醉后,李佳人壮胆去找吾卿说清楚,闹了个大乌龙,还被学霸好心告诉了一个真相……
  • 品质格言(当代教育丛书·现代名言妙语全集)

    品质格言(当代教育丛书·现代名言妙语全集)

    作为人生的追求者,茫茫人海,关键在于找到属于自己的名家导师,关键在于找到鼓舞自己的名言警句,当然,最关键的是在这些金玉良言的指导下付诸切实的行动。
  • 旧爱律师猎捕妻

    旧爱律师猎捕妻

    一场误会的相遇让两人相识,一次次的偶遇,一次次的帮忙,当心慢慢的沦陷,当爱情慢慢的降临。经历重重,以为幸福的开始,结果一场婚姻,满身伤。初恋女友的出现,失去孩子的痛苦,过往经历的阴影,她选择放手,他后悔不已,决定重新追求经历一次不幸的婚姻之后,她是否还会有勇气愿意在接受他呢?
  • 虚妄之门

    虚妄之门

    推开虚妄之门,窥测命运之力。刻下对错之线,登顶万界之巅。—————————————
  • 异界无天

    异界无天

    凌门雪,前世的一个部门经理,转世却沦为一个乞丐,走投无路时却惊喜发现崛起之密,从此修炼途中一路高歌,什么世家子弟,什么宗门天才,都只不过是他成就帝王道路上的一颗颗垫脚石而已。
  • 蓝田玉暖

    蓝田玉暖

    蓝翊只听说过自杀、出车祸、遭抢劫等等穿越方式,却不知原来只是在公交车上打个小盹也能穿越,还悲催的穿越到了貌似没有人烟的不知名小岛上。这是个陌生的世界,繁荣秀美,诱惑着人们为占有它而战斗。她一心想要回到现代,却不知不觉间卷入了权利斗争中,更将自己的心遗留在了那个清冷的男子身上,在回去与留下之间挣扎。竟得知自己的到来并不是一场意外,而是前男友谋划已久的阴谋。。。无意间陷入了大云的皇位之争,更是惊获兰夷二皇子贺兰敬的秘密。蓝翊为何会穿越到这里?秦轲到底有着怎样离奇的身世?贺兰敬又为何会死而复生?神秘的娆娆到底是谁?当一切昭然若揭,蓝翊又将何去何从。。。。。。
  • 重生之大开发商

    重生之大开发商

    主人公李忠从2016年穿越到90年代末的中国,在改革开放的大潮中,筹集资金做房地产开发和网络。在大潮中,玩转资本市场,处处领先一步并回避风险,兼职爽翻天!
  • 逆天兽妃:媳妇萌萌哒

    逆天兽妃:媳妇萌萌哒

    她来自21世纪。凯雅贩毒集团的首脑之一。人人眼中得而诛之的大魔头,为了训练杀手,她的手,沾满了鲜血。可谁又知道,她不过是一个刚刚成年的小女孩?迫于无奈才被人控制如此。在众人翘首以盼的这一天,她终于死了,却穿越到了神兽国,变成了一枚蛋。从此神兽国的血雨腥风开始了。他,神兽国的废材太子,无意中却得了这个绝世之蛋,当这个从蛋里出来的某“猫”开始欺负人时,某男就下定决心,一定要让这个坏的“猫”快快长大!他要“欺负”回来!