登陆注册
3765300000034

第34章 Software Engineering(4)

One important feature of top-down design is that at each level the detail of the design at lower levels is hidden. Only the necessary data and control that must be passed back and forth over the interfaces are defined. Furthermore, if a data structure is contained wholly within a lower level module, it need not be specified until that level be reached in the design process. However, if several modules at some level must share data, then the data structure must be chosen before progressing to a lower level. The design will include both the data structure and the means of data access for each module involved.

The bottom-up design starts with analysis of specifications of the key parts, so the feasibility of the design is tested at the early stage. If the design is not feasible under the given specifications and constraints, the requirements are changed and the design proceeds without the danger of incompatible and unrealizable specifications undiscovered until late in the design process. But in bottom-up design, each module is coded as soon as its design is fixed, in contrast with the top-down process.

It is not uncommon to have mixture of top-down and bottom-up design and coding used in a project. It is a good idea to have a top-down design and bottom-up coding, and vice versa.

The structured programming philosophy aims to provide a well-defined, well-formulated and simple approach to program design. Structured programming requires the use of single-entry and single-exit control structures. The classical technique used to implement these principles is to restrict all control constructs to one of the three statements.

The advantages of structured programming are obvious:

(1) Clarity—structured programs generally have clarity and logical pattern to their control structure which is a tremendous advantage throughout the design process.

(2) Productivity—programmers who use structured techniques show a significant increase in instructions coded per man-hour of work. Similar advantages are claimed for the test phase.

(3) Fixed style—structured programming tends to limit the coding to a few straightforward design approaches. This aids the designer's associates and successors in understanding the design.

(4) Maintenance—the clarity and modularity of a structured design is of great help in localizing an error and redesigning the offending section of code.

(5)Redesign—most large software products are subject to occasional redesign (often called enhancement). The clarity and modularity of structured design maximize the amount of code, which can be reused.

【Vocabulary】

top-down

自顶向下

bottom-up

由底向上

decomposition

n. 分解,腐烂

process

vt. 加工,处理

module

n. 模数,模块

straightforward

adj. 正直的,坦率的,简单的

hidden

adj. 隐藏的

furthermore

adv. 此外,而且

wholly

adv. 整个,统统,全部

specification

n. 详述,规格,说明书

coding

n. 译码

vice

n. 恶习,恶行,罪恶,缺点

philosophy

n. 哲学,哲学体系,冷静

clarity

n. 清楚,透明,明确性

maintenance

n. 维护,保持,可维护性

occasional

adj. 偶然的,临时的,非经常的

modularity

n. 模块性

structure programming

结构化程序设计

【参考译文】

现代软件设计的方法

下面简单论述一下诸如自顶向下程序设计、自底向上程序设计和结构化程序设计的现代软件设计中的一些主题。

自顶向下程序设计基本上是一个重点放在程序的控制流程和控制结构的分解过程。第一步是研究手中任务的各个部分,并将其分解为几个模块(一般是3到10个)。第二步是将模块进一步细分为独立的子模块,这个过程将不断重复直到分解的模块足够小,能够透彻地理解,并能很快地以直接和简单的方式编程。由此形成一个多层逻辑或控制结构,很明显某些模块将扩展到很多层。

自顶向下程序设计的一个重要特征是对每一层而言,其下面层次的详细设计被隐藏起来,只有需要回传及超出接口的必要数据和控制被定义。此外,如果一个数据结构完全属于一个低层模块,设计过程中在到达该层之前不需要对其进行说明。然而当同一层次中的几个模块要共享数据时,在向下一层前进之前就应对数据结构做出选择。设计将包括数据结构和各个模块中涉及访问数据的方法。

自底向上的程序设计从分析关键部分的技术要求开始,因此设计的可行性在早期就被测试。在给定的技术要求和约束条件下,如果设计不可行则需求就必须更改,程序设计也不必承担后期才发现与技术要求互相矛盾或不可实现的风险。但是与自顶向下程序设计过程相比,在自底向上的程序设计中,每个模块的设计一旦确定就可以开始编程了。

在一个项目中,把自顶向下的程序设计和自底向上的程序设计或编程结合在一起是很常见的,而且把自顶向下的程序设计和自底向上的编程结合在一起是一个很不错的方法,反之亦然。

结构化程序设计的指导思想是提供一种定义明确、表达清晰而且简单的程序设计方法。结构化程序设计要求使用单入口和单出口的控制结构,用于贯彻这一要求的经典方法是限制控制结构,只能在三种经典结构中选择一种。

结构化程序设计的优越性是明显的:

(1)明确性——结构化程序通常具有明确性,控制结构合乎逻辑,这在程序设计过程中是一个相当大的优势;

(2)生产效率——使用结构化技术的程序员每人在一小时编写的代码有相当大的增加,相似的优越性在测试阶段也有所体现;

(3)固定的风格——结构化程序设计倾向于把编程限制在一些直截了当的设计方法内,这有助于设计人员的同事或接任者理解他的设计;

(4)可维护性——明确性和模块化对于定位错误和重新设计有缺陷的部分非常有帮助;

(5)重新设计——大部分大型软件产品都会经历一到两次重新设计的过程(通常叫做增强)。

【Reading Material】

Classic Testing Mistakes

When testing, you must decide how to exercise the program, and then do it. The doing is ever so much more interesting than the deciding. A tester's itch to start breaking the program is as strong as a programmer's itch to start writing code -- and it has the same effect: design work is skimped, and quality suffers. Paying more attention to running tests than to designing them is a classic mistake. A tester who is not systematic, who does not spend time laying out the possibilities in advance, will overlook special cases. They may be the same subtle ones that the programmers overlooked.

Concentration on execution also results in un-reviewed test designs. Just like programmers, testers can benefit from a second pair of eyes. Reviews of test designs needn't be as elaborate as product design reviews, but a short check of the testing approach and the resulting tests can find significant omissions at low cost.

What is a test design?

A test design should contain a description of the setup, inputs given to the product, and a description of expected results. One common mistake is being too specific about test inputs and procedures.

Suppose you're testing a banking application. Here are two possible test designs:

Design 1

Setup: initialize the balance in account 12 with $100.

Procedure:

Start the program.

Type 12 in theAccount window.

Press OK.

Click on the 'Withdraw' toolbar button.

In the popup dialog, click on the “all'” button.

Press OK.

Expect to see a confirmation popup that says "You are about to withdraw all the money from this account. Continue?"

Press OK.

Expect to see a 0 balance in the account window.

同类推荐
  • 商务英语实用大全

    商务英语实用大全

    《商务英语实用大全》专为正要踏入职场和努力在职场打拼的读者设计,从商务口语篇和商务写作篇两大方面入手,既能够帮助读者提升口语方面的交际能力,又能增加书面的业务知识。
  • 万用英语表达宝典

    万用英语表达宝典

    无论是去英美国家旅游、工作、学习深造,还是感受英美文化的魅力,掌握最基本的英语口语都是第一需要。这里有英语万用会话黄金句,一定会碰上的近300个高频使用情境,及典型的生活口语!全面的编写内容+丰富的表达方式+易查的会话宝典,既可以满足英语初学者的入门需要,又可以满足那些具有一定基础、需要在较短时间内迅速提高口语水平的学习者的学习要求。让你一书在手,口语无忧。
  • 翻开就能用 商务外贸英语

    翻开就能用 商务外贸英语

    本书收录了10个与本单元密切相关的单词。汇集了20个与对话相关的短语,包含上一部分的单词。经典、贴切、鲜活的两段对话。网罗了10到20个使用频率最高的句子,分门别类,增加读者的句式储备量。在英语学习的同时,增加一些与话题相关的小知识。活跃学习气氛。
  • 王子与贫儿(双语译林)

    王子与贫儿(双语译林)

    《王子与贫儿》描写了王子爱德华和贫儿汤姆通过一个偶然的机会,阴差阳错地互换了位置,王子变成了贫儿,贫儿变成了王子的故事。汤姆当上了英国的新国王,而真正的王子爱德华却在外四处流浪。在好人霍顿的帮助下,爱德华王子经历了重重劫难,最终回到王宫。而贫儿汤姆在良心的谴责下,将不属于自己的皇位还给了真正的王子。此后,爱德华成了一位仁慈的君主,和他的子民一起过着幸福的生活。
  • 战争论

    战争论

    《战争论》是西方近代军事理论的经典,被誉为影响历史进程的100本书之一。全书分为八篇,作者揭示了战争从属于政治的本质,指出了人的因素尤其是精神力量的作用,阐述了战争性质向民众战争转变的历史趋势,探讨了战略和战术、进攻和防御、战争的目的和手段之间的辩证关系,提出了集中优势兵力歼敌等理论。
热门推荐
  • 进化之危机无限

    进化之危机无限

    公元2020年,外星文明突降地球,展现出了远超地球的科技,却出人意料的造就了一批强大的进化者。数年之后,另一支外星文明降临地球,两大文明大战,而地球,也不可避免的参预其中。败,人类灭绝;胜,人类才能得已延续。大战起,风云乱,地球的未来,需要英雄,而英雄,因时势而起。
  • 网游之幻象之城

    网游之幻象之城

    作为游戏《幻象之城》中“十大不可思议传说”之一的主人公、职业PK场NO.3的刺客、“幻象八一八”中的不可说娘娘,自带高绝技能的白宁有两大愿望:一、今天也不要让她碰到烈焰绝域那个家伙哟;二、如果碰到那家伙就让她果断地捅他肾吧!
  • 追妻无门:女boss不好惹

    追妻无门:女boss不好惹

    青涩蜕变,如今她是能独当一面的女boss,爱了冷泽聿七年,也同样花了七年时间去忘记他。以为是陌路,他突然向他表白,扬言要娶她,她只当他是脑子抽风,他的殷勤她也全都无视。他帮她查她父母的死因,赶走身边情敌,解释当初拒绝她的告别,和故意对她冷漠都是无奈之举。突然爆出她父母的死居然和冷家有丝毫联系,还莫名跳出个公爵未婚夫,扬言要与她履行婚约。峰回路转,破镜还能重圆吗? PS:我又开新文了,每逢假期必书荒,新文《有你的世界遇到爱》,喜欢我的文的朋友可以来看看,这是重生类现言,对这个题材感兴趣的一定要收藏起来。
  • 神医高手在都市

    神医高手在都市

    【十万追读】他是杀手界令人闻风丧胆的死神,他是中医界让人起死回生的神医,一场变故,让他重回都市,续写巅峰传奇。群:418852337
  • justin南方有嘉木

    justin南方有嘉木

    南方有嘉木.北方有相思.嘉木尽可摧.相思尽层染.将岁月谱成一首歌.你我安静地唱着..你知道.我本身是一个极其故作清高的人讨厌人间事.巴不得生活只剩风月.但某一天开始.我却突然想与你历经世俗的浪漫.庆祝每个平凡事..细细缓缓轻轻慢慢.失神岁月一去无返.春去秋来循环往复.这人间把你留做我的心上人.
  • 混乱三国

    混乱三国

    《幻石神游记3·混乱三国》,女娲用五色石子补天遗漏的一块神石,历经千年沉睡后,化身为21世纪一个时尚、炫酷、睿智的初中二年级光头学生——幻石,他天质聪明,悟性极高,又通神仙法术,将世间的诸多知识汇集到了自己幻化出的一台万能笔记本电脑中。春雨纷纷时节,幻石来到一家古色古香的酒馆,巧遇了中国古典名著的十个作者。带着强烈的好奇心,幻石一一通过名著作者,穿越到了名著中,与书中的人物一同展开了无数搞笑、惊险、正义等探险旅程。原著中的人物命运会因幻石的到来改写吗?幻石进入古典原著中又会有怎么的改变?神游中,又有多少离奇惊险的情节和谜底等待我们去发现?一切尽在精彩的《幻石神游记》
  • 追妻无门:女boss不好惹

    追妻无门:女boss不好惹

    青涩蜕变,如今她是能独当一面的女boss,爱了冷泽聿七年,也同样花了七年时间去忘记他。以为是陌路,他突然向他表白,扬言要娶她,她只当他是脑子抽风,他的殷勤她也全都无视。他帮她查她父母的死因,赶走身边情敌,解释当初拒绝她的告别,和故意对她冷漠都是无奈之举。突然爆出她父母的死居然和冷家有丝毫联系,还莫名跳出个公爵未婚夫,扬言要与她履行婚约。峰回路转,破镜还能重圆吗? PS:我又开新文了,每逢假期必书荒,新文《有你的世界遇到爱》,喜欢我的文的朋友可以来看看,这是重生类现言,对这个题材感兴趣的一定要收藏起来。
  • 可信赖的发动机:普惠公司史话

    可信赖的发动机:普惠公司史话

    《可信赖的发动机--普惠公司史话(精)》由航空史中的诸多点滴史实编织而成,讲述了普惠公司的创建、发展和繁荣历程。书中以巧妙的手法浓缩、以高雅的方式表述了普惠公司的独特历史和其对民用与军用航空业的巨大贡献,并配以珍贵的历史照片使得史实重现。其内容既有20世纪70年代,普惠公司生产的涡扇发动机装载了第一架“喷气”发动机;20世纪80年代装配波音757的Pw2037;以及20世纪90年代中期普惠与ILFC之问独特关系的关键发展;也对新世纪普惠公司的发展进行了展望。
  • 遗传系统带我飞

    遗传系统带我飞

    刚过完十八岁生日的忆梦在宴会结束之后就被一个系统绑定了,从此,忆梦过着睡觉都能笑醒的日子,但,忆梦最后发现都是同一个人……
  • 天霜河白(下)

    天霜河白(下)

    庆云十八年末,那场映红了半座帝城的滔天大火令生辰变为忌辰。她随火而去,抛弃了“宸华公主”这个身份,亦舍弃了“宸华”所拥有的一切尊荣,自然包括那位素未谋面的夫君,只带走了藏于心间的一段无可诉说的情意。江山依旧,流年暗转。烟波浩渺,溟海无涯,她自随风而来顺水而去,又怎知,他乡与君逢。