1、软件危机定义、发生原因、常见表现,如避免软件危机?(1)软件危机定义:课本Page 8(开发和维护过程)(2)发生原因、常见表现:课本Page 8-9,练习册Page 1(3)如避免:Page 10 (采用软件工程的法)答案(由于大部分答案参考ppt,故仅供参考,下同)软件危机定义:是指在计算机软件的开发和维护过程中所遇到的一系列重问题。
表现在:(1)对于软件开发的成本和进度的估计很不准确。
(2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。
(3)开发的软件可靠性差。
(4)软件通常没有适当的文档。
(5)软件的可维护性差。
(6)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。
原因:(1)软件的规模愈发庞大;(2)软件开发的管理困难。
(3)成功的软件开发经验没被很好地应用。
(4)软件开发和维护中千金错误认识和法的形成可以归结与计算机发展早期软件开发的个体化特点。
(5)软件开发技术落后。
(6)生产式落后。
(7)开发工具落后,生产率提高缓慢。
如避免(参考,可以自己总结):从软件开发的工程化法入手,即用现代工程的概念原理、技术和法去指导软件的开发、管理和维护,这就是软件工程思想和法。
具体措施:(1)使用好的软件开发技术和法;(2)要有良好的组织、密的管理,各类人员协同配合,共同完成任务;(3)使用好的软件开发工具,提高软件生产率;(4)建立格的文档资料,重视软件开发过程的阶段评审。
2、软件生命期模型(软件生命期?)的组成,每个阶段的容?(1)组成:Page 21 (2)容:Page 22—25)答案:软件生存期定义:一个软件从定义到开发、使用和维护,直到最终被弃用,要经历一个漫长的时期,通常把软件经历的这个漫长的时期称为生存期。
软件生存期一般可分为以下阶段:(1)问题定义(2)可行性研究(3)需求分析(4)概要设计(总体设计)(5)详细设计(6)编码(7)测试(8)维护也可以分为四个大的阶段:软件分析、软件设计、编码与测试、运行与维护(1)软件分析时期;任务:确定软件项目的目标,软件应具备的功能和性能,构造软件的逻辑模型,并制定验收标准。
在此期间,要进行可行性论证,并做出成本估计和经费预算,制定进度安排。
进行可行性研究和项目开发计划,需求分析。
(2)软件设计时期;任务:a.设计软件的总体结构;b.设计软件具体模块的实现算法;c.软件设计结束之前,也要进行有关评审,评审通过后才能进入编码时期。
(3)编码与测试时期;任务:组织程序员将高驻地的软件“翻译”成计算机可以正确运行的程序;并且要经过按照软件分析中提出需求要求和验收标准进行格的测试和审查。
根据具体软件的特点,决定是否划分成一些阶段,如编码、单元测试、集成测试、验收测试等等。
(4)运行与维护时期。
任务:软件运行过程中可能由于各面的原因,需要对它进行修改。
3、瀑布模型、原型模型、增量模型的特点,如选择这些模型?(1)瀑布模型:Page 25-27(特点:Page 28第二点;使用场合:特点的最后一点)(2)原型模型:Page 27-28(特点:Page 27;场合:Page 28三点)(3)增量模型:Page 28)参考答案:瀑布模型:(1)定义:是将软件生命期各活动规定为依线性顺序联接的若干阶段的模型,是一种整体开发模型。
里程碑或基线驱动或者说文档驱动。
过程逆转性很差,或者说不可逆转。
(2)优点:格按照生命期的各个阶段来进行开发,强调了每一阶段的格性。
这样就能解决在开发阶段后期修正不完善的需求说明将花费巨大的费用的问题。
在消除非结构化软件、降低软件的复杂性、促进软件开发工程化面起了很大作用。
(3)缺点:它是一种理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
故适用于功能明确、完整、无重大变化的软件开发。
如:编译系统、数据库管理系统和操作系统。
(4)适用场合:●在开发时间需求没有或很少变化。
●分析设计人员对应用领域很熟悉。
●低风险项目(对目标、环境很熟悉)。
●用户使用环境很稳定。
●用户除提出需求以外,很少参与开发。
原型模型:(1)定义:以某个软件原型为参照模型的开发法,叫做原型法。
(原型驱动)(2)原理:在初步需求分析之后,马上向客户展示一个软件产品原型,对客户进行培训,让客户试用,在试用中收集客户意见,修改原型,再让客户试用,反复循环几次,直到客户确认为止。
(3)适用场合:●已有产品/产品原型,只需客户化的项目。
●简单而熟悉的行业或领域。
●有快速原型开发工具。
●进行产品移植或升级。
增量模型:(1)定义:增量模型将软件产品看作一组增量构件,每次设计、实现、集成、测试和交付一块构件,直到所有构件全部实现为止。
(2)特点:●任务或功能模块驱动,可以分阶段提交产品;●有多个任务单,这些多个任务单的集合,构成项目的一个总任务书(总用户需求报告)。
(3)适用场合:●在开发过程中,客户接受分阶段交付。
●开发人员对应用领域不熟悉,难以一步到位。
●工期过紧的中等或高风险项目。
●用户可参与到整个软件开发过程中。
●使用面向对象语言或第四代语言。
●软件公司自己有较好的类库、构件库。
4、需求的特点?获取的法?为什么需求获取很困难?如解决需求获取困难的难题?(1)需求的特点:●可验证性:可验证性是软件需求的基本属性。
软件需求必须是可验证的,否则软件的评审和测试就没有相应的依据。
但在某些情况下,很难对某些软件需求进行验证或需要的代价很高。
软件需求人员和测试人员应以合理的代价实现需求的验证。
●优先级:软件需求应具有优先级,可以在有限的资源情况下进行取舍。
●唯一性:软件需求应唯一地标识出来,以便在软件配置管理和整个软件生命期中进行管理。
(2)获取法:1、面谈和问卷调查;2、小组讨论;3、情景串联;4、参与、观察业务流程;5、现有产品和竞争对手的描述文档;6、市场资料(3)需求获取困难原因:PPT答案:●用户需求具有动态性,即需求的不稳定性。
在整个软件生存期,应用软件的需求会随着时间的进展而有所变化。
个别用户,甚至是朝三暮四地变化。
●用户需求具有模糊性,即需求不准确性。
由于用户的素质不是很高,业务流程不很规,所以需求表达不很清楚也不够明确。
●开发者和用户要对需求达成完全一致的认识,用户要在需求报告上签字,要承担责任。
●需求复杂并且庞大。
现代的软件,规模越来越大,导致需求越来越复杂。
课本上答案(Page 62):●需求易变性。
用户在开始时提出一些功能需求,当对系统有一定的理解后,会提出一些需求。
以后随着理解的深入而不断提出新的需求。
用户需求的变动是一个极为普遍的问题,即使是部分变动,也往往会影响到需求分析的全部,导致不一对待性和不完备性。
●问题的复杂性;●交流障碍。
进行需求分析的人员具备不同的背景知识,处于不同的角度,扮演不同的角色,造成了相互之间交流的困难。
●不完备性和不一致性。
用户各类人员对于系统的要求所处的角度不一样,对问题的述往往是不完备的,其各面的需求还可能存在着矛盾。
(4)解决需求获取困难的法:把一个复杂问题按功能进行分解并可逐层细化;能够表达和理解问题的数据域和功能域;建立模型5、DFD的画法及如将DFD图转换成功能结构图?(1)DFD图的画法(课本Page 71)(第四章PPT)●数据流图DFD的描述符号主要只有四种,即:a. 数据源或数据潭b. 数据流动的连线c. 数据加工或处理泡d. 输入或输出文件●法:采用的是”自顶向下“逐层画法。
即先画出的顶层数据流图,再逐层画出的底层数据流图,具体地描述上层系统的细节。
●注意事项:加工和处理框上至少有一个输出数据流和一个输入数据流;注意父/子图的平衡(父图中某个加工的输入输出数据流同相应的子图的输入输出相同,也就是说子图中所有输入数据流必须是父图中相应加工的输入)。
(2)DFD图转换成功能结构图(课本Page 111-116)(PPT 第七章)具体法看第七章PPT。
变换型系统结构图:通过变换分析技术,将中心变换型的DFD图转换而得的SC图,称为变换型系统结构图。
事务型系统结构图:通过事务分析技术,将事务处理型的DFD图转换为的SC图,称为事务型的系统结构图。
两类图的区别:变换型系统结构图明显分为输入、中心变化和输出3部分;事务型系统结构图则是某个变换将它的输入分离成若干个发散的输出数据流。
变换分析技术(将DFD图转换成变换型系统结构图的法,DFD图中含有变换流的情况)事务分析技术(将DFD图转换成事务型系统结构图的法,DFD图中含有事务流的情况)而实际的DFD图往往是既包含变换流又包含事务流(称为混合DFD图)。
PPT上的 M代表中心加工模块,I代表输入模块,T代表处理加工模块,O代表输出模块。
对于变化型系统结构图而言,一个M应该包含一个I、一个T、一个O,属于包含关系,因此箭头应从M分别指向I、T、O(容易出错)。
一个功能模块的输入可能是来源于另一个功能模块的输出。
6、面向对象的基本特征,并能用实际的例子说明这些特征?面向对象的基本概念: 面向对象不仅是一些具体的软件开发技术与策略,而且是一整套关于如看待软件系统与现实世界的关系,以什么观点来研究问题并进行求解,以及如进行系统构造的软件法学。
而面向对象法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发法。
面向对象法的基本思想是,从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维式。
面向对象核心概念: (1)对象(2)类(3)继承(4)聚集(5)消息。
面向对象= 对象+ 类+ 继承+ 聚集+ 消息面向对象法的基本特征:①从问题域中客观存在的事物出发来构造软件系统,用对象作为对这些事物的抽象表示,并以此作为系统的基本构成单位。
②事物的静态特征(即可以用一些数据来表达的特征)用对象的属性表示,事物的动态特征(即事物的行为)用对象的服务(或操作)表示。
③对象的属性与服务结合为一体,成为一个独立的实体,对外屏蔽其部细节(称作封装)。
④对事物进行分类。
把具有相同属性和相同服务的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。
⑤通过在不同程度上运用抽象的原则(较多或较少地忽略事物之间的差异),可以得到较一般的类和较特殊的类。
特殊类继承一般类的属性与服务,面向对象法支持对这种继承关系的描述与实现,从而简化系统的构造过程及其文档。
⑥复杂的对象可以用简单的对象作为其构成部分,称作聚合。
⑦对象之间通过消息进行通信,以实现对象之间的动态联系。
⑧通过关联表达对象之间的静态关系。
7、白盒测试、黑盒测试的定义以及白盒测试具体的法?练习册Page 318-320;课本Page 457-461;第十章PPT(1)定义:白盒测试:把测试对象看作一个透明的盒子,测试人员能了解程序的容结构和处理过程,以检查处理过程为目的,对程序中尽可能多的逻辑路径进行测试,在所有的点检验部控制结构和数据结构是否和预期相同。