软件工程复习材料一、考试复习范围:1、软件工程基本概念、基本原理2、需求分析,结构化分析、面向对象分析,结构化分析建模、面向对象分析建模3、软件设计,结构化程序设计,概要设计、详细设计4、软件测试二、考试题型:单项选择题、简答题、综合应用题(要求会画:数据流图、软件结构图、用例图、类图、N-S盒图、PAD图)三、复习内容:1、什么是软件危机?人们把软件开发和维护中的各种问题称为“软件危机”。2、软件危机主要包含哪两方面的问题?①如何开发软件以满足软件日益增长的需求。②如何维护数量不断增长的已有软件。3、软件危机的表现有哪些?①对软件开发成本和进度的估算很不准确。②用户对完成的软件很不满意。③软件产品的质量很不可靠。④没有完整的文档。⑤软件成本比重上升。⑥软件开发生产效率低下,软件开发技术进步落后与需求的增长,造成“供不应求”的局面。4、什么是软件工程?软件工程的定义:采用工程的概念、原理和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,这就是软件工程。5、.软件工程包括3个要素有哪些?方法、工具和过程。6、软件生命周期各阶段有哪些?软件生命周期包括:软件定义、软件开发、软件维护三个时期。其中:软件定义包括:问题定义、可行性研究、需求分析阶段;软件开发包括:总体设计、详细设计、编码、软件测试阶段。7、需求分析的任务有哪些?需求分析的任务主要有两个方面:①通过对问题及环境的理解、分析和综合,建立分析模型。②在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达出来。8、软件系统需求分类是哪些?软件系统需求可以分为功能需求、非功能需求和领域需求:1)功能需求描述系统所预期提供的功能或服务。即定义系统应该做什么,系统要求输入什么信息,输出什么信息,以及如何将输入变换为输出。它由开发的软件类型、软件未来的用户以及开发的系统类型决定。2)非功能需求是指那些不直接与系统具体工作相关的一类需求。主要涉及系统的总体特性,如可靠性、反映时间和储存空间等。3)领域需求是来自系统的应用领域的需求,反映了该领域的特点,它可能是一个新的特有的功能需求,对已存在的功能需求的约束或者是需要实现的一个特别计算。9、获取需求的方法有哪些?1.通过系统调查获取需求2.通过快速原型获取和验证需求10、需求开发包括哪些内容?需求开发又分为可行性研究、需求导出和分析(包括需求的获取与建模)、编写规格说明书和需求验证。11、传统的需求分析方法建立什么模型?分别画什么图?(或问:结构化分析模型包括哪些?)包括:数据模型(ER图),功能模型(数据流图)、动态(行为)模型(状态转化图)。12、如何建立数据流模型?[要有根据业务处理建立数据流图的能力]例如:工资管理系统的数据流图13、面向对象的分析模型包括哪些?OOA模型的3种模型:1)类-对象模型,描述系统所涉及的全部类-对象,每一个类-对象都通过属性、操作和协作者来进行进一步描述;2)对象-关系模型,描述对象之间的静态关系,同时定义了系统中所有重要的消息路径,它也可以具体化到对象的属性、操作和协作者;3)对象-行为模型描述了系统的动态行为,即对象在特定的状态下如何反映外界的事件。3种模型分别起到描述数据模型、功能模型与行为模型的作用。14、结构化建模的基本特点有哪些?1)结构化方法是面向数据流分析方法之一,它采用图形描述方式来建立分析模型,把软件系统描绘成一个可见模型,为系统的审查和评价提供了有利的条件,也为软件开发人员和用户提供了交换信息的方便,为设计阶段提供了依据。2)结构化方法的分析过程实际上是一个建模的活动,把系统自上向下逐层分解,逐步细化,职工基本信息管理子系统1.02.0职工出缺勤信息职工工资管理子系统3.0职工出缺勤管理子系统职工基本信息职工工资信息人事部门会计部门职工职工出缺勤报表职工出缺勤信息职工工资信息职工工资报表职工基本信息职工工资单从而获得一个分析模型。3)结构化方法比较适用数据处理的领域。为了适合用于实时控制系统,可以在数据流图中加入控制流,这是结构化方法的一种扩充。4)用数据流图不适合描绘人机界面。而且对大型软件项目,数据字典的规模相当庞大,人工管理非常困难,因此需要借助于软件开发工具。5)用结构化方法建立的分析模型,只是提供人们阅读的书面文档,不能被机器阅读和运行。15、请说说原型开发的一般过程。原型开发的软件开发过程一般包括四个阶段:1)提出基本需求,建立原型目标。2)定义原型功能,建造快速原型。3)对模型进行检验,补充、细化需求。4)按照改进的需求对模型进行改进、扩充,评估原型。5)通过第3)、4)步骤的反复循环,最终形成完整、准确的需求,模型也就成为了符合要求的目标系统。16、软件质量保证有哪些方法?评审测试17、人类对客观事物的认知过程主要有两种:1)从一般到特殊的演绎方法,2)从特殊到一般的归纳方法,18、面向对象分析方法的要点是什么?面向对象方法的主要优点是什么?利用“对象”的概念模型建立一个针对于问题域的模型,用户和软件工程师通过该模型进行交流。通过在这么一个基于“对象”的问题域模型的基础上形成需求规格说明书。面向对象分析方法使得软件工程师能够通过对象、属性和操作(作为主要的建模成分)的表示来对问题建模。1)符合人类习惯的思维方法。2)稳定性好。3)可重用性好。4)可维护性好。5)可伸缩性。19、用面向对象的用例方法进行需求分析根本要点是什么?面向对象方法中,需求导出和分析目的用例方法,其要点是:1)用例的重要功能是通过画用例图来鉴别和划分系统功能。它把系统分成角色(actor)和用例(用例)。2)角色(actor)表示系统用户能扮演的角色。3)用例描述了当角色给系统特定的刺激时系统的活动,即一个用例描述了系统和一个角色(actor)的交互顺序。4)用例被定义成系统执行的一系列动作,动作执行的结果能被指定角色察觉到。20、使用用例开发系统的一般过程有哪些?1)识别角色来识别系统与外界交互的实体。2)识别用例。用例具有不同层次,对较为概括的用例,需要细化。3)当用例细化到可以被理解的层次,需要基于用例进行下一步的开发。用例主要用来描述交互,因此存在交互的实体和交互的细节。交互的实体采用类图来描述;而交互的细节,采用顺序图来描述。4)当系统复杂到一定层次时,类图和顺序图可能不能足以描述其复杂程度。在该情况下,需要使用状态图来辅助阐述。21、UML的定义及UML图的构成成份是哪些?1、UML是一个通用的标准建模语言,可以对任何具有静态结构和动态行为的系统进行建模。UML适用于系统开发过程中从需求规格描述到系统完成后测试的不同阶段。2.UML图的构成成分,UML的定义了5类10种模型图1)用例图:这是一种用户模型视图,用例图是系统功能的描述。它从用户的角度描述系统的功能,并指出各个功能的操作者。2)静态图:这是一种结构模型视图,这种图描述系统的静态结构。有类图、对象图、包图。3)行为图:这是一种行为(动态)模型视图,这种图描述系统的动态行为和组成系统的对象之间的交互关系。行为图有状态图和活动图。4)实现图:这是一种实现模型视图,这种图描述系统实现的信息,有构件图和配件图。5)交互图:这是一种环境模型视图,表示系统的环境结构和行为,这种图描述系统对象之间的交互关系,有顺序图和合作图。3.完整需求分析主要用五种图:用例图、类图、状态图、协作图和顺序图。22、面向对象的分析模型主要有哪些子模型构成?它们分别是哪些图?由3类子模型构成,即:对象模型、动态模型和功能模型。对象模型(ObjectModel)用于描述系统内部对象的静态结构;动态模型描述软件系统的控制结构;功能模型描述软件系统必须要完成的功能。对象模型由一组类图构成。动态模型由一组状态图、顺序图等构成。功能模型由一组数据流图构成。23、如何建立用例图、类图?建立类图的工作步骤是:首先确定对象类和关联,对于大型复杂问题还要进一步划分若干个主题,然后给类和关联增添属性,以进一步描述它们,接下来利用适当的继承关系进一步合并和组织类。而对类中操作的最后确定,则需要等到建立了动态模型和功能模型之后。例如:学生管理系统用例图例[要有根据业务处理建立用例图、类图的能力]学生教师教务员管理员注册登录修改密码查看成绩查询信息选课评教查看课程表查看班级/同学登记分数extend安排课程extend学生管理类图例:学院专业班级学生教师教学课程教室教务员课程表成绩表补考名单1..*1教学计划评教信息24、软件设计原则:模块的独立性原则:所谓模块的独立性,是指软件系统中每个模块只涉及软件要求的具体子功能,而与软件系统中其他的模块的接口是简单的。例如,若一个模块只具有单一的功能且与其他模块没有太多的联系,则称此模块具有模块独立性。模块的耦合性,聚合性的概念,它们是对模块独立性的度量。在进行软件设计过程中,力争松散(低)耦合,高内聚。25、软件设计种类传统的软件设计方法(结构化软件设计方法)、面向对象设计方法。26、结构化程序设计有哪些设计类型?有:概要设计、详细设计27、面向对象软件设计有哪些设计类型?有:系统设计、对象设计28、面向数据流的软件设计方法是概要设计的一种方法,是基于分析模型,到设计模型的过程。具体的就是通过数据流图到软件(模块)结构图。[同学们应有该方法进行软件设计的能力]29、详细设计工具程序流程图、N-S图(合图)、PAD图(问题分析图)、PDL(伪代码)[同学们应有建立这些图,并这些图进行转换的能力]30、软件测试软件测试是在软件正式投入运行前,对软件的需求分析、设计规格说明和编码的最终复审,是质量保证工作最为关键的一个环节。软件测试过程包括4个步骤进行:单元测试、集成测试(组装测试)、验收测试(确认测试)、系统测试软件测试方法有:白盒测试方法、黑盒测试方法31、测试和调试测试是为了发现错误而运行程序的过程调试是为了改正错误而对错误进行定位与修改程序,从而排除该错误。32、(详细设计例)设计使用筛选法获取1~100之间素数的程序(可以根据下面的参考程序代码),要求使用PDL描述程序执行的各步骤,并画出N-S图或PAD图。参考程序代码:素数也称为质数,是不能被从2开始到比自己小1的任何正整数整除的自然数,解决的算法描述如下:(1)构造外循环得到一个1~100之间的数i,为了减少循环次数,可跳过所有偶数;(2)构造内循环得到一个2~m之间的数j,令m=sqrt(i);(3)内循环结束后判断j是否大于等于m+1,若是,则i必为素数,打印输出;否则再次进行外循环。Java程序如下:publicclasssushu{publicstaticvoidmain(String[]args){intn=0,m,i,j;for(i=3;i=100;i+=2){m=(int)Math.sqrt((double)i);for(j=2;j=m;j++){if((i%j)==0)break;}if(j=m+1){System.out.print(i+);n++;}}//waixunhuan}}intn=0,m,i,j;i=3Whilei=100m=(int)Math.sqrt((double)i);j=2j=2whiliej=m;if((i%j)==0)TFif(j=m+1)TFSystem.out.print(i+);n++;j++;i+=2;if((i%j)==0)intn=0,m,i,j;i=3Whilei=100m=(int)Math.sqrt((double)i);j=2whiliej=m;break;if(j=m+1)System.out.print(i+);n++;j++;i+=2;33、概要设计例:学生管理系统软件结构设计学生管理系统数据输入日常处理数据输出新生报到注册管理教师信息管理课程信息管理班级、教室等静态信息维护排课老师登分学生评教学生选课课表查询成绩查询评教信息查询补考信息查询