软件工程 7
- 格式:ppt
- 大小:180.00 KB
- 文档页数:29


软件工程模拟习题七
一、单选题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在括号内。每小题1分,共20分)
1、为了提高软件的可维护性,在编码阶段应注意( )
A.保存测试用例和数据 B.提高模块的独立性 C.文档的副作用 D.养成好的程序设计风格
2、螺旋模型是一种将瀑布模型和( )结合起来的软件开发模型。
A.增量模型 B.专家系统 C.喷泉模型 D.变换模型
3. 为了提高模块的独立性,模块之间最好是( )
A. 控制耦合 B. 公共耦合 C. 内容耦合 D. 数据耦合
4. 类库这种机制是( )级别的信息共享。
A.同一类 B.不同类 C.同一应用 D.不同应用
5. 详细设计与概要设计衔接的图形工具是( )
A. DFD图 B. 程序图 C. PAD图 D. SC图
6. 不适合作为数据处理与数据库应用的语言是( )
A. SQL B. Cobol C. 4GL D. Lisp
7. 下列关于功能性注释不正确的说法是( )
A. 功能性注释嵌在源程序中,用于说明程序段或语句的功能以及数据的状态
B. 注释用来说明程序段,需要在每一行都要加注释
C. 可使用空行或缩进,以便很容易区分注释和程序
D. 修改程序也应修改注释
8. 下列关于效率的说法不正确的是( ) A. 效率是一个性能要求,其目标应该在需求分析时给出
B. 提高程序效率的根本途径在于选择良好的设计方法,数据结构与算法
C. 效率主要指处理机时间和存储器容量两个方面
D. 程序的效率与程序的简单性无关
9. 软件工程管理的具体内容不包括对_________管理。( )
第七章 面向数据流的设计方法
面向数据流的设计方法,即通常所说的结构设计法(简称SD方法),是根据需求阶段对数据流的分析(一般用数据流图和数据字典表示)设计软件结构。数据流图主要描绘信息在系统内部加工和流动的情况,面向数据流的设计方法根据数据流图的特性定义两种“映射”,这两种映射能机械地将数据流图转换为程序结构。该方法的目标是为软件结构设计提供一个系统化的途径,使设计人员对软件有一个整体的认识。本章所述技术用于软件的概要设计描述,包括模块、界面和数据结构的定义,这是所有后续开发工作的基础。每种软件设计方法都有长处和不足,先用哪种方法首先应考虑它适用的范围。任何软件系统都可以用数据流图表示,理论上,面向数据流的设计方法可用于任一种软件系统的开发。然而,该方法对那些顺序处理信息且不含层次数据结构的系统最为有效,例如过程控制、复杂的数值分析过程、以及科学与工程方面的应用,等等。当SD方法用于完全的数据处理时,即使系统中作用层次数据也同样行之有效。
从系统设计的角度出发,软件设计方法可以分为三大类。第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法为代表。第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以 LCP(程序逻辑构造)方法、Jackson 系统开发方法和数据结构化系统开发(DSSD)方法为代表。第三类设计方法即面向对象的设计。
第一节 基本概念和设计过程
面向数据流设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。该方法实施的要点是:①建立数据流的类型。②指明流的边界 。③将数据流图映射到程序结构 。④用“因子化”方法定义控制的层次结构。⑤用设计测量和一些启发式规则对结构进行细化。
一、在系统结构图(SC)中的模块
在系统结构图中不能再分解的底层模块为原子模块。如果一个软件系统的全部实际加工(数据计算或处理)都由底层的原子模块来完成,而其他所有非原子模块仅仅执行控制或协调功能,这样的系统就是完全因子分解的系统。如果系统结构图是完全因子分解的 ,就是最好的系统 。一般地,在系统结构图中有4种类型的模块(如图7-1-1):
1 四川警安职业学院标准教案纸
课程内容提要 软件结构设计
授课时间 第7周 地点 6-203
教学目标 掌握描述软件结构的工具以及面向数据流的设计方法。能够将具体的数据流图的转换为软件的结构图,即变换分析技术和事务分析技术。
教学重点 软件结构设计
教学难点 软件结构设计
教学内容方法与手段:
第7讲
教学方法:讲授法、演示法、案例分析法
教学手段:多媒体教学
知识点:①模块化、抽象、逐步求精、信息隐藏、模块独立;②启发规则;③层次图、HIPO图、结构图。
引入:上次课我们介绍了系统构架设计,这次课我们来介绍一下软件结构设计。
5.3 软件结构设计
软件结构设计是对组成系统的各个子系统的进一步分解与规划。需要将子系统按照其功能要素分解成具有一定功能边界的模块,然后以模块为单位来构造软件。
软件结构设计包括以下方面的内容:
(1)确定构造子系统的模块元素。
(2)定义每个模块的功能。
(3)定义模块接口,设计接口的数据结构。
(4)确定模块之间的调用与返回关系。
(5)评估软件结构质量,进行结构优化。
5.3.1 模块概念 2 1. 模块化: 模块是构造程序的基本单元,例如,函数、过程。在结构化方法中,模块是一个功能单位,可以使软件系统按照其功能组成进行分解,由此使一些大的复杂的软件问题被分解成诸多小的简单的软件问题。
2. 抽象化: 概要设计中的功能模块往往被看成是一个抽象的黑盒子,虽然它已是一个与软件实现直接相关的实体单元,有清晰的外观,但还没有内部实现细节。
3. 信息隐蔽: 指每个模块的内部实现细节对于其他模块来说是隐蔽的。例如,模块内部的数据、语句或过程等,不允许其他不需要这些信息的模块访问。
5.3.2 模块的独立性
指软件系统中每个模块都只涉及自己特定的子功能,与软件中其他模块没有过多的联系。一般采用耦合和内聚这两个定性的技术指标来衡量模块的独立性。
1. 耦合用来度量模块之间相互关联的程度,模块间连接越紧密,耦合性就越高。耦合的主要形式有非直接耦合、数据耦合、控制耦合、公共耦合和内容耦合。
软件工程的7个原则
咱先说开闭原则吧。这就好比是你有个小盒子,你可以往里面放东西(扩展功能),但是别老去破坏这个盒子的结构(修改原代码)。就像你搭乐高积木,你想给你的小房子加个小花园,你直接往上搭就好啦,可别把房子拆了重新来。这样做呢,之前写的代码就像已经搭好的房子部分,稳稳当当的,后面加功能也方便,大家都开心。
单一职责原则也很重要。这就像是每个人在一个小团队里都有自己的活儿。一个函数或者一个类,就只负责一件事。不能说让一个人既当厨师又当司机还当保安,那得多乱呀。代码也是这样,每个部分各司其职,就像大家分工明确,整个软件工程的世界就会井井有条,不会乱成一团麻。
里氏替换原则呢,就像是在玩角色扮演游戏。子类要能完全替代父类的角色。就好比儿子要能像爸爸一样做一些基本的事情。在代码里,如果有个基类是动物能跑能跳,那子类小猫小狗也得能做到这些,不能说小猫突然就不会跑了,那可就乱套了,整个游戏就玩不下去了。
依赖倒置原则有点像交朋友。不要让高层模块依赖底层模块,都要依赖抽象。就好比你不要只和一种类型的人做朋友,要和有共同理念(抽象)的
人做朋友。这样不管是高富帅还是矮矬穷(不同的底层实现),只要符合你的交友理念,都能成为朋友,代码也是这样,这样的软件就更灵活。
接口隔离原则像是在分蛋糕。每个客户(调用者)只得到它需要的那一块蛋糕(接口),不要把一大堆接口都塞给人家。就像你去餐厅,你只想吃饭,服务员就别一直给你推销按摩服务啦。代码里,每个模块只需要它需要的接口,这样干净利落,大家都清爽。
迪米特法则就像大家保持社交距离一样。一个对象应该对其他对象有最少的了解。你不需要知道全世界的事情才能做好自己的事。代码里也是,模块之间不要互相知道太多内部的东西,这样各自安好,整个系统也更稳定。
合成复用原则,这就像搭积木的时候,能复用的就复用。不要什么都重新造轮子。就像你家里有个椅子能用,就别再重新做一个一样的,直接拿来用就好啦。代码复用起来,不仅节省时间,还能让整个软件工程更高效呢。软件工程的这些原则呀,就像生活中的小智慧,让这个代码的世界也充满乐趣和秩序。