第一篇:软件工程选择题
题型:概念解释、简答、选择、综合操作。
选择:
1.影响软件维护工作的主要因素:
(1)软件开发的方法:软件开发方式直接影响软件的易维护性;模块化结构、详细设计等文档、软甲维护记录报告等将有助于理解软件的结构、界面的功能和内部的数据与控制逻辑流程、理解当前软件的版本状态;
(2)软件开发的条件:软件开发过程所涉及到的软件硬件资源特性也对软件的维护产生影响,如程序设计语言的特性、软件开发工具等对于理解软件有着明显的影响;
(3)软件规模的大小:软件规模越大,系统越复杂,维护所需的工作量也越大;
(4)软件投入运行后的时间:老系统比新系统需要更多的维护工作量,在长期的维护过程中,也许软件的文档与实际的程序实现已变得不一致,维护工作会遇到跟多的困难;
(5)其他设计因素、人员交替与外部环境因素。
2.模块间的信息可以用作控制信息用,也可以用作数据使用。
3.在对数据流的分析中主要是找到中心变换,这是从数据流图导出结构图的关键 4.在进行软件结构设计时,应该遵循的基本原理是抽象原理。
5.在设计测试用例时,等价类划分是用的最多的一种黑盒测试方法。
6.软件开发环境是相关的一组软件工具集合。
7.快速原形有那几种?特点?
答:探索型、试验型、演化型。探索型:在需求阶段帮助明确理解需求用完抛 弃。试验型:在设计阶段考核现行方案是否合适用完抛弃。演化型:及早的向用 户展示一个系统的原形包含主要的功能得到用户的认可后将原形不断的扩充直到系统完成。
8.质量保证是为了使产品实现__功能。A.系统分析员 B程序员 C软件开发者要求 D 用户要求
9.在结构化分析方法中,用以表达系统内数据的运动情况的工具有___
A 数据流图 B数据词典 C 结构化英语D 判定树和判定表
10.可行性研究主要从以下几个方面进行研究__。
A.技术可行性,经济可行性,操作可行性。
B.技术可行性,经济可行性,系统可行性。
C.经济可行性,系统可行性,操作可行性。
D.经济可行性,系统可行性,时间可行性
11.结构化分析方法是一种面向数据流的需求分析方法。
12.在进行软件结构设计时,应该遵循的最主要原理是模块独立性原理。
13.使软件适应运行环境中硬软件变更的维护称为适应性维护。
14.质量保证是为了保证产品和服务充分满足消费者要求的质量而进行的有计划,有组织的活动,质量保证是为了是产品实现使产品实现用户要求的功能。
15.数据字典。
第二篇:华师在线软件工程作业答案选择题
软件工程作业
在软件可行性研究中,可以从不同的角度对软件进行研究,其中是从软件的功能可行性角度考虑的是()。A.经济可性性 B.技术可行性 C.操作可行性 D.法律可行性 答案:B
为了提高模块的独立性,模块内部最好是()。A.逻辑内聚 B.时间内聚 C.功能内聚 D.通信内聚 答案:C
Jackson方法是一种面向()的方法。A.对象 B.数据结构 C.数据流 D.控制流 答案:B
需求分析阶段研究的对象是软件项目的()。A.用户需求 B.合理要求 C.模糊要求 D.工程要求 答案:A
面向数据结构的设计方法(Jackson方法)是进行()的形式化的方法。A.系统设计 B.详细设计 C.软件设计 D.编码 答案:B
程序控制的三种基本结构中,()结构可提供多条路径选择。A.反序 B.顺序 C.循环 D.分支 答案:D
下列属于黑盒测试的是()。A.基本路径测试 B.条件测试 C.循环测试 D.等价划分 答案:D 软件设计一般分为总体设计和详细设计,它们之间的关系是()。A.全局和局部 B.抽象和具体 C.总体和层次 D.功能和结构 答案:A
好的软件结构应该是()。A.高耦合,高内聚 B.低耦合,高内聚 C.高耦合,低内聚 D.低耦合,低内聚 答案:B
面向对象软件技术的许多强有力的功能和突出的优点,都来源于把类组织成一个层次结构的系统,一个类的上层可以有父类,下层可以有子类,这种层次结构系统的一个重要性质是(),一个类获得其父类的全部描述(数据和操作)。A.传递性 B.继承性 C.复用性 D.并行性 答案:B
软件项目管理是()一切活动的管理。A.需求分析 B.软件设计过程 C.模块控制
D.软件生命周期 答案:D
一个模块把开关量作为参数传递给另一模型,这两个模块之间的耦合是()。A.外部耦合 B.数据耦合 C.控制耦合 D.内容耦合 答案:C
在面向数据流的软件设计方法中,一般将信息流分为()。A.变换流和事务流 B.变换流和控制流 C.事务流和控制流 D.数据流和控制流 答案:A
软件工程学科出现的主要原因是()。A.计算机的发展
B.其他工程学科的影响 C.软件危机的出现
D.程序设计方法学的影响 答案:C 关于数据流图下列说法中不正确的是()。
A.在数据流图中应描绘所有可能的数据流向及数据流的条件 B.数据流图的基本要点是描绘“做什么”而不考虑“怎么做” C.数据流图是系统的逻辑模型
D.数据流图的一个主要用途是作为分析和设计的工具 答案:A
关于测试下列说法错误的是()。A.调试也称为纠错
B.调试作为成功测试的后果出现
C.调节器试是在测试发现错误之后排除错误的过程 D.调试的目标是发现错误 答案:D
模块中所有成分引用共同的数据,该模块的内聚度是(A.逻辑性 B.瞬时性 C.功能性 D.通信性 答案:D
每个对象可用它自己的一组属性和它可以执行的一组(A.行为 B.功能 C.操作 D.数据 答案:C
应用执行对象的操作可以改变该对象的()。A.属性 B.功能 C.行为 D.数据 答案:A
下列耦合中,()的耦合性最强。A.公共耦合 B.数据耦合 C.控制耦合 D.内容耦合 答案:D
块内联系中,()块内联系最强。A.偶然性 B.功能性 C.通信性 D.顺序性 答案:B
软件是一种()产品。)的。)来表现。
A.有形 B.逻辑 C.物质 D.消耗 答案:B
由于软件生产的复杂性和高成本性,使大型软件的生存出现危机,软件危机的主要表现包括了下述()方面。①生产成本过高 ②需求增长难以满足③进度难以控制 ④质量难以保证 A.①② B.②③ C.④ D.全部 答案:D
在软件可行性研究中,可以从不同的角度对软件进行研究,其中是从软件的功能可行性角度考虑的是(A.经济可性性 B.技术可行性 C.操作可行性 D.法律可行性 答案:B
在对数据流的分析中,主要是找到中心变换,这是从()导出结构图的关键。A.数据结构 B.实体关系 C.数据流图 D.E-R图 答案:C
概要设计与详细设计衔接的图形工具是()。A.数据流图 B.结构图 C.程序流程图 D.PAD图 答案:B
程序控制一般分为()、分支、循环三种基本结构。A.分块 B.顺序 C.跳转 D.控制 答案:B
结构化分析方法使用的描述工具()定义了数据流图中每一个图形元素。A.数据流图 B.数据字典 C.判定表 D.判定树 答案:B
Jackson方法根据()来导出程序结构。)A.数据结构
B.数据间的控制结构 C.数据流图 D.IPO图 答案:A
Jackson图上下层之间的关系是()。A.调用关系 B.组成关系 C.继承关系 D.嵌套关系 答案:B
以下说法,错误的是()。
A.面向对象不仅支持过程抽象,而且支持数据抽象 B.某些面向对象的程序设计语言还支持参数化抽象 C.信息隐蔽通过对象的封装性来实现
D.在面向对象方法中,类是最基本的模块。答案:D
在多层次的结构图中,其模块的层次数称为结构图的(A.深度 B.跨度 C.控制域 D.广度 答案:A
()是计算机程序及期说明程序的各种文档。A.软件 B.文档 C.程序 D.数据 答案:A
模块(),则说明模块的独立性越强。A.耦合越强 B.扇入数越高 C.耦合越弱 D.扇入数越低 答案:C
在数据流图中,有名字及方向的成分是()。A.控制流 B.信息流 C.数据流 D.信号流 答案:C
Alpha测试是()。
A.由用户在开发者的场所进行。)B.由软件的最终用户在开发者的一个或多个客户场所进行 C.是在不受开发者控制的环境中进行的
D.是软件在开发者不能控制的环境中的“真实应用 答案:A
表示对象的相互行为的模型是()模型。A.对象 B.动态 C.功能 D.静态 答案:B
在软件工程学中,我们把一组具有相同数据结构和相同操作的对象的集合定义为(在数据上的一组合法操作。A.类 B.属性 C.对象 D.消息 答案:A
需求分析过程中,对算法的简单描述记录在()。A.层次图 B.数据字典 C.数据流图 D.IPO图 答案:D
有关计算机程序功能、设计、编制、使用的文字或图形资料称为()。A.软件 B.文档 C.程序 D.数据 答案:B
问题定义阶段必须回答的关键问题是()。A.要解决的问题是什么
B.确定目标系统必须具备哪些功能 C.怎样实现目标系统 D.如何具体实现系统 答案:A
可行性分析中,系统流程图用于描述()。A.当前运行系统 B.当前逻辑模型 C.目标系统 D.新系统 答案:B
模块的独立性是由内聚性和耦合性来度量的,其中内聚性是()。A.模块间的联系程度,此定义包括一组数据属性和)B.模块的功能强度 C.信息隐蔽程度 D.接口的复杂程度 答案:B
数据流图是用于表示软件模型的一种图示方法,在下列可采用的绘图方法中,()是常采用的。①自顶向下 ②自底向上 ③分层绘制 ④逐步求精 A.全是 B.①③④ C.①③ D.①② 答案:B
在软件可行性研究中,可以从不同的角度对软件进行研究,其中是从软件的成本/效益分析的是()。A.经济可性性 B.技术可行性 C.操作可行性 D.法律可行性 答案:A
在结构化分析方法(SA)中,与数据流图配合使用的是()。A.数据流图 B.数据字典 C.实体联系图 D.程序流程图 答案:B
通过()可以完成数据流图的细化。A.结构分解 B.功能分解 C.数据分解 D.系统分解 答案:B
在逻辑覆盖中,每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果,这种覆盖称为()。A.语句覆盖 B.判定覆盖 C.条件覆盖 D.全部覆盖 答案:C
软件设计阶段一般可分为()。A.逻辑设计与功能设计 B.概要设计与详细设计 C.概念设计与物理设计 D.模型设计与程序设计 答案:B
通过执行对象的操作改变对象的属性,但它必须通过()的传递。A.接口 B.消息 C.信息 D.操作 答案:B
需求分析最终结果是产生()。A.项目开发计划 B.可行性分析报告 C.需求规格说明书 D.设计说明书 答案:C
()着重反映的是模块间的隶属关系,即模块间的调用关系和层次关系。A.程序流程图 B.数据流图 C.E-R图 D.结构图 答案:D
需求分析()。
A.要回答“软件必须做什么?” B.要求编写软件需求说明书
C.系统分析员可以采用访谈、简易的应用规格说明技术获取用户需求 D.以上都对 答案:D
按照软件配置管理的原始指导思想,受控制的对象应是()。A.软件元素 B.软件配置项 C.软件项目 D.软件过程 答案:B
()着重测试软件功能。A.黑盒测试 B.白盒测试 C.功能测试 D.循环测试 答案:C
软件配置项是软件配置管理的对象,指的是软件工程过程中所产生的()。A.接口 B.软件环境 C.信息项 D.版本 答案:C
在软件结构中,如果两个矩形之间有直接相连,表示它们存在()关系。A.链接 B.调用 C.并列
D.顺序执行 答案:B
将几个逻辑上相似的成分放在一个模块中,该模块的内聚度是()。A.逻辑性 B.瞬时性 C.功能性 D.通信性 答案:A
()模型表示了对象的相互行为。A.对象 B.动态 C.功能 D.分析 答案:B
结构化分析(SA)最为常见的图形工具是()。A.程序流程图 B.实体联系图 C.数据流图 D.结构图 答案:C
与计算机科学的理论研究不同,软件工程是一门()学科。A.理论性 B.工程性 C.原理性 D.心理性 答案:B
下列方式中,不是由数据元素组成数据方式的是()。A.顺序 B.层次 C.选择 D.重复 答案:B
在程序的描述和分析中,用以指明数据来源、数据流向和数据处理的辅助图形是(A.瀑布模型图 B.数据流图 C.数据结构图 D.业务图 答案:B
软件部分的内部实现与外部可访问性分离,这是指软件的()。A.继承性 B.共享性。)C.封装性 D.抽象性 答案:C
()是软件开发人员为用户准备的有关该软件使用、操作、维护的资料。A.开发文档 B.管理文档 C.用户文档 D.软件文档 答案:C
模块内的某成分的输出是另一成分的输入,该模块的内聚度是()的。A.功能性 B.顺序性 C.逻辑性 D.瞬时性 答案:B
面向对象开发方法子概念和表示上的一致性保证了分析和设计的()过渡。A.因难 B.不容易 C.平滑 D.顺序 答案:C
详细设计规格说明通常使用()手段。A.IPO图与层次图 B.HIPO C.IPO或PDL D.HIPO或PDL 答案:D
一个项目是否开发,从经济上来说是否可行,归根结底是取决于()。A.成本的估算 B.项目计划 C.工程管理 D.工程网络 答案:A
程序的三种基本控制结构是()。A.过程、子程序和分程序 B.顺序、选择和重复 C.递归、堆栈和队列 D.调用、返回和转移 答案:B
一个程序如果把它他为一个整体,它也是只有一个入口,一个出口的单个顺序结构,这是一种(A.结构程序 B.组合的过程 C.自顶向下设计。)D.分解过程 答案:B
数据元素组成设计的方式有()类型。A.顺序 B.选择 C.重复
D.以上全是 答案:D
结构分析方法就是面向()自顶向下逐步求精进行需求分析的方法。A.目标 B.数据流 C.功能 D.对象 答案:B
属于软件设计的基本原理的是(A.数据流分析设计 B.变换流分析设计 C.事务流分析设计 D.模块化 答案:D。)
第三篇:软件工程总结
软件工程总结
软件的特点
软件是一种逻辑实体。
软件的开发,是人的智力的高度发挥,而不是传统意义上的硬件制造。 软件维护与硬件的维修有着本质的差别。
软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
软件的开发至今尚未完全摆脱手工艺的开发方式,使软件的开发效率受到很大限制。
软件的开发是一个复杂的过程。
软件的成本非常高昂。软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。软件工程的特性:
1.软件工程关注于大型程序的构造 2.软件工程的中心课题是控制复杂性 3.软件经常变化
4.开发软件的效率非常重要 5.和谐地合作是开发软件的关键 6.软件必须有效地支持它的用户
7.在软件工程领域中是由具有一种文化背景的人替具有另一种文化背景的人
PM(Project Manager):负责整个项目计划的制定、进度的跟踪、监督以及与客户的沟通等。
PL(Project Leader):负责与项目有关的技术问题的调研、指导、培训以及项目进度的跟踪等。
Page 1of 17
CS(Consultant):负责与客户确认项目中所涉及的业务流程以及向项目组其他成员说明项目的业务流程。
SE(Software Engineer):负责项目的概要设计、详细设计以及开发架构的制定和系统测试用例的书写。 PG,也叫CD(Coder):负责写代码以及单体测试. TE(Tester):负责集成测试、压力测试以及用户测试。
1.2 软件工程定义
用分阶段的生命周期计划严格管理 坚持进行阶段评审 实行严格的产品控制 采用现代程序设计技术 结果应能清楚地审查 开发小组的人员应该少而精
Page 2of 17
承认不断改进软件工程实践的必要性
Page 3of 17
增量模型的优点
1.在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。从第一个构件交付之日起,用户就能做一些有用的工作。
2.整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。
3.逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。增量模型的困难
1.在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。
2.开发人员既要把软件系统看作整体。又要看成可独立的构件,相互矛盾。多个构件并行开发,具有无法集成的风险
螺旋模型(Spiral Model)螺旋模型将瀑布模型和增量模型结合起来,加入了风险分析。在该模型中,软件开发是一系列的增量发布,早期的迭代中,发布的增量可能是一个纸上的模型或原型,在以后的迭代中,逐步产生系统更加完善的版本。螺旋模型的基本思想是降低风险。
Page 4of 17
统一开发过程(RUP)极限编程(敏捷开发过程)(XP)
软件 =程序+数据+文档软件危机: 原因,现象,办法(软件工程学)软件工程(学):开发、运行和维护软
Page 5of 17
件的系统方法软件工程3 个要素:方法、工具和过程。软件生命周期:定义,开发,运行维护 软件过程:瀑布模型+RUP
第二章
可行性研究的目的:
用小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的内容:(1)技术可行性(2)经济可行性(3)操作可行性
• • •
(4)社会可行性(法律可行性)(5)抉择
可行性研究过程: 1.复查系统规模和目标
确保分析员提交的报告书确实是用户要求解决的问题。2.研究目前正在使用的系统
现有系统要完成的工作,就是新系统所必需具备的功能。
现有系统存在的缺点,新系统必需加以改进。
现有系统所不具备功能,又是用户必须的,则新系统一定要予以增加。3.导出新系统的高层逻辑模型 4.进一步定义问题 用户使用可能性 时间进度可行性 组织和文化上的可行性
Page 6of 17
定义系统目标‐复查系统目标和规模‐研究现有系统‐设计新系统‐再定义系统目标。重复这个过程,直到提出新的系统逻辑模型。
5.导出和评价供选择的解法;针对多种供选方案,用户应从下面三个方面进行筛选:
从技术角度排除那些不现实的方案; 从操作角度去掉那些用户不能接受的方案;
从经济角度估算每个可能的系统的成本/效益。6.推荐建议方案 向用户提出推荐的方案,在推荐方案中应清楚地表明:
本项目的开发价值; 推荐这个方案的理由; 制定实现项目的进度表。7.草拟开发计划
工程的进度;
人才资源的需求及使用;
设备资源的需求及使用(软、硬件工具)、估算生存周期每个阶段的成本; 给出下一阶段(需求分析)的详细进度表和成本估计。8.书写文档提交审查
Page 7of 17
Page 8of 17
Page 9of 17
数据流图和数据字典共同构成系统的逻辑模型 没有数据字典数据流图就不严格,没有数据流图 数据字典也难于发挥作用。第3 章需求分析
需求分析是软件定义时期的后一个阶段,它的基本任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。
获取的需求的表达方式:(1)需求列表
需求与系统的特殊视角或环境的关系(2)业务流程图(状态/活动图)(3)数据流图(4)实体‐联系图 ER 图: 实体关系属性
验证软件需求的正确性,一般应从4 个方面进行:(1)一致性所有需求必须是一致的,任何一条需求不能和其 他需求互相矛盾。
(2)完整性需求必须是完整的,规格说明书应该包括用户需
Page 10of 17
要的每一个功能或性能。
(3)现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。(4)有效性必须证明需求是正确有效的,确实能解决用户面 对的问题。第四章总体设计
总体设计过程一般分为两个阶段
系统设计阶段:确定系统的物理实现方案
结构设计阶段:确定软件的结构设计模块的衡量标准:
内聚耦合
耦合: 数据耦合控制耦合公共环境耦合内容耦合结论:尽量使用数据耦合,少用控制耦合,限制公共
环境耦合的范围,完全不用内容耦合。
内聚:标志着一个模块内各个元素彼此间结合的 紧密程度。内聚有六种,由弱到强分别为:(1)偶然内聚:
一个模块程序A 和程序B 内有一组语句在两处或多处出现,于是把这组语句作为一个模块以节省内存,叫偶然内聚。(2)逻辑内聚
Page 11of 17
(3)时间内聚
• 例如,模块完成各种初始化工作或当一个模块处理
意外故障时,这个模块必须在中断处理的同时完成关闭文件、报警和保留现场等任务,这就构成了时间内聚。(4)通信内聚(5)顺序内聚(6)功能内聚
对于一个模块而言,模块自身的内聚越强,模块间的耦合就越小,模块所具有的独立性就越好。可以说高内聚低耦合是我们进行软件设 计的一贯原则
面向数据流的设计方法:
信息流的两种类型: 变换流事务流(重点)
Page 12of 17 事务流Page 13of 17
第七章 实现 软件测试准则
(1)所有测试都应该能追溯到用户需求。(2)尽早的完成测试计划
(3)把parteo 原理运用到软件测试中(4)应该从小模块测试开始,逐步进行测试(5)穷举测试时不可能的
Page 14of 17
(6)好由独立的第三方进行测试测试方法
1.白盒测试知道详细的内部构造,知道是怎么运行的
2.黑盒测试只知道软件的详细功能,以及各个功能之间的的产生结果(也就是流程)
测试步骤
1.模块测试 ‐‐‐ 单元 2.子系统测试 ‐‐‐ 局部 3.系统测试 ‐‐‐ 集成
4.验收测试 ‐‐‐ 用户参与 5.平行运行 ‐‐‐ 新旧共存集成测试:
1、非渐增式测试方法,即:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序进行测试。
2、渐增式测试,即:先把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。这种每次增加一个模块的方法实际上同时完成单元测试和集成测试.目前在进行集成测试时普遍采用渐增式测试方法。第八章软件维护
维护的类型有四种: 改正性维护(改正错误)适应性维护(硬件环境)扩充与完善性维护(功能完善)
预防性维护(方法的改进)提高可维护性的方法:
• 建立明确的软件质量目标和优先级 • 使用提高软件质量的技术和工具
Page 15of 17
• 进行明确的质量保证审查 • 选择可维护的程序设计语言 • 改进程序的文档
第十三章软件项目管理评估软件规模的技术: 技术 功能点技术
依据软件的信息与特性,以及软件的复杂度工作量的估算
依据模型估算出软件的开发工作量软件项目的特点:
无形的产品,难于理解,算法,概念等的集合目标系统具有一定的模糊性
软件看法具有异变性
开发文档量大 开发技术强代码行软件开发人员的特点:
1.高知识、高技术、个人作用突出
2.多层次
3.知识更新快,知识更新快这是软件行业显著的特点。4.流动性大
软件质量保证的措施:
Page 16of 17
技术审查的必要性
走查 审查 序正确性 甘特图
在进度报告中很有效在作管理陈述时易于读懂和使用。作为计划编制工具不是太强。没有表示活动间的逻辑关系。程
Page 17of 17
第四篇:选择题
选择题和简答题
1.标志着中国新民主主义革命胜利的历史事件是 A.中华民国的成立 B.抗日战争的胜利
C.中华人民共和国的成立 D.三大改造的完成
2.在第一届中国人民政治协商会议上,被选为中央人民政府主席的是 A.毛泽东 B.周恩来 C.刘少奇 D.朱德
3.升旗仪式上,当五星红旗冉冉升起的时候,我们心中总会充满自豪感和使命感。最早将五星红旗定为我国国旗的会议是
A.中国共产党第一次全国代表大会 B.第一届中国人民政治协商会议 C.第一届全国人民代表大会 D.中国共产党第八次全国代表大会
4.歌曲《走进新时代》唱道:“我们唱着东方红,当家作主站做起来,我们唱着春天里的故事,改革开放富起来„„”。中国人民“当家做主站起来”开始于 A.中华民国成立 B.中国共产党成立 C.中华人民共和国成立 D.改革开放 5.下列有关开国大典的表述错误的是
A.北京30万军民齐集天安门广场B.毛泽东升起第一面五星红旗 C.举行了盛大的阅兵式 D.54门礼炮齐鸣49响
6.1949年,某次会议通过了以下若干决议:“„„选举毛泽东为中央人民政府主席;改北平为北京,并作为中华人民共和国的首都„„”这次会议应该是 A.第一届人国人民代表大会 B.中国人民政治协商会议 C.七届二中全会 D.十一届三中全会
7.1949年,毛泽东致信宋庆龄:“新的政治协商会议将在华北召开,中国人民革命历尽艰辛,中山先生遗志迄今始告实现。”信所说的这次会议通过并被中央人民政府接受其成为新政府施政方针的重要文献是 A.《中华民国临时约法》 B.《共同纲领》
C.《中华人民共和国宪法》 D.《中华人民共和国中央人民政府公告》(2)简述西藏和平解放的基本史实。8.祖国大陆实现统一的标志是
A.抗日战争胜利 B.人民解放占领南京 C.中华人民共和国成立 D.西藏和平解放 9.藏族歌唱家才旦卓玛一首《翻身农奴把歌唱》唱出了西藏百万农奴翻身后的喜悦,歌词中“驱散乌云见太阳”指的是
A.1949年新中国成立 B.1950年抗美援朝开始 C.1951年西藏和平解放 D.1952年土地改革完成(3)讲述黄继光、邱少云等英雄事迹,体会志愿军战士的爱国主义和革命英雄主义精神。10.时下人们爱用“最美”这一词赞美在危难关头舍己救人的英雄人物,如“最美女教师张丽莉” “最美司机吴斌”„„在二十世纪五十年代人们用“最可爱的人”来赞美抗美援朝中涌现出的英雄人物。被誉为“最可爱的人”的英雄人物是
①黄继光 ②董存瑞 ③邱少云 ④杨靖宇 A.①② B.②③ C.①③ D.③④
11.著名的上甘岭战役发生在哪场战争中?
A.北伐战争 B.抗日战争 C.解放战争 D.抗美援朝战争
(4)知道《中华人民共和国土地改革法》,理解废除封建土地制度的意义。12.彻底摧毁了我国存在两千多年的封建土地制度的是
A.土地改革运动 B.农业合作化运动 C.人民公社化运动 D.家庭联产承包责任制
(5)了解第一个五年计划的基本任务。
13.新中国成立时工业十分落后。然而,短短几年间新中国就生产出了第一批自己的汽车,结束了中国不能制造汽车的历史。这主要得益于 A.推行了土地改革 B.中共八大的召开
C.实施了“一五”计划 D.建设社会主义总路线的贯彻 14.我国的第一个五年计划就是集中力量发展以下哪一产业? A.农业 B.手工业 C.轻工业 D.重工业 15.有一首非常动听的歌曲《天路》,唱出了青藏铁路通车后藏族人民的心声,而建成通车的青藏公路已经为西藏的发展做出了巨大的贡献。青藏公路建成于 A.第一个五年计划时期 B.社会主义探索时期C.文化大革命时期D.改革开放时期
16.为了便于记忆历史知识,我们常用简洁的词语来总结某一时期的主要建设成就。“一桥”、“二铁”、“三藏”、“四厂”总结的是我国哪一时期的建设成就?
A.l953~1957年 B.1957~1965年 C.1966~1976年 D.1978~2000年(6)知道1954年颁布了第一部《中华人民共和国宪法》。17.12月4日是全国普法宣传日,2011年的主题是“深入学习宣传宪法,大力弘扬法治精神”。新中国第一部社会主义类型的宪法颁布于 A.1949年 B.1953年 C.1954年 D.1956年(7)知道对农业、手工业和资本主义工商业的社会主义改造基本完成是社会主义制度在我国建立的标志。
18.社会主义制度在我国初步建立的标志是
A.土地改革的完成 B.《中华人民共和国宪法》的颁布 C.三大改造的完成 D.第一个五年计划的完成 19.我国开始进入社会主义初级阶段的标志是
A.中华人民共和国的成立 B.土地改革的基本完成 C.《中华人民共和国宪法》的颁布 D.三大改造的基本完成(8)了解“大跃进”和人民公社化运动是探索社会主义建设道路过程中的严重失误。
20.在探索社会主义建设道路的过程中,中共“八大”成为良好的开端。下列选项中,能够说明这一良好开端的是
A.正确分析国内主要矛盾,确定主要任务是大力发展社会生产力 B.决定实施“大跃进”、人民公社化运动 C.决定发动“文化大革命” D.做出实行改革开放的战略决策
21.不同时代的宣传画体现了不同的时代风貌。下图这幅夸张的宣传画出现的时代背景是
A.中华人民共和国的成立 B.“一五”计划的实施 C.“大跃进”运动的开展 D.“文化大革命”的进行
22.中国共产党在探索建设社会主义道路中的一次严重失误是 A.社会主义三大改造 B.中苏关系恶化 C.“大跃进”和人民公社化运动 D.中共八大(9)讲述王进喜、邓稼先、焦裕禄等先进人物艰苦创业和全心全意为人民服务的事迹。
23.“向 同志学习。憎爱分明的阶级立场,言行一致的革命精神,公而忘私的共产主义风格。奋不顾身的无产阶级斗志。”的题词中的空格处应为 A.雷锋 B.欧阳海 C.罗盛教 D.齐白石
24.20世纪60年代.他为了治理兰考县水涝、风沙、盐碱三害,亲自带队到灾区调查。洪水泛滥的时候,他站在齐腰深的洪水里,画出一张张水势流向图。人民称颂他是“党的好干部”。他是
A.邓稼先 B.王进喜 C.雷锋 D.焦裕禄
(10)简述“文化大革命”中民主法制和国民经济遭受严重破坏的主要史实,认识“文化大革命”给国家和人民带来了严重灾难。25.对“文化大革命”的评论恰当的是
A.废除了封建土地制度 B.解放了农业生产力
C.基本确立了社会主义制度 D.给国家和人民带来了巨大灾难
26.“文化大革命”期间,许多领导干部、专家学者和民主人士被诬为“走资本主义道路的当权派”,“反动学术权成”等,遭到批斗、迫害。这些现象充分反映了“文化大革命”期间
A.民主与法制遭到严重的践踏 B.没有制定法律
C.“走资派”企图夺取政权 D.党中央出现了修正主义
(11)认识中国共产党十一届三中全会是我国社会主义现代化建设史上的伟大转折。
27.生活的细节不经意间也会折射出社会政治光谱。1977年的上海市高考作文题自是《在抓纲治国的日子里》。“抓纲”在当时是指 A.以经济建设为中心 B.以阶级斗争为中心 C.以文化建设为中心 D.以军事斗争为中心
28.中国共产党十一届三中全会是新中国历史上的一个伟大转折,这次会议的召开标志着
A.社会主义市场经济体制的确立 B.社会主义制度的确立 C.党和国家的工作重心发生转移 D.政治体制改革全面启动
29.会议重新确立解放思想、实事求是的思想路线,作出将党和国家的工作重心转移到经济建设上,是建国以来党的历史上具有深远意义的转折。这次会议是
A.中共十一届三中全会B.中共十四大.C中共十二大 D.中共十五大
(12)知道家庭联产承包责任制的主要内容,了解生产关系一定要适应生产力发展需要的基本原则
30.中共十一届三中全会后,农村实行家庭联产承包责任制,农民从中获得了 A.土地所有权 B.村民自治权 C.生产自主权 D.乡镇企业兴办权 31.2012年2月1日,中共中央、国务院授权新华社发布了《关于加快推进农业料技创新持续增强农产品供给保障能力的若干意见》,这是新世纪以来指导“三农”工作的第九个中央一号文件,充分体现了党和政府对“三农”问题的重视。新中国成立后,中国农村经历了多次重要变革,在今天的社会主义新农村建设中仍然发挥着巨大作用的是
A.土地改革运动 B.农业合作化运动 C.人民公社化运动 D.家庭联产承包责任制
(13)以深圳等经济特区的建立为例,探讨经济特区在社会主义现代化建设中的作用和影响。
32.“边陲小镇,首批特区,一夜崛起,开放窗口”所描述的城市是 A.珠海 B.汕头 C.厦门 D.深圳
33.中国对外开放已形成全方位、多层次、宽领域的格局,有力地促进了中国经济的发展。被誉为“对外开放排头兵”的是
A.1980年设立的四个经济特区 B.1985年开放的长江三角洲经济开放区 D.1992年开放的长江沿岸城市 C.1990年设立的上海浦东开发区 34.“如果我们追溯新中国融入世界的历史,那1980年打开的第一扇‘窗’则需我们永远铭记。”1980年我国首先设立的四个经济特区是 ①深圳 ②珠海 ③上海 ④汕头 ⑤厦门
A.①②③④ B.②③④⑤ C.①③④⑤ D.①②④⑤
35.进入二十世纪九十年代,以哪里开发开放为龙头,进一步开放长江沿岸城市?
A.深圳 B.北海 C.秦皇岛 D.上海浦东 36.我国对外开放的新格局是
A.经济特区——沿海开放城市——沿海经济开放区——内地 B.沿海开放城市——沿海经济开放区——经济特区——内地 C.沿海开放城市——经济特区——沿海经济开放区——内地 D.经济特区——沿海经济开放区——沿海开放城市——内地
(14)认识邓小平理论是改革开放和社会主义现代化建设的指导思想。
37.“一九九二年,又是一个春天,有一位老人在中国的南海边写下诗篇。天地间荡起滚滚春潮,征途上扬起浩浩风帆。”歌词中盛赞的这位老人“在中国的南海边写下诗篇”指的是
A.倡导改革开放,实现伟大转折 B.南方谈话,改革开放向纵深发展 C.建立经济特区,实行对外开放 D.港澳回归,实践“一国两制”构想 38.十一届三中全会召开以后,中国共产党领导全国人民走上了改革开放的新征程。下面不属于改革开放后创新举措的是
A.农村实行家庭联产承包责任制 B.设立经济特区
C.实行民族区域自治 D.国有企业实行政企分开
39.邓小平明确提出“把马克思主义的普遍真理同我国的具体实际结合起来,走自己的路,建设有中国特色的社会主义”的会议是
A.中共十二大 B.中共十三大 C.中共十四大 D.中共十五大
40.“20世纪的最后20年,在世界的东方,中国进行了一场卓有成效的社会变革,解放了思想的中国人焕发出蓬勃的创造力,书写了一个时代最为传奇的一页。”这次变革的总设计师是
A.毛泽东 B.邓小平C.江泽民 D.胡锦涛
41.“我们唱着东方红,当家作主站起来;我们讲着春天的故事,改革开放富起来。”这首歌描绘的两位领导人是 A.毛泽东和邓小平B.孙中山和邓小平C.孙中山和毛泽东 D.刘少奇和邓小平
(15)了解我国实行民族区域自治制度的主要史实。
42.新中国成立后,国家在少数民族聚居地区实行的基本政治制度是 A.设经济特区 B.民族区域自治 C.设特别行政区 D.一国两制 43.民族区域自治作为我国一项基本国策和基本政治制度,其作用包括
①有利于祖国统一 ②有利于民族平等 ③有利于民族团结 ④有利于地区发展 A.①②③ B.②③④ C.①②④ D.①②③④
(16)简述香港、澳门回归的史实,说明“一国两制”的科学构想是推进祖国和平统一大业的基本方针。
44.我国能够成功地恢复对香港、澳门行使主权的主要原因是
A.国际地位的提高B.综合国力的增强C.军事力量的壮大D.“一国两制”的构想
45.湖南省有“湘西土家族苗族自治州”、“江华瑶族自治县”,它们的设置与我国哪一项基本政治制度有关?
A.人民代表大会制度 B.多党合作和政治协商制度 C.民族区域自治制度 D.“一国两制” 46.香港回归祖国15年来,历经了两次金融危机的考验,继续保持繁荣和稳定,国际金融中心的地位更加稳固。这充分证明了 具有强大的生命力。
A.人民代表大会制度B.改革开放基本国策C.民族区域自治制度 D.一国两制
47.香港特别行政区第四任行政长官选举于2012年3月25日举行投票,梁振英以689票在选举中胜出,当选为香港特别行政区第四届行政长官。中国恢复对香港行使主权是在
A.1949年10月1日B.1979年7月1日 C.1997年7月1日 D.1999年12月20日 48.澳门回归以来,“国民生产总值以年均15%的增幅快速增长„„成为全球最活跃的微型经济体。”这些成就取得的政治性因素是D A.民族区域自治 B.人民代表大会制度 C.独立自主外交 D.“一国两制”方针
(17)了解祖国大陆与台湾经济文化交往日益密切的史实,认识祖国统一是历史发展的必然趋势。
49.《反分裂国家法》第五条:“„„以和平方式实现祖国统一,最符合台湾海峡两岸同胞的根本利益。国家以最大的诚意,尽最大的努力,实现和平统一。”实现祖国和平统一的前提和基础是
A坚持走社会主义道路B坚持互利互补原则C海峡两岸直接实现通航D坚持一个中国原则
50.“小时候,乡愁是一枚小小的邮票,我在这头,母亲在那头。„„而现在,乡愁是一湾浅浅的海峡,我在这头,大陆在那头。”为结束海峡浪岸的分离状况,我们提出的基本方针是
A.“一国两制” B.民族区域自治 C.改革开放 D.和平共处 51.改革开放以来,在实现祖国统一大业方面取得的成就有 ①西藏和平解放 ②提出“一国两制” ③香港、澳门回归 ④海峡两岸的交往日益密切
A.①②③ B.①②④ C.①③④ D.②③④
(18)知道和平共处五项原则的主要内容,简述周恩来出席万隆会议的史实。52.在1955年万隆会议上,提出“求同存异”方针的我国领导人是 A.毛泽东 B.周恩来 C.邓小平D.胡锦涛
53.1953年底,中国政府首次提出了和平共处五项原则,在国际社会上产生了广泛而深刻 影响。其内容是
①互相尊重主权和领土完整 ②互不侵犯 ③互不干涉内政 ④独立自主和平外交 ⑤平等互利 ⑥和平共处
A.①②③⑤⑥ B.①②③④⑤ C.①②④⑤⑥ D.②③④⑤⑥
54.由周恩来倡导的成为国际上处理国与国之间相互关系基本准则是
A.四项基本原则B.和平共处五项原则C.求同存异方针D.独立自主和平外交方针
(19)讲述我国恢复在联合国合法席位和中美建交等史实。
55.标志着中美关系结束敌对、隔绝状态,开始走向正常化的历史事件是 A.抗美援朝 B.中国恢复在联合国的席位 C.尼克松总统访华 D.中美正式建立外交关系 56.周恩来总理曾说:“我们再等它三年、五年„„等我们的力量强大了,再进去不迟。总有一天要请我们进去。”他说的“请我们进去”是指 A.中印建交 B.出席万隆会议 C.重返联合国 D.中美建交 57.下列有关新中国外交成就的表述中,错误的是 A.1953年提出和平共处五项原则
B.1955年,在万隆会议上提出“求同存异”方针 C.1971年,与美国正式建立外交关系 D.2001年,承办亚太经合组织会议
58.新中国成立以来,面对纷繁变幻的国际形势,我国政府处理对外关系始终坚持的基本立场是
A.独立自主 B.求同存异 C.互不侵犯 D.维护主权 59.图5是1949—2009年中国与外国建交状况曲线图,新中国出现三次建交高峰,导致第二次建交高峰的直接原因是
A.和平共处五项原则的提出B.中美关系的改善C.抗美援朝战争的胜利D.苏联解体(20)知道“两弹一星”的成功研制、“籼型杂交水稻”的培育推广等标志性成果,以及“863”计划的制定。
60.曾经有一位学者高度评价袁隆平:“是他使饥饿的威胁退却,解决了十几亿人口的吃饭问题。”袁隆平的突出贡献是
A.研制原子弹 B.培育杂交水稻C.设计三峡工程 D.开发互联网技术 61.建国后,为了打破美、苏等国对核武器和航天技术的垄断,我国决定 A.建立人民空军 B.加入亚太经合组织 C.研制“两弹一星” D.实施“863计划”
62.科技发展影响世界,科学名人世人永记。我国著名科学家邓稼先的贡献是 A.提出万有引力定律 B.发现电磁感应原理 C.研制“两弹一星” 63.1964年10月,我国取得重大科研成果是
A.第一颗原子弹试爆成功 B.第一枚近程导弹发射成功 C.第一颗人造地球卫星发射成功 D.第一颗氢弹试爆成功 64.1970年,我国用长征号运载火箭,成功发射了第一颗 A.导弹 B.气象卫星 C.人造地球卫星 D.实用通信卫星
65.“两弹一星”中的“一星”指人造地球卫星。1970年我国成功发射的第一颗人造地球卫星是
A.天宫一号 B.嫦娥一号 C.东方红一号 D.神舟一号 66.在生物工程技术领域作出重大贡献的人物是 A.邓稼先 B.王进喜 C.袁隆平D.焦裕禄
67.1996年作为第八个领域列入《863计划纲要》并作为高技术发展重点的是
A.信息技术 B.生物技术 C.能源技术 D.海洋高技术
(21)列举九年义务教育基本普及和高等教育迅速发展的史实,认识教育发展在“科教兴国”战略中的地位。
68.九年义务教育是党和政府实施“科教兴国”战略的奠基工程。九年义务教育属于
A.学前教育 B.中等教育 C.高等教育 D.基础教育(22)了解我国文化艺术和体育事业的主要成就。
69.2012年伦敦奥运会即将开幕,你知道上一届奥运会是哪一年申奥成功的吗?是第几届现代奥运会?请选出正确的选项
A.2001年第29届 B.2008年第29届 C.2008年第30届 D.2001年第30届
(23)以人们衣、食、住、行、用等方面的变化为例,说明改革开放对人们生活方式所产生的影响。
70.下列能够说明十一届三中全会后,城乡人民生活发生巨变的有 ①凭粮票、肉票等票证购物 ②自驾游成为人们休闲的一种方式 ③吃“公家饭”、端“铁饭碗”成为大家的追求 ④轻松惬意地网上淘宝、购物 ⑤“低碳”和“原生态”生活成为时尚 A.①②③ B.②④⑤ C.①④⑤ D.②③④
(24)知道就业制度的变化,认识社会发展改变了人们的就业观念。
71.“打破铁饭碗”、“人才招聘会”、“自主就业”等流行语出现突出反映了改革开放以来我国
A.人民生活的提高 B.综合国力的提升 C.医保制度的建立 D.就业制度的变化
二、非选择题(共20题): 1.简要回答第一届中国人民政治协商会议召开的背景、会议最重要的两项内容,(3分)说明这一届政协会议的作用。(2分)2.(11分)阅读下列材料,回答问题。
材料一 “深圳的发展和经验证明,我们建立经济特区的政策是正确的。” “特区是个窗口,是技术的窗口,管理的窗口,知识的窗口„„特区成为开放的基地,不仅在经济方面、培养人才方面使我们得到好处,而且会扩大我国的对外影响。” ——邓小平
材料二 1980年——2005年深圳经济发展变化情况简表
——摘编自纪录片《复兴之路》解说词 请回答:
(1)材料一中的“政策“首先在哪两个省份实行?(4分)(2)据材料二说明深圳经济发展的变化。(3分)
(3)综合以上材料,分析经济特区在社会主义现代化建设中的作用。(4 分)
3.走近新时代(12分)
材料一 1979年1月1日,美国《时代》周刊封面出现了一位中国老人 的画像(如图④所示),其标题为“邓小平,中国新时代的形象”。..... 材料二 在过去计划经济体制下,政府过多的干预着国有企业的生产经
营活动,导致企业活力不够,效率不高,缺乏竞争力。因此“松绑”成为了二十世纪80年代中期,中国国有企业改革的最强音。材料三 历史进入了二十一世纪,随着国民经济“十一五”计划的顺利完成,我国综合国力进一步增强,在工业、农业、科技等领域取得了辉煌成绩,实现了社会主义现代化建设的巨大成就。阅读上述材料,回答问题:(1)根据材料一并结合所学知识,指出“中国新时代”始于我党的哪次会议?邓小平入选《时代》周刊封面人物的原因是什么?(4分)(2)根据材料二指出制约国有企业发展的原因是什么?结合所学知识,指出国有企业的“松绑”是怎样进行的?(4分)(3)根据材料三并结合所学知识,指出我国社会主义现代化建设的指导思想是什么?进入新时代以来,我国现代化建设的巨大成就有哪些?(请试举1例)(4分)
4.阅读下列材料
材料一 “一九五三年将是我国进行大规模建设的第一年。”
“国家建设包括经济建设、国防建设和文化建设,而以经济建设为基础。” “工业化——这是我国人民百年来梦寐以求的理想,这是我国人民不再受帝国主义欺负不再过穷困生活的基本保证,因此这是全国人民的最高利益。全国人民必须同心同德,为这个最高利益而积极奋斗。” ——《人民日报》1953年元旦社论
材料二 “我们怀着十分兴奋的心情跨入一九七九年。”
“把全党工作的着重点转移到社会主义现代化建设上来,是一个伟大的战略转变。” “实行四个现代化,大幅度地提高目前落后的生产力,必然要多方面地改变同生产力发展不适应的生产关系和上层建筑,改变一切不适应的管理方式、活动方式和思想方式。”
——《人民日报》1979年元旦社论 材料三 “在边远地区、落后地区和贫困地区,群众要求包产到户的,应当支持群众的要求应当支持群众的要求,可以包产到户,也可以包干到户,并在一个较长的时间内保持稳定;在一般地区,已经实行包产到户的,如果群众不要求改变,就应当允许继续实行。” ——《中共中央关于印发进一步加强和完善农业生产责任制的几个问题的通知》1980年9月 请回答(1)依据材料一结合所学知识回答:全国人民的“最高利益”指的是什么?(1分)党和政府为实现这个“最高利益”而编制的建设规划叫什么?(1分)(2)材料二中“我们十分兴奋的心情”因何而起?(2分)请指出“战略转变”前后,党的工作重心分别是什么?(2分)(3)结合材料三回答:为了改变农村落后的生产面貌,农民作出了何种尝试?(1分)通过这些尝试而逐步形成的农村改革制度叫什么?(1分)这种制度的全面推行,使农村发生了怎样的变化?(2分)
(4)综合上述材料结合所学知识,请你为我国现代化经济建设建言献策。(2分)
5.读图,回答问题(6分)
图一 毛泽东会见美国总统尼克松 图二 毛泽东会见日本首相田中角荣(1)图
一、图二反映的史实是毛泽东为国家富强、人民幸福在哪一领域做出的不懈努力?(2分)
(2)该领域在当时取得的重大成就对中国、世界各有何重大影响?(4分)
第五篇:软件工程
2.2软件开发的基本策略
人们都有自己的世界观和方法论,能自然而然地运用于生活和工作中。同样,程序员脑子里的软件工程观念会无形地支配其怎么去做事情。软件工程三十年的发展,已经积累了相当多的方法,但这些方法不是严密的理论。实践人员不应该教条地套用方法,更重要的是学会“选择合适的方法”和“产生新方法”。有谋略才会有好的战术。几千年前,我们的祖先就在打闹之际写下了很多心得体会,被现代人很好地运用于工业和商业。本节讲述软件开发中的三种基本策略:“复用”、“分而治之”、“优化——折衷”。
2.2.1复用
复用就是指“利用现成的东西”,文人称之为“拿来主义”。被复用的对象可以是有形的物体,也可以是无形的成果。复用不是人类懒惰的表现而是智慧的表现。因为人类总是在继承了前人的成果,不断加以利用、改进或创新后才会进步。所以当我们欢度国庆时,要搞清楚祖国远不止50岁,我们今天享用到的财富还有上下五千年人民的贡献。进步只是应该的,不进步则就可耻了。
复用的内涵包括了提高质量与生产率两者。由经验可知,在一个新系统中,大部分的内容是成熟的,只有小部分内容是创新的。一般地可以相信成熟的东西总是比较可靠的(即具有高质量),而大量成熟的工作可以通过复用来快速实现(即具有高生产率)。勤劳并且聪明的人们应该把大部分的时间用在小比例的创新工作上,而把小部分的时间用在大比例的成熟工作中,这样才能把工作做得又快又好。
把复用的思想用于软件开发,称为软件复用。据统计,世上已有1000亿多行程序,无数功能被重写了成千上万次,真是浪费哪。面向对象(Object Oriented)学者的口头禅就是“请不要再发明相同的车轮子了”。
将具有一定集成度并可以重复使用的软件组成单元称为软构件(Software Component)。软件复用可以表述为:构造新的软件系统可以不必每次从零做起,直接使用已有的软构件,即可组装(或加以合理修改)成新的系统。复用方法合理化并简化了软件开发过程,减少了总的开发工作量与维护代价,既降低了软件的成本又提高了生产率。另一方面,由于软构件是经过反复使用验证的,自身具有较高的质量。因此由软构件组成的新系统也具有较高的质量。利用软构件生产应用软件的过程如图1.5所示。
软件复用不仅要使自己拿来方便,还要让别人拿去方便,是“拿来拿去主义”。面向对象方法,Microsoft公司的COM规范 [Rogerson 1999],都能很好地用于实现大规模的软件复用。
2.2.2分而治之
分而治之是指把一个复杂的问题分解成若干个简单的问题,然后逐个解决。这种朴素的思想来源于人们生活与工作的经验,完全适合于技术领域。软件人员在执行分而治之的时候,应该着重考虑:复杂问题分解后,每个问题能否用程序实现?所有程序最终能否集成为一个软件系统并有效解决原始的复杂问题?
图1.6表示了软件领域的分而治之策略。诸如软件的体系结构设计、模块化设计都是分而治之的具体表现。软件的分而治之不可以“硬分硬治”。不像为了吃一个西瓜或是一只鸡,挥刀斩成n块,再把每块塞进嘴里粉碎搅拌,然后交由胃肠来消化吸收,象征复杂问题的西瓜或是鸡也就此消失了。
2.2.3优化——折衷
软件的优化是指优化软件的各个质量因素,如提高运行速度,提高对内存资源的利用率,使用户界面更加友好,使三维图形的真实感更强等等。想做好优化工作,首先要让开发人员都有正确的认识:优化工作不是可有可无的事情,而是必须要做的事情。当优化工作成为一种责任时,程序员才会不断改进软件中的算法,数据结构和程序组织,从而提高软件质量。
著名的3D游戏软件Quake,能够在PC机上实时地绘制高度真实感的复杂场景。Quake的开发者能把很多成熟的图形技术发挥到极致,例如把Bresenham画线、多边形裁剪、树遍历等算法的速度提高近一个数量级。我第一次看到Quake时不仅感到震动,而且深受打击。这个PC游戏软件的技术水平已经远胜于我所见识到的国内领先的图形学相关科研成果。这对我们日益盛行的点到完止的研发工作真是莫大的讽刺。所以当我们开发的软件表现出很多不可救药的病症时,不要怨机器差。真的是我们自己没有把工作做好,写不好字却嫌笔钝。
就假设我们经过思想教育后,精神抖擞,随时准备为优化工作干上六天七夜。但愿意做并不意味着就能把事情做好。优化工作的复杂之处是很多目标存在千丝万缕的关系,可谓数不清理还乱。当不能够使所有的目标都得到优化时,就需要“折衷”策略。
软件中的折衷策略是指通过协调各个质量因素,实现整体质量的最优。就象党支部副书记扮演和事佬的角色:“…为了使整个组织具有最好的战斗力,我们要重用几个人,照顾一些人,在万不得已的情况下委屈一批人”。
软件折衷的重要原则是不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那样抛弃一方。例如3D动画软件的瓶颈通常是速度,但如果为了提高速度而在程序中取消光照明计算,那么场景就会丧失真实感,3D动画也就不再有意义了(如果人类全是色盲,计算机图形学将变得异常简单)。
人都有惰性,如果允许滥用折衷的话,那么一当碰到困难,人们就会用拆东墙补西墙的方式去折衷,不再下苦功去做有意义的优化。所以我们有必要为折衷制定严正的立场:在保证其它因素不差的前提下,使某些因素变得更好。
下面让我们用“优化——折衷”的策略解决“鱼和熊掌不可得兼”的难题。
问题提出:假设鱼每千克10元,熊掌每千克一万元。有个倔脾气的人只有20元钱,非得要吃上一公斤美妙的“熊掌烧鱼”,怎么办?
解决方案:化9元9角9分钱买999克鱼肉,化10元钱买1克熊掌肉,可做一道“熊掌戏鱼”菜。剩下的那一分钱还可建立奖励基金。
2.3一些不正确的观念
本节例举并分析一些不正确的软件工程观念,可帮助初学者少犯相似的错误。
观念之一:我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。
客观情况:好的参考书无疑能指导我们的工作。充分利用书籍中的方法、技术和技巧,可以有效地解决软件开发中大量常见的问题。但实践者并不能因此依赖于书籍,这是因为:(1)现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。(2)软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软件领域则意味着落后。
观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。
客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的是一群庸人,难保他们不干出南辕北辙的事情。
观念之三:如果我们落后于计划,可以增加更多的程序员来解决。
客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增添新手,可能会更加延误项目。因为:(1)新手会产生很多新的错误,使项目混乱。(2)老手向新手解释工作以及交流思想都要花费时间,使实际开发时间更少。所以科学的项目计划很重要,不在乎计划能提前多少,重在恰如其分。如果用“大跃进”的方式奔向共产主义,只会产生倒退的后果。
观念之四:既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。
客观情况:对需求把握得越准确,软件的修修补补就越少。有些需求在一开始时很难确定,在开发过程中要不断地加以改正。软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。
2.4一些有争议的观念
本节探讨一些有争议的观念,目的不在于得出“正确”或“错误”的评断,而在于争议会激发更多理性的思考。
争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?
作者观点:如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。如果该软件已经用于商业,则需谨慎考虑:若换一台更快的计算机能解决问题,则是最快的解决方案。改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误以及延误进程。技术狂毫无疑问会选择后者,因为他们觉得放弃任何可以优化的机会就等于犯罪。
类似的争议还有:是买现成的程序,还是彻底自己开发?技术人员和商业人士常常会有不同的选择。
争议之二:有最好的软件工程方法,最好的编程语言吗?
作者观点:在软件领域永远没有最好的,只有更好的。能解决问题的都是好方法或是好语言。程序员在最初学习Basic、Fortran、Pascal、C、C++等语言时会感觉一个比一个好,不免有喜新厌旧之举。而如今 的Visual Basic、Delphi、Visual C++、Java等语言各有所长,真的难分优劣。开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。
程序设计是自由与快乐的事情,不要发誓忠于某某主义而自寻烦恼。
争议之三:编程时是否应该多使用技巧?
作者观点:就软件开发而言,技巧的优点在于能另辟蹊径地解决一些问题,缺点是技巧并不为人熟知。若在程序中用太多的技巧,可能会留下隐患,别人也难以理解程序。鉴于一个局部的优点对整个系统而言是微不足道的,而一个错误则可能是致命的。作者建议用自然的方式编程,少用技巧。
《狼三则》的故事告诉我们“失败的技巧通常是技俩”。当我们在编程时无法判断是用了技巧还是用了技俩,那就少用。《卖油翁》的故事又告诉我们“熟能生巧”,表明技巧是自然而然产生的,而不是卖弄出来的。卖油翁的绝技是可到中央电视台表演的,而他老人家却谦虚地说:“没啥没啥,用熟了而已”。
争议之四:软件中的错误是否可按严重程度分等级?
作者观点:在定量分析时,可以将错误分等级,以便于管理。微软的一些开发小组将错误分成四个等级 [Cusumano 1996],如表1.1所示。
一级严重:错误导致软件崩溃。
二级严重:错误导致一个特性不能运行并且没有替代方案。
三级严重:错误导致一个特性不能运行但有替代方案。
四级严重:错误是表面化的或是微小的。
表1.1 错误的四个等级
上述分类是非常技术性的,并不是普适的。假设某个财务软件有两个错误:错误A使该软件死掉,错误B导致工资计算错误。按表1.1分类,错误A属一级严重,错误B属二级严重。但事实上B要比A严重。工资算多了或者算少了,将会使老板或员工遭受经济损失。而错误A只使操作员感到厌烦,并没有造成经济损失。另一个示例是操作手册写错,按表1.1分类则属四级严重,但这种错误可能导致机毁人亡。
开发人员应该意识到:所有的错误都是严重的,不存在微不足道的错误。这样才能少犯错误。
2.5小 结
软件工程学科发展到今天,已经有了很多方法和规范,学之不尽。本章只在宏观上讨论了软件工程的一些
思想,更具体的内容将在后面的章节论述。无论是什么好方法,贵在理解与灵活运用,而不可当成灵丹妙药,不象“吃了脑黄金或脑白金,就能使一亿人先聪明起来”。
3程序员与程序经理
工作在第一线的软件开发人员是程序员和程序经理,他们决定着软件的命运。良好的程序员队伍和出色的管理是软件项目成功的必要条件。管理不是管制,不是去卡住人家的脖子,因为程序员不是一群野鸭子。管理的目的是让大家一起把工作做好,并且让各人获得各自的快乐和满足。当一个组织被出色地领导时,雇员甚至不知道他们已被领导。在项目完成时,他们会自豪地说:“看看我们通过努力取得的成绩吧”。所以管理者不能老惦记着自己是一个官,而应时刻意识到自己是责任的主要承担者。
我们经常会听到有经理头衔的人在高谈阔论:“编程我不会,做个项目还不easy?派个人去搞系统分析,回头再叫几个程序员把需求译成程序,不就OK了吗?”
不懂英语的人准以为easy和OK是贬义词。要让软件项目失败很容易,只要符合下列条件之一即可:
(1)项目经理对软件一无所知;
(2)技术负责人对编程不感兴趣;
(3)真真编写代码的程序员是临时雇用的。
如果上述三个条件同时具备,就请放心失败好了。
让我们少幻想自己是比尔·盖茨,先当好程序员和程序经理再说。
3.1了解程序员
早期的程序员干活能从软件直通硬件,个个生猛无比。又因他们的作息时间、言行举止与常人不太一样,久而久之就给人们留下了“神秘”、“孤僻”的印象。如今软件行业被炒得热火朝天,有能耐的程序员即便躲在大山岙的军工厂里也能被挖出来。而更多原本不是程序员的人操起几本“速成”、“二十一天通”等书籍也加入了这个行业。现在国内号称有上百万程序员,这支大军鱼龙混杂,已搞不清那些是正规军,那些是民兵游击队了。