软件工程期末复习知识点整理
软件工程知识点总结
软件工程知识点总结软件工程知识点总结1.软件工程概述1.1 软件工程定义1.2 软件工程的重要性1.3 软件生命周期2.需求分析与规格说明2.1 需求分析过程2.2 需求获取方法2.3 需求规格说明的要素2.4 需求跟踪与变更管理3.软件设计3.1 软件设计原则3.2 结构化设计方法3.3 面向对象设计方法3.4 数据库设计3.5 用户界面设计4.软件开发4.1 编码规范4.2 编程语言选择4.3 软件构建工具4.4 软件测试4.5 版本控制5.软件项目管理5.1 项目计划与进度管理 5.2 软件开发过程模型 5.3 团队协作与沟通5.4 风险管理6.质量保证与软件维护6.1 质量保证方法6.2 软件维护类型6.3 软件维护活动6.4 软件退役与替换附件:________本文档涉及的附件(请附上相关文档、图表等)法律名词及注释:________1.软件工程:________指将系统化的、规范化的、可量化的方法应用于软件的开发、运行和维护的工程学科。
2.需求分析:________确定用户对软件系统需要的功能、性能和约束等方面的要求,并以此为基础进行系统的分析和设计。
3.软件设计:________根据需求分析的结果,制定软件系统的总体结构和各组成部分的详细设计方案。
4.软件开发:________根据软件设计的方案,进行编码和调试,最终可执行的软件系统。
5.软件项目管理:________对整个软件项目进行计划、协调、控制和有效地管理,确保项目顺利完成。
6.质量保证:________通过不同的方法和技术,提高软件产品的质量,确保其满足用户的需求和要求。
7.软件维护:________对已投入使用的软件进行修复性、适应性、完善性和预防性等各方面的修改和改进。
软件工程期末复习重点
1.软件危机的介绍在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.产生软件危机的原因与软件本身特点有关:软件开发与维护的方法不正确有关:3.消除软件危机的途径4.软件生命周期由软件定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
5.软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
这个时期的工作通常又称为系统分析,由系统分析员负责完成。
软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。
6.开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。
其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。
7.维护时期的主要任务是使软件持久地满足用户的需要。
8.软件生命周期每个阶段的基本任务:问题定义、可行性研究,需求分析,总体设计,详细设计,编码和单元测试,综合测试。
9.常用软件模型区别原理:(1)瀑布模型:按照传统的瀑布模型开发软件,有下述的几个特点。
a)阶段间具有顺序性和依赖性:两重含义:段的输出文档正确,后一阶段的工作才能获得正确的结果。
①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶b) 推迟实现的观点瀑布模型在编码之前设置了系统分析与系统设计的各个阶段,分析与设计阶段的基本任务规定,在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现。
c)质量保证的观点:软件工程的基本目标是优质、高产。
为了保证所开发的软件的质量,在瀑布模型的每个阶段都应坚持两个重要做法。
每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。
每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。
软件工程期末考试重点
《软件工程》期末复习重点第一章软件工程1.什么是软件工程。
A.把系统化的、规范的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;b.研究a中提到的途径。
2. 软件工程的三要素:方法、工具和过程。
第二章软件过程1.软件生命周期分为哪几个阶段?每个阶段的基本任务是什么?a.软件定义:确定软件开发工程必须完成的总目标问题定义:要解决的问题是什么可行性研究:上阶段所确定的问题是否有可行的解决办法?需求分析:目标系统必须做什么b.软件开发:具体设计和实现在前一个时期定义的软件。
概要设计:怎样宏观地解决问题详细设计:应如何具体地实现这个系统编码和单元测试:写出正确的、易理解、易维护的程序综合测试:通过各类型测试使达到预定要求。
c.运行维护:修正错误,使软件持久地满足用户需要。
改正性维护:诊断和改正使用中的错误适应性维护:修改以适应环境变化完善性维护:根据用户的要求改进和扩充以完善预防性维护:修改以为将来的维护作准备2.常用的过程模型有哪些?各自的特点及不足。
如:瀑布模型的不足是不能适应需求的动态变更。
A.瀑布模型特点:可强迫开发人员采用规范化的方法。
严格地规定了每个阶段必须提交的文档。
要求每个阶段交出的所有产品都必须是经过验证(评审)的。
缺点:太理想化,由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要。
如果需求规格与用户需求之间有差异,就会发生这种情况。
只适用于项目开始时需求已确定的情况。
B.快速原型模型特点:快速软件产品开发基本上是线性顺序进行。
降低了规格说明文档变化的可能性。
减少了后续阶段错误的可能性。
c.增量模型优点:人员分配灵活,刚开始不用投入大量人力资源。
当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。
增量能够有计划地管理技术风险。
缺点:要求构件具备开放式的体系结构。
易退化为边做边改模型,从而使软件过程的控制失去整体性。
软件工程知识点汇总
软件工程知识点汇总软件工程知识点汇总
1、软件需求
1.1 需求概述
1.2 需求分类
1.3 需求获取与分析
1.4 需求规格说明
2、软件设计
2.1 面向对象设计
2.2 结构化设计
2.3 数据库设计
2.4 用户界面设计
2.5 系统架构设计
3、软件编码
3.1 编程语言选择与使用
3.2 编码规范
3.3 软件开发环境
3.4 编码工具和技术
3.5 调试和测试
4、软件测试
4.1 测试基础知识
4.2 测试方法与策略
4.3 白盒测试
4.4 黑盒测试
4.5 功能性测试
4.6 性能测试
4.7 集成测试
4.8系统测试
4.9用户验收测试
5、软件项目管理
5.1 项目计划与进度管理 5.2 风险管理
5.3 人员管理
5.4 项目质量管理
5.5 变更管理
5.6 项目交付与部署
6、软件维护与升级
6.1 软件维护分类
6.2 软件维护流程
6.3 软件升级策略
6.4 软件版本控制
7、软件安全
7.1 信息安全基础知识
7.2 软件安全需求与设计
7.3 安全测试与评估
7.4 安全漏洞修复与更新
附件:
法律名词及注释:
1、版权: 对一种表达形式的独特创造进行保护的法律概念。
2、商标: 表示和区分特定商品或服务来源的标识符。
3、专利: 对于新发明的独特权利,使得发明人可以禁止他人在专利权期限内使用该发明。
4、法律责任: 违反法律规定而应承担的法律后果。
软件工程期末考试知识概括
一、名词解释1、软件:是计算机程序及其有关的数据和文档的完整集合。
2、软件工程:软件工程采用工程的概念、原理、技术和方法来开发与维护软件。
3、软件生命周期:是从设计软件产品开始到产品不能使用为止的时间周期。
4、模块:是能够单独命名,由边界元素限定的程序元素的序列。
在软件的体系结构中,模块能独立地完成一定的功能,是可以组合、分解和更换的单元。
5、模块化:是指把系统分割成能完成独立功能的模块。
6、软件维护:就是指在软件产品交付之后对其进行修改,以排除故障,或改进性能和其他属性,或使产品适应改变了的环境。
7、软件的可维护性:是指软件功能被理解、改正、适应和增强的难易程度,可维护性时维护人员对该软件进行维护的难易程度。
可维护性是指导软件工程各阶段的一条基本原则,提高可维护性是软件工程追求的目标之一。
8、数据流图:是用来描绘软件系统逻辑模型的图形工具,是描绘信息在系统中流动和处理的情况的。
9、数据字典:是对数据流图中出现的所有数据元素、数据流、文件、处理的定义的集合。
二、1、比较瀑布模型、快速原型模型、螺旋模型的特点。
2、尽可能推迟软件的编码3、保证质量(2)快速原型模型快速原型模型:是指快速开发一个可以运行的原型系统,该原型系统所能完成的功能往往是最终产品能完成的功能的一个子集。
(3)螺旋模型每一个螺旋周期由下列六个步骤组成:1) 确定任务 2) 选择对象 3) 分析约束条件 4) 风险分析5) 制定消除风险的方法 6) 制定下一周期的工作计划确定目标、方案、约束 复审需求计划生命周期计划开发计划集成测试计划计划下一阶段工作开发验证下一级产品需求确认设计验证与确软件需求产品设计详细设计编码单元测试集成测试验收测试运行、维护2、耦合的种类:(耦合度越低模块的独立性越强、划分的质量好)数据耦合、控制耦合、特征耦合、公共环境耦合、内容耦合(耦合度最大)为了降低模块间的耦合程度,应采用以下设计原则:●在传递信息时尽量使用数据耦合,少用控制耦合和特征耦合。
软件工程期末考知识点归纳(自制)
需求分析工具,任务,内容需求分析也称为需求工程,是一个非常重要而有很复杂的,需要交替进行,反复迭代的过程。
需求分析过程通过执行初步沟通、需求导出、分析与精化、可行性研究、协商和沟通、规格说明、验证和变更管理八个不同的活动来完成。
非形式技术主要包括会谈、调查表和场景技术,用于获取用户需求和系统需求。
排错调试(debug)又称排错或纠错调试的任务就是根据测试时所发现的错误,找出原因和具体的位置,进行改正调试工作:对错误进行定位并分析原因,即诊断;对于错误部分重新编码以改正错误;重新测试软件项目管理计划的重要方面项目是指一系列独特的、复杂的并相互关联的活动。
项目参数包括项目范围、质量、成本、时间、资源。
项目三维管理:时间维:即把整个项目的生命周期划分为若干个阶段,从而进行阶段管理。
知识维:即针对项目生命周期的各个不同阶段,采用和研究不同的管理技术方法。
保障维:即对项目人力、财力、物力、信息等后勤保障管理。
特点项目管理是一项比较复杂的工作项目管理具有创造性项目管理的对象是项目或被当作项目来处理的作业项目负责人(或项目经理)在项目管理中起着非常重要的作用项目管理需要集权领导和建立专门的项目组织项目管理的方法、工具和手段具有先进性、开放性五个阶段启动阶段:用户提出需求,开发人员进行需求分析,确定可行性,编写项目实施计划。
计划阶段:创建项目范围文档和项目计划,项目范围详细描述项目范围。
实施阶段:实施阶段意味着项目正在进一步设计、编码、测试,小组成员正在创造项目需要的可交付产品。
控制阶段:项目经理开始监督小组成员的工作,将项目的进度、任务和预算控制在正常的范围内。
收尾阶段:项目负责人和用户批准和签署项目,交付产品。
项目的收尾阶段标志着项目的正式结束。
测试目标,执行过程没找到Sa(结构化分析)结果结构化分析方法是一种自顶向下,逐步分解的面向数据和数据流的建模方法。
结构化分析(SA,Structured Analysis)方法是20世纪70年代,由E.Yourdon等人倡导的一种适用于大型数据处理系统的、面向数据流的需求分析方法。
软件工程期末复习必备知识点
一、概念解释1.软件:是程序,数据结构和文档的集合,用于实现系统所需要的逻辑方法、过程和控制。
2.软件危机:是软件开发和维护过程中所遇到的一系列严重的问题。
3.软件周期:是从软件从定义,开发,运行维护到废弃时经历的一个漫长的时期。
4.需求分析:是发现,求精,建模,规格说明和复审的过程。
5,概要设计:通过仔细分析需求规格说明,确定完成系统的模块以及各模块之间的关系,设计出完成预定功能的模块(软件结构),并建立借口。
详细设计:设计完成系统的模块内的算法和数据结构。
6.模块化:将软件划分成可以独立命名的且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能来满足用户的需求。
信息隐藏:一个模块内包含的信息对于一个不需要这些的模块来说是不可访问的。
7.耦合:是一个软件结构内的每个模块互连程度的度量。
内聚:一个模块间各个元素之间的紧密的程度。
8.类:是对有相同数据和相同操作的一组相似对象的抽象描述。
对象:是客观世界中事物的抽象表示,其属性(状态、数据)和相关操作(行为、方法或服务)的封装体;对象之间靠消息传递相互作用。
9.消息:是对象之间相互通信的机制,是某个对象执行其操作的规格说明。
消息传递:一个对象向另一个对象发送消息时,接收消息的对象经过解释、给予响应,这种对象之间进行通信的机制成为消息传递。
10.继承:继承是子类(新类)自动的共享父类(已有类)中定义的数据的操作的机制。
子类可以继承父类的属性和操作;同时子类可以定义自己独有的属性和操作。
子类复用父类的定义,而不修改父类。
继承具有传递性。
多态性:在一个类层次中,不同对象对相同消息做出不同的响应。
11.软件重用:是指同一事物不做修改或者稍加修改就可多次重复使用,软件重用是降低软件开发成本,提高软件开发生产率和质量的有效途径。
12.软件测试:根据软件开发的规格说明和程序的内部结构而设计的一个测试用例,利用这些测试用例去运行程序以发现设计和程序错误的过程。
软件工程期末考试复习重点
第一章软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重的问题。
软件危机的主要表现:1、对软件开发成本和进度的估计常常很不准确。
2、用户对“已完成的”软件系统不满意的现象经常发生。
3、软件产品的质量往往靠不住。
4、软件常常是不可维护的5、软件通常没有适当的文档资料6、软件成本在计算机系统总成本中所占的比例逐年上升7、软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势软件工程:定义一:是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。
定义二:1.把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2.研究1.中提到的途径。
软件工程方法学的三个要素:方法、工具和过程。
目前使用的最广泛的软件工程方法学:传统方法学、面向对象方法学。
软件的生命周期:软件生命周期有软件定义、软件开发和运行维护3个时期组成;定义时期分为:问题定义、可行性研究和需求分析阶段;开发时期分为:总体设计、详细设计、编码和单元测试、综合测试;维护时期的任务:是软件持久的满足用户的需求;瀑布模型:最广泛的过程模型;瀑布模型的特点:1、阶段间具有顺序性和依耐性;2、推迟实现的观点;3、质量保证的观点;Rational统一过程(RUP)四个阶段的工作目标:初始阶段:建立业务模型,定义最终产品视图,并且确定项目的范围;精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求;构建阶段:开发出所有构件和应用程序,把他们集成为客户需要的产品,并且详尽地测试所有功能;移交阶段:把开发出的产品提交给用户使用;第二章可行性研究的目的是确定问题是否值得去解决;可行性研究的方面:技术可行性、经济可行性、操作可行性;系统流程图描述物理模型;P39(要求会做)数据流图描述逻辑模型;P40(要求会做)数据流图(DFD)描绘信息流和数据从移动到输出的过程中所经受的变换;数据字典有以下4类元素的定义组成:数据流、数据流分量(数据元素)、数据存储、处理;由数据元素组成的数据的方式三种基本类型:顺序、选择、重复;“=”是等价于(或者定义为),“+”是和(用来连接分量),“[ ]”是或(从其中选一),“{ }”是重复,“()”是可选;第三章:需求分析任务:功能需求是指定系统必须提供的服务,通过该分析划出该系统必须完成的所有功能。
软件工程复习要点
题型1、名词说明2、问答题3、应用题(看图题,分析题,计算题)学问点:1、什么是软件及软件特点,软件的分类软件是计算机系统中和硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整集合软件的特点(1)软件是一种逻辑实体。
(2)软件的开发,是人的智力的高度发挥,而不是传统意义上的硬件制造。
(3)软件维护和硬件的修理有着本质的差别。
(4)软件的开发和运行常常受到计算机系统的限制,对计算机系统有着不同程度的依靠性。
(5)软件的开发至今尚未完全摆脱手工艺的开发方式,使软件的开发效率受到很大限制。
(6)软件的开发是一个困难的过程。
(7)软件的成本特殊昂扬软件的分类1.基于软件功能的划分系统软应用软件支撑软件2.基于软件工作方式的划分实时处理软件分时软件交互式软件批处理软件2、什么是软件危机,起因一方面软件特殊困难,价格昂贵,供需差日益增大,另一方面软件开发时又常常受挫,质量差,指定的进度表和完成日期很少能按时实现,研制过程很难管理,即软件的研制往往失去限制。
我们称软件开发和维护过程中所中遇到的这一系列严峻问题为软件危机。
软件危机包含下述两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
3、什么是软件工程,它的基本目标,要素,原则(1)软件工程是指探讨软件生产的一门学科,也就是将完善的工程原理应用于经济地生产既牢靠又能在实际机器上有效运行的软件。
(2)软件工程学探讨的基本目标是:定义良好的方法学,面对支配,开发维护整个软件生存周期的方法学;确定的软件成分,记录软件生存周期每一步的软件文件资料,按步显示轨迹;可预料的结果,在生存周期中,每隔确定时间可以进行复审(3)软件工程的原则:分解;抽象和信息隐藏;一样性;确定性4、什么是软件生命周期,每个阶段的意义理解如同任何其他事物一样,软件也有一个孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生命周期。
1.软件定义时期(1)问题定义:这是软件生存期的第一个阶段,主要任务是弄清用户要计算机解决的问题是什么。
软件工程期末知识总结
软件工程期末知识总结软件工程是一门研究如何以系统性的方法构建和维护软件的学科。
在软件工程的学习中,我们主要学习了软件开发的各个阶段、软件开发方法和工具,以及软件质量保证与测试等相关知识。
下面将对这些知识进行总结。
一、软件开发的各个阶段1. 需求分析阶段:需求分析是软件开发的第一步,主要目的是明确用户的需求和期望。
通过与用户交流,分析用户需求,确定软件的功能和约束条件,最终形成需求规格说明书。
2. 设计阶段:设计阶段是对需求进行进一步细化和明确,形成软件的架构和设计方案。
主要包括高层设计和详细设计两个阶段。
高层设计是确定软件的总体框架和结构,而详细设计则是对高层设计进行进一步细化和完善,明确具体的实现细节。
3. 编码阶段:编码是将设计阶段得到的软件设计方案翻译成具体的代码的过程。
在编码过程中,要遵循一定的编码规范和编码标准,以保证代码的可读性和可维护性。
4. 测试阶段:测试是对软件进行验证和确认的过程。
测试过程主要分为单元测试、集成测试和系统测试三个层次。
单元测试是对软件中的最小单元进行测试,集成测试是对已经通过单元测试的模块进行组合测试,系统测试是对整个系统进行全面测试。
5. 部署和维护阶段:在软件开发完成后,需要进行部署和安装。
部署是将软件安装到用户的计算机或服务器上,并进行配置和初始化。
维护是在软件部署后,对软件进行监控、修复和更新,以保证软件的正常运行和改进。
二、软件开发方法和工具1. 瀑布模型:瀑布模型是一种传统的软件开发方法,采用线性的开发流程,依次进行需求分析、设计、编码、测试和维护等阶段。
瀑布模型适用于需求稳定和明确的项目。
2. 敏捷开发:敏捷开发是一种迭代和增量的开发方法,强调灵活性和快速响应。
敏捷开发主要包括Scrum、XP和Kanban等方法。
敏捷开发适用于需求不确定和频繁变化的项目。
3. UML:UML是一种用于软件建模和设计的标准化方法。
UML提供了一系列的通用图形符号和建模语言,便于进行软件设计和文档化。
软件工程复习知识要点
1 软件和软件工程概念软件的组成部分之一;在软件开发中,编程只是软件开发过程的一个阶段。
2.在结构化程序设计时代,程序最小的单位是函数及子程序,程序和数据是分别的。
程序的最小单位是类。
3.软件的特性:形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性。
4.软件的分类:系统软件;应用软件;支撑软件;可复用软件。
5.什么是软件工程?(课后题)软件工程是指导计算机软件开发和维护的工程学科。
接受工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
6.可以用功能性、牢靠性、易用性、效率、可维护性和可移植性六个特性衡量软件的质量。
功能性是指软件所实现的功能达到它的设计规范和满意用户需求的程度。
可移植性是指软件从某一环境转移到另一环境时所作努力得程度。
7.软件生存期由软件定义、软件开发和运行维护三个时期组成。
开发时期通常由概要设计、详细设计、编码和测试四个阶段组成。
开发过程中的典型文档包括:项目支配、软件测试支配、软件设计说明书、用户手册。
8.需求分析的基本任务?(1)建立分析模型,了解系统的各种需求微小环节。
(2)基于分析结果,编写出软件需求规格说明或系统功能规格说明,确认测试支配和初步的系统用户手册,并提交管理机构进行分析评审。
2 软件工程方法和工具1.面对对象方法的动身点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类相识问题和解决问题的方法和过程,从而使描述问题的问题空间和其解空间在结构上尽可能一样。
2.形式化方法的主要特点是:(课后题)(1) 软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;(2) 设计、实现和单元测试等开发过程由一个变换开发过程代替。
通过一系列变换将形式的规格说明细化成为程序。
3.面对对象 = 对象 + 类 + 继承 + 消息通信。
软件工程期末复习知识点整理
复习整理一、绪论1.软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。
(软件=程序+文档)2.软件工程的定义●是指导计算机软件开发和维护的一门工程学科;●采用工程化的原理与方法对软件进行计划、开发和维护;●把证明正确的管理技术和最好技术综合运用到软件开发中;●研究经济地开发出高质量的软件方法和技术;●研究有效维护软件的方法和技术。
3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。
⑶软件开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4.三种编程范型的特点(1) 过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2) 面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3) 基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动●定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期●目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。
●主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:●软件定义:问题定义、可行性研究;●软件开发:需求分析、概要设计、详细设计、编码、测试;●软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:●可强迫开发人员采用规范化的方法。
软件工程期末复习(超详细!!!)
软件工程期末复习(超详细!!!)一:软件工程概述软件工程学的存在价值:促进软件项目成功。
软件的概念:软件(software):软件是计算机系统中与硬件相互依存的另一部分。
它包括程序、数据及其相关文档的完整集合。
(1)能够完成预定功能和性能的可执行指令(program)(2)使得程序能够适当地操作信息的数据结构(data)(3)描述程序的操作和使用的文档(document)软件危机:软件危机定义:软件在开发和维护过程中遇到的一系列严重问题。
软件危机包含两层含义:如何开发软件。
如何维护数量不断膨胀的已有软件。
软件工程(Software Engineering):是研究和应用功能如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。
软件生存周期:是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程。
一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。
计划阶段确定待开发系统的总体目标和范围。
研究系统的可行性和可能的解决方案,对资源、成本及进度进行合理的估算。
分析阶段分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册。
设计阶段(总体设计和详细设计)设计阶段的目标是决定软件怎么做。
软件设计主要集中于软件体系结构、数据结构、用户界面和算法等方面。
实现阶段(编码)实现阶段是将所设计的各个模块编写成计算机可接受的程序代码。
测试阶段设计测试用例,对软件进行测试,发现错误,进行改正。
运行和维护阶段应当在软件的设计和实现阶段充分考虑软件的可维护性。
维护阶段需要测试是否正确实现了所要求的修改,并保证在产品的修改过程中,没有做其他无关的改动。
维护常常是软件生命周期中最具挑战性的一个阶段,其费用是相当昂贵的。
软件工程三要素:工具、方法、开发过程瀑布模型:问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、运行与维护。
软件工程导论期末考试考点
1.软件的定义:软件是程序、数据与相关文档的完整集合。
其中,程序是能够完成预定功能和性能的可执行的指令序列;数据是使程序能够适当地处理信息的数据结构,文档是开发、使用和维护程序所需要的图文资料。
2.软件危机的定义,表现、原因是什么?a)软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
b)软件危机的表现:●对软件开发成本和进度的估计常常很不准确。
●经常出现用户对“已完成的〞软件系统功能不满意的现象。
●软件产品的质量往往达不到要求。
●软件通常不可维护。
●软件通常没有适当的文档资料。
●软件成本在计算机系统总成本中所占的比例逐年上升。
●软件开发生产率提高的速度,远远跟不上计算机应用迅速普与深入的趋势。
c)软件危机的原因:i.客观原因:与软件本身的特点有关●软件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。
软件缺乏“可见性〞。
●软件维护通常意味着改正或修改原来的设计,这就在客观上使得软件较难维护。
软件缺乏“可插拔性〞。
●如何保证每个人完成的工作合在一起确实能构成一个高质量的大型软件系统,更是一个极端复杂困难的问题,必须有严格而科学的管理。
ii.主观原因:与软件开发与维护的方法不正确也有关●目前相当多的软件专业人员对软件开发和维护还有不少糊涂观念,这可能是使软件问题发展成软件危机的主要原因。
●忽视需求分析只重视编码与运行。
•编写程序所需的工作量只占软件开发全部工作量的10%~20%。
•在后期引入一个变动比在早期引入相同变动所需付出的代价高2~3个数量级。
•图1.1定性地描绘了在不同时期引入一个变动需要付出的代价的变化趋势。
●忽视文档只重视程序必须认识到一个软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。
必须清除只重视程序而忽视软件配置其余成分的糊涂观念。
●轻视维护是一个最大的错误。
统计数据表明,实际上用于软件维护的费用占软件总费用的55%~70%。
软件工程期末复习要点归纳总结
软件工程期末复习要点归纳总结软件工程是指在软件开发的全过程中,应用工程的原理、方法和经验对软件进行开发、运行和维护的过程。
在软件工程这个学科中,包括了软件需求、软件设计、软件构建、软件测试、软件维护等多个阶段和技术。
下面是软件工程期末复习的要点归纳总结:1.软件开发过程模型-瀑布模型:各个阶段按顺序进行,每个阶段完成后不可回溯。
-增量模型:将软件划分为多个增量,每个增量独立进行开发。
-螺旋模型:将软件开发过程分为多个循环,每个循环都包括需求分析、设计、开发和测试。
-迭代模型:将软件开发过程分为多个迭代,每个迭代包括需求分析、设计、开发和测试。
2.软件需求工程-需求获取:通过需求采集、用户访谈、问卷调查等方式获取需求。
-需求分析:对需求进行整理、分类、抽象和规范化,得出系统需求。
-需求规格说明:将需求规格化为需求文档,包括用例、用例图、领域模型等。
-需求验证:通过评审、原型验证等方式验证需求的正确性和完整性。
3.软件设计-结构化设计:通过模块化、自顶向下、逐步求精的方式进行软件设计。
-面向对象设计:通过类、继承、多态等面向对象的概念进行软件设计。
-架构设计:设计软件的整体框架和组件之间的关系。
-接口设计:设计软件的各个组件之间的接口。
4.软件构建-编码:根据设计文档进行编码,可以使用编程语言、集成开发环境等工具。
-调试:通过调试工具,对程序进行调试,找出存在的问题并进行修复。
-集成:将各个模块集成到一起,进行整体测试,确保功能的正确性。
-部署:将软件部署到目标环境中,确保软件能够正常运行。
5.软件测试-单元测试:对软件的最小单元进行测试,如函数、方法等。
-集成测试:对软件的各个模块进行整合测试,确保模块之间的协调性。
-系统测试:对整个系统进行测试,确保系统满足用户需求。
-验收测试:由用户对软件进行测试,验证软件是否满足用户需求。
6.软件维护-改正性维护:修复软件中的错误。
-适应性维护:根据用户需求,对软件进行功能扩展。
软件工程期末考试重点整理
软件工程的基本概念:研究软件生产和软件管理的工程学科。
主要内容:软件工程的基本概念。
软件开发模型。
软件开发各阶段的任务、技术、方法。
传统方法、面向对象方法。
软件工程管理。
软件质量保证。
软件工程环境。
软件工程三要素:方法、工具和过程什么是软件生命周期?定义一个软件从开始计划起,到废弃不用为止,称为软件的生存周期。
软件生存周期包括:计划(主要任务:调查和分析,调查用户需求,分析新系统的主要目标,分析开发该系统的可行性)、开发(主要任务:系统分析、设计和实现)与运行(主要任务:做好软件维护,使软件在整个生存周期内保证满足用户的需求和延长使用寿命)3个时期,每一时期又可细分为若干更小的阶段。
将软件开发过程划分生存周期的目的:把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够简化每一步的工作内容,使因为软件规模增长而大大增加了的软件复杂性变得较易控制和管理需求分析的主要任务是1通过对问题及其环境的理解、分析和综合,建立分析模型;2在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求不大出来。
需求分析的步骤通过对现实环境的调查研究,获得当前系统的具体模型;去掉具体模型中的非本质因素,抽象出当前系统的逻辑模型;分析当前系统与目标系统的差别,建立目标系统的逻辑模型;对目标系统进行完善和补充,并写出完整的需求说明;对需求说明进行复审简述衡量模块独立性的两个准则。
选择程序设计语言的原则有哪些?简述你对程序设计风格的理解。
程序设计阶段的特点:生产方式:个体手工劳动。
生产工具:机器语言、汇编语言。
开发方法:追求编程技巧,追求程序运行效率。
程序难读、难懂、难修改。
硬件特征:价格贵、存储容量小、运行可靠性差。
软件特征:只有程序、程序设计概念,不重视程序设计方法。
“软件测试不能证明程序的正确性”,谈谈你对这句话的理解。
“软件维护是软件运行时期的工作,与软件开发各阶段联系较少,该阶段工作是简单的,难度也要小得多。
软件工程期末复习要点归纳总结
第一章软件工程学概论1、软件危机产生的原因软件本身的特点:难于维护、逻辑复杂软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护课本表述:1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件2、软件不同于一般程序,它的一个显著特点是规模庞大,而且程序的复杂性将规模的增加而呈现指数上升;3、软件本身特有的特点确实给开发和维护带了一些客观困难4、软件开发与维护有关的许多错误认识与做法有关忽略需求分析,轻视软件维护5、对用户要求没有完整准确的认识就匆忙开始着手编写程序6、在软件不同阶段进行修改需要付出的代价是很不相同的2、软件危机的表现什么是软件危机1、成本高:2、软件质量得不到保证:软件质量问题导致失败的软件项目非常多3、进度难以控制:●项目延期比比皆是●由于进度问题而取消的软件项目较常见●只有一小部分的项目能够按期完成4、维护十分困难:▼软件维护的多样性▼软件维护的复杂性▼软件维护的副作用3、克服软件危机1、管理的角度:软件开发过程的研究、文档的标准化以及人员的交流方式等2、软件开发方法的研究结构化软件开发方法, 面向对象的开发4、软件工程的定义概括的说,软件工程师指导计算机软件开发和维护的一门工程学科;采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程;1、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件;2、①把系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程;他借鉴传统工程的原理、方法,以提高质量,降低成本为目的;5、软件工程的本质特性1、关注与大型程序的构造2、中心课题是控制复杂度3、软件经常变化4、开发软件的效率非常重要5、和谐的合作是开发软件的关键6、软件必须有效地支持它的用户7、在软件工程领域中通常由具有一个文化背景的人替另外一种文化背景的人创造产品6、软件工程的基本原理1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组应该少而精7、承认不断改进软件工程实践的必要性软件工程学包含3个要素:方法、工具和过程7、软件生命周期1、概念:软件生命周期由软件定义、软件开发和运行维护也成软件维护3个时期组成;2、内容:1、问题定义回答“要解决的问题是什么“,写出关于问题性质、工程目标和工程规模的书面报告2、可行性分析回答”对于问题是否有行得通的解决办法“,即探索问题是否值得去解,是否有可行的办法3、需求分析确定”为了解决这个问题,目标系统必须做什么“,确定目标系统必须具备哪些功能,得到需求规格说明书;4、总体设计回答”概括地说,应该怎样实现目标系统“,确定程序由哪些模块组成以及模间的关系5、详细设计回答”应该怎样具体地实现这个系统呢”,确定实现模块功能所需要的算法与数据结构6、编码和单元测试写出正确的容易理解、容易维护的程序模块,然后仔细测试每个模块7、综合测试通过各种类型的测试及相应的调试是软件达到预定要求8、软件维护通过各种必要活动是系统持久地满足用户需求8、生命周期模型1、瀑布模型传统瀑布模型特点:1、阶段间具有顺序性与依赖性2、推迟实现的观点3、质量保证的观点瀑布模型优点:1、可强迫开发人员使用规范的方法例如:结构化技术;2、严格规定每个阶段必须提交的文档;3、要求每个阶段交出的所有产品都必须通过验证;缺点:1、“瀑布模型是由文档驱动的”成为主要缺点适用范围:适合于用户需求明确、完整、无重大变化的软件项目开发;2、快速原型模型适用范围:用户不能给出完整、准确的需求说明,或者开发者不能确定算法的有效性、操作系统的适应性或人机交互的形式等情况;3、增量模型特点:1、反复的应用瀑布模型的基本成分和原型模型的迭代特征,每一个线型过程产生一个“增量”的发布或提交,该增量均是一个可运行的产品;2、早期的版本实现用户的基本需求,并提供给用户评估的平台;优点:1、在较短时间内向用户提交可完成部分工作的产品;2、逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击;缺点:1、软件体系结构必须是开放的;2、开发人员既要把软件系统看作整体;又要看成可独立的构件,相互矛盾;3、多个构件并行开发,具有无法集成的风险;4、螺旋模型基本思想:使用原型或其他方法来降低风险;适用范围:适用于内部开发大规模软件项目;优点:1、对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件发的一个重要目标2、减少了过多测试或测试不足3、维护和开发之间并没有本质区别缺点:1、风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大2、随着迭代次数的增加,工作量加大,软件开发成本增加5、喷泉模型特点:喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目;该模型认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性;6、Rational统一过程RUP重复一系列周期,每个周期由一个交付给用户的产品结束;每个周期划分为初始、细化、构造和移交四个阶段,每个阶段围绕着五个核心工作流需求、分析、设计、实现、测试分别迭代;第二章可行性研究1、概念目的用最小的代价在尽可能短的时间内确定问题是否能够解决,不是解决问题,而是确定问题是否值得去解决;2、可行性研究任务了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划;即对软件开发以后的行动方针提出建议;3、研究内容(1)技术可行性使用现有的技术能实现这个系统吗(2)经济可行性这个系统的经济效益能超过它的开发成本吗(3)操作可行性系统的操作方式在这个用户组织内行得通吗(4)法律可行性新系统开发是否会侵犯法藤、集体或国家利益4、数据字典1、内容1、数据流2、数据流分量即数据元素3、数据存储4、处理2、作用对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素都有一个确切的定义;第三章需求分析1、需求分析的任务(1)确定对系统的综合要求(2)分析系统的数据要求(3)导出系统的逻辑模型(4)修正系统的开发步骤2、获取需求的方法(1)访谈(2)面向数据流自顶向下(3)简易的应用规模说明技术(4)快速建立软件模型3、实体-关系图P63、层次方框图P68和IPO图P694、结构化分析模型●数据流图:描绘当数据在软件系统中移动时被变换的逻辑过程,指明系统具有的变换数据的功能,是建立功能模型的基础●实体-联系图:描绘数据对象及数据对象之间的关系,用于建立数据模型;●状态转换图:指明了作为外部事件结果的系统行为;描绘了系统的各种行为模式称为“状态”和在不同状态间转换的方式;是行为建模的基础第四章总体设计1、模块独立性与耦合性P97(1)模块化把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求模块化的优点:1.使软件结构清晰,容易设计也容易阅读与理解2.容易测试与调试,提高可靠性3.提高软件的可修改性4.有助于软件开发工程的组织管理(2)模块独立的重要性○有效的模块化即具有独立的模块的软件比较容易开发出来○独立的模块比较容易测试和维护(3)耦合衡量不同模块彼此间互相依赖连接的紧密程度,耦合要低,即每个模块和其他模块之间的关系要简单1、数据耦合:两个模块之间通过参数交换信息,而且交换的信息仅仅是数据2、控制耦合:传递的信息中有控制信息3、特征耦合:当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素4、公共环境耦合:两个或多个模块通过一个公共环境相互作用5、内容耦合:出现一下情况之一,则为内容耦合:1、一个模块访问另一个模块的内部数据2、一个模块不通过正常入口而转到另一个模块的内部3、两个模块有一部分代码重叠4、一个模块有多个入口数据耦合<控制耦合<特征耦合<公共环境耦合<内容耦合(4)内聚P99衡量一个模块内部各个元素彼此结合的紧密程度;内聚要高,每个模块完成一个相对独立的特定子功能信息隐藏P96应该这样设计和确定模块,使得一个模块内包含的信息过程和数据对于不需要这些信息的模块来说,是不能访问的2、启发规则1、改进软件结构提高模块独立性2、模块规模应该适中3、深度、宽度、扇入、扇出都应适中4、模块的作用域应该在控制域之内5、力争降低模块接口的复杂度6、设计单入口、单出口模块7、模块功能应该可以预测3、层次图和HIPO图P1024、面向数据流的设计方法P104(1)概念面向数据流设计就是把信息流映射成软件结构,信息流的类型决定了映射的方法;信息流包括变换流、事物流;(2)变换分析与事务分析P1055、小结i.进行软件结构设计遵循的最主要的原理是模块独立原理ii.抽象和求精是一对互补概念iii.软件工程师在实践中总结经验得出一些很有参考价值的启发式规则iv.自顶向下逐步求精是进行软件结构设计的常用途径v.用形式化的方法由数据流图映射出软件结构第五章实现1、选择程序设计语言为了使程序容易测试和维护以减少软件的总成本,所选用的高级语言程序应该有理想的模块化机制,以及可读性好的控制结构和数据结构:为了便于调试和提高软件可靠性,语言特点应该是编译程序能够尽可能多地发现程序中的错误;为了降低软件开发和维护的成本,选用的高级语言应该有良好的独立编译机制;第六章软件测试2、测试的概念(1)测试是为了发现程序中的错误而执行程序的过程(2)好的测试方案是极可能发现了至今为止尚未发现的错误的测试方案;(3)成功的测试是发现了至今为止尚未发现的错误的测试;3、测试的过程与步骤P153大型软件的测试过程基本由下述几个步骤组成(1)模块测试单元测试发现编码和详细设计的错误(2)子系统测试(3)系统测试集成测试(4)验收测试确认测试(5)平行运行4、单元测试P153着重从下述5个模块进行测试主要使用白盒测试技术(1)模块接口(2)局部数据结构(3)重要的执行通路(4)出错处理通路(5)边界条件5、集成测试P156集成测试就是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题;有两种集成策咯(1)自顶向下集成(2)自底向上集成6、确认测试P160也称验收测试,它的目标是验证软件的有效性;通常使用黑盒测试法;7、白盒测试技术P162白盒方法测试软件时设计测试数据的典型技术(1)逻辑覆盖1、语句覆盖2、判定覆盖3、条件覆盖4、判定/条件覆盖5、条件组合覆盖6、点覆盖7、边覆盖8、路径覆盖(2)控制结构测试1、基本路径测试2、条件测试3、循环测试8、黑盒测试技术P171黑盒测试力图发现下述类型的错误:(1)功能不正确或遗漏了功能;(2)界面错误;(3)数据结构错误或外部访问数据库错误(4)性能错误(5)初始化和终止错误黑盒测试用到的技术(1)等价划分(2)边界值分析(3)错误推测第七章维护1、维护的定义P189所谓软件维护就是在软件已经交付使用周,为了改正错误或满足新的需要而修改软件的过程;根据交付使用之后可能进行的4项活动具体定义软件维护(1)改正性维护纠正在使用过程中暴露出来的错误;诊断和改正错误的过程,(2)适应性维护为了和变化了的环境适当地配合而进行的修改软件活动(3)完善性维护在使用软件的过程中增加新的功能或修改已有功能,还可能提出一般性的改进意见的过程(4)预防性维护为了改进未来的可维护性与可靠性,或为了给未来的改进奠定更好的基础而修改软件的过程;2、维护的过程P192(1)维护组织(2)维护报告(3)维护的事件流(4)保存维护记录(5)评价维护活动3、小结1、软件生命周期每个阶段的工作都和软件可维护性有密切关系;2、再工程过程可以在完成任意一个活动之后中止第八章面向对象技术1、面向对象方法学要点(P203面向对象方法学的出发点和基本原则,是尽可能模拟人类思维方法,是开发软件尽可能接近人类认识世界解决问题的方法与过程;2、面向对象方法学优点1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好3、对象模型(P216对象模型表示静态的,结构化的系统的“数据”性质;它是对模拟客观世界实体的对象以及对象彼此之间的关系的映射,描述了系统的静态结构;4、动态模型(P223动态模型表示瞬时的、行为化的系统的”控制“性质,它规定了对象模型中的对象的合法序列;5、功能模型(P224功能模型表示变化的系统的”功能“性质,他指明了系统应该”做什么”,因此更直接反映了用户对目标系统的需求;6、 三种模型之间的关系(P 228功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候即在何种状况下接受什么时间的触发做;对象模型则定义了做事情的实体;在面向对象方法学中,对象模型是最基本的,它为其他两种模型奠定了基础,人们依靠对象模型完成了3中模型的集成;下面扼要地叙述3种模型之间的关系; 三种模型描述了系统的不同方面: 对象模型 动态模型 功能模型 对象的静态结构及相互关系与时间和顺序有关的系统性质 与值的变化有关的系统性质 描述系统的数据结构控制结构 系统的功能 “干事的主体”“什么时候干” “干什么”7、 其他复杂问题大型系统的对象模型通常由下述5个层次组成:主题层、类与对象层、结构层、属性层、服务层主题层类与对象层结构层属性层服务层功能模型与对象模型的关系--对象模型描述了功能模型中的动作对象,数据存储以及数据流结构 --功能模型中的处理对应于对象模型中的操作 动态模型与对象模型的关系 --状态转换驱使行为发生,这些行为在DFD 中被映射成处理,它们同时与对象模型的操作相对应 --针对每个建立的动态模型描述了类实例的生命周期或运行周期动态模型与功能模型的关系--功能模型中的处理可能产生动态模型中的事件;面向对象开发方法包括OOA面向对象分析、OOD面向对象设计、OOP面向对象实现三个部分第九章软件项目管理1、估算软件规模P305(1)代码行技术每个人了估计程序的最小规模a,最大规模b和最可能规模m,分别算出这3中规模的平均值a̅、b̅和m̅之后,用下面公式计算程序规模:L=a̅+4m̅+b̅6(2)功能点技术2、项目进度Gantt图3、质量保证概括得说,软件质量就是“软件与明确地和隐含地定义的需要相一致的程度”;更具体地说,软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度;4、软件配置管理软件配置管理事是在软件的整个生命周期内管理变化的一组活动;具体地说,这组活动用来:(1)标识变化(2)控制变化(3)确保适当地实现了变化(4)向需要知道这类信息的人报告变化5、基线基线是一个软件配置管理概念,它有助于人们在不严重合理变化的前提下来控制变化,简而言之,基线就是通过了正式复审的软件配置项;;在软件配置项变成基线之前,可以迅速而非正式地修改它;其他复习简答题1、简述文档在软件工程中的作用;1 提高软件开发过程的能见度2 提高开发效率3 作为开发人员阶段工作成果和结束标志4 记录开发过程的有关信息便于使用与维护;5 提供软件运行、维护和培训有关资料;6 便于用户了解软件功能、性能;。
软件工程知识点总结
软件工程知识点总结摘要:1.软件工程概念与目标2.软件开发过程与管理3.需求分析与规划4.设计、编码与测试5.维护与优化6.软件项目管理策略7.软件工程实践与方法8.常用开发工具与技术9.软件工程发展趋势正文:一、软件工程概念与目标软件工程是一门研究如何高效、规范、可靠地开发和维护软件的理论、方法、工具和实践的学科。
其目标是生产出具有高质量、高可靠性、易维护、低成本的软件产品。
二、软件开发过程与管理1.瀑布模型:一种顺序性的软件开发过程,各阶段相互依赖,依次进行。
2.增量开发:逐步增加软件功能,分阶段完成开发任务。
3.敏捷开发:以人为核心,迭代、适应性强,持续交付可用软件。
三、需求分析与规划1.需求分析:通过调研、访谈等方法,明确用户需求,输出需求文档。
2.软件规划:根据需求分析,制定软件开发计划,包括项目范围、里程碑、任务分配等。
四、设计、编码与测试1.设计:基于需求文档,进行软件整体结构、模块划分和接口设计。
2.编码:按照设计文档,编写高质量、可维护的代码。
3.测试:对软件进行单元测试、集成测试、系统测试,确保软件功能正常、性能达标。
五、维护与优化1.软件维护:对已投入使用的软件进行修改、完善,提高性能、稳定性等。
2.软件优化:通过重构、性能调优等手段,提升软件质量和运行效果。
六、软件项目管理策略1.项目风险管理:识别、评估、应对项目风险,降低项目失败可能性。
2.项目成本估算:合理预测项目成本,为项目决策提供依据。
3.项目进度管理:制定合理的进度计划,监控项目进度,确保按时完成任务。
七、软件工程实践与方法1.面向对象编程:运用封装、继承、多态等特性,提高代码复用性、可维护性。
2.软件工程原则:遵循一定的设计原则,如SOLID,提高软件质量。
八、常用开发工具与技术1.集成开发环境(IDE):如Eclipse、Visual Studio,提高开发效率。
2.版本控制工具:如Git,实现代码版本管理,便于团队协作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
复习整理、绪论1. 软件的定义软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。
(软件=程序+文档)2.软件工程的定义是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件的方法和技术。
3.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。
在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。
产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。
⑶软件开发费用不断增加。
⑷软件开发技术落后。
⑸生产方式落后,仍采用手工方式。
⑹开发工具落后,生产率提高缓慢。
4.三种编程范型的特点(1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。
主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:软件定义:问题定义、可行性研究;软件开发:需求分析、概要设计、详细设计、编码、测试;软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:可强迫开发人员采用规范化的方法。
严格地规定了每个阶段必须提交的文档。
要求每个阶段交岀的所有产品都必须是经过验证的缺点如果需求规格说明与用户需求之间有差异,很可能导致最终开发岀的软件产品不能真正满足用户的需要。
(瀑布模型几乎完全依赖于书面的规格说明)由于多数用户不熟悉计算机,系统分析员对用户的专业也了解不深,因而很难在在开发的初始阶段彻底弄清软件需求。
(瀑布模型只适用于项目开始时需求已确定的情况)5、软件可行性研究的目的和内容目的:是弄清待开发的项目是不是可能实现和值得进行内容:经济可行性,技术可行性,运行可行性,法律可行性三、结构化分析(重点)P711、结构化分析SA模型的组成DFDffiI MASDD秋态■蚪鱼阎STD图拧制规格谜明CSFEC2、结构化分析的基本步骤1.了解当前系统的工作流程,获取当前系统的物理模型。
2.抽象岀当前系统的逻辑模型。
3.建立目标系统的逻辑模型。
4•作进一步补充和优化。
3、 绘制数据流图DFD 的注意点① 父图与子图的平衡,即父图的输入输岀数据流与子图的输入输岀数据流一致 ② 区分局部文件和局部外部项 ③ 分解的速度不宜过快 ④ 按规则命名加工编号⑤ 提高数据流图的易懂性,合理分解决策表、决策树的绘制|例题:邮寄包收费标准如下:若收件地点在 若收件地点在1000公里以外, 部分每分斤加收0 . 5元。
请绘制收费的原始决策表, 4、 1000公里以内,普通件每公斤 2元,挂号件每公斤3元。
普通件每公斤 2. 5元,挂号件每公斤3. 5元;若重量大于30公斤,超重 (重量用W 表示)决策表(判定表):决策规则号]士34 567 &条 件 普追件 Y NY NYNYNU ri30Y Y Y Y N N N N 1000公里且内YYNN1 Y YNN的 行2WXX3WXX2.5WX3 5WX2. □X3(R(W -3O}XO. 5X3. 5X 30^(K-30) X0. 5X决策树(判定树)2.5 W3 W3.5 W牡2.5X30^(^30)X0153, 5X30^(W>30)X{X55、 结构化的三种控制结构顺序、选择、循环 DO_WHILE6、 流程图、N-S 图和PDL 的特点,通过PDL 语言绘制流程图和N-S 图 例题:将三个数从小到大排序并对其进行优化,得到优化后的决策表,再绘制岀决策树2 W否流程图:7、 给定一个系统,用结构化分析方法进行分析,画出 DFD DD丿冃学与试报寫过程中荷卩“记求叔名算”的MIX*该加工上躍星根林枫名屋(蛉名、H 弓G 价证巧-■踝也林[和幵考课程常、JT^b ;河h 经杜檢,股久 圮可、WilllUk^证席报呂看,同刖记录到爭生霁也中〔准号低号、姓名、规程h 诗绘制谖拘1:的DFD 图.井写 用数制扫典中的竝据缺日離揺流词Ml 数据腕黑Sh加勒中亠姓桝-性别-片檢证寸T 磔胖名 斤占歸程-噸45 4斤芳讨间 考牛韶册=• 丫1笛』谍科四、 面向对象及UML 1、 面向对象的基本特征抽象、封装、继承、多态2、 静态、动态 UML 图例(P84)五、 需求工程与需求分析 1、 需求分析的任务与步骤任务:(1)通过对问题及其环境的理解、分析和综合建立分析模型,(2)在完全弄清用户对软件系统的确切要求的基础上,用“软件需求规格说明书”把用户的需求表达岀来。
需求分析 的认为就是为了明确要开发的是一个什么样的系统,而不是去实现这个系统。
步骤:需求获取、需求建模、需求描述(编写SRS 、需求验证2、 需求分析和需求工程的困难性客户说不清楚需求人口N-S 图:正式抠宕单君牛*旳E 式那号证.分析人员或客户理解有误需求自身经常变动3、面向对象需求模型组成用例图、用例规约、补充规约、术语表4、用例规约应该包含哪些内容?基本流和备选流的概念及区别(P117)简瞇说明:衢哋介紹该用例的柞用和日的. 1事件流;包括基本流和希选流'农小出浙冇对能的祜动阳L捏特陳石求:描述与像用力弟咲杓非功能杵需求和设il哟束前盍条件和肓遗条件v衣帛■流指谨川例最1E常时•种场最冷沖弘流中,系址执厅啄列活功来响应霽片占提川的昵务毎个歩骤都需竖川麴了编号’以请楚地标旳步骤的光心顺序.毎牛步骤的■徙内容川--何简朴的标題來概抵.使川读:职町通过浏览标趣快速的r解川關的I:密步戦个用捌模型皓木忌述z后+在针对擁牛步骤说酬描述翦与者和系统上间的篩选汇匕用于牺述用例扭讦过穆中的斤常成偶尔发牛的仙况,他和雄木流券I合起总能聘覆盖谨用机所冇训能发牛的场忠起点:谨备选流从爭件硫的娜一步开殆.条件:蛊朴么条件会哋发该帚选流.功作:系统在该务选流中会采取聊咗励作.恢复:该备选流结東乩该I】」例应加啊缆续执行”笛选谦的描述榕宜川j華木流槪.即需啖编匕井以标題槪述其内容•塢号前叩川前缀亠切,臥示与堆本流的区別*六、面向对象分析1、面向对象分析的主要任务(P138)首先要理解用户的需求,包括全面理解和分析用户需求,明确所开发的软件系统的职责,形成文件并规范地加以表述。
然后进行分析,提取类和对象,并结合分析进行建模。
其基本步骤是:标识类,定义属性和方法;刻画类的层次;表示对象以及对象与对象之间的关系;为对象的行为建模。
这些步骤肯反复进行,直至完成建模。
2、面向对象分析的模型组成3、软件设计的任务是什么?概要设计和详细设计的主要工作|任务:将软件分析模型转变为考虑具体实现技术和平台的软件设计模型。
概要设计(结构设计):把一个软件需求转换为软件表示时,首先设计岀软件总的体系结构。
基本任务:1)设计软件系统结构2)进行数据结构及数据库的设计3)编写概要设计的文档4)评审详细设计:为SC图中的每个模块确定采用的算法和块内数据结构,用选定的表达工具(流程图、N-S图、PAD图、伪代码)给出清晰的描述。
基本任务:1)为每个模块进行详细的算法设计2)为模块内的数据结构进行设计3)对数据库进行物理设计4)其他设计5)编写详细设计说明书6)评审七、软件设计1、模块的定义模块是一个拥有明确定义的、输岀和特性的程序实体。
模块化是指解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程。
每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
模块化设计是把大型软件按照规定的原则划分成一个个较小的、相对独立但又相互关联的模块。
但又相互关联的模块。
2、什么是模块独立性?用什么来度量(低内聚高耦合)?模块独立性指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。
模块独立的概念是模块化、抽象、信息隐蔽和局部化概念的直接结果。
独立性可以从两个方面来度量:模块本身的内聚性(Cohesion)和模块之间的耦合(Coupling)。
3、耦合、内聚的定义,几种类型(P171)内聚:从功能的角度对模块内部聚合能力的量度低内聚(偶然性内聚、逻辑性内聚、时间性内聚),中内聚(过程性内聚、通信性内聚),高内聚(顺序性内聚、功能性内聚)耦合:对软件内部块间联系得到度量弱耦合(非直接耦合、数据耦合、特征耦合),中耦合(控制耦合),较强耦合(外部耦合、公共耦合),强耦合(内容耦合)4、扇入、扇出的定义扇入:一个模块被其他模块调用的个数扇岀:一个模块调用其他模块的个数八、编码和测试1、四代语言的特点和典型代表第一代也称机器语言,是计算机能直接识别和执行的语言。
优点是无需翻译,占用内存少、执行速度快。
缺点是随机而异,通用性差,而且因指令和数据都是二进制代码形式,难于阅读和记忆,编码工作量大,难以维护。
第二代语言也叫汇编语言,是用助记符号来表示机器指令的符号指令的符号语言。
优点是比机器语言易记。
缺点同机器语言。
第三代语言还称高级语言,容易学习,通用性强,书写岀的程序比较短,便于推广和交流,是很理想的一种程序设计语言。
代表有C语言,C#语言。
第四代语言又叫面向应用的语言。
主要特点是:非过程性、采用图形窗口和人机对话形式、基于数据库和“面向对象”技术,易编程、易理解、易使用、易维护。
代表有SQL关系数据查询语言,UNIX系统的shell语言。
2、变量命名规则3、软件测试的基本任务程序测试的是为了发现错误而执行程序的过程。
目的:发现程序的错误任务:通过在计算机上执行程序,暴露程序中潜在的错误。
4、软件测试要经过哪些步骤(P254)?这些测试与软件开发各阶段之间有什么关系?软件测试要经过的步骤是:单元测试-集成测试-确认测试-系统测试。