软件工程要点(包括部分内容)
软件工程复习要点

1、软件是计算机程序、规程以及运行计算机系统可能需要的相关文档和数据。
软件=程序+规程+文档+数据2、软件的特性:软件是复杂的、软件是不可见的、软件是不断变化的、软件质量难以稳定。
3、软件的质量特性:功能性、可靠性、易用性、效率、维护性、可移植性。
4、软件工程是为了经济地获得可靠的且能在实际机器上高效运行的软件而确立和使用的完善的工程原理。
5、软件工程以关注软件质量为目标,包括过程、方法和工具三个要素。
6、软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
7、软件工程知识体系:(1)软件需求:需求是真实世界问题而必须展示的特性;(2)软件设计:定义一个系统或组件的体系结构、组件、接口和其他特征的过程;(3)软件构造:指通过编码、验证、单元测试、集成测试和排错的组合,具体创建一个可以工作的、有意义的软件;(4) 软件测试:在有限测试用例集合上,根据期望的行为,对程序进行的动态验证;(5)软件维护:在软件运行过程中,对可能出现的异常,运行环境的改变,作出处理,以保证软件正常运行;(6)软件配置管理:为了系统地控制配置的变更和维护在整个系统生命周期中的完整性和可追踪性,而标志软件在时间上不同点的配置的学科;(7)软件工程管理:处理软件工程的管理与度量,虽然度量是所有知识域的一个重要方面,但是这里涉及的是度量程序的专题;(8)软件工程过程:涉及软件工程过程本身的定义、实现、评定、度量、管理、变更和改进;(9)软件工程工具和方法;(10)软件质量。
8、软件过程是软件工程人员为了获得软件产品而在软件工具的支持下实施的一系列软件工程活动。
9、软件过程的目标:标准化、预见性、生产率、高质量、计划进度和预算的能力。
10、瀑布模型特点:阶段间具有顺序性和依赖性;采用推迟实现的观点;质量保证的观点。
瀑布模型适用:在开发的早期阶段软件需求被完整确定瀑布模型缺点:在项目各阶段之间极少有反馈;只有在项目后期才能看到结果;过多的强制性里程碑缺少弹性。
软件工程要点(包括部分内容)

软件工程要点(包括部分内容)软件工程要点软件工程是一门研究和应用计算机科学原理、方法和工具的学科,主要目的是开发和维护高质量的软件系统。
在软件工程的实践中,有一些关键要点需要特别注意和重视。
本文将介绍几个软件工程的要点,包括需求分析、设计、编码、测试和维护等方面。
一、需求分析需求分析是软件开发的第一步,其目的是确定用户需求以及系统应该具备的功能和特性。
在进行需求分析时,需密切与用户沟通,全面了解用户的需求,并对需求进行分类和优先级排序。
同时,要进行合理的需求变更管理,确保系统在开发过程中及时适应变化的需求。
二、设计设计是软件工程的核心环节,它将需求转化为软件系统的结构和组织形式。
在设计过程中,应采用模块化、可扩展和可维护性等原则,以便实现系统的灵活性和可靠性。
此外,设计阶段还需要考虑系统的安全性、性能优化、用户界面设计等方面。
三、编码编码是将设计阶段得出的设计方案转化为可执行程序的过程。
编码的关键要点包括代码的规范性、可读性、可维护性等。
合理的命名规范、注释规范以及错误处理和异常处理是编码过程中需要特别关注的内容。
此外,编码需要遵循软件开发规范和最佳实践,以确保代码的质量和可靠性。
四、测试测试是验证和评估软件系统是否满足需求的过程。
测试是软件工程中至关重要的环节,可以确保软件的质量和稳定性。
测试时需要制定全面的测试计划,包括功能测试、性能测试、安全测试等。
提前规划测试用例和测试数据,并进行充分的测试覆盖,以便发现和修复潜在的问题。
五、维护软件维护是软件工程的最后一个阶段,也是软件生命周期中最长、成本最高的阶段。
在维护阶段,需及时回应用户反馈的问题,并进行合理的变更管理。
此外,软件维护还包括对系统进行性能监测和改进,以保持软件系统的可用性和效率。
总结软件工程是一门复杂的学科,需要注重每个阶段的细节和要点。
在实践中,合理的需求分析、设计、编码、测试和维护等要点是确保软件开发项目成功的关键。
只有遵循软件工程的最佳实践,才能开发出高质量、可靠性强的软件系统,满足用户的需求。
软件工程导论复习重点总结很全第六版

第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。
软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。
1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。
应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。
应当开发和使用更好旳软件工具。
总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。
1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。
采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。
(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。
软件工程核心要点

软件工程核心要点一、需求分析需求分析是软件工程中非常重要的一个环节,它涉及到对用户需求的深入理解和分析,以及与用户的沟通与交流。
需求分析的目标是确定软件系统的功能、性能、安全性等方面的需求,为后续的设计和开发提供基础。
在需求分析阶段,需要重点关注以下几点:1.深入了解用户需求,明确系统的目标和功能。
2.对用户需求进行分类、整理和归纳,形成完整的需求规格说明书。
3.与用户进行沟通,确认需求规格说明书的内容是否满足用户要求。
4.制定需求变更控制策略,确保后续开发过程中需求的稳定性和可控性。
二、设计阶段设计阶段是根据需求分析的结果,对软件系统进行整体设计和规划的阶段。
在设计阶段,需要重点关注以下几点:1.对系统架构进行设计,确定系统的整体结构和组成。
2.根据需求分析结果,对各个模块进行详细设计,包括模块的功能、接口、数据结构等。
3.制定设计规范和标准,确保设计的一致性和可维护性。
4.进行性能和安全性的设计,确保系统的高效稳定运行。
三、编程实现编程实现是根据设计阶段的结果,使用编程语言实现软件系统的阶段。
在编程实现阶段,需要重点关注以下几点:1.选择合适的编程语言和开发工具,提高开发效率和软件质量。
2.遵循设计阶段的规范和标准,确保代码的可读性和可维护性。
3.进行代码审查和单元测试,确保代码的正确性和可靠性。
4.进行性能优化和调试,提高软件的运行效率和稳定性。
四、测试阶段测试阶段是对软件系统进行全面检测和验证的阶段。
在测试阶段,需要重点关注以下几点:1.制定详细的测试计划和测试用例,确保测试的全面性和有效性。
2.进行功能测试、性能测试、安全测试等方面的测试,确保软件的各项指标符合要求。
3.对测试中发现的问题进行跟踪、分析和修复,保证软件的正确性和稳定性。
4.进行回归测试和兼容性测试,确保软件的稳定性和可靠性。
五、部署上线部署上线是将软件系统安装和配置到生产环境的阶段。
在部署上线阶段,需要重点关注以下几点:1.根据生产环境的需求,制定详细的部署方案和配置清单。
《软件工程》复习提纲

《软件工程》课程要点●每章教学课件中的“本章小结”列出了需要掌握的内容●教学过程中的例题和习题也是课程重点一、软件工程与软件过程概述1.概念:(1)软件的概念(组成成分、作用);答:计算机软件是程序、数据和相关文档的集合;用于实现计算机系统所需要的逻辑方法和控制过程(2)软件危机的含义、表现、产生原因(客观、主观)答:计算机软件开发和维护过程中遇到的一系列严重问题。
软件危机的表现:①对软件开发成本和进度的估计很不准确②已完成的软件不能满足用户需求③软件质量差④软件不可维护⑤软件没有开发文档⑥软件成本在计算机系统总成本中所占的比例逐年上升⑦软件生产率跟不上硬件的发展和计算机迅速普及的趋势与软件的特点有关(客观原因):①软件是计算机系统中的逻辑部件,缺乏“可见性”,管理和控制软件开发过程相当困难②软件在使用期间不存在机械磨损和老化问题,一旦发现错误,通常意味着修改原来的设计,因此软件难维护③软件规模庞大,程序复杂性增加,需多人分工合作(不能保证每个人完成的工作合在一起构成一个高质量的大型软件系统)与软件开发和维护的方法不正确有关(主观原因):①开发无计划②忽视软件需求分析的重要性③轻视软件维护④无过硬评测手段⑤缺乏有力的开发方法和工具⑥不重视开发文档等软件配置(3)软件工程学科包括的内容(三要素)、解决的主要问题答:(1)软件工程定义:1)软件工程是指导计算机软件开发和维护的工程学科 2)采用工程化的概念、原理、技术和方法来开发和维护软件3)将经过时间考验而证明正确的管理技术和开发技术结合起来,以较经济的手段开发出高质量的软件并有效维护它2)软件工程方法学的三要素:①方法:完成软件开发各项任务的技术方法②工具:为方法的高效运用,而提供的自动或半自动的软件支撑环境③过程:为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤(4)软件生命周期的含义、组成阶段及各阶段主要任务答:软件生命周期:一个软件从定义、开发、运行维护,直到最终被废弃要经历一个漫长的时期,这个时期称为软件生命周期。
软件工程复习的几个知识点和例题

1.软件危机的概念,内容,原因及消除的途径;2.软件工程的定义,基本原理;3.软件工程方法学的基本概念、内容;4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做软件项目主要分那几个阶段。
5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;6.了解可行性研究中的任务和过程;7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图;8.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图;9.掌握数据字典的内容、方法、用途和实现;10.了解成本/效益分析方法;11.了解需求分析过程中任务是什么.12.理解面向数据流自顶向下逐步求精的方法和意义;13.理解分析及建模的意义,需求分析中应该建立哪三种逻辑模型?有哪些工具来帮助建立这些模型?14.掌握实体关系(E-R)图的概念,内容和实现方法,能结合具体实例建立实体关系图;15.掌握状态图的概念,内容,实现方法和作用;16.掌握层次方框图、warnier图、IPO图的概念,内容和作用;17.有穷状态机的概念和内容;18.总体设计是做什么?总体设计的过程是怎样的?总体结构设计的目的是什么?19.掌握几个设计原理,理解他们的内容和意义;20.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;21.耦合包含了哪些类型?每个类型的具体内容是什么?要求能通过程序代码识别出耦合类型。
内聚类型有哪些?具体内容?能识别应用。
22.启发性规则的内容及部分概念。
深度,宽度,扇入,扇出,模块的作用域,模块的控制域。
23.层次图、HIPO图和结构图的内容;24.掌握面向数据流的设计方法,了解其中涉及到的概念(变换流,事务流),结合例子理解变换分析的具体过程。
25.详细设计是做什么?26.什么是结构程序设计?27.人机界面设计问题包含哪些?28.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;N-S盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD 图的概念和内容;掌握判定表的概念和内容。
软件工程导论重点内容

第一章软件工程概述重点掌握的内容:软件和软件工程的基本概念一.什么是软件1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;软件的特点:软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性;软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性软件的开发至今尚未完全摆脱手工的开发方式软件的开发费用越来越高,成本相当昂贵;二.软件危机以及产生软件危机的原因1.软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势;软件产品“供不应求”;2.软件成本在计算机系统总成本中所占的比例逐年上升;3.软件开发人员和用户之间的信息交流往往很不充分,用户对“已完成的”的软件系统不满足的现象经常发生;4.软件产品的质量不容易保证;5.软件产品常常是不可维护的;6.软件产品的重用性差,同样的软件多次重复开发;7.软件通常没有适当的文档资料;产生软件危机的原因可归结为两个重要的方面:软件生产本身存在的复杂性;软件开发所使用的方法和技术;三、软件危机1、软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题;2、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;3、软件危机的典型表现:1对软件开发成本和进度的估计常常很不准确;2用户对“已完成的”软件系统不满意的现象经常发生;3软件产品的质量往往靠不住;4软件常常是不可维护的;5软件通常没有适当的文档资料;6软件成本在计算机系统总成本中所占的比例逐年上升;7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势;软件工程1、软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科;采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地、高效的开发出高质量的软件并有效地维护它,这就是软件工程;软件工程准则可以概括为7条基本原则:用分阶段的生命周期计划严格管理;坚持进行阶段评审实行严格的产品控制采用现代程序设计技术应能清楚地审查结果合理安排软件开发小组的人员承认不断改进软件工程实践的必要性3、软件工程方法学,三要素:方法、工具和过程4、软件生命周期概念、三时期,八阶段软件生命周期由软件定义、软件开发和运行维护也称为软件维护3个时期组成;软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析;软件开发时期分为4阶段:总体设计、详细设计、编码和单元测试、综合测试五、软件开发模型:软件开发模型是跨越整个软件生存周期的系统开发、运作、维护实施的全部工作和任务的结构框架;1瀑布模型采用结构化的分析与设计方法,将逻辑实现与物理实现分开;特点阶段的顺序性和依赖性规范化推迟实现的观点系统化质量保证阶段评审存在问题不适合需求模糊的系统需求的迷糊性和不确定性适用于操作系统、编译系统、数据库管理系统等系统软件的开发快速原型模型:所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌3增量模型:是瀑布模型的顺序特征与快速原型法德迭代特征相结合的产物;这种模型把软件看成一系列相互联系的增量,在看法过程的各次迭代中,每次完成其中的一个增量;4喷泉模型5微软过程六、思考:你认为“软件就是程序”这一个观点正确吗如果不正确,请批驳之;1.请从以下几个方面结合自己的经验实例加以论述;软件就是程序的观点是不正确的,因为软件等于程序加文档加数据;1文档是软件的一个非常重要的组成部分,在软件的开发过程中起着非常重要的作用;2在软件开发的每一个阶段都应有相应的文档;它是开发人员与用户以及开发人员与项目管理人员之间交流的媒介3文档是软件在不同阶段的表现形式;4程序与文档必须一致,文档才有价值;5文档质量直接决定软件质量的高低;6文档也是软件测试和维护的依据;在没有文档或文档不全的情况下对大型软件进行测试与维护是不可思议的事情;7文档是软件可重用的依据;2、有人说:软件开发时,一个错误发现得越晚,为改正它所付出的代价就越大;对否请解释你的回答;答:对,第二章可行性研究重点掌握的内容:可行性研究的系统流程图一般内容:可行性研究的任务和步骤,成本效益分析一、可行使研究:1、可行性研究的任务:是用最小的代价在尽可能短的时间内确定问题是否能够解决;一般来说,应从经济可行性、技术可行性、运行可行性、法律可行性和开发方案等方面研究可行性可行性研究的目的:在明确了所要研究问题定义之后,分析员应该在明确目标系统所有限制和约束的前提下,去确定该问题是否值得去解决;或就是用最小代价在尽可能短的时间内确定问题是否能够解决;2、可行性研究过程:1)复查系统规模和目标2)研究目前正在使用的系统3)导出新系统的高层逻辑模型4)进一步定义问题5)导出和评价供选择的解法6)推荐行动方针7)草拟开发计划8)书写文档提交审查3、系统流程图的定义和作用:可行性研究对现有系统做概括的物理模型描述,如用图形工具表示则更加直观简洁;系统流程图是描绘物理系统的传统工具,它的基本思想是用图形符号以黑盒子形式描绘系统里面的每个部件程序、文件、数据库、表格、人工过程等;系统流程图表达的是部件的信息流程,而不是对信息进行加工处理的控制过程;在可行性研究过程中,利用系统流程图来描述所建议系统的物理模型;4、数据流程图的定义和作用:数据流程图有两个特征:抽象性和概括性;抽象性指的是数据流程图把具体的组织机构、工作场所、物质流都去掉,只剩下信息和数据存储、流动、使用以及加工情况;概括性则是指数据流程图把系统对各种业务的处理过程联系起来考虑,形成一个总体5、数据流程图的组成元素数据流图可以用来抽象地表示系统或软件;它从信息传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,同时可以按自顶向下、逐步分解的方法表示内容不断增加的数据流和功能细节;因此,数据流图既提供了功能建模的机制,也提供了信息流建模的机制,从而可以建立起系统或软件的功能模型;6、数据流程图的组成:外部实体外部实体是指系统之外的人或单位,它们和本系统有信息传递关系数据流,处理、数据存储;如何绘制数据流程图1识别系统的输入和输出,画出顶层图2画系统内部的数据流、加工与文件,画出一级细化图3加工的进一步分解,画出二级细化图4其它注意事项7、数据流程图的注意点1每个处理都必须有流入的数据流和流出的数据流,如果没有,是错误的;数据守恒2每个数据存储应该有流入的数据流和流出的数据流,如果缺了一种,是Warning的;缺两种就错了;3、数据流只能在处理与处理、数据存储或者外部实体之间流动;、数据存储到数据存储、外部实提到外部实体、外部实提到数据存储之间的数据流都是错误的;4、一个处理可以细分成多个子处理,分成若干个层次均匀分解5、良好命名系统流程图与数据流程图有什么区别答:1系统流程图描述系统物理模型的工具,数据流程图描述系统逻辑模型的工具;2系统流程图从系统功能的角度抽象的描述系统的各个部分及其相互之间信息流动的情况;3数据流程图从数据传送和加工的角度抽象的描述信息在系统中的流动和数据处理的工作状况;三、数据流图:1、组成符号:4中基本图形符号正方形、圆角矩形、开口矩形2、数据流图的基本要点是描绘“做什么”,而不是考虑“怎么做”;3、一套分层的的数据流图由顶层、底层、和中间层组成;4、画分层数据流图基本原则与注意事项:a.自外向内,自顶向下,逐层细化,完善求精;b.保持父图与子图的平衡;也就是说,父图中某加工的输入数据流中的数据必须与它的子图的输入数据流在数量和名字上相同;c.保持数据守恒;也就是说,一个加工所有输出数据流中的数据必须能从该加工的输入数据流中直接获得,或者是通过该加工能产生的数据;d.加工细节隐藏;根据抽象原则,在画父图时,只需画出加工和加工之间的关系,而不必画出各个加工内部的细节;e.简化加工间关系;在数据流图中,加工间的数据流越少,各加工就越相对独立,所以应尽量减少加工间输入输出数据流的数目;f.均匀分解;应该使一个数据流中的各个加工分解层次大致相同;g.适当地为数据流、加工、文件、源/宿命名,名字应反映该成分的实际意义,避免空洞的名字;h.忽略枝节;应集中精力于主要的数据流,而暂不考虑一些例外情况、出错处理等枝节性问题;i.表现的是数据流而不是控制流;j.每个加工必须既有输入数据流,又有输出数据流.在整套数据流图中,每个文件必须既有读文件的数据流又有写文件的数据流,但在某一张子图中可能只有读没有写或者只有写没有读;小结:一个软件系统,其数据流图往往有多层;如果父图有N个加工Process,则父图允许有0~N张子图,但是每张子图只能对应一张父图;在一张DFD图中,任意两个加工之间可以有0条或多条名字互不相同的数据流;在画数据流图时,应该注意父图和子图的平衡,即父图中某加工的输入输出数据流必须与其输入输出流在数量和名字上相同;DFD信息流大致可分为两类:交换流和事务流;9、数据字典1.数据字典是在数据流程图的基础上,对数据流程图中的各个元素进行详细的定义与描述,起到对数据流程图进行补充说明的作用;2.数据字典的内容包括:数据流、数据流分量即数据元素、数据存贮、处理逻辑和外部实体;3.数据字典的作用是什么对用户来讲,数据字典为他们提供了数据的明确定义;对系统分析员来讲,数据字典帮助他们比较容易修改已建立的系统逻辑模型;数据字典的实现:P4910、成本效益分析:成本/效益分析的目的是要从经济角度分析开发一个特定的新系统是否可行,从而帮助使用部门负责人正确地做出是否投资与这项开发工程的决定;几种度量效益的方法:货币的时间价值、投资回收期、纯收入第三章需求分析一、重点掌握的内容那:需求分析的方法和面向数据流的分析方法二、一般掌握的内容:需求分析的任务和原则三知识点:1、为什么要做需求分析可行性分析研究阶段已经粗略的描述了用户的需求,甚至还提出了一些可行的方案,但是,许多细节被忽略了,在最终目标系统中是不能忽略、遗漏任何一个微小细节的,所以,可行性研究不能代替需求分析;2、需求分析的方法:需求分析方法由对软件的数据域和功能域的系统分析过程及其表示方法组成,它定义了表示系统逻辑视图和物理视图的方式,大多数的需求分析方法是由数据驱动的,也就是说,这些方法提供了一种表示数据域的机制,分析员根据这种表示,确定软件功能及其特性,最终建立一个待开发软件的抽象模型,即目标系统的逻辑模型;3、需求分析的任务:它的基本任务是准确地回答“系统必须做什么”这个问题;需求分析所要做的工作是深入描述软件的共能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它有效性需求;需求分析的任务不是确定系统如何完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求;其实现步骤如下图所示:一般说来需求分析阶段的任务包括下述几方面:1)确定对系统的综合需求对系统的综合需求主要有:系统功能需求、系统性能需求、可靠性和可用性需求、错处理需求、接口需求、约束、逆向需求、将来可能提出的需求:2)分析系统的数据需求就是在理解当前系统“怎样做”的基础上,抽取其“做什么”的本质,明确目标系统要“做什么”,可以导出系统的详细的逻辑模型;具体做法:首先确定目标系统与当前系统的逻辑差别;然后将变化部分看作是新的处理步骤,对功能图一般为数据流图及对象图进行调整;最后有外及里对变化的部分进行分析,推断其结构,获得目标系统的逻辑模型;通常用数据流图、数字字典和主要的处理算法描述这个逻辑模型;3)导出系统的逻辑模型4)修正系统开发计划在经过需求分析阶段的工作,分析员对目标系统有了更深入更具体的认识,因此可以对系统的成本和进度做出更准确地估计,在此基础上应该对开发计划进行修正;5开发原型系统:使用原型系统的主要目的是,使用户通过实践获得关于未来的系统将怎样为他们工作的更直接更具体的概念,从而可以更准确地提出他们的要求;4、需求分析的步骤:1调查研究2分析与综合3书写文档4需求分析评审5、需求分析的原则:1、必须能够表达和理解问题的数据域和功能域2、按自顶向下、逐层分解问题3、要给出系统的逻辑视图和物理视图6、软件需求的验证:需求分析阶段的工作结果是开发软件系统的重要基础,大量统计数字表明,软件系统中15%的错误起源于错误的需求;为了提高软件质量,确保软件开发成功,降低软件开发成本,一旦对目标系统提出一组要求之后,必须严格验证这些需求的正确性;一般说来,应该从下述4个方面进行验证:1一致性所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾;2完整性需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能;3现实性指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的;对硬件技术的进步可以做些预测,对软件技术的进步则很难做出预测,只能从现有技术水平出发判断需求的现实性;4有效性必须证明需求是正确有效的,确实能解决用户面对的问题;7、状态转换图:指明了作为外部事件结果的系统行为;为此,状态转换图描绘了系统的各种行为模式称为“状态”和在不同状态间转换的方式;状态转换图是行为建模的基础;思考:利用DFD图进行需求分析:在结构化分析方法中,用以表达系统内数据的运动情况的工具有A;供选择的答案:A.数据流图B.数据词典C.结构化英语D.判定表与判定树在结构化分析方法中用状态―迁移图表达系统或对象的行为;在状态―迁移图中,由一个状态和一个事件所决定的下一状态可能会有A个;供选择的答案:多个D.不确定五、总体设计概要设计重点掌握的内容:概要设计的过程和方法一般掌握的内容:概要设计的文档和评审考核知识点:一、总体设计:1、总体设计的目的:总体设计的基本目的就是回答“概括地说,系统应该如何实现”这个问题,因此,总体设计又称为概要设计或初步设计;1、面向结构设计SD2、面向对象设计OOD2、总体设计的任务:1系统分析员审查软件计划、软件需求分析提供的文档、提出最佳推荐方案,用系统流程图,组成物理元素清单,成本效益分析,系统的进度计划,供专家沈顶峰,审定后进入设计2去顶模块结构,划分功能模块,将软件功能需求分配给所划分的最小单元模块;确定模块之间的联系,确定数据结构、文件结构、数据库模式,确定测试方法与策略;3编写概要设计说明书,用户手册,测试计划,选用相关的软件工具来描述软件结构,结构图是经常使用的软件描述工具;选择分解功能与划分模块的设计原则,例如模块划分独立性原则,信息隐蔽原则等3、总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;4、典型的总体设计过程包括下述9个步骤:1、设想功选择的方案2、选取合理的方案3、推荐最佳方案4、功能分解5、设计软件6、设计数据库7制定测试计划8、书写文档:系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果;9、审查和复审二、设计原理分析模块化,在模块化程序设计中,按功能划分模块的原则是,模块化和软件成本关系:模块具有输入和输出参数传递、功能、内部数据结构局部变量和程序代码四个特性1、模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.2、模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了. 模块化和软件成本关系:根据总成本曲线,每个程序都相应地有一个最适当的模块数目M,,使得系统的开发成本最小.3、模块设计的准则:1改进软件结构,提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合;2模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中;3软件结构图的深度、宽度、扇入和扇出要适当;一般模块的调用个数不要超过5个;4尽量降低模块接口的复杂程度;5设计单入口、单出口的模块;6模块的作用域应在控制域之内;4、抽象的概念:抽出事务的本质特性而暂时不考虑它们的细节.5、信息隐蔽:模块中所包括的信息不允许其它不需这些信息的模块调用信息局部化:是把一些关系密切的软件元素物理地放得彼此靠近6、什么是模块独立性答:模块独立性概括了把软件划分为模块时要遵守的准则,也是判断模块构造是不是合理的标准;7、模块独立性:是软件系统中每个模块只涉及软件要求的具体子功能,而和软件系统中的其它的模块接口是简单的;模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果;8、为什么模块的独立性很重要答:1有效的模块化的软件比较容易开发出来2独立的模块比较容易测试和维护;总之,模块独立是好设计的关键,而设计又是决定软件质量的关键环节;9、衡量模块独立的两个标准是什么它们各表示什么含义10、答:衡量模块的独立性的标准是两个定性的度量标准:耦合性和内聚性;1耦合性;也称块间联系;指软件系统结构中各模块间相互联系紧密程度的一种度量;模块之间联系越紧密,其耦合性就越强,模块的独立性则越差;模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息;2内聚性;又称块内联系;指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量;若一个模块内各元素语句之间、程序段之间联系得越紧密,则它的内聚性就越高;耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础;模块的高内聚、低耦合的原则称为模块独立原则,也称为模块设计的原则;10、启发规则:1)改进软件结构提高模块独立性2)模块规模应该适中3)深度、宽度、扇出、、和扇入都应适当深度表示软件结构中控制的层数,它往往能粗略地标志一个系统的大小和复杂程度;宽度是软件结构内同一个层次上的模块总数的最大值;一般来说,宽度越大系统越复杂;对宽度影响最大的因素是模块的扇出;一个模块的扇入是指直接调用该模块的上级模块的个数;一个模块的扇出是指该模块直接调用的下级模块的个数;设计原则:低扇出、高扇入;4)模块的作用域应该在控制域内5)力争降低模块接口的复杂程度6)设计单入口和单出口的模块7)模块功能应该可以预测三、概要设计的方法:1、面向数据流的设计方法把信息流映射成软件结构,信息流的类型决定了映射的方法;面向数据流的设计要解决的任务,就是上述需求分析的基础上,将DFD图映射为软件系统的结构;2、数据流图的类型:交换型结构和事务型结构交换型结构:由3部分组成,传入路径,变换中心,输出路径系统的传入流经过变换中心的处理,变换为系统的传出流;事务型结构:有至少一条接受路径,一个事务中心与若干条动作路径组成;当外部信息沿着接受路径进入系统后,经过事务中心获得某个特定值,就能据此启动某一条动作路径的操作;四、结构化设计1、结构化设计方法:是一种面向数据流的设计方法,中心任务就是把用DFD图表示的系统分析模型转换为软件结构的设计模型,确定软件的体系结构域接口;2、结构化方法的步骤:1复审DFD图,必要时刻再次进行修改或细化:2鉴别DFD图所表示的软件系统的结构特征,确定它所代表的软件结构是属于变换型还是事务型;3按照SD方法规定的一组规则,吧DFD图转换为初始的SC图;变换型DFD图初始SC图事务型DFD图初始SC图3、结构设计的优化规则:1对模块分割、合并和变动调用关系的指导规则:以提高模块独立性为首要标准,除此之外,适当考虑模块的大小;2保持高扇/入低扇出原则3作用域/控制域规则:作用域不要超出控制域的范围;软件系统的判定,其位置离受它控制的模块越近越好;六、详细设计重点掌握的内容:详细设计的任务和方法一般掌握的内容:详细设计的原则和详细设计的规格与评审。
软件工程知识(软考备考要点汇总)

软件工程知识(软考备考要点汇总)软件工程知识 (软考备考要点汇总)软件工程是一门涉及软件开发、维护和演化的学科,它旨在提高软件开发过程的效率和质量。
对于准备参加软考考试的人来说,了解软件工程的知识点至关重要。
本文将对软件工程的关键知识点进行汇总,帮助考生更好地备考。
1. 软件过程模型软件过程模型是指描述软件开发过程的模型,常见的模型包括瀑布模型、迭代模型、增量模型、螺旋模型等。
在备考软考时,需要了解不同模型的特点、适用场景以及优缺点。
2. 软件需求工程软件需求工程是指对软件系统进行需求分析、需求获取和需求管理的过程。
备考软考时,需要掌握需求工程的主要术语和概念,如用户需求、功能需求、非功能需求等,以及需求获取和需求变更的方法和技巧。
3. 软件设计模式软件设计模式是指在软件设计过程中经常遇到的问题和解决方法的总结和抽象。
备考软考时,需要了解常见的软件设计模式,如单例模式、工厂模式、装饰器模式等,以及它们的应用场景和实现方式。
4. 软件测试与质量管理软件测试是保证软件质量的重要手段,它包括单元测试、集成测试、系统测试等多个层次。
备考软考时,需要了解各种测试方法和技术,如黑盒测试、白盒测试、自动化测试等,以及软件质量管理的基本原理和方法。
5. 软件项目管理软件项目管理是指对软件开发项目进行计划、组织、协调和控制的过程。
备考软考时,需要了解项目管理的基本概念和流程,如项目计划、需求管理、进度管理等,以及常用的项目管理工具和技术。
6. 软件配置管理软件配置管理是指对软件开发过程中的软件配置项进行版本控制和变更管理的过程。
备考软考时,需要了解配置管理的基本原理和方法,如版本控制、变更管理、发布管理等,以及常用的配置管理工具和技术。
7. 软件维护与演化软件维护与演化是指对已经投入使用的软件系统进行修复、改进和升级的过程。
备考软考时,需要了解维护与演化的基本原理和方法,如问题分析、改进计划、版本迭代等,以及常见的维护与演化模式和技术。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1,软件工程基本概念软件工程是软件工程师用工具和技术(方法),按照某一过程和范例来构造软件,从而增强软件产品的质量,更有效地解决问题.2,软件危机的原因a , 软件产品是复杂的人造系统,具有复杂性、不可预见性和易变性,难以处理。
b ,个人和小组非常有效的开发小型软件的编程技术和过程,在开发大型、复杂系统时难以发挥同样的作用。
c ,软件是知识产品,技术更新快,行业竞争激烈,难以在可以接受的成本和工期内提供高质量的产品。
3,软件工程包括的四个元素(特点)方法(methods) 语言(languages) 工具(tools) 过程(procedures)4,软件的生命周期(由哪几部分组成)计划需求分析设计程序编写测试运行维护等六个步骤5,瀑布模型(有哪几种模型)6,面向对象生存期模型7,面向对象性—统一过程8,可行性研究目的、任务(技术、经济、操作)目的:确定问题是否值得去解任务进一步分析和澄清问题的定义导出系统的逻辑模型探索若干种解决方案,并分析各种方案的技术可行性经济可行性操作可行性对以后的行动方针提出建议9,数据流图(*)数据字典的定义对数据流图中包含的所有元素的定义的集合10,需求分析的任务,综合要求分析系统的数据要求导出系统的逻辑模型:数据流图,数据字典,处理算法。
修正系统开发计划开发原型系统功能性能可靠性和可用性出错处理接口需求约束逆向需求11,分析过程的基本方法结构化分析方法(SA)面向对象的分析方法(OOA)12,什么是概念模型或信息模型按用户的观点来对数据和信息建模13,概念模型的基本概念E-R图概念模型的基本概念实体(Entity):客观存在并可相互区分的事务属性(Attribute)码(Key)域(Domain)实体型(Entity Type)实体集(Entity Set)联系14,状态转换图15,IPO图16,知道有哪几种形式化说明技术形式化方法:用基于数学的技术描述系统需求规格说明和设计结果。
非形式化方法:用自然语言描述系统需求规格说明和设计结果。
半形式化方法:用数据流图或E-R图描述需求规格说明和设计结果。
17,总体设计的任务划分出组成系统的物理元素;设计软件的结构。
18,总体设计的过程设想供选择的方案:设计各种可能的分组。
选取合理的方案。
对每个方案准备以下资料:系统流程图物理元素清单成本/效益分析进度计划推荐最佳方案,并制定详细的实现计划。
19,模块化(*)(概念)模块化:将程序分成若干个模块。
模块化的目的:将复杂问题简单化。
模块化程度应适当。
20,抽象的定义抽象是抽取事务的本质特性而暂不考虑细节21,模块独立模块的独立性:每个模块的功能相对独立,与其他模块的关系简单。
模块独立的优势易于分工开发;易于测试和维护。
通过模块化、抽象、信息隐蔽和局部化,即可达到模块独立。
22,耦合内聚(*)低内聚偶然内聚:一个模块完成的一组任务之间有松散的关系。
逻辑内聚:完成的任务在逻辑上属于相同或相似的一类。
时间内聚:完成的任务必须在同一段时间内执行。
中内聚过程内聚:模块内的处理元素相关且须以特定次序执行。
通信内聚:模块内的所有元素都使用同一个输入数据和(或)产生同一个输出数据。
高内聚顺序内聚:模块内的处理元素和同一个功能密切相关,且须顺序执行。
功能内聚:一个模块内的处理元素属于一个整体,完成一个单一的功能。
23,信息流的分类24,数字仪表板(分析)(*)25,详细设计任务和目标(程序流程图)任务设计程序流程图,从而确定具体实现系统的方法。
目标从逻辑上正确实现每个模块的功能;设计的处理过程应尽可能简明易懂。
26,结构程序设计的定义,优点定义采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。
结构程序设计的优点可以提高程序的开发效率和成功率。
程序层次结构清晰,易于阅读、理解、测试和维护。
容易保证程序的正确性。
27,N-S图28,环形复杂度29,实现的定义(英文写的不知道...)30,测试的定义,目标目标:测试是指为了发现程序中的错误而执行程序的过程,并最终修正错误(调试)。
测试不可能发现软件中所有的错误。
31,测试的方法(黑、白)黑盒测试(功能测试):检验程序的每个功能是否正常。
白盒测试(结构测试):检验程序的逻辑结构和处理过程是否正常。
32,步骤模块测试子系统测试系统测试验收测试平行运行(试运行)33,单元测试的主要内容模块接口局部数据结构重要的执行通路出错处理通路影响上述各方面特性的边界条件。
集成测试集成测试的目标:发现模块在集成过程中与接口有关的问题。
集成测试的方法。
非渐增式测试方法:先单元测试,后集成优点:能充分利用人力,加快工程进度。
渐增式测试方法:每集成一个模块,就进行一次测试。
优点:可以及时发现模块之间的接口问题。
缺点:需要较多的机器时间。
渐增式测试的两种方法自顶向下结合:深度优先:从主控制通路开始,沿通路进行组装和测试。
优点:可以较早实现软件的一个功能。
宽度优先:从顶层开始,根据软件结构一层一层进行组装测试。
优点:可以较早发现上层结构中的问题。
自底向上结合:主要优点能较早发现底层模块之间的接口错误;可以充分利用人力。
34,测试方案应包括的内容、基本原则和目标测试方案中应包括的内容预定要测试的功能应该输入的测试数据预期的测试结果基本原则:选用尽可能少的测试数据,做到尽可能完备的测试。
目标:确定一组最可能发现某个错误或某类错误的测试数据。
35,几种覆盖(条件覆盖)逻辑覆盖—程序的通路测试语句覆盖(或点覆盖)判定覆盖(或边覆盖)条件覆盖判定/条件覆盖路径覆盖条件组合覆盖36,等价划分定义,方法,步骤等价划分法定义将所有可能的输入数据(有效的或无效的)化分成若干个等价类。
划分等价类的方法如上下限范围内为一组,下限以外为一组,上限以外为一组,上边界为一组,下边界为一组。
等等。
根据等价类设计测试方案的步骤设计针对有效等价类的测试方案;设计针对无效等价类的测试方案。
37,调试的任务和步骤策略任务:诊断和改正程序中的错误。
步骤确定错误的准确位置。
设法改正错误。
调试技术:追踪程序的运行状态,观测变量的变化。
调试策略试探法、回溯法、对分查找法归纳法:从错误征兆出发,找出程序的故障点。
收集有关的数据组织数据导出假设证明假设演绎法:列出所有可能的假设,然后逐步排除假设。
设想可能的原因用已有的数据排除不正确的假设精化余下的假设证明余下的假设软件可靠性定义和可用性定义软件可靠性定义:程序在给定的时间间隔内成功运行的概率。
软件可用性定义:程序在某一给定时间成功运行的概率。
38,维护的定义、分类(*)、问题软件维护是为了改正错误或满足新的需要而修改软件的过程。
软件维护的分类改正性维护适应性维护完善性维护预防性维护维护的问题阅读程序困难。
文档不足。
模块的独立性差。
许多技术人员不愿意做维护工作。
39,可维护性的定义、决定因素软件可维护性的定义:维护人员理解、改正、改动和改进这个软件的难易程度决定软件可维护性的因素:可理解性、可测试性、可修改性40,面向对象方法的定义任何事物都是由对象组成;具有相同属性和方法的对象组成了对象类;类与类之间可以通过继承关系形成层次结构;对象之间只能通过传递消息相互联系。
41,传统方法学存在的问题面向对象方法学特点存在的问题生产率提高的幅度远不能满足需要软件重用程度很低软件仍然很难维护软件往往不能真正满足用户的需要OO方法的主要特点强调围绕对象而不是围绕功能来构造系统。
分析方法与思维方法一致,系统易于理解。
系统稳定性好。
软件可重用性高。
系统可维护性好,易于测试、调试和修改42,对象的定义,特点对象的定义对象是对问题域中某个实体的抽象,即是对实体的属性和操作的封装。
对象的特点以数据为中心对象是主动的,是进行处理的主体实现了数据封装本质上具有并行性模块独立性好面向对象建模的三种形式,关系面向对象建模的三种形式对象模型:描述系统的数据结构动态模型:描述系统的控制结构功能模型:描述系统的功能三种模型之间的关系功能模型定义了系统要做什么。
动态模型规定了系统在什么条件下做。
对象模型定义了谁来做。
43,类图,状态图(*)用例图动态模型44,面向对象分析的基本过程需求分析建立模型建立对象模型的主要活动找出类—&—对象;识别结构(确定关联);识别(划分)主题(功能边界);定义属性;定义服务。
45,面向对象设计任务,准则OOD的任务:将需求分析结果转变成符合成本和质量要求的抽象的系统实现方案准则:强内聚(服务内聚、类内聚、“一般—特殊”内聚)、可重用、模块化、抽象(规格说明象、参数化抽象)、信息隐藏、弱交互耦合软件重用软件重用的类别知识重用方法和标准的重用软件成分的重用:即通常所说的软件重用实现软件重用需要创建可重用的软构件软件成分的重用级别代码重用源代码剪贴源代码包含(Include)继承设计结果重用分析结果重用软件重用技术软件组合技术软件生成技术面向对象的软件重用技术—用类构件系统分解(CS,点对点)子系统之间的交互方式客户—供应商关系(client-superlier)平等伙伴关系(peer-to-peer)46,UML定义(有哪几种图,9种)第一类是用例图(Use case diagram),从用户角度描述系统功能,并指出各功能的操作者。
第二类是静态图(Static diagram)类图:描述系统中类的静态结构。
对象图:对象图是类图的实例。
第三类是行为图(Behavior diagram) :描述系统的动态模型和组成对象间的交互关系。
状态图:描述类的对象所有可能的状态以及事件发生时状态的转移条件。
活动图:描述满足用例要求所要进行的活动以及活动间的约束关系。
第四类是交互图(Interactive diagram):描述对象间的交互关系。
顺序图:显示对象之间消息发送的顺序关系。
合作图:描述对象间的协作关系。
如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择合作图。
第五类是实现图( Implementation diagram )构件图:描述代码部件的物理结构及各部件之间的依赖关系。
配置图:定义系统中软硬件的物理体系结构。