浙江大学远程教育学院
《软件工程基础》课程作业答案
第一章概述
1.什么是软件危机,它有哪些典型表现?
所谓“软件危机”就是,在计算机软件的开发和维护过程中所遇到的一系列严重的问题,概括起来归纳为:如何开发软件,以满足日益增长、日趋复杂的需要;如何维护数量不断膨胀的已有软件。
软件危机的典型表现主要有:
a. 开发成本和进度不能准确估计
b. 开发出来的软件不能满足用户的要求
c. 软件的可维护性差
d. 软件质量不可靠
e. 软件成本在系统中的比重逐年上升
f. 软件开发生产率的提高速度不够
2.简述产生软件危机的原因和解决的思路。
软件危机产生的原因一方面与软件本身的特点有关,另一方面,是与已有软件开发、维护的方法不正确有密切关系。
解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。即采用工程化的原则和方法组织软件开发是摆脱软件危机的一个主要出路。
3.什么是软件工程?它有哪些本质特性?
软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法进行软件开发和维护的学科。
其实质就是用工程的概念、原理、技术和方法,结合有效的管理方法和先进的开发技术,开发与维护软件,以解决软件危机。
4.软件工程是如何用来消除软件危机的?
软件工程是从技术和管理两个方面来研究如何更好地开发和维护计算机软件,从源头上消除软件危机。
6.简述软件的定义。
软件=程序 + 数据 + 文档
7.软件工程的目的是什么?
为高质量的软件开发提供一个科学的体系框架。
8.什么是软件工程方法学?软件工程是一种什么样的技术?包括哪三大要素?分为哪三个分支?
软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开发
技术方法的集合。目前,使用最广泛的软件工程方法学分别是传统方法学和面向对象方法学。
软件工程作为一种层次化的技术,有方法、工具和过程三大要素,并由于其涉及学科内容的极为广泛,而分为三个分支:软件开发技术、软件项目管理技术、软件质量管理技术。
9.简述软件工程的基本原理。
软件工程有7条基本原理:
1.严格按照软件生命周期计划进行管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用先进的程序设计技术
5.结果应能清楚的审查
6.开发小组成员应少而精
7.承认不断改进软件工程实践的必要性
10.软件工程的基本开发原则有哪些?
软件工程的基本开发原则有:
1.模块化
2.抽象和信息隐蔽
3.模块的高内聚和低耦合
4.确定性
5.一致性
6.完备性
11.构成软件工程的基本元素有哪些?
除了前面给出的软件工程三大要素,还应该包括控制和质量保证。这里的控制,即规模控制、成本控制、复杂性控制等。
12.什么是软件过程?它与软件工程方法学有何关系?
软件过程是指为了获得高质量软件产品,在软件工具支持下,由软件人员完成的一系列软件工程活动。
软件过程规定了开发软件所需完成的各项任务步骤。过程步骤的设定与软件生命周期、生命周期模型、软件开发工具,以及参与开发的人员等诸方面因素有关。
13.什么是软件生命周期?什么是软件生命周期模型?
软件如同自然界任何事物一样,都有其孕育、诞生、成长、成熟、衰亡的生存过程。软件的这一过程,称为软件生命周期。
软件生命周期模型也称软件开发过程模型,是为了解决产业环境中的实际问题,而提出的开发策略。是反映整个软件生命期中,系统开发、运行、维护等实施活动的一种结构框架。
14.简述软件生命周期方法学的途径,以及划分阶段步骤的目的和实质。
软件生命周期方法学是软件工程的传统途径,划分阶段步骤的目的和实质是:控制开发工作的复杂性,通过有限步骤,把抽象逻辑概念,转化为具体物力实现。
15.试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明它们各自的适用范围。
1.瀑布模型。
瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法。但问题是,往往不能够真正满足用户的需求。
适用于传统软件工程领域的结构化开发。
2.原型模型。
是为了克服瀑布模型的缺点而提出来的。通过快速构建一个在机器上可运行的原型系统,让用户试用原型,并收集反馈意见的办法,来获取用户真实的需求。
3.螺旋模型。
螺旋模型适用于大型软件项目,比起之前的其它模型而言,有其一定的优越性,但这些优越性并不是绝对的。主要体现在对开发人员的风险评估经验和专门知识的要求较高。如果项目风险较大,而开发人员的水平较低,不能准确的识别和分析风险,则势必造成重大损失。
4.增量模型。
具有在软件开发早期阶段使投资获得明显回报和交易维护的优点,但是要求软件具有开放的结构。
第二章可行性研究
1.在软件开发的早期阶段,为什么要进行可行性研究?其目的和任务各是什么?
可行性研究的目的是用最小的代价,在尽可能短的时间内确定问题是否可解决,以及是否值得解决。
可行性研究的任务不是解决问题,而是确定是否可解/值得解。
2.应该从哪些方面研究目标系统的可行性?
主要从以下几个方面进行可行性研究:
1. 技术可行性。以现有技术,能否在预定时间内完成该系统开发。
2. 经济可行性。通过成本-效益分析,估算系统的整体经济效益是否满足要求。
3. 操作可行性。分析系统的运行方式、操作规程是否适应用户应用需要。
4. 社会可行性。分析系统在法律、社会、市场等方面的认可度。
3.可行性研究有哪些工作步骤?
(1) 复查定义,确定系统规模和目标。
(2) 研究老系统
(3) 导出高层逻辑模型(conceptual design)
(4) 重新定义
(5) 导出多种解法
(6) 推荐行动方针
(7) 开发计划(粗略)
(8) 审查、存档
4.简述系统流程图在可行性研究中的作用。
系统流程图是概括的描述物理系统的传统工具。系统流程图反映的是信息在系统各部分间流动的情况。
系统流程图可以帮助了解和分析系统,以概括的方式表达对系统的认识,并可以描述未来物理系统的概貌。
5.简述数据流图在可行性研究中的作用和用途。
数据流图在可行性分析中可以帮助分析和描绘数据在软件中流动和被处理的逻辑过程,用图形的方式描述系统的逻辑功能,是系统分析员和用户之间理想的通信工具。
6.简单描述数据字典的内容和定义数据的方法。
数据字典主要由下列4种元素定义组成:
1.数据流
2.数据流分量
3.数据存储
4.处理
除了数据定义外,数据字典还应包含一些关于数据的其它信息。
定义数据的方法通常采用自顶向下分解的方式。并由顺序、选择、重复三
种基本数据元素类型组成数据。
7.说明软件计划的内容和目标。
软件计划的内容=项目任务范围 + 环境资源 + 工作量 + 进度
软件计划的目标是为了提供一个框架,以便于管理者对资源、成本和进度等进行合理的估算。
8.什么是软件范围?定义软件范围需要哪些信息?
软件范围就是在技术和管理层面上都是无二义性和可理解的项目范围,是软件开发各阶段的工作依据。
定义软件范围需要以下信息:
a. 与用户、总体目标及利益相关的问题。
b. 有利于系统分析员理解的问题。
c. 集中于交流效果的问题。
9.简述软件开发环境资源的三个层次。
软件开发环境资源由三个层次构成:开发环境、软件构件以及最重要的资源——人。
10.软件环境资源的特征有哪些?它们对制定软件计划都有哪些意义?
每一类资源都有四个特征:资源描述、可用性说明和资源提供的时间、资源使用的延续时间。
可以为制定软件计划估算软件开发所需的资源。
11.软件计划中,安排软件开发进度主要可以用哪些工具?都有哪些优缺点?
编制进度计划的常用工具主要有甘特图和网络计划法。
甘特图的优点是简单,能动态地反映开发进展;缺点是难以反映多个任务间的逻辑关系。
网络计划法则恰好弥补了甘特图的缺点,最适合反映多个工作之间的逻辑关系。
12.主要的成本估计技术有哪些?其依据的主要是什么?
主要有,代码行技术。
是一种基于规模的分解估算:
D= f(vi)
以及基于问题的分解估算:
EV=(Sopt+4Sm+Spess)/6
还有功能点技术。这种技术以功能点(FP)为单位,度量软件的规模。
由于项目本身的复杂性,因此,成本估计技术主要采用“分而治之”的分解技术对软件项目进行估算。
13.为什么说成本估计是不可能精准的?
那是由于太多的变化因素——人员、技术、环境、策略、复杂性等等,使得成本估算永远不可能精确。
14.进行成本/效益分析的方法主要有哪些?
常用成本/效益分析的方法主要有:
(1) 货币的时间价值
(2) 投资回收期
(3) 纯收入
(4) 投资回收率
16.如何对制定完成的软件计划进行复审?为什么要复审?
软件计划的复审通常涉及有关软件工作范围和软硬件资源问题等。复审应该邀请用户参加,用户可提出建议,并与开发人员最终商定内容。复审内容分为技术和管理两个方面:
技术方面需要考虑的问题有:
系统的任务是否合理;
系统的给你复杂性是否与开发成本、进度以及风险一致;
系统规格说明书是否足够充分;
系统性能要求是否恰当
管理方面需要考虑的问题有:
计划中描述的工作范围是否符合用户需求?
计划中对资源的描述是否有效、合理?
计划中系统的开发成本与进度要求是否合理?
计划中人员的安排是否合理?
系统开发存在哪些风险?
复审可以尽早发现错误,复审是软件质量保证的重要措施。
第三章需求分析
1.为什么要进行需求分析?通常对软件系统有哪些需求?
需求问题是软件工程项目失败的主要原因。一个高质量的软件,很大程度上取决于对要解决的问题的认识,以及如何准确的表达用户的需求。需求分析就是要解决这个问题。
通常,对一个软件系统的需求可以有功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求等多个方面。
2.怎样与用户有效地沟通,以获得用户的真实需求?
访谈、情景分析,以及面向数据流的自顶向下求精等方法,编制简易的系统规格说明文档,创建原型等,是获取真实需求的有效方法。
3.需求分析的任务是什么?
确定对待开发系统的综合要求。
4.通常系统的需求可以分为哪几个层次?
一般可以分成5个层次:
(1) 功能需求:系统必须做什么?
(2) 业务需求:反映客户组织机构对系统高层次的目标要求。
(3) 运行需求:运行环境、软硬件配置等。
(4) 属性需求:包括用户关心的属性,如效率、灵活性、完整性、可靠性等;开发者关心的属性,如可维护性、可复用性、可移植性等。
(5) 未来可能的扩充需求:如HDIS各组的合并,3维虚拟现实的效果等等。
5.进行需求分析的步骤有哪些?
1.确定系统的综合要求
2.分析系统的数据要求
3.导出逻辑模型
4.修正系统开发计划
6.简述建立原型模型对软件需求分析的作用。
可以快速构建旨在演示目标系统主要功能的可运行程序,帮助用户确定及提供更为精准的需求,以利用户和开发者能够在目标系统应该“做什么”这一问题上尽快达成一致。
7.解释实体-联系图及其用途。
实体-联系图是按照用户的观点对数据建立的模型。描述从用户角度看到的数据,反映用户的现实环境,并且与在软件系统中的实现方法无关。
8.说明为什么需要进行需求验证及验证的步骤有哪些?
进行需求验证是为了确保软件开发的质量,降低开发成本。通常对需求进行验证的步骤有:验证需求的一致性、验证需求的现实性、验证需求的完整性和有效性。
第四章总体设计
3.简单说明系统总体设计的步骤。
典型的总体设计包括以下9个步骤:
1、确定最佳方案
2、选取合理方案
3、推荐最佳方案
4、功能分解
5、软件结构设计
6、设计数据库
7、制定测试计划
8、书写文档
9、审查和复审
5.为什么要尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,完全不用内容耦合?
减少模块之间的关联度,提高模块的独立性。
因为内容耦合会导致一个模块修改另一个模块的内容,使得程序逻辑发生严重问题。
而公共耦合是若干模块通过一个公共数据环境相互作用,公共部分的改动将影响所有调用它的模块,公共部分的数据存取无法控制,并且复杂程度也会随耦合模块的个数增加而增加。
控制耦合是一个模块通过传递开关、标志、名字等控制信息,明显地控制选择另一个模块的功能。由于接口单一,因此仍然会影响被控模块的内部逻辑。
而数据耦合只是模块间通过数据参数来交换I/O信息,因此不会对其它模块产生任何等影响。
6.为什么模块的规模要适中?
过大不易理解;太小则接口开销过大。
7.请说明为什么模块控制的宽度和深度要适度。
深度过大表示分工过细,而宽度过大则表示系统复杂度大,所以模块控制的宽度和深度要适度。
8.简述面向数据流设计方法的基本思想。
将由数据流图描绘的信息在系统中加工和流动的情况映射成软件结构。
9.常用数据流类型有哪些?
变换流和事务流。
10.面向数据流的设计方法主要有哪几个步骤?
主要有下面7个步骤:
1.复查基本系统模型
2.复查并精化数据流图
3.确定数据流图具有变换特性还是事务特性
4.确定输入流和输出流动边界,从而孤立出变换中心
5.完成“第一级分解”
6.完成“第二级分解”
7.使用设计度量和启发式规则对第一次分割得到的软件结构进一步精化
第五章详细设计
1.详细设计的任务是什么?
包括模块的算法设计、模块内的数据结构设计、模块接口设计、其它根据软件特点需要完成的设计、模块测试用例设计、设计文档编写、设计评审。
2.在对系统做详细设计时,应遵循哪些原则?
①模块的逻辑描述应清晰易读、正确可靠;
②设计的处理过程应该简明易懂;
③选择恰当的描述工具来描述模块算法。
3.简述结构化设计的特点。
①自顶向下、逐步求精;
②具有单入、单出的控制结构(取消GOTO语句)
4.结构化程序设计中有哪几种基本控制结构?分别描绘在程序流程图、盒图和PDA图中这些基本控制的图例。
(1) 顺序结构
(2) 选择结构
(3) 先判定型循环结构
(4) 后判定型循环结构
(5) 多情况选择
7.试说明ISO为什么要建议停止使用程序流程图,而推荐使用PDA图?
由于程序流程图中的GOTO语句回严重地损害程序结构,而无法实行结构化设计。PDA图则既吸取了程序流程图好学、好用、好懂,方便、灵活的优点,又保留了N-S图结构化设计的特点,很好地满足了软结构构设计图形工具的要求,以及PDA图所具有的①结构清晰,层次分明,易读;②支持逐步求精的设计思想;③容易将PAD自动转换为高级语言源程序等特点,因此,ISO要推荐使用PDA图。
9.试说明Jackson方法是一种怎么样的程序设计方法。它有哪些工作步骤?
Jackson方法是以数据结构(data structure)为基础设计每个模块的处理过程,将数据结构转化成程序结构。具体工作步骤有:
第1步:用Jackson图描述 I\O 的数据结构
第2步:在两个图中指出有直接因果关系、可以同时处理的单元
第3步:将数据结构映射到程序结构
第4步:列出所有操作条件,并分配到上幅程序结构图中
第5步:用Pseudocode 表示程序
第六章实现
1.说明什么是程序编码?为什么程序设计语言的特点和编码风格会影响到程序的可靠性、可读性、可测试性和可维护性?
所谓“编码”,就是将在低级抽象层次得到的详细设计结果,翻译成用某种程序设计语言书写的程序。是软件设计的自然结果。
而程序设计语言是否有理想的结构化、模块化机制,是否有可读性好的控制结构和数据结构等特性,以及程序设计语言提供的编译、软件工具等,再加上程序的设计风格会很深刻的影响软件的质量和可维护性、可测试性、可靠性等。
2.用户界面设计的最一般原则,即所谓“黄金规则”是什么?
1.置用户于控制之下;
2.减少用户的记忆负担;
3.保持界面一致。
3.软件界面设计包含了哪几个方面的基本内容?
界面设计包括三个方面:1.软件构件间接口;2.软件与其它系统的接口;
3.软件与操作者之间的接口,即用户界面。
4.用户界面提供系统服务的方式通常有哪两种?
命令驱动和屏幕菜单驱动
5.WIMP界面是屏幕菜单驱动用户界面的一种形式,其设计准则有哪些?
(1) 明确的动作:在屏幕上指点并操纵对象
(2) 即时反馈:操作结构即见
(3) 增量效应:图标应被拖曳连续移动,而非跳跃
(4) 可视交互:交互操作与用户概念模型匹配
(5) 剥皮式学习:学习系统功能复杂性逐层加深
(6) 可逆动作:也即应有退回操作
(7) 事先验证:只允许合法操作产生效果
6.为什么说软件界面设计的质量会直接影响到用户对软件产品的评价?
用户界面(User-interface)又称人机界面(man-computer interface),是用户和计算机联系的中间媒介,是系统中最重要、最关键的部分之一。用户界面设计的好坏,直接影响到系统设计的成败。
这是因为,如果一个界面设计的不好,也即通常所说的用户界面不友好,可以使用户在使用时感到不便,甚至制造麻烦,系统就难以发挥应有的效益,甚至可能被用户弃用。
7.什么是系统响应时间?系统响应时间有哪些重要属性?
系统响应时间指从用户完成某个控制动作,到系统给出预期响应的时间。
系统响应时间有2个重要的属性:长度和易变性。
8.在设计软件系统的用户帮助设施时,需要注意解决哪些问题?
1.在用户与系统交互期间,是否任何时候都能获得关于系统任何功能的帮助信息?
2.用户怎样请求帮助?
3.怎样显示帮助信息?
4.用户怎样返回到正常的交互方式中?
5.怎样组织帮助信息?
9.软件出错处理设计,即软件安全性设计。一个交互式出错处理程序应该具备哪些功能和属性?
1.信息应该使用用户可以理解的术语描述。
2.信息应该提供有助于从错误中恢复的建设性意见。
3.信息应该指出错误可能导致的后果。
4.信息应该伴随感官提示。
5.信息不能带有指责色彩。
10.测试的最基本目标是什么?
以尽可能小的代价,发现尽可能多的错误。
11.软件测试的原则有哪些?
①应当把“尽早和不断的测试”作为座右铭
②测试应由独立的专业测试机构来完成
③测试工作要全面,但不可能实现“穷举”
④只能尽可能查错,不能证明程序中没有错
⑤软件测试符合2-8(Pareto)原理
⑥应妥善保存测试文档
⑦制定严格、合理的测试计划
⑧错误经过修改后,相关的测试必不可少
12.软件测试的方法有哪几种?
黑盒测试和白盒测试。
13.简单说明什么是白盒测试,什么是黑盒测试。
黑盒测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程的测试方法。黑盒测试又称功能测试。
白盒测试是对程序的执行细节进行测试,通过设计测试数据,验证程序模块的每个路径的执行情况。白盒测试又称结构测试。
14.简述软件测试的步骤。
(1) 单元测试——程序设计 & 代码bugs
(2) 子系统测试——模块连接
(3) 系统测试——需求确认 & 系统设计
(4) 验收测试——用户加入
(5) 平行运行——新旧系统比较运行结果
16.为什么单元测试必须由编程者自己完成?
单元测试是对程序逻辑结构的测试。而对程序结构最为熟悉的,莫过于编
程者。再者,高质量的程序模块是构造系统的基础,因此编程者必须向下一道工序提交符合质量要求的产品。
17.单元测试的主要手段有哪些?
代码审查、计算机测试等。
18.单元测试主要从哪5个方面进行?
主要测试以下五个方面:
1. 模块接口
2. 局部数据结构
3. 重要的执行通路
4. 出错处理通路
5. 边界条件
19.为什么人工代码审查十分重要?
一次审查可发现多个错误,不必改一个测一个。
20.集成测试主要有渐增式测试、非渐增式测试两种,试述两种方式的异同点。
渐增式测试:可以较早发现模块间的接口错误、出现的错误往往跟最新加入的模块有关、在不断集成的过程中使模块不断在新的条件下受到新的检测,测试更彻底,但较非渐增式测试费时。
非渐增式测试由于最后才组装,因此错误发现得晚、发现错误后难以诊断定位,但可以同时并行测试所有模块,能充分利用人力。
21.描述集成测试的两种策略,并比较它们的优缺点。
自顶向下测试和自底向上测试两种。
自顶向下测试的优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,在早期发现上层模块的接口错误。主要缺点是需要存根程序,可能遇到与此相联系的测试困难,底层模块的错误发现较晚,而且对人力的使用也不利。
而自底向上测试的优缺点与自顶向下测试的优缺点正好相反。
22.什么是回归测试?回归测试的测试用例集如何确定?
回归测试是指重新执行已经做过的测试的某个子集,以保证系统在发生调试、功能变化等事项后,没有带来非预期的副作用。
回归测试的测试用例集按以下方法确定:
1.检测软件全部功能的代表性测试用例。
2.专门针对可能受修改影响的软件功能的附加测试。
3.针对被修改过的软件成分的测试。
23.什么是确认测试?确认测试的任务是什么?如何确认其范围?
验收软件的有效性(功能和性能达标)。
确认测试的工作范围主要有:
1.按合同规定审查软件配置;
2.设计测试计划,使通过测试保证软件能满足所有功能、性能要求;
3.文档与程序一致,具有维护阶段所必须的细节;
4.严格按用户手册操作,以检查手册的完整性和正确性。
24.设计测试方案的任务有哪些?
①预定要测试的功能
②设计输入的测试数据
③列出预期结果
25.什么是逻辑覆盖测试法?它主要用于什么测试?
逻辑覆盖测试是一种对程序逻辑通路进行覆盖的测试,通常适用于白盒测试。
26.什么是等价划分法?它主要用于什么测试?
是一种很常用的测试方法。其对测试数据的选择是基于对程序功能的分析,按照程序输入要求和输出要求,选择若干数据进行测试功能的过程。
等价划分法主要用于黑盒测试。
27.什么是边值分析法?它主要用于什么测试?
根据经验,在程序处理的边界最容易发生错误的地方进行测试,主要用于黑盒测试。
28.什么是错误推测法?它主要用于什么测试?
利用有经验的测试者对程序可能发生错误的位置的推测进行测试的方法,主要用于黑盒测试。
29.一个软件的测试策略应该是怎样的?
黑盒设计 白盒补充
①在任何情况下都应首先使用边界值分析的方法;
②必要时用等价划分法补充;
③必要时再用错误推测法补充;
④对照程序逻辑,检查测试方案。
30.什么是调试?调试和测试有什么不同?
测试——发现错误
调试——改正错误
调试与测试的区别在于,调试作为测试的后续工作,主要是解决和排除测试中出现的错误。
31.简单说明调试的方法和策略。
调试过程的关键不是调试技术,而是用来推断错误原因的基本策略。主要有:
①试探法:凭经验猜测。
②回溯法:由症状(symptom)最先出现的地方,沿control flow向回检查。
适用于小型程序。
③对分法:在关键点插入变量的正确值。
④归纳法:从错误症状中找出规律,推断根源。
⑤演绎法:普通 特殊
32.什么是软件的可靠性、可用性和正确性?
软件可靠性是指程序在给定的时间间隔内,按照说明书的规定,成功地运行的概率。
软件可用性是指程序在给定的时间点,按照说明书的规定,成功地运行的概率。
软件正确性是指程序的功能正确。
第七章维护
1.什么是软件维护?
在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
2.软件维护有哪几种类型?
①改正性维护:诊断和改正错误;
②适应性维护:为了和变化了的环境(如软\硬件升级、新数据库等)适当地配合而修改软件;
③完善性维护:为了增加新功能,修改已有功能,改造界面,增加HELP等,而修改软件;
④预防性维护:为了改进未来的可维护性或可靠性,或为了给未来的改进奠定更好的基础而修改软件。
3.为什么说软件文档维护和代码维护同样重要?
这是因为,软件文档是影响软件可维护性的决定因素。
4.为什么说维护的代价很高?应该怎样做才能降低维护的代价?
一般维护的工作量占生存周期70%以上,维护成本约为开发成本的4倍(满足8-2规则)。维护代价分为:
1.有形代价:费用已上升至总预算的80%;
2.无形代价:
?占用资源以致延误开发;
?修改不及时引起用户不满;
?维护引入新错误,降低了软件质量;等等。
3.维护工作量的经验模型:M = P + K*e c-d
降低维护代价的通常认识是:提高程序的可维护性,这也是软件工程学的主要目的。
5.导致维护成本高企的原因主要有哪些?
软件开发途径不好,导致软件可维护性差,原来的开发人员没有参与维护,维护成本日益高涨等,从维护工作量的经验模型可以看到,维护工作量和成本将呈指数增加。
6.什么是软件的可维护性?
软件可维护性可定性地定义为:维护人员理解、改正、改动和改进这个软件的难易程度。
7.如何提高软件的可维护性?
可以从提高决定软件可维护性的因素着手,这些因素是:可理解性、可测试性、可修改性、可移植性、可重用性、可靠性、可使用性、效率等。
9.为什么说文档是影响软件可维护性的决定因素?
由于长期使用的软件系统在使用过程中会有多次修改的经历,而文档应该记载了这些重要的修改,所以文档比之代码更为重要。
10.什么是软件的系统文档?
系统文档是指软件系统从问题定义、需求说明、设计、实现到验收测试计划等一系列和系统实现密切相关的技术文档。
11.什么是软件的用户文档?
提供用户了解、使用、操作和安装系统的文档资料。
12.什么是可重用性?如何通过提高软件的可重用性来提高软件的可维护性?
可重用性是指同一事物不加修改或稍加修改,就可以在不同环境多次重复使用。大量使用可重用软件构件,可大幅提高软件的可维护性。主要体现在两个方面:
1.可重用构件通常都是组装成功的部件,加上每次重用又都会进一步完善部件,因此可以大幅提高软件的可靠性,而改正性维护要求会降低。
2.很容易修改可重用的软件构件,使之适应新的应用环境,因此软件中使用可重用构件越多,软件的适应性维护和完善性维护也越容易。
13.为什么要进行软件可维护性复审?
目的是提高软件的可维护性。
可维护性复审在软件开放的不同阶段有不同的重点。例如,在分析阶段的复审重点是:可靠性、可移植性、可用性。而编码阶段则主要是:可理解性、可修改性、可移植性和效率。
14.什么是软件的逆向工程和再工程?
软件逆向工程是指当维护对象缺乏必要的文档资料时,分析已有程序,寻求比源代码更高级的抽象表现形式,恢复软件原有设计的过程。换言之,是一个恢复设计的过程。
软件再工程则是以软件工程学为指导,对目标软件进行重新设计、重新编码和测试的过程。
15.逆向工程与再工程与软件的预防性维护有什么样的关系?
预防性维护是为了改进软件未来的可维护性或可靠性,或为了给软件未来的改进奠定更好的基础而修改软件的过程。
预防性维护就是对软件将来可能需要的改动,使用逆向工程与再工程方法对软件进行维护。
16.假设你的任务是对一个已有软件进行重大修改,而且只允许你从以下文档中选取两份:(a)程序的规格说明;(b)程序的详细设计结果(自然语言描述加上某种设计工具表示);(b)源程序清单(其中有适当数量的注解)。
你将选取哪两份文档?为什么这样选取?你打算如何完成这个任务?
应该选择(a)程序的规格说明和(b)程序的详细设计结果。
因为是重大修改,所以需要从修改程序规格说明和详细设计开始,对开发
文档进行重大修改,而源码也会需要重新编制。
第八章面向对象方法学引论
1.为什么要引入面向对象方法学?
1、瀑布模型的缺点:僵化
2、SA - SD - SP 技术的缺点:本质上是基于过程的设计不易被理解;且功能变化往往引起结构变化较大,稳定性不好。系统有明确的边界定义,且系统结构依赖于系统边界的定义,这样的系统不易扩充和修改。数据与操作分开处理,可能造成软构件对具体应用环境的依赖,可重用性(reusability)较差。
2.面向对象方法学有哪4个基本要素?
对象、类、继承、消息
3.面向对象方法学的优点主要有哪些?
1.以object为核心,强调对现实概念的模拟而不是算法。
2.以object模拟实体,需求变化不会引起结构的整体变化,因为实体相对稳定,故系统也相应稳定。
3.一个class所有的 instances 都可重用它的代码;由 inheritance 派生出的新的 class 可重用其父类的代码,并且可以修改、扩充而不影响其父类的使用。
4.从稳定性、Class 的独立性强、继承和多态性、容易理解、容易测试、调试等几方面改善了可维护性。
4.什么是“对象”?它与传统数据有何不同?
对象是封装了数据结构及可以施加在这些数据结构上的操作的封装体,可以表示为:对象Object: = 身份ID + 方法Method + 属性Attribute+ 消息Message。
与传统数据相比,对象有以下特点:
①以数据为中心,不设与数据无关的操作;
② Object主动处理而不被动地等待被处理,外部只能通过message请求操作;
③具有黑盒性:外部操作时,无须知道该object内部的数据结构及算法;
④具有并行性:不同object各自独立地处理自身数据,彼此间仅通过传递message完成通信;
⑤模块独立性好:内聚强( ① )、耦合松( ③④ )
5.什么是“类”?
具有相同数据和相同操作的一组对象。
6.什么是“继承”?
子类自动共享父类的attributes 和methods ,而不必重复定义。
7.什么是模型?软件开发为什么要建立模型?
模型就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。
软件开发建立模型是为了帮助我们思考问题、定义术语、作出适当的假设,并帮助我们保持定义和假设的一致性。
对于较为复杂而不能直接理解的系统,特别需要建立模型,其目的是可以减少复杂性。
8.什么是对象模型?建立对象模型时主要使用哪些图形符号?这些符号的含义是什么?
描述系统数据结构。
对象模型具体是描述系统的静态结构。
9.什么是动态模型?建立动态模型时主要使用哪些图形符号?这些符号的含义是什么?
描述系统控制结构。
动态模型具体是表示系统瞬时的控制性质。
10.什么是功能模型?建立功能模型时主要使用哪些图形符号?
描述系统功能。
功能模型具体描述的是表明系统应该做什么。
1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__ 测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件 和应用软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行 性、法律可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化设计 方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法模型估 计三种类型。 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是(A )。 3.A、软件开发工作的基础B、软件生存周期的开始 4.C、由系统分析员单独完成的D、由用户自己单独完成的 5.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要(B )。 6.A、明确的需求定义B、完整的生命周期 7.C、较长的开发时间D、熟练的开发人员 8.软件维护时,对测试阶段未发现的错误进行测试、诊断、定位、纠错,直至修改的回归 测试过程称为( A )。 9.A、改正性维护B、适应性维护 10.C、完善性维护D、预防性维护 11.一般说来,投入运行的软件系统中有错误(A )。
吉林大学网络教育学院 2019-2020学年第二学期期末考试《电力系统分析》大作业 学生姓名专业 层次年级学号 学习中心成绩 年月日
作业要求:大作业要求学生手写完成,提供手写文档的清晰扫描图片,并将图片添加到word文档内,最终wod文档上传平台,不允许学生提交其他格式文件(如JPG,RAR等非word文档格式),如有雷同、抄袭成绩按不及格处理。 一计算题 (共9题,总分值90分 ) 1. 有一台型10kv网络供电的降压变压器,铭牌给出的试验数据为:。 试求(1)计算折算到一次(二次)侧的变压器参数,并作其Г型Π型等值电路 变压器不含励磁之路时的Π型等值电路。(10 分)
2. 降压变压器及等效电路示于图5-7a、b。折算至一次侧的阻抗为Ω。已知在最大负荷和最小负荷时通过变压器的功率分别为,一次侧的电压分别为=110KV和113KV。要求二次侧母线的变化不超过6.0—6.6KV的范围,试选择分接头。 图5-19 习题5-8a 5-8b (10 分)
3. 简单电力系统如图7-52习题7-7所示,已知元件参数如下:发电机:,=0.16, =0.19;变压器:,=10。5,k点分别发生单相接地、两相短路、两相接地和三相短路时,试计算短路点短路电流的有名值,并进行比较分析。 图7-52 习题7-7(10 分)
4.已知一200km长的输电线,R=0.1Ω/km,L=2.0mH/km,C=0.01μF/km,系统频率为50Hz。使用(1)短线路,(2)中程线路,(3)长线路模型求其π形等效电路。(10 分) 解: (1)短线路一字型等值电路参数: (2)中程线路∏形等值电路参数(不需修正): (3)长线路:
第1次作业 路松峰20140062 2018-07-29 10:32:40
软件产品的开发基本上是线性顺序进行的。 2、什么是模型? 模型是认识客观事物时,用文字、符号或者图表等进行简化问题描述的一种方式。 二、判断题 1、在软件开发中采用原型系统策略的主要困难是成本问题。 正确 2、软件过程改进也是软件工程的范畴。 正确 三、选择题 1、包含风险分析的软件工程模型是( D )。 A.喷泉模型 B.瀑布模型 C.增量模型 D.螺旋模型 2、软件过程是(C )。 A.特定的开发模型 B. —种软件求解的计算逻辑 C.软件开发活动的集合 D.软件生命周期模型 3、CMM模型将软件过程的成熟度分为5个等级。在(B )使用定量分析来不断地改进和管理软件过程。 A.管理级 B.优化级 C.定义级 D.可重复级 第3次作业 路松峰_20140062 2018-07-29 10:34:34 一、简答题 1、需求分析有哪三种方法? 面向功能分析、面向数据分析、面向对象分析 2、什么是面向数据结构方法? 面向数据结构方法是一类侧重从数据结构方面去分析和表达软件需求,进行软件设计的开发方法。该方法从数据结构入手,分析信息结构,并用数据结构图来表示,再在此基础上进行需求分析,进而导岀软件的结构。
二、判断题 1、需求评审人员主要由开发人员组成,一般不包括用户。 错误 2、非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的要求。正确 三、选择题 1、增量模型本质上是一种( C )。 A.线性顺序模型 B.整体开发模型 C.非整体开发模型 D.螺旋模型 2、需求工程的主要目的是( C )。 A.系统开发的具体方案 B.进一步确定用户的需求 C.解决系统是“做什么的问题” D.解决系统是“如何做的问题” 3、在E-R模型中,包含以下基本成分(D )。 A.数据、对象、实体 B.控制、关系、对象 C.实体、关系、控制 D.实体、属性、关系 第4次作业 路松峰_20140062 2018-07-29 10:35:04 一、简答题 1、面向对象分析模型的五个层次是什么? 五个层次:类与对象层,属性层,服务层,结构层,主题层 2、对象的五个特点是什么?
《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机?它们有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 “软件危机”包含两方面的问题: (1)如何开发软件,以满足对软件日益增长的需求; (2)如何维护数量不断膨胀的已有软件。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的原因 (1)开发人员与客户认识之间的矛盾 (2)开发人员能力与开发目标之间的矛盾 (3)预估与实际工作量之间的矛盾 (4)客户认识的提高与软件维护之间的矛盾 (5)遗产系统与实施软件之间的矛盾 2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改, 不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成” 是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是 整体构架的错误。 3.什么是软件工程?它有哪些本质特征?怎么用软件工程消除软件危机? 软件工程是知道计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够
2019最新软件工程导论期末考试题库及答案 1.填空题 1.一般来说,可以从__一致性__、_完整性___、_现实性____和_有效性___四个方面验证软件需求的正确性。 2.IPO图是_输入、处理和输出图_的简称,它是美国IBM 公司发展完善起来的一种图形工具。 3.系统流程图是描述__物理模型__的传统工具,用图形符 号表达了系统中各种元素之间的_____信息流动_____情况。4.数据流图中的箭头表示数据流,椭圆或圆形表示数据处理,矩形表示数据的源点/终点。5.软件测试的步骤按顺序分别是:___单元测试_____、子系统测试、系统测试(子系统和系统测试通常称为集 成测试)、__确认测试__和_____系统测试(集成测试)____ 6.软件生命周期一般可分为_问题定义_、可行性研究、_需求分析_、设计编码、_测试_、运行与维护阶段。 7.可行性研究主要集中在以下四个方面_经济可行性_、__技术可行性____、__法律可行性___和抉择。 8.在结构化设计中,HIPO图应用在总体设计阶段,由IPO图和_层次图_两部分组成。 9.复杂问题的对象模型通常由下述五个层次组成:主题层、___类与对象_层、__结构___层、_属性_层和__服务_层。 10.实施精化设计的目标是基于模块的“高内聚低耦合” 的原则,提高模块的_独立性。 11.软件生命周期一般可分为___问题定义_、可行性研究、__需求分析__、概要设计__、详细设计、编码、__软件测试_、运行与维护阶段。 12.面向对象的数据存储管理模式分为__文件__、_关系数据库__和__面向对象数据库___三种。 13.单元测试一般以_白盒_测试为主,__黑盒__测试为辅。
浙江大学远程教育学院 《工程数学》课程作业 姓名:钟标学号:715129202009 年级:2015春学习中心:浙大校内直属学习 中心(紫金港)—————————————————————————————《复变函数与积分变换》 第一章 1.1计算下列各式: (2)、(a-bi)3 解(a-bi)3=a3-3a2bi+3a(bi)2-(bi)3 =a3-3ab2+i(b3-3a2b) ; (3)、; 解== == 1.2、证明下列关于共轭复数的运算性质: (1); 证()-i() ==
(2) 证= = =-- ==()() =-- 即左边=右边,得证。 (3)=(Z2≠0) 证==() == == 1.4、将直线方程ax+by+c=0 (a2+b2≠0)写成复数形式[提示:记x+iy=z] z+A+B=0,其中A=a+ib,B=2C(实数) 。 解由x=,y=代入直线方程,得
()+()+c=0, az+-bi()+2c=0, (a-ib)z+( a+ib)+2c=0, 故z+A+B=0,其中A=a+ib,B=2C 1.5、将圆周方程a(x2+y2)+bx+cy+d=0 (a≠0)写成复数形式(即用z与来表示,其中z=x+iy) 解:x=,y=,x2+y2=z代入圆周方程,得 az+()+()+d=0,2az+(b-ic)z+(b+ic)+2d=0 故Az++B+C=0,其中A=2a,C=2d均为实数,B=b+ic 。 1.6求下列复数的模与辅角主值: (1)、=2, 解 arg()=arctan= 。 1.8将下列各复数写成三角表示式: (2)、i;
路松峰_ 2018-07-29 10:32:40 一、简答题 1.什么是软件工程 软件工程是关于软件生产的各个方面的工程学科。 二、判断题 1、软件危机的主要表现是软件需求增加,软件价格上升。 / 正确 2、软件就是程序,编写软件就是编写程序。 错误 三、选择题 1、用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具,通常也称为( A )工具。 A. CASE C. CAM D. CAD 2、在下列选项中,( C )不是软件的特征。 A.系统性与复制性 B.可靠性与一致性 C.有形性与可控性 D.抽象性与智能性 ) 3、软件工程的三要素是( B ) A.技术、方法和工具 B.方法、工具和过程 C. 方法、对象和类 D.过程、模型和方法
第2次作业 路松峰_ 2018-07-29 10:33:32 一、简答题 … 1、快速原型模型的主要优点是什么 软件产品的开发基本上是线性顺序进行的。 2、什么是模型 模型是认识客观事物时,用文字、符号或者图表等进行简化问题描述的一种方式。 二、判断题 1、在软件开发中采用原型系统策略的主要困难是成本问题。 正确 2、软件过程改进也是软件工程的范畴。 · 正确 三、选择题 1、包含风险分析的软件工程模型是( D )。 A.喷泉模型 B.瀑布模型 C.增量模型 D.螺旋模型 2、软件过程是( C )。 A.特定的开发模型 B.一种软件求解的计算逻辑 C.软件开发活动的集合 D.软件生命周期模型 3、CMM模型将软件过程的成熟度分为5个等级。在(B )使用定量分析来不断地改进和管理软件过程。
… 第3次作业 路松峰_ 2018-07-29 10:34:34 一、简答题 1、需求分析有哪三种方法 面向功能分析、面向数据分析、面向对象分析 ) 2、什么是面向数据结构方法 面向数据结构方法是一类侧重从数据结构方面去分析和表达软件需求,进行软件设计的开发方法。该方法从数据结构入手,分析信息结构,并用数据结构图来表示,再在此基础上进行需求分析,进而导出软件的结构。 二、判断题 1、需求评审人员主要由开发人员组成,一般不包括用户。 错误 2、非功能需求是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的要求。正确 三、选择题 ;
第一章 1-1 什么是软件危机? 是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-3 什么是软件工程? 是指导计算机软件开发和维护的一门工程学科。 1-4 简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 目前使用得最广泛的软件工程方法学(2 种): 1. 传统方法学:也称为生命周期方法学或结构化范型。优点:把软件生命周期划分成基干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。缺点:当软件规模庞大时,或者对软件的需求是模糊的或会承受时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 2. 面向对象方法学:优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 1-6 什么是软件过程?它与软件工程方法学有何关系? z 软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤z 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型 1-7 什么是软件生命周期模型,试比较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适用范围。 软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。 瀑布模型的优点:1.可强迫开发人员采用规范的方法;2.严格规定了每个阶段必须提交的文档;3.要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。 瀑布模型的缺点:1.在软件开发初期,指明用户全部需求是困难的;2.需求确定后,经过一段时间才得到软件最初版本;3.完全依赖规格说明,导致不能满足用户需求。适用中小型项目。 快速原型模型的优点:1满足用户需求程度高;2用户的参与面广;3返工现象少快速原型模型的优点:不适用大型软件的开发适用于小型项目。 增量模型的优点:1短期内可以交付满足部分用户需求的功能产品;2逐步增加功能可以让用户去适应新产品;3开放式的软件可维护性比较好;4开始第一构件前,已经完成需求说明。 增量模型的缺点:1对现有产品功能造成破坏;2意义上的矛盾适用于中型软件的开发 螺旋模型的优点:1集成了瀑布模型、快速原型模型、增量模型的优点;2支持用户需求动态变化;3需求分析与软件实现紧密联系相互依赖;4原型作为刑式的可执行的需求规格说明,即利用用户和开发人员共同理解,又可作为后续开发的基础;5为用户参与决策提供方便;6提高目标软件的适应能力;7降低风险;8在大型软件开发过程中充分发挥优势。螺旋模型的缺点:1迭代次数影响开发成本,延迟提价时间;2找不到关键改进点,人才、物力、财力时间引起无谓消耗;3成于风险分析,败于风险分析。适用于内部开发的大规模软件项目。 1-8:为什么说喷泉模型叫好的体现了面向对象软件开发过程无缝和迭代的特性?
一、单项选择题 1.适合于面向对象方法学的软件生存周期模型是( B ) A.瀑布模型 B.喷泉模型 C.螺旋模型 D.增量模型 2.从实用角度看,数据规范化程度在大多数场合选用第( C )范式。 A. 1 B.2 C.3 D.5 3. 可行性分析研究的目的是( A )。 A.项目值得开发否 B.争取项目 C.开发项目 D.规划项目 4. 模块的内聚性最高的是 ( D ) A.逻辑内聚 B.时间内聚 C.偶然内聚 D.功能内聚 5.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称做 ( B ) A. 软件工程 B. 软件危机 C. 软件周期 D. 软件产生 6. 需求分析阶段的任务是确定( D ) A.软件开发方法 B.软件开发工具 C.软件开发费 D.软件系统的功能 7. 完整的软件结构通常用( B )图来表示。 A. IPO 图 B. HIPO 图 C.PAD 图 D.DFD 图 8. 在白盒法技术测试用例的设计中( A )是最弱的覆盖标准。 A.语句 B.路径 C.条件组合 D.判定 9?对象实现了数据和操作的结合,使数据和操作( C )于对象的统一体中。 A.结合 B.隐藏 C.封装 D.抽象 10. 在数据流图中,圆代表( C )。 A.源点 B.终点 C.加工 D.模块 11. 模块内聚度越高,说明模块内各成分彼此结合的程度越( B )。 A.松散 B.紧密 C.无法判断 D.相等 12. 软件测试方法中,黑盒、白盒测试法是常用的方法,其中黑盒测试主要用于测试( B )。 A.结构合理性 B.软件外部功能 C.程序正确性 D.程序内部逻辑 13. 面向对象开发方法中, ( C )是占主导地位的标准建模语言。 A.Booch 方法 B.Coad 方法 C.UML 语言 D.OMT 方法 14. 软件需求分析的主要任务是准确地定义出要开发的软件系统是( C ) A.如何做 B.怎么做 C.做什么 D.对谁做 15. 结构化程序设计的一种基本方法是( C ) A.筛选法 B.迭代法 C.逐步求精法 D.递归法 二、填空题 1. 目前使用最广泛的软件工 程学方法分别是传统方法学和(面向对象方法学 ) )和事务流。 文档 ) 。 ( 重复 )三种结构。 自顶向下 的集成测试方法,对软件结构中下层使 6. 软件维护包括 ( 改正性维护 )、适应性维护、完善性维护、预防性维护。 7. 面向对象方法学建模得到的三个基本子模型是 (对象建模 ) .动态模型、功能模型。 8. 复杂大型问题的对象模型通常由主题 2. 数据流图中信息流的类型有(变换流 3. 软件的定义是:软件 =程序+数据+ 4. 经典结构程序设计包括顺序、选择和 5. 集成测试时对软件结构中上层使用 用 ( 自底向上 ) 的集成测试方法。
第一章练习题 一、填空题 1、软件工程三要素是:方法、工具、过程。 2、软件开发方法是指软件开发过程中所应遵循的方法和步骤。 二、名词(术语)解释: 1、可靠性---是指在给定的时间间隔内,程序成功运行的概率。可靠性是衡量软件质量的一个重要目标。 2、可理解性---指系统具有清晰的结构,能直接反映问题的需求。可理解性有助于控制软件系统的复杂性,并支持软件的维护、移植和重用。 三、问答题 1、面向对象方法的优点是什么? 答:(1)将现实世界问题向面向对象解空间直接映射,实现对现实世界的直接模拟。 (2)以数据为中心,而不是基于对功能的分解,使得软件结构相对稳定,软件的重用性、可靠性、可维护等特性都较好。 2、可视化开发方法的优点有哪些? 答:(1)简化了图形用户界面的设计和编码工作,将开发的注意力主要集中在程序的执行逻辑和工作流程上。 (2)软件开发简单,易学、易上手。 (3)专业或非专业人员都能参与软件开发活动。 第二章练习题 一、填空题: 1、软件工程过程是:为获得软件产品,在软件工具支持下由软件人员完成的一系列软件工 程活动。 2、一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程经历的生存过程称为软件生存期或叫生命期。 3、软件生命周期的阶段划分为3个时期是:定义时期、开发时期、维护时期。 4、软件工程标准的5个层次是:国际标准、国家标准、行业标准、企业规范、项目规范。 二、简答题: 1、瀑布模型的优点有哪些? 答:1、强迫开发人员采用规范的技术方法; 2、严格地规定了每个阶段必须提交的文档; 3、每个阶段结束前必须正式进行严格的技术审查和管理复审。 2、瀑布模型的缺点是什么? 答:1、在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。 2、在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。 3、作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很 难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。
软件工程导论第五章课后 答案 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII
第五章习题答案 1、为每种类型的模块耦合举一个具体例子。 答:耦合是对一个软件结构内不同模块之间互连程度的度量。耦合强弱取决于模块间接口的复杂程度,进入或访问某一模块的点,以及通过接口的数据,一般模块之间可能的连接方式有7种,构成耦合的7种类型,它们之间的关系为: 下面举例说明以上各种耦合: a.非直接耦合(Nondirect Coupling)在这种情况下,两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合。例如在实数的运算中,有两个模块分别完成几个实数的求和,求乘积功能,这两个模块之间没有直接联系,只有在主模块调用中有执行的前后顺序而已,这个例子即属于非直接耦合。 b.数据耦合(Data Coupling)即一个模块访问另一个模块时,彼此之间是通过数据参数来交换输入,输出信息的,这种耦合为数据输入,输出信息的这种耦合为数据耦合。如有两个模块,其中A完成两个烽的比较,求出其中最大的并返回该值,模块B是完成了个数的比较,求出其中最大的并返回该最大值,为完成四个数的比较,模块B调用模块A即可完成,在这种调用关系中,模块A的运算结
果作为一个参烽参加B的运算,这两个模块之间即发生数据耦合。数据耦合是松散的耦合,模块间的独立性比较强。 c.标记耦合(Stamp Coupling),即一组模块通过参数传递记录信息,这就是标记耦合。事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量。 d.控制耦合(Control Coupling)即一个模块通过开关标志,名字等控制住处明显的控制,选择另一模块的功能,这就是控制耦合,如下图所示,这一种耦合实质是在单一接口上实现选择多功能模块中的某项功能,如程序设计中用到多路选择结构即是最好的例子。e.外部耦合(External Coupling)即一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递全局数据结构,而且不是通过参数表传递全局变量的信息。如C语言中都访问被说明为extern类型的外部变量的各个模块之间即发生外部耦合。外部耦合引起的问题类似于下面要介绍的公共耦合,区别在于外部耦合中不存在依赖于一个数据结构内部各项的物理安排。f.公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就是公共耦合。公共的数据环境可以是全局的数据结构,共享的通信区,内存的公共覆盖区等。如几个模块对同一个数据库的查询就属于这种耦合。公共耦合可以分为松散的公共耦合和紧密的公共耦合,其中松散的公共耦合是单向操作,如两个或多个模块对同一个文件的读操作;而紧密的公共耦合是双
《软件工程导论》期末考试-试题与答案 一、填空题 1.软件工程中的结构化分析 SA 是一种面向________的分析方法。 2.软件模块独立性的两个定性度量标准是_________________。 3.软件开发是一个自顶向下逐步细化和求精的过程,而软件测试是一个________的过程。 4. ________和数据字典共同构成了系统的逻辑模型 5. ___________是一种黑盒测试技术,这种技术把程序的输入域划分为若干个数据类,据此导出测试用例。二、单选 题 1.在软件危机中表现出来的软件质量差的问题,其原因是_______。A.软件 研发人员素质太差B.用户经常干预软件系统的研发工作C.没有软件质量标 准 D.软件开发人员不遵守软件质量标准2.在软件质量因素中,软件在异常条件下仍能运 行的能力成为软件的_____。A.安全性B.健壮性C.可用性D.可靠性 3.在下列测试技术中,______不属于黑盒测试技术。A.等价 划分B.边界值分析C.错误推测D.逻辑覆盖 4.软件工程方法是在实践中不断发展着的方法,而早期的软件工程方法主要是指______。A.原型化方法B.结构化方法C.功能化方法D.面向对象方法 5. ______是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是 隐蔽的,外界只能通过有限的接口与对象发生联系。A.多态 B.继承C.封装D.消息 6. Jackson 方法是在软件开发过程中常用的方法,使用 Jackson 方法时可以实现______。A.从数据结构导出程序结构B.从数据流图导出初始结构图C.从模块结构导出数据结构D.从模块结构导出程序结构 7.软件测试时为了________而执行程序的过程。A.纠正 错误B.发现错误 C.避免错误 D.证明错误 8.在软件系统中,一个模块应具有什么样的功能,这是由_____决定的。A.总体 设计B.需求分析C.详细设计D.程序设计 9.面向对象分析是对系统进行_________的一种方法。A.需求 分析B.程序设计C.设计评审D.测试验收 10.软件文档是软件工程实施中的重要部分,它不仅是软件开发各阶段的重要依据,而 且影响软件的_______。A.可理解 性B.可维护性C.可扩展性D.可 移植
学号_31009210** 姓名_朱某某班级_软件10* 作业一 1.什么是软件危机?它有哪些典型表现?为什么会出现软件危机? “软件危机”是指计算机软件的“开发”和“维护”过程中所遇到的一系列“严重问题”。这些问题不仅仅是不能正常运行的软件才具有的,实际上,几乎“所有软件”都不同程度地存在这些问题。 “软件危机”包含两方面的问题: (1)如何开发软件,以满足对软件日益增长的需求; (2)如何维护数量不断膨胀的已有软件。 它们有以下表现: (1)对软件开发成本和进度的估计常常很不准确; (2)用户对“已完成的”软件系统不满意的现象经常发生; (3)软件产品的质量往往靠不住; (4)软件常常是不可维护的; (5)软件通常没有适当的文档资料; (6)软件成本在计算机系统总成本中所占的比例逐年上升; (7)软件开发生产速率提高的速度,远远跟不上计算机应用普及深入的趋势。 出现软件危机的原因 (1)开发人员与客户认识之间的矛盾 (2)开发人员能力与开发目标之间的矛盾 (3)预估与实际工作量之间的矛盾 (4)客户认识的提高与软件维护之间的矛盾 (5)遗产系统与实施软件之间的矛盾 2.假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及早发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清除它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他? 在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面比较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价俱增。在软件“已经完成”时再引入变动,当然付出的代价更高。一个故障时代码错误造成的,有时这种错误时不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。 3.什么是软件工程?他有哪些本质特征?怎样用软件工程消除软件危机? 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以经济地开发出高质量的软件并有效的维护它,这就是软件工程。 本质特征: 软件工程关注于大型软件的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐地合作是开发软件的关键 软件必须有效支持它用户
第一章 1.1举出至少5个例子来说明“意外效应法则”在计算机软件方面的应用。 答:典型的例子包括使用“数字汽车仪表板”的软件,赋予高科技,高品质的图像的软件;如广泛的消费类电子产品的软件;个人电脑,工业仪器仪表和机器的软件。软件分化出的在电子商务方面的应用。 1.2举例说明软件对社会的影响(包括正面影响和负面影响)。 答:这是一个很好的课堂讨论问题(如果时间允许),而不是专注于老生常谈的(但很重要)隐私问题,生活质量等问题。您可能想要讨论关于”技术恐惧“方面的问题,软件也许会使它恶化但也可能减少”技术恐惧“。另一个有趣的方面是使用诺依曼的“风险”列在SEN中做重点讨论。你也可以考虑基于软件的“现金”经济,新模式的互动娱乐,虚拟现实,电子商务等方面来思考软件对社会的影响。 1.3针对1.1节提出的5个问题,请给出你的答案,并与同学讨论。 答:软件需要如此长的开发时间: a)设施不上线 b)开发工具并不如预期般运作 c)客户提出的新要求,需要重新设计和返工 d)产品依赖于政府的规定,被意外更改。 e)严格的要求,与现有系统的兼容性需要超过预期更多的测试,设计和实现。 f)多个操作系统下运行的任务需求比预期需要更长的时间。 g)软件项目风险管理比预期需要更多的时间。 h)依赖的技术仍处于开发阶段,从而延长日程安排。 开发成本高: a)比当时预期低得令人无法接受的质量,需要进行更多的测试,设计和实施工作。 b)制定了错误的软件功能需要重新设计和实施。 c)开发错误的用户界面,而导致重新设计和实施。 d)开发了不需要的额外的软件功能而延长了开发日程安排。 在将软件交付顾客使用之前,我们无法找到所有错误: a)产品依赖于政府监管,意外而改变。 b)产品技术标准草案,会意外更改。 c)有时会在项目后期添加新的开发人员。 d)因为团队内的冲突有时会导致沟通不畅,而产生糟糕的设计。 e)破坏高效调度产生的项目管理成果和无效的规划 f)有时装备部件质量差,导致额外的测试,设计和集成工作和管理额外的客户关系。 软件开发和维护的过程仍旧难以度量: a)有时该项目的目的是不明确。 b)有大量的业务所涉及的风险。 c)如果产品内置没有装好。 d)我们需要不断检讨我们的工作。 e)进行维护检查的时间。 f)在整个软件开发过程中要彻底组织项目团队。 1.4在交付最终用户之前,或者首个版本投入使用之后,许多应用程序都会有频繁的变更。
软件工程导论课后习题详细答案
《软件工程导论》课后习题答案 第一章软件工程概论 1.什么是软件危机? 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。(2)软件产品的质量往往靠不住。(3)一般软件很难维护。(4)软件生产效率很低。(5)软件开发成本越来越大。(6)软件成本与开发进度难以估计。(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。 2.为什么会产生软件危机? (1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。(2)软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。 3.怎样克服软件危机? (1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。(2)推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。 4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。 5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。 5-1。(1)在1985年对计算机存储容量的需求,估计是 如果字长为16位,则这个存储器的价格是 ● ●(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。 ●在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人每月可开发出10×20条指令。 ●为了开发出4474263条指令以装满存储器,需要的工作量是: ●程序员的月平均工资是4000美元,开发出4474263条指令的成本是 ●(3)在1995年对存储容量的需求估计为: ● 7 4080e =4472.0048.01974 1985??=-P )19601995(28.04080-=e M
软件工程导论期末考试试题 一.选择(20分) 1、瀑布模型把软件生命周期划分为八个阶段:问题的定义、可行性研究、软件需求分析、系统总体设计、详细设计、编码、测试和运行、维护。八个阶段又可归纳为三个大的阶段:计划阶段、开发阶段和( C)。 A、详细计划 B、可行性分析 C、运行阶段 D、测试与排错 2、从结构化的瀑布模型看,在它的生命周期中的八个阶段中,下面的几个选项中哪个环节出错,对软件的影响最大(C )。 A、详细设计阶段 B、概要设计阶段 C、需求分析阶段 D、测试和运行阶段 3、在结构化的瀑布模型中,哪一个阶段定义的标准将成为软件测试中的系统测试阶段的目标(A )。 A、需求分析阶段 B、详细设计阶段 C、概要设计阶段 D、可行性研究阶段 4、软件工程的出现主要是由于(C )。 A.程序设计方法学的影响 B.其它工程科学的影响 C. 软件危机的出现 D.计算机的发展 5、软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证是(C ) A、硬件环境 B、软件开发的环境 C、软件开发工具和软件开发的环境 D、开发人员的素质 6、软件开发常使用的两种基本方法是结构化和原型化方法,在实际的应用中,它们之间的关系表现为 ( B) A、相互排斥 B、相互补充 C、独立使用 D、交替使用 7、UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法(C ) A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法 C、基于对象的面向对象的方法 D、基于数据的数据流开发方法
8、在下面的软件开发方法中,哪一个对软件设计和开发人员的开发要求最高(B ) A、结构化方法 B、原型化方法 C、面向对象的方法 D、控制流方法 9、结构化分析方法是一种预先严格定义需求的方法,它在实施时强调的是分析对象的(B ) A、控制流 B、数据流 C、程序流 D、指令流 10、软件开发的结构化生命周期方法将软件生命周期划分成(A ) A、计划阶段、开发阶段、运行阶段 B、计划阶段、编程阶段、测试阶段 C、总体设计、详细设计、编程调试 D、需求分析、功能定义、系统设计 二.填空(20分) 21.系统流程图是描述物理模型的传统工具,用图形符号表示系统中各个元素 表达了系统中各种元素之间的(信息流动)情况。 22.成本效益分析的目的是从(经济)角度评价开发一个项目是否可行。 23.自顶向下结合的渐增式测试法,在组合模块时有两种组合策略:深度优先 策略和(宽度优先策略) 。 24.独立路径是指包括一组以前没有处理的语句或条件的一条路径。从程序图 来看,一条独立路径是至少包含有一条(在其他独立路径中未有过)的边的路径。 25.汇编语言是面向(机器) 的,可以完成高级语言无法完成的特殊功能,如与外部设备之间的一些接口工作。 26.在JSP方法中解决结构冲突的具体办法是(中间数据结构或中间文件)。 27.详细设计的任务是确定每个模块的内部特性,即模块的算法、(使用的数据)。 28.所有软件维护申请报告要按规定方式提出,该报告也称( 软件问题)报告。 29.有两类维护技术:在开发阶段使用来减少错误、提高软件可维护性的面向 维护的技术;在维护阶段用来提高维护的效率和质量的(维护支援)技术。 30.科学工程计算需要大量的标准库函数,以便处理复杂的数值计算,可供选 择的语言有:(FORTRAN语言)、PASCAL语言、C语言和PL/1语言。三.判断(10分)
软件工程课后习题答案 习题1 略。 习题2 略。 习题3 略。 习题4 2.在什么情况下应该使用形式化说明技术?使用形式化说明技术时应遵守哪些准则? 人们在理解用自然语言描述的规格说明时,容易产生二义性。为了克服非形式化方法的缺点,人们把数学引入软件开发工程,创造了基于数学的形式化说明技术。 应用形式化方法的准则: (1)应该选用释放的表示方法; (2)应该形式化,但不要过分形式化; (3)应该估算成本; (4)应该有形式化方法顾问随时提供咨询; (5)不应该放弃传统的开发方法; (6)应该建立详尽的文档; (7)不应该放弃质量标准; (8)不应该盲目依赖形式化方法; (9)应该测试、测试再测试; (10)应该重用。 4.用有穷状态机说明自动化图书馆流通系统
习题5 略。 习题6 略。 习题7 略。 习题8 略。 习题9 1.什么是面向对象方法学?它有哪些优点? 面向对象方法学,是尽可能模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类认识世界解决问题的方法和过程,从而使得实现解法的解空间(也称为求解域)与描述问题的问题空间(也称为问题域)在结构上尽可能一致。 优点:
1.与人类习惯的思维方法一致; 2.稳定性好; 3.可重用性好; 4.较易开发大型软件产品; 5.可维护性好 10.建立订货系统的用例模型。 分析如下:从对这个订货系统的需求可以知道,仓库管理员通过放在仓库中的终端把零件入库/出库市事务报告给订货系统,系统接受到事务信息之后应该处理事务;采购员需要使用订货系统提供的产生报表功能,以获取订货报表。综上所述,用例如下: 习题10 1.用面向对象方法分析研究本书习题2第2题中描述的储蓄系统,试建立它的对象模型、
第一章 1-1什么是软件危机? 答:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 1-3什么是软件工程? 答:是指导计算机软件开发和维护的一门工程学科。 1-4简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 答:目前使用得最广泛的软件工程方法学有2种: 传统方法学:也称为生命周期方法学或结构化范型。 优点:把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,从而降低了整个软件开发过程的困难程度。 缺点:当软件规模庞大时,或者对软件的需求是模糊的或会随着时间而变化的时候,开发出的软件往往不成功;而且维护起来仍然很困难。 面向对象方法学: 优点:降低了软件产品的复杂性;提高了软件的可理解性;简化了软件的开发和维护工作;促进了软件重用。 1-5、根据历史数据可以做出如下的假设: 对计算机存储容量的需求大致按下面公式描述的趋势逐年增加: M = 4080 e0.28(Y-1960) 存储器的价格按下面公式描述的趋势逐年下降: P1 = 0.3×0.72Y-1974(美分/位) 如果计算机字长为16位,则存储器价格下降的趋势为: P2 = 0.048×0.72Y-1974(美元/字) 在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算: (1) 在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少? (2) 假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用
得分评卷人 一、填空题(每空1分,共20分) 1.软件生存周期一般可分为__问题定义__、可行性研究、_需求分析_____、设计编码、__ 测试________、运行与维护阶段。 2.按软件的功能进行划分,软件可以划分为系统软件、支撑软件 和应用软件。 3.可行性研究主要集中在以下四个方面经济可行性、技术可行 性、法律可行性和抉择。 4.用户界面的可使用性是用户界面设计最重要的也是最基本的目标。 5.常见的软件概要设计方法有3大类:以数据流图为基础构造模块结构的___结构化设计 方法_________,以数据结构为基础构造模块的__jackson方法__________,以对象、类、继承和通信为基础的__面向对象设计方法__________。 6.__数据流图________和__数据字典___共同构成系统的逻辑模型。 7.软件测试的方法有__分析方法________和___非分析方法_______(即黑盒法)。 8.单元测试一般以___白盒_____________测试为主,___黑盒______测试为辅。 9.成本估计方法主要有__自底向上估计________、_自顶向下估计_________和算法模型估 计三种类型。 得分评卷人 二、单项选择题(每小题2分,共10分) 1.下列哪个阶段不属于软件生存周期的三大阶段( C )。 A、计划阶段 B、开发阶段 C、编码阶段 D、维护阶段 2.需求分析是(A )。 A、软件开发工作的基础 B、软件生存周期的开始 C、由系统分析员单独完成的 D、由用户自己单独完成的 3.原型化方法是软件开发中一类常用的方法,它与结构化方法相比较,更需要(B )。 A、明确的需求定义 B、完整的生命周期 C、较长的开发时间 D、熟练的开发人员