软件特点:1.逻辑实体2.与硬件生产方式不同3.与硬件的维护不同4.复杂的5成本相当昂贵.软件危机的产生及表现软件系统的规模越来越大,复杂度越来越高软件可靠性问题也越来越突出,原来的个人设计个人使用方式不再能满足需求迫切需要改变软件生产方式提高生产率于是出现软件危机.表现1.开发进度难以预测2.成本难以控3.功能不能能满足用户的需求4.质量难以保证5.难以维护6.缺少适当的文本资料.原因用户需求不明确缺乏正确的理论指导软件开发规模越来越大复杂度越来越高比较结构化方法和面向对象方法:结构化方法:自顶向下,逐步分解模块易于控制和处理模块相对独立、接口简单、使用维护非常方便.面向对象方法:提高软件系统的稳定性可修改和可重用性产生的具有特点:客观世界任何事物对象都是对象每各类定义一种方法若干对象组成参次结构系统对象通过传递消息相互联系第二章什么是软件过程?软件生存周期过程或软件过程组,是指软件生存周期中的一系类相关过程。
比较瀑布模型、原型模型、增量模型和螺旋模型1.瀑布模型广为人知和历史悠久,其优势是规范及文档驱动的方法。
但问题是,往往不能够真正满足用户的需求。
适用于传统软件工程领域的结构化开发 2.原型模型是为了克服瀑布模型的缺点而提出来的。
通过快速构建一个在机器上可运行的原型系统,让用户试用原型,并收集反馈意见的办法,来获取用户真实的需求3.螺旋模型适用于大型软件项目,比起之前的其它模型而言,有其一定的优越性,但这些优越性并不是绝对的4.增量模型具有在软件开发早期阶段使投资获得明显回报和交易维护的优点,但是要求软件具有开放的结构第三章可行性研究的任务是什么?进行一次大大压缩简化的系统分析和设计的过程,在高参差上以抽象的方式进行系统分析和设计。
任务:以最小的代缴在最短的时间内确定问题能否解决,也就是判定原定的目标和规模能否实现什么是需求分析?该阶段的基本任务是什么?需求分析过程就是通过分析员与用户之间的广泛交流,最终形成一个完整清晰一致的软件需求规格说明书的过程。
任务:认清问题、分析资料、建立分析模型、编写软件需求规格说明书结构化分析方法的步骤:系统要解决的问题为解决该问题系统该做的事情系统该怎么去做数据流图与数据字典的作用?数据流图指明系统中数据是如何流动和变换的及描述数据流是如何进行变换。
数据字典是在软件分析和设计的过程中给人提供关于数据的描述信息画数据流图应注意什么?合理编号,注意子图与父图的平衡,局部文件,分解的程度第四章如何理解模块的独立性?用什么指标来衡量模块的独立性?每个模块只能完成系统要求的子功能,与其他模块的联系较少且接口简单,模块独立的概念是模块化、抽象、信息隐蔽概念的直接结果定性标准度量:内聚和耦合结构设计有哪些原则?1.提高模块的独立性2.选择合适的模块规模3.适当的选择模块的深度、宽度、扇入和扇出4.模块的作用范围应在控制范围之内5.降低模块接口的复杂程度6.设计单入口和单出口,且功能可预测的模块软件详细设计的主要任务是什么?1.为每个模块确定所采取的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述2.确定每一模块使用的数据结构 3.确定模块接口的细节4.详细设计结束时,应把结果写入详细设计说明书,并且通过复审形成正式文档软件详细设计模块原则1.模块的逻辑描述要清晰易读、准确可靠2.采用结构化设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性、可维护性3.选择恰当的工具描述模块算法详细设计的工具有哪几类?优缺点?工具:程序流程图、NS、PAD、HIPO判定表、伪码、PDL。
程序流程图:独立于任何一种程序设计语言,比较直观清晰的描述过程的控制流程,易于学习掌握。
但不能引导人们用结构化方法进行详细设计,人么可以实现向任何位置的转移,箭头使用不当,框图难懂,无法维护。
第五章软件测试的目地:为了发现程序中的错误而执行程序的过程软件调试的目地:在测试发现错误之后诊断并排除错误的过程白盒法有哪些逻辑覆盖标准?语句覆盖判定覆盖条件覆盖判定/条件覆盖条件组合覆盖这些标准有什么关系?条件组合覆盖满足其他的覆盖,覆盖标准最强属于黑盒法的测试用例设计方法有哪几种?等价划分边界值分析错误推测因果图软件测试要经过几个阶段?单元测试集成测试确认测试系统测试验收测试渐增式测试与非渐增式测试有哪些区别?非渐增式人工更多,可以同时测试所有模块渐增式有利于排错、比较彻底用、需要更多的机器时间在开发项目时,选择程序设计语言通常考虑哪些因素?项目的应用范围算法和计算的复杂性软件执行的环境性能上的选择和实现的条件数据结构的复杂性软件开发人员的知识水平和心理因素什么是程序设计风格?包括:源程序文档化数据说明语句结构、输入输出方法六章什么是对象什么是类对象是系统中用来描述客观事物的一个实体,他是构成系统的一个基本单位,主要因素是属性和服务。
类是具有相同属性和服务的一组对象的集合,用类作为这些对象的抽象描述面向对象的开发过程面向对象分析面向对象设计面向对象编程面向对象测试面向对象维护UML建模机制有哪两种?静态建模机制和动态建模机制每种通过哪些图来表达?静态有:用例图、类图、对象图、构建图、配置图动态的有:状态图、活动图、顺序图、合作图UML中类的关系有哪些,举例?关联课程类与学生类的选修关系;聚合学生和班主任组成班级;泛化学生信息管理系统与学生老师的关系;依赖汽车和汽油公路的关系面向对象分析的步骤?1.分析问题域,建立用力模型2.发现和定义对象和类3.识别对象的内部特征4.识别对象的外部联系5.识别对象之间的交互需求获取的方法?访谈式诱导式确认式第八章面向对象设计阶段包括那几项任务?每个任务的主要内容?面向对象设计主要包括系统的体系结构设计、子系统划分、人机交互界面、数据库设计、类对象设计选择程序设计语言时应考虑哪些因素:语言,类库,开发环境,对用户学习面向对象分析设计和编码技术所能提供的培训服务,在试用期间能提供的技术支持,能提供开发工具开发平台和发行平台,对机器性能和内存的需求,集成已有软件的难易程度软件开发成本估算的方法:自顶向下,自底向上,差别估计法处理风险的策略:风险缓解,风险监控,风险管理和意外事件计划软件质量保证的措施:基于非执行的测试、基于执行的测试和程序正确性证明。
配置管理的内容的目标:版本控制,变更控制,过程支持目标:软件配置管理的各项工作是有计划进行的,被选择的项目产品得到识别控制并且可以被相关人员获取,已识别出的项目产品的更改得到控制,使相关组别和个人及时了解软件基准的状态和内容配置管理的过程:项目计划阶段,项目开发维护阶段,配置管理的关键活动:配置项识别工作空间管理版本控制变更控制,状态报告,配置审计项目组织原则:尽早落实责任,减少接口,责权均衡程序设计小组的组织形式:主成员制小组,民主制小组,层次式小组项目人员配备的原则:重质量,重培训,双阶梯提升软件文档的作用:提高软件开发过程的能见度,提高开发效率,作为开发人员在一定阶段的工作成果和结束标志,记录开发过程中的有关信息,便于协调以后的软件开发、使用和维护,提高对软件的运行维护和培训的有关信息,便于管理人员开发人员操作人员用户的协作交流和了解,便于潜在用户了解软件的功能性能等各项指标,为选购软件提供依据软件文档管理维护过程中注意的问题:开发小组应设一位文档保管员,负责保管本项目已有文档的两套主文本,开发小组成员可保存一些个人文档,开发人员个人只保存着主文本中与他工作相关的部分文档,在新文档取代了就问当时,应及时注销旧文档,项目开发结束时文档管理人员应收回开发人员的个人文档,在开发过程中主文本的修改必须特别谨慎说明主要过程支持过程组织过程的含义和关系:主要过程供当事方在软件生存周期使用,支持过程目的是支持其他过程,它为其组成部分时他们有助于软件项目的成功和质量提高,组织过程被一个软件组织用来建立和实现相关生存周期的基础结构和人事制度,并不断改进这种结构和过程试卷简述软件工程基本原理的内容和关系用分阶段的生命周期计划严格管理2.坚持进行阶段评审3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查6.开发小组的人员应该少而精7.承认不断改进软件工程实践的必要性。
这七条原理是确保软件产品质量和开发效率的原理的最小集合它们是相互独立的,是缺一不可的最小集合同时,它们又是相当完备的。
简述需求分析过程应该建立的3种模型及其常见的表达工具:需求分析过程应该建立的3种模型:数据模型、功能模型和行为模型。
数据模型:描绘数据对象及数据对象间的关系,常用实体-联系图建立数据模型的图形;功能模型:描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有是变换数据的功能,数据流图是建立功能模型的基础;行为模型:指明作为外部事件结果的系统行为。
状态转换图描绘了系统的各种行为模式和在不同状态间转换的方法。
状态转换图是行为模型的基础。
项目开发时选择程序设计语言主要实用标准:1.系统用户的要求2.可以使用的编译程序3.可以得到的软件工具4.项目的规模5.程序员的知识6.软件可移植性要求7.软件的应用领域。
决定软件可维护性的因素通常影响软件可维护性的因素有可理解性、可测试性、可修改性、可移植性、可重用性1.可理解性:可理解性是指维护人员理解软件的结构,接口,功能和内部过程的难易程度。
采用良好的编程风格有助于提高软件的易理解性2.可测试性:可测试性是指测试和诊断软件错误的难易程度3.可修改性:可修改性是指修改软件的难易程度4.可移植性:把程序从一种硬件配置和(或)软件系统环境转移到另一配置和环境的难易程度5.可重用性:重用是指同一事物不作修改或稍加改动就多次重复使用。
软件重用分为知识重用、方法和标准的重用和软件成分的重用3个层次什么是软件生存周期模型?有哪些主要模型?软件生存周期模型是描述软件开发过程中各种活动如何执行的模型。
模型是为了理解事物而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式、一个规划、一个程式。
瀑布模型、增量模型、螺旋模型、喷泉模型、快速原型模型等简述对软件系统的综合需求1.功能需求2.性能需求3.可靠性和可用性需求4.出错处理需求5.接口需求6.设计约束或实现约束7.逆向需求8.将来可能提出的需求简述如何提高软件的可维护性 1.在软件生命周期的各个阶段都必须充分考虑维护问题2.结构化设计的几条主要原则,如模块化,信息隐藏,高内聚,低耦合等,对于提高软件的可理解性,可测试性和可修改性也都有重要的作用3.书写详细正确的文档,书写源文件的内部注解,使用良好的编程语言,具有良好的程序设计风格,也有助于提高软件的可理解性4.使用先进的测试工具,保存以前的测试过程和测试用例,则有助于提高软件的可测试性简述影响程序效率的几种因素:效率主要指处理机时间和存储器容量两个方面1.算法对效率的影响:源程序的效率直接由详细设计阶段确定的算法的效率决定,但程序的风格也能对程序的执行速度和存储器要求产生影响2.存储器效率的影响3.输入输出效率的影响软件工程软件工程是指导计算机软件开发和维护的一门工程学科,采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前最好的技术方法结合,以经济地开发出高质量的软件并有效地维护它代数构造形式方法为目标软件系统的需求规格说明,提供以代数构造方式描述目标系统的结构、功能的特殊构造机制模块由边界元素限定的相邻程序元素(如数据说明、可执行的语句)的序列,而且有一个总体标识符代表它,它具有三个基本属性:功能,逻辑,状态.对象模型对象模型表示静态的、结构化的系统的“数据”性质,是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构软件质量保证是向用户及社会提供满意的高质量的产品,确保软件产品从诞生到消亡为止的所有阶段的质量活动,即确定、达到和维护需要的软件质量而进行的所有有计划、有系统的管理活动软件工程方法学把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型;软件工程方法学包括三个要素:方法、工具和过程形式化方法是描述系统性质的基于数学的技术。