1.软件工程的基本原理:①用分阶段的生命周期计划严格管理;②坚持进行阶段评审;③实行严格的产品控制;④采用现代化程序设计技术;⑤结果应能清楚地审查;⑥开发小组的人员应该少而精;⑦承认不断改进软件工程实践的必要性。2.面向对象方法学的含义:①把对象作为融合了数据及在数据上的操作行为的统一的软件构件;②把所有对象都划分成类;③按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。④对象彼此间仅能通过发消息互相联系。3.软件生命周期:①问题定义;②可行性研究;③需求分析;④总体设计;⑤详细设计;⑤编码和单元测试;⑦综合测试;⑧软件维护4.软件定义时期的任务:①确定软件开发工程必须完成的总目标;②确定工程的可行性;③导出实现工程目标应该采用的策略及系统必须完成的功能;④估计完成该项工程需要的资源和成本,并制定工程进度表。5.瀑布模型的特点:①阶段间具有顺序性和依赖性;②推迟实现的观点;③质量保证的观点;6.敏捷软件开发宣言的组成:①个体和交互胜过过程和工具;②可以工作的软件胜过面面俱到的文档;③客户合作胜过合同谈判;④响应变化胜过遵循计划。6.重构:所谓代码重构就是在不改变系统行为的前提下,重新调整和优化系统的内部结构,以降低复杂性,消除冗余,增加灵活性和提高性能。7.可行性研究的任务:①技术可行性②经济可行性③操作可行性。8.数据字典的内容;①数据流②数据流分量(即数据元素);③数据存储;④处理。9.成本估计的三种方法:①代码行技术②任务分解技术③自动估计成本技术。10.数据流图符号的含义:或数据的源点/终点或变换数据的处理数据流11.第一范式:每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。12.第二范式:满足第一范式条件,而且每个非关键字属性逗由整个关键字决定。(而不是由关键字的一部分来决定)。13.从哪些方面验证软件需求的正确性:①一致性②完整性③现实性④有效性14.验证软件需求的方法:①验证需求的一致性(人工技术审查,软件工具)②验证需求的现实性(用现有的软,硬件技术实现目标系统。仿真或性能模拟技术。)③验证需求的完整性和有效性(根据需求开发一个软件系统,请用户使用一段时间。使用原型系统。)15.耦合:是对一个软件结构内不同模块之间互连程度的度量。16.内聚:标志着一个模块内各个元素彼此结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。17.几种启发或规则:①改进软件结构提高模块独立性②模块规模应该适中③深度,完度,扇出和扇入都应适当④模块的作用域应该在控制域之内⑤力争降低模块接口的复杂程度⑥设计单入口单出口的模块⑦模块功能应该可以预测18.人机界面的四个设计问题:①系统响应时间②用户帮助设施③出错信息处理④命令交互19.流程图的主要缺点:①程序流程图基本上不是逐步求精的好工具,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。②程序流程图中用箭头代表控制流,因此程序是不受任何约束,可以完全不顾结构程序设计的精神,随意转移控制。③程序流程图不易表示数据结构。20.判定表的组成:①左上部列出所有条件,②左下部是所有可能做的动作③右上部是表示各种条件组合的一个矩阵④右下部是和每种条件组合相对应的动作。21.环形复杂度的动作:程序的环形复杂度取决于程序控制流的复杂程度,即取决于程序结构的复杂程度,当程序内分支数或循环个数增加时,环形复杂度也随之增加,因此它是对测试难度的一种定量度量,也能对软件最终的可靠性作出某种预测。22.软件测试的步骤:①模块测试②子系统测试③系统测试④验收测试⑤平行运行23.单元测试的重点:①模块接口②局部数据结构③重要的执行通路④出错处理通路⑤边界条件24.不同集成测试策略的比较:自顶向下测试方法的主要优点是不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误。缺点:需要存根程序,可能遇到与此相联系的测试困难,低层关键模块中的错误发现较晚,而且用着种方法在早期不能充分展开人力。两种方法的优缺点刚好相反。25.软件配置交查的目的:是保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节,而且已经编号目录。26.Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。Bata测试由软件的最终用户们在一个或多个各户场所进行。27.循环测试的方法;①简单循环②嵌套循环③串接循环。28.合法输出的等价类有:①在计算机能表示的最小负数和零之间的负整数②零③在零和计算机能表示的最大正整数还大的正整数。29.非法输出的等价类有:①比计算机能表示的最小负整数还小的负整数。②比计算机能表示的最大正整数还大的正整数。30.调试的途径:①蛮干法②回溯法③原因排除法31.软件的可靠性:是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。32.软件的可行性:是程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。33.软件维护过程的本质:是修改和压缩了软件定义和开发过程,而且事实上远在提出一项要求之前,与软件维护有关的工作已经开始了。34.软件的可维护性:维护人员理解,改正,改动或改进这个软件的难易程度。35.决定软件可维护性的因素:①可理解性②可测试性③可修改行④可移动性⑤可重用性。36文档的分类:用户文档,系统文档。37.软件再工程过程:①库存目录分析②文档重构③逆向工程④代码重构⑤数据重构⑥正向工程38.对象的定义:①对象是具有相同状态的一组操作的集合②对象是对属性值和操作值的封装③对象..=《ID,MS,DS,MI》,ID是对象的标识或名字,MS是对象中的操作集合,DS是对象的数据结构,MI是对象受理的消息名集合。39.类:就是对具有相同数据和相同操作的一组相似对象的定义,也就是说,类是对具有相同属性和行为的一个或多个对象的描述,通常在这种描述中也包括对怎样创建该类的新对象的说明。40.实例:是由某个特定的类所描述的一个具体的对象。41.消息:就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。42方法:就是对象所能执行的操作,也就是类中所定义的服务。43.属性:就是类中所定义的数据,它是对客观世界实体所具有的性质的抽象。44.封装:把数据和现实操作的代码集中起来,放在对象内部。45.继承;是指能够直接获得已有的性质和特征,而不必重复定义它们。46.多态性:指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。47.重载:①函数重载:是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字。②运算符重载是指同一个运算符可以施加于不同类型的操作数上面。48.三种模型之间的关系:①针对每个类建立的动态模型,描述了类实例的生命周期或运行周期。②数据流图中的数据流,往往是对象模型中对象的属性值,也可能是整个对象。③对象模型描述了数据流图中的数据流数据存储以及数据源点/终点的结构。第一章五、1-5根据历史数据可以做出如下的假设:对计算机存储容量的需求大致按下面公式描述的趋势逐年增加:M=4080e0.28(Y-1960)存储器的价格按下面公式描述的趋势逐年下降:P1=0.3×0.72Y-1974(美分/位)如果计算机字长为16位,则存储器价格下降的趋势为:P2=0.048×0.72Y-1974(美元/字)在上列公式中Y代表年份,M是存储容量(字数),P1和P2代表价格。基于上述假设可以比较计算机硬件和软件成本的变化趋势。要求计算:(1)在1985年对计算机存储容量的需求估计是多少?如果字长为16位,这个存储器的价格是多少?存储容量需求M=4080e0.28(1985-1960)=4474263(字)存储器价格P=0.048*0.72(1985-1974)*4474263=5789美元(2)假设在1985年一名程序员每天可开发出10条指令,程序员的平均工资是每月4000美元。如果一条指令为一个字长,计算使存储器装满程序所需用的成本。需要工作量4474263/200=22371(人/月)指令成本22371*4000=89484000美元(3)假设在1995年存储器字长为32位,一名程序员每天可开发出30条指令,程序员的月平均工资为6000美元,重复(1)、(2)题。需求估计M=4080e0.28(1995-1960)=73577679字存储器价格0.003*32*0.72(1995-1974)*73577679=7127美元工作量73577679/600=122629(人/月)成本122629*6000=735776790美元六、什么是软件过程?它与软件工程方法学有何关系?软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型。软件过程是软件工程方法学的3个重要组成部分之一。第二章4.目前住院病人主要由护士护理,这样做不仅需要大量护士,而且由于不能随时观察危重病人的病情变化,还可能会延误抢救时机。某医院打算开发一个以计算机为中心的患者监护系统,试写出问题定义,并且分析开发这个系统的可行性可行性分析--原系统分析:护士检查病患救治结束需要救治开始开始医生输出病服务器采集病人生理数据对比大警报结束在预测范不在预测范围医生病人端客户D1:标准数据服务D2:实测数据D3:警报数据护士D4:指定打印数技术可行性;虽然生理数据的采集需要涉及大量的专业精密仪器,软件工程师并不精通,但是可以在专业人士的帮助下完成。经济可行性:支出方面由医院方面承担,是否可行取决于医院方面是否能支付所需的费用。操作可行性:医生并不具有软件维护的能力,在数据库的维护上需要专业人士来进行,因为病患数目并不会太多,所以只需一个人或者几个人定期对数据库进行管理和维护就行了。5北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不是0.校外电话又分为本市电话和外地电话两类。拨校外电话需要先拨0,若是本市电话则接着拨8位数字(第一位不是0),若是外地电话则拨3位区码后再拨8位电话号码(第一位不是0)。答:电话号码=[校内电话号码|校外电话号码]校内电话号码=非零数字+3位数字校外电话号码=[本市号码|外地号码]本市号码=数字零+8位数字外地号码=数字零+3位数字+8位数字非零数字=[1|2|3|4|5|6|7|8|9]数字零=03位数字=3{数字}38位数字=非零数字+7位数字7位数字=7{数字}7数字=[0|1|2|3|4|5|6|7|8|9]其中,[]意思是或,从校内电话号码或校外电话号码中选择一个;{}表示重复,两边的数字表示重复次数的下限和上限;=意思是定义为;+意思是和,连接两个分量。第三章3银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住址、身份证号码等存款信息,并打印出存款存单给储户;如果是取款且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并打印出利息清单给储户。答案:用ER图描绘系统中的数据对象。6)复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。请用状态转换图描绘复印机的行为。答案:从问题陈述可知,复印机的状态主要有“闲置”、“复印”、“缺纸”和“卡纸”。引起状态转换的事件主要是“复印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”和“排除了卡纸故障”。储户储蓄所存取款MN类型数额利率密码姓名身份证号码住址名称地址电话号