登陆注册
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.

同类推荐
  • 三句半搞定零售导购英语口语

    三句半搞定零售导购英语口语

    本书从“热情迎客”、“服装饰品”、“生活必须品”、“旅游纪念品”、“其他商品”、“商场服务”六个方面入手,围绕每个主题词挑选出“三句半”英文。”——“三句”是指最时髦实用的三个交流常用句,“半”是指点滴解析与说明,让你轻松学会一口流利的零售导购英语。本书以最地道、最实用的句型、对话,让你灵活应用、举一反三;以最纯正、最清晰的朗读为你提供超值的试听享受。精心安排的句型和对话,清楚地显示英语词、语、句的意义和表达能力,让你一说就上口。
  • 吉姆

    吉姆

    本书的主人公吉姆是英军驻印度的一个爱尔兰团士兵的孤儿,自幼流浪在拉合尔街头。一位西藏喇嘛为了寻找一条能洗涤人生罪过的圣河,来到拉合尔。吉姆被喇嘛充满神秘与冒险色彩的生活所吸引,主动要求做喇嘛的徒弟,与他同行。吉姆被英驻印军情报人员利用、并成为一名出色的间谍。最后,师徒二人终于找到了“圣河”。整部作品一气呵成,流光异彩,风土人情、宗教习俗、生活细节描写得细致入微,具有浓郁的印度特色。
  • 看古希腊神话故事学英语

    看古希腊神话故事学英语

    神话是远古人类思想与生活的反映,是原始信仰的产物。希腊神话故事经历了丰富的时代变迁和历史风云,几乎成为希腊乃至欧洲一切文学和艺术活动的基本素材。马克思曾说:“希腊神话不只是希腊艺术的宝库,而且是它的土壤”。希腊神话也是欧美文艺取之不尽的艺术源泉。希腊神话具有无穷的认识价值和永久的审美魅力。希腊神话还为现代奥林匹克运动会的形成奠定了基础。在古希腊这个神话王国中,优美动人的神话故事和曲折离奇的民间传说为古奥运会的起源蒙上一层神秘的色彩。那些经久不衰的神话故事让我们着迷,那些如雷贯耳的名字至今仍被我们尊为“大师”。时隔千年,希腊神话还对我们产生影响。
  • 我在美国教汉语

    我在美国教汉语

    本书生动展示了安徽农业大学在美国罕布什尔学院开展对外汉语教学的20年间13位赴美教师的亲身经历和异域文化体验,他们将对外汉语教学总结为课堂教学、中国文化实践活动与异域文化浸入式体验三大部分,并在多元化的实践探索中寻求切实有效的对外汉语教学方法。
  • 从零开始学英语,“袋”着走

    从零开始学英语,“袋”着走

    这是一本简单易学,同时也能带给你成就感的英语口语入门书!100%从零开始,不论你的英语目前处于什么水平,只要你有信心,随时都可以拿起本书开始从零学起!长期以来,对于英语初学者,尤其是对于自学者来说,都期望拥有一本好的英语学习书。学了十几年英语的人有成百上千万,但是真正能将英语学以致用的人却是凤毛麟角。因此,一本比较切合中国英语学习者实际需要的英语学习书就显得尤为重要。
热门推荐
  • 豪门娇妻:肖先生,借个吻

    豪门娇妻:肖先生,借个吻

    “啊……好痛,你快一点……”男人蹙眉,嗓音低沉暗哑:“别动。”“不行了……啊……”男人将针管拔出来后,取过一支酒精棉签摁了上去,望着小女人委屈巴巴的模样,黑眸一片疼爱:“打完了。”一场蓄谋,莫小小把京城最牛逼的风云人物给睡了!从此人生就像开了挂一样,畅通无阻。外界传闻他杀伐果断,冷血无情,可偏偏对她百般顺从,宠之入骨。她无奈的低头看着在自己怀里撒娇要亲亲的某人,嘴角狠狠抽蓄了几下,这哪里冷血,哪里无情,这分明是一只小奶狗好不好!
  • 道法乾坤

    道法乾坤

    十年前,楚城的一个小村庄内曾发生过一次大规模的人口消失事件,这些消失人口的子孙们被送到了全国各个武学院里面学习,这些失去父母的孩子们,不知道,这冥冥中隐藏着一场上古就遗留下来的赌注。这里有勾心斗角,为了金钱不惜栽赃陷害别人的道士、这里有口说慈善,暗地里操纵佛学院的僧人,这里有为了能力,杀人放火的剑士,这里有各个门派为了地位,看似仁义的联合。上古就遗留下来的灾难,最后只有天选之人终结一切的恩恩怨怨。
  • 我只爱你不爱这个世界

    我只爱你不爱这个世界

    这只是一个平常的故事,没有很多甜,只写了两个人的相遇到走进婚姻的殿堂,其中或多或少有点吵闹,但我知道有你的地方才是最重要的和最温暖的。
  • 人间有味

    人间有味

    在汪曾祺的文字里,生活是很有意思,有滋有味的。在他的笔下,简单的一茶一饭,一人一事,都洋溢着情趣。汪曾祺先生说自己是很爱逛菜市场的。看看生鸡活鸭、鲜鱼水菜、碧绿的黄瓜、彤红的辣椒,热热闹闹、挨挨挤挤,让人感到一种生之乐趣。《人间有味》前两辑尽写吃食,譬如:《昆明的吃食》中,写到过桥米线·汽锅鸡,干巴菌、牛肝菌、青头菌,护国路白汤羊肉,玉溪街蒸菜,葱油饼、锅贴、片儿汤,火腿月饼、酥皮包子,玉麦粑粑,洋芋粑粑,摩登粑粑;《五味》中说到山西人能吃醋,辽宁人爱酸菜白肉火锅,北京人吃羊肉酸菜汤下杂面,福建人、广西人爱吃酸,南方爱吃甜,四川人口味偏爱麻辣等让人不由在心中勾画起一张美食地图;《故乡的食物》中,写到炒米和焦屑,淌着红油的鸭蛋,咸菜慈姑汤,各种河鲜、野味和田间地头的野菜;《食道旧寻》中写老舍先生的好客、沈从文经常吃米线,陶重华、吴宓、张宗和、孙凤竹、崔芝兰、沈有鼎、吴征镒诸先生在牛肉面馆的定期聚会;写冰西瓜的技巧,写豆腐的各种做法……让人不由觉得垂涎三尺,美味藏在街巷和普通人的厨房里。后两辑写亲情、友情、街巷之情和乡情,充满着浓浓的回忆。那种淡泊、洒脱、释然的心境透过纸被,直抵人心深处。
  • 倾尽时光暖他兴

    倾尽时光暖他兴

    湫浅念叱咤风云的煞世魔女,无人敢惹,就连天帝都要礼让三分,无人不知,无人不晓。却死在了亲儿子之手,这让她难以启齿。一朝穿越,成了——秋浅念穿越过来的湫浅念成为了万人迷帝煜的老婆,女人们嫉妒帝少夫人。帝煜以前很讨厌的秋浅念(原主)一夜之间发生了翻天覆地的变化,让帝煜觉得不可思议,他发现秋浅念很有趣。婚内湫浅念发现他不是普通人她很好奇,好奇心害死猫,美色诱惑:被吃干抹净。夜晚偷袭:反被压。湫浅念在心里骂娘。冷不丁的那个害死她的儿子出现了,还在旁边一个劲的邀功湫浅念再一次的吐血……且看她——湫浅念这只好奇猫怎样寻找答案怎样帮原主(秋浅念)讨回属于她的一切,在现代重新成为万人瞩目的煞世魔女。
  • 遇你就足够幸运

    遇你就足够幸运

    我不敢奢求太多,遇见你已经很幸运了————叶棉我不曾想过能碰到这么好的你,我想用余生护着你,你给我这个机会嘛?————苏遇安你的感情是我始料不及的,但是很抱歉,我并非良人。————顾伊白我也不清楚是不甘心还是放不下,我不想放手。————姜妤
  • 我的英雄学院之金眸

    我的英雄学院之金眸

    拥有与众不同的双眼,金色的眸子看上去有着魔力,这个问题小朋友真的是“乖巧无比”
  • 重返19次人生

    重返19次人生

    38岁的柔伊追求美满的婚姻,多年来积极备孕却屡次失败,身心备受折磨。这让深爱她的丈夫艾德痛苦不堪,婚姻一度濒临崩溃。一个寻常早晨,他们大吵一架,艾德摔门而出,却没想到,这竟是他们生命中最后一次对话。艾德在车祸中丧生。柔伊悲痛欲绝,昏迷后醒来,发现自己跌入时空交错的世界,一次次重回过去,重新与艾德相遇相爱:18岁,她和他初遇;24岁,他们相爱;28岁,他向她求婚,他们怀着美好的憧憬进入婚姻……柔伊以现在丰富的阅历和成熟的心智,审视过去,恍然明白是生活的琐碎、怀孕生子的焦虑等,消磨了他们珍贵的爱情,使两个相爱的人渐行渐远。19次重逢,让她一次次确信,他们内心依然深爱彼此。一切都没有变,但命运似乎又悄然在改变。柔伊萌生一个大胆的计划,要不顾一切阻止艾德遭遇车祸。她究竟能不能从死神手里夺回她的艾德,能否来得及对他说一句“我爱你,永远永远”?
  • 重生名门童养媳

    重生名门童养媳

    “拿掉!”两年的婚姻结束在这冰冷的两个字里。金童玉女,商界伉俪?原来不过是一个无聊讽刺的笑话。当叶瑾年签下离婚协议书走出南宫家大门,爱情这东西,就再也不是她生活的必须。一场预谋的车祸,她从顶着南氏少奶奶头衔的悲惨弃妇,重生邵氏集团媳妇年乐乐,自此,叶瑾年的生活完全颠覆。“年乐乐,不要以为自己长得有点可爱,就能勾引到本少爷。”正处于换牙期的邵家二少爷板着一张粉嫩嫩正太脸,模样很欠揍。“放心,我对你没兴趣。”叶瑾年表情很严肃的声明。“你对本少爷没兴趣?”某小少爷瞪大眼睛不可思议的看着她,然后,小嘴一瘪,“哇呜呜呜.你竟敢对本少爷没兴趣.呜呜呜…”哭的很伤心。“…”“乐乐,你们班主任说你申请了跳级,被我否决了。”邵家大少爷靠在椅子上,神态很悠闲。“为什么?”叶瑾年咬牙问道,她好歹也曾经是经济高材生,让她整天跟着一群孩子读初中课本,简直是折磨!“因为…我怀疑正是我们家乐乐的头脑发育的太快了,才影响到了其他方面的成长…”邵大少爷上下打量着叶瑾年的短小身材,似笑非笑的停在她胸前某处道。叶槿年的童养媳生活,怎一个乱字了得?当然,混乱之余,她也不会忘记‘赐予’她重生的一对男女。看着荧屏上那个假意伤情的前夫,叶瑾年笑得森凉。南明旭,敬请期待,我的谢礼…
  • 婚然天成,首席的VIP恋人

    婚然天成,首席的VIP恋人

    在凉莫相亲第N次后,她状似开玩笑地说:“和我结婚吧。”结果,对面的男子,狭长的黑眸一眯,淡淡回应:“可有成年?”“二十。”“好,带上户口本民政局门口见。”于是,两个只见过一次面的人,就这样领证了……*顾少泽,家世显赫还帅的一塌糊涂,万千女人追捧的梦中情人,比灰姑娘还灰的凉莫做梦也没想到会嫁给这么一个富翁。*凉莫在一次公司聚餐上,喝得断片。醒来后,她一脸无辜地望着他,“老公,我错了。”他的眼角抽了抽,“还有呢?”“不该酒后乱来。”她吞了吞口水。顾大少的眼角抽的更为厉害,薄唇邪肆地一勾……奇怪的是,这个平淡无味的女人,让他越爱越上瘾。*女人最幸福的时刻,就是找对了人,他纵容你的习惯,并爱着你的一切。顾少泽,这个大她十五岁的沉稳男人,用浓情将她一点点融化,直到爱上他。凉莫说:爱是一种遇见,却无法预见。顾少泽说:亲爱的老婆,谁都可以说爱你,却唯独我在这里等你……