软件工程知识点总结
软件工程_主要知识点

1.软件的定义?(P1)计算机(程序)、(规程)以及运行计算机系统可能需要的相关(文档)和(数据)。
2.应用软件的分类?(P2)通用软件和定制软件3.软件的本质特性?(P3)复杂性、一致性、可变性、不可见性4.软件危机的表现?(P5-7)1、软件开发的成本和进度难以准确估计,延迟交付甚至取消项目的现象屡见不鲜。
2、软件存在错误多,性能低,不可靠,不安全等质量问题。
3、软件成本在计算机系统的整个成本中所占的比例越来越大4、软件维护及其困难,而且很难适应不断变化的用户需求和使用环境。
5.软件工程的定义?(P7)①将系统性的、规化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;②对①中所述方法的研究。
6.软件工程包括哪些基本要素?简述它们的作用?(P7-8)过程、方法、工具方法:为软件开发提供了“如何做”的技术、通常包含某种语言或图形的模型表示方法,设计实践和质量保证标准。
工具:为软件工程的方法提供自动或半自动的软件支持环境辅助软件开发任务完成。
过程:是管理和控制产品质量的关键,将人员、技术、组织与管理有机的结合起来。
7.软件的质量可以从哪些方面评价?(P8-9)可用性、有效性、可依赖性、可维护性8.软件工程方法有哪些?(P9-10)(传统方法<面向过程的方法、面向数据的方法等>、面向对象方法)传统方法:面向数据方法、面向过程方法面向对象方法9.CASE系统的三个层次?(P10-11)工具:CASE工具支持单个过程的任务工作台:CASE工作台支持某一过程阶段的活动环境:CASE环境支持整个软件过程的所有活动或者大部分活动,通常是若干CASE工作台的集成10.SWEBOK的10个知识域?英文名称?(P15-19)1软件需求(Software requirements)→2软件设计(Software Design)→3软件构造(Software Construction)→4软件测试(Software Testing)→5软件维护(Software Maintenance)→6软件配置管理(Software Configuration Management)→7软件工程管理(Software Engineering Management)→8软件工程过程(Software Engineering Process)→9软件工程工具与方法(Software Engineering Tools and Methods)→10软件质量(Software Quality)11.软件工程与其他相关学科的关系?(P19-20)软件工程将计算机科学,数学,工程学和管理学等基本原理应用于软件开发的工程实践中,并借鉴传统工程的原则和方法,以系统的,课控的,有效的方式产生高质量的软件。
软件工程基础知识点总结

软件工程基础知识点软件工程基础知识点1. 软件工程概述软件工程是一门实现高质量、可靠且可维护的软件系统的学科。
它涉及软件开发的全过程,包括需求分析、设计、编码、测试、部署和维护等阶段。
2. 软件生命周期软件生命周期是指软件从概念、规划、开发、测试、发布、维护直到退役的整个过程。
软件生命周期管理(SLCM)是为了提高软件质量、可靠性、可维护性和可重用性而规划和控制这些过程的活动。
3. 软件需求工程软件需求工程是指对软件产品进行需求分析、需求规格说明、需求验证和需求管理等活动的过程。
它旨在准确地理解用户需求,并将其转化为明确、可量化和可验证的需求规格。
4. 软件设计原则软件设计原则是指在软件系统设计过程中应遵循的一些指导原则,包括单一职责原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则和迪米特法则等。
这些原则可以帮助开发人员设计出可维护、可扩展和可重用的软件系统。
5. 软件开发方法论软件开发方法论是指一套用于组织、规范和管理软件开发活动的方法和模型。
常见的软件开发方法论包括瀑布模型、迭代开发模型、敏捷开发模型等。
选择合适的开发方法论对于软件开发项目的成功至关重要。
6. 软件测试软件测试是在开发过程中对软件系统进行验证和验证的过程。
它旨在发现和修复软件系统中的缺陷和错误。
常见的软件测试方法包括单元测试、集成测试、系统测试和验收测试等。
7. 软件项目管理软件项目管理是指为了保证软件项目按时、按预算、按要求完成而进行的活动。
它包括项目计划、项目组织、项目执行、进度控制和质量控制等方面。
良好的软件项目管理可以确保软件项目的成功交付。
8. 软件配置管理软件配置管理是指对软件配置项进行识别、控制、记录和审计的过程。
它旨在保证软件系统的版本控制、变更管理和发布管理,以确保软件系统的可追溯性和稳定性。
9. 软件质量保证软件质量保证是指通过制定和实施合适的质量管理和质量控制措施,以确保软件产品达到用户要求的质量水平。
软件工程知识点汇总

软件工程知识点汇总软件工程知识点汇总
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软件工程、软件工程方法学:三要素1.1软件工程:O1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工程应用到软件;O 2对。
的各种方法的研究1.2软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科1.3软件工程三要素是:方法、工具、过程软件工程的方法:是指完成软件开发各项任务的技术方法软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的2软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、依赖倒转原则、开闭原则等2.1模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。
模块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整个系统表示过于复杂,不利于控制系统的复杂性。
2.2信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。
2.3抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向下,逐层细化的办法控制软件开发过程的复杂性。
2.4模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单。
要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。
(即:高内聚低耦合)2.5依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。
2.6开闭原则:软件实体应该是可扩展的,但是不可以修改。
即对于扩展是开放的,对于更改是封闭的。
3软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、特点、示意图;软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架3.1瀑布模型(又称线性模型):3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
软件工程知识点总结

软件工程〔简要知识点〕一、. 软件过程五个模型比照〔瀑布模型、快速原型、增量、螺旋、喷泉模型〕二、可行性研究:1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。
2、四个方面:技术、经济、操作可行性、法律3、数据流图四种成分:1、源点/终点2、处理3、数据存储4、数据流三、需求分析:1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。
2、构造化方法就是面向数据流自顶向下逐步求精进展需求分析的方法。
3、实体联系图:1、数据对象2、属性3、联系〔1:1、1:N、M:N〕四、总体设计:1.任务:答复“概括的说,系统应该如何实现〞,用比拟抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序构造。
2. 系统设计阶段〔确定系统具体实施方案〕、构造设计阶段〔确定软件构造〕3.模块独立:内聚和耦合4. 耦合表示一个软件构造内各个模块之间的互连程度,应尽量选用松散耦合的系统5. 内聚 (Cohesion): 一个模块内各元素结合的严密程度6.面向数据流的设计方法:变换流和事务流五、详细设计:1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的准确描述,从而在编码阶段可以把这个描述直接翻译成用*种程序设计语言书写的程序。
2.过程设计的工具〔程序流程图、盒图、PAD图、判定表、判定树〕七、测试:1、单元测试:又称模块测试。
每个程序模块完成一个相对独立的子功能,所以可以对该模块进展单独的测试。
由于每个模块都有清晰定义的功能,所以通常比拟容易设计相应的测试方案,以检验每个模块的正确性。
2、集成测试:在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试完毕之后还要进展集成测试。
这个步骤着重测试模块间的接口,子功能的组合是否到达了预期要求的功能,全程数据构造是否有问题等。
软件工程基础知识点总结(一)

软件工程基础知识点总结(一)引言概述:软件工程是现代计算机科学的一个重要分支领域,它涵盖了软件开发的各个方面。
本文旨在总结软件工程的基础知识点,帮助读者加深对软件工程的了解。
本文将从软件生命周期、需求分析、设计、编码和测试这五个大点进行阐述。
软件生命周期:1.需求获取:收集来自用户和利益相关者的需求,包括功能需求、非功能需求和约束条件。
2.需求分析:对需求进行详细分析,包括确定需求的优先级、可行性分析和需求规范的编写。
3.设计:根据需求分析的结果,设计软件的体系结构和模块划分,包括数据结构设计、接口设计和算法设计。
4.编码:根据设计结果进行编码,使用合适的编程语言和开发工具。
5.测试:测试软件的功能是否符合需求,包括单元测试、集成测试和系统测试。
需求分析:1.需求获取:通过需求调研、访谈、问卷调查等方式获取用户需求。
2.需求分类:将需求分为功能需求、性能需求、用户界面需求等分类。
3.需求分析技术:使用UML建模、数据流图、状态转换图等技术来分析需求。
4.需求验证:验证需求是否满足用户的期望,包括合理性验证和可行性验证。
5.需求规格化:撰写需求规格文档,包括用例描述、活动图、领域模型等。
设计:1.体系结构设计:确定软件的整体结构,包括分层、模块化和组件化设计。
2.模块划分:将软件功能划分为多个模块,并确定它们之间的接口和依赖关系。
3.数据库设计:设计软件的数据库结构,包括表结构设计、关系模式设计和数据字典设计。
4.界面设计:设计用户界面,包括界面布局、操作流程和界面元素的选择。
5.算法设计:设计解决特定问题的算法,包括时间复杂度和空间复杂度的考量。
编码:1.选择编程语言和开发工具:根据项目需求和开发者熟悉程度选择合适的编程语言和开发工具。
2.编码规范:遵循统一的编码规范,提高代码的可读性和可维护性。
3.模块开发:按照模块划分的设计,实现各个模块的功能。
4.测试驱动开发:在编码过程中,使用单元测试驱动开发,确保代码的质量。
软件工程复习知识点

1.软件危机的概念,内容,原因及消除的途径;软件危机的概念:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题;概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;软件危机产生的原因:软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确;消除软件危机的途径:1对计算机软件应当有一个正确的认识;2应当有组织、有计划、通过严格的管理手段进行软件的开发;3及时总结软件开发的成功技术和方法并加以推广;4开发和使用更好的软件工具;总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施;2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科;基本原理:软件工程的7条基本原理:1用分阶段的生命周期计划严格管理2坚持进行阶段评审3实行严格的产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应该少而精7承认不断改进软件工程实践的必要性3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型;软件工程方法学包含3个要素:方法、工具和过程;内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学;传统方法学也称为生命周期方法学或结构化范型;4.软件生命周期的具体内容,每一个阶段的任务是什么结合具体的工程例子来理解做软件项目主要分那几个个阶段;①问题定义:确定要求解决的问题是什么②可行性研究:决定该问题是否存在一个可行的解决办法③需求分析:深入了解用户的要求,在要开发的目标系统必须做什么问题和用户取得完全一致的看法;④概要设计:概括回答怎样实现目标系统;概要设计又叫逻辑设计、总体设计、高层设计;⑤详细设计:把解法具体化,设计出程序的详细规格说明;详细设计也叫模块设计、底层设计;⑥编码和单元测试:编写程序的工作量只占软件开发全部工作量的10%-20%;⑦综合测试:软件测试的工作量通常占软件开发全部工作量的40%-50%;⑧软件维护:软件维护的费用通常占软件总费用的55%-70%;①②③为软件定义时期,④⑤⑥⑦为软件开发阶段;④⑤为系统设计,⑥⑦为系统实现;5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;瀑布模型内容:瀑布模型是带“反馈环”的;优点:1可强迫开发人员采用的规范的方法结构化技术;2严格地规定了每个阶段必须提交的文档;3要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证;缺点:瀑布模型是由文档驱动的;1开发过程一般不可逆,否则代价太大;2实际的项目开发过程很难严格按照模型进行;3客户往往很难清楚地给出所有需求,而该模型却要求如此;4软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心;快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;不带反馈环优点:软件产品的开发基本上是线性顺序进行的;1可以得到比较良好的需求定义,容易适应需求的变化;2有利于开发与培训的同步;3开发费用低、开发周期短且对用户更友好;缺点:1客户与开发者对原型理解不同;2准确的原型设计比较困难;3不利于开发人员的创新;增量模型也称为渐增模型;使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试;优点:在较短时间内可以向用户提交可完成部分工作的产品,逐步增加产品功能可以使用户有比较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击;1人员分配灵活,刚开始不用投入大量资源;2如果核心产品很受欢迎,则可增加人力实现下一增量;3可先发布部分功能给客户,对客户起到镇定剂的作用;缺点:1并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构2增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程失去整体性;螺旋模型的基本思想是使用原型及其他方法来尽量降低风险;理解这种模型的一种简便方法是把它看做在每个阶段之前都增加了风险分析过程的快速原型模型;优点:1设计上的灵活性,可以在项目的每个阶段进行变更;2以笑得分段来构建大型系统,使成本计算变得简单容易;3客户始终参与每个阶段的开发,保证项目不偏离正确的方向一击项目的可控性;4随着项目的推进,客户始终掌握项目的最新信息,从而他能够和管理层有效地交互;缺点:1采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标示风险,势必造成重大损失;2过多的迭代次数会增加开发成本,延迟提交时间;喷泉模型:喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各阶段可以相互重叠和多次反复,而且项目的整个生存期中还可以嵌入子生存期;就像水喷上去又可以落下来,可以落在中间,还可以落在底部;6.了解可行性研究中的任务和过程;用最小的代价在尽可能短的时间内确定问题是否能够解决;不是解决问题,而是确定问题是否值得去解决;可行性研究的根本任务:对以后的行动方案提出建议;实质:一次大大压缩简化了的系统分析和设计;任务:1.初步确定项目的规模,目标,约束和限制;2.在澄清了问题定义之后,分析员应该导出系统的逻辑模型;3.从系统逻辑模型出发,探索若干种可供选择的主要解法即系统实现方案;4.对每种解决方法都要研究它的可行性;技术可行性、经济可行性、操作可行性过程:1.复查系统规模和目标访问关键人员,描述目标系统的限制和约束;2.研究目前正在使用的系统:现有系统的问题;3.导出新系统的高层逻辑模型;4.进一步定义问题;5.导出和评价供选择的解法;6.推荐行动方针;7.草拟开发计划;8.书写文档提交审查;7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图p388.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图P409.掌握数据字典的内容、方法、用户和实现p47内容:数据字典由4类元素定义组成;1数据流;2数据流分量即数据元素;3数据存储;4处理;定义数据的方法:数据字典中的定义就是对数据自顶向下的分解;由数据元素组成数据的方式只有下述3种基本类型:顺序选择重复用途:作为分析阶段的工具;实现:P4910.了解成本/效益分析方法p50货币的时间价值投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间纯收入:整个生存周期之内的累计经济效益折成现在值-投资;投资回收率:现在的投资额P和估算出的将来每年的收益Fn,假设系统的使用寿命为n年;11.了解需求分析过程中任务是什么.p471.确定对系统的综合要求功能需求;指定系统必须提供的服务性能需求;指定系统必须满足的定时约束或容量约束可靠性和可用性需求;应定量指定出错处理需求;指环境错误,非系统本身的错误;2.分析系统的数据要求接口需求;常见的接口需求有:用户接口需求、硬件接口需求、软件接口需求、通信接口需求; 约束;常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台;逆向需求;说明软件系统不应该做什么;将来可能提出的要求;3.导出系统的逻辑模型;用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;4.修正系统开发计划;用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;12.理解面向数据流自顶向下逐步求精的方法和意义;p59结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法;通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级;方法:为了达到这个目标,通常从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出,输出数据决定了系统必须具有的最基本的组成元素;意义:1对数据流图细化之后得到一组新的数据流图,不同的系统元素之间的关系变得更清楚了; 2对这组新数据流图的分析追踪可能产生新的问题,这些问题的答案可能又在数据字典中增加一些新条目,并且可能导致新的或精化的算法描述;3随着分析过程的进展,经过提问和解答的反复循环,分析员越来越深入具体地定义目标系统,最终得到对系统数据和功能要求的满意了解;13.理解分析及建模的意义,需求分析中应该建立哪三种模型有哪些工具来帮助建立这些模型14.需求分析需要建立三种模型:1.数据模型:实体-联系图E-R数据对象即实体之间的关系2.功能模型:数据流图DFD系统对数据进行变换的功能3.行为模型:状态转换图系统的各种状态行为模式及状态之间的转换15.掌握实体关系E-R图的概念,内容和实现方法,能结合具体实例建立实体关系图;P6216.掌握状态图的概念,内容,实现方法和作用;p6517.掌握层次方框图、warnier图、IPO图的概念,内容和作用p6818.有穷状态机的概念和内容;Petri的概念;P77有穷状态机:状态集、输入集、转换函数、初始态、终态集Petri:P8219.总体设计是做什么总体设计的过程是怎样的P9120.总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求;总体设计通常由两个过程组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;典型的设计过程包括:1.设想选择的方案2.选取理想的方案3.推荐最佳方案4.功能分解5.设计软件结构6.设计数据库7.制定测试计划8.书写文档9.省查和复审21.掌握软件设计的几个设计原理,理解他们的内容和意义;p941模块化就是把程序划分成独立命名且可独立访问的;2抽象;3逐步求精;4信息隐藏和局部化;5模块独立;它有两个定性标准度量:内聚和耦合;22.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;耦合:耦合是对一个软件结构内不同模块之间互连程度;内聚:内聚标志着一个模块内各个元素彼此结合的紧密;耦合是影响软件复杂程度的一个重要因素;设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度并且降低模块间的耦合程度,从而获得较高的模块独立性;23.耦合包含了哪些类型每个类型的具体内容是什么由低到高24.1非直接耦合:就是没有耦合;2数据耦合:就是参数传递耦合,它属于低级别耦合;3标记耦合:标记耦合指两个模块之间传递的是数据结构;4控制耦合:它属于中级别耦合,比如调度程序与进程之间的耦合,就是控制耦合;5外部耦合:属于高级别耦合6公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合;7内容耦合:属于最高级别耦合,例如,一个模块利用分支或跳转技术,转入到另一个模块中去执行,就是内容耦合;25.启发性规则的内容及部分概念;1.改进软件结构提高模块独立性2.模块规模应该适中3.深度、宽度、扇出和扇入都应适当4.模块的作用域应该在控制域之内5.力争降低模块接口的复杂程度6.设计单入口单出口的模块7.模块功能应该可以预测26.层次图、HIPO图和结构图的内容;p10227.掌握面向数据流的设计方法,怎样用变换分析法基于数据流图设计出软件总体结构了解其中涉及到的概念,结合例子理解具体是怎么做的;p104概念:面向数据流的设计方法把信息流映射成软件结构,信息流决定了映射的方法,信息流有两种类型:1、信息沿输入通路进入系统,同时由外部形式变换成内部,进入系统的信息通过变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软件系统;当数据流图具有这些特征时,这种信息流就叫做变换流;2、数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行;这类数据流应该划为一类特殊的数据流,称为事务流;28.详细设计是做什么p117详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,即经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某些程序设计语言书写的程序;29.什么是结构程序设计p117结构程序设计是尽可能少用GOTO语句的程序设计方法,最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向GOTO语句;30.人机界面设计问题包含哪些p1221、系统响应时间;2、用户帮助设施;3、出错信息处理;4、命令交互31.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD图的概念和内容;掌握判定表的概念和内容;要结合实例来掌握它们;P12432.结合Jackson图来掌握面向数据结构的设计方法;p13033.如何度量程序算法的复杂性p13634.掌握几种测试:单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术;掌握它们的概念,内容和方法;P14635.理解软件维护的定义、特点和维护过程;P189定义:在软件已交付使用之后,为了改正错误或满足新的需要而修改软件的过程;特点:1结构化维护与非结构化维护差别巨大2维护的代价高昂3维护的问题很多维护过程:1、维护组织2、维护报告3、维护的事件流4、保存维护记录5、评价维护活动;36.掌握面向对象方法学的要点,理解面向对象方法学的优点;P203四个要点:对象、类、继承、消息优点:1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好6、掌握面向对象的概念;37.掌握面向对象的概念;P209对象对象的形象表示,对象的定义,对象的特点其他概念类,实例,消息,方法,属性,封装,继承,多态性,重载38.面向对象建模是建立哪三个模型它们的具体内容是什么P21539.1、描述系统数据结构的对象模型类图:表示静态的、结构化的系统的“数据”性质;它是对模拟客观世界实体的对象彼此间的关系的映射,描述了系统的静态结构;2、描述系统控制结构的动态模型状态转换图:动态模型表示瞬时的,行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;3、描述系统功能的功能模型用例图,数据流图:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求;40.建立对象模型的内容是什么P235建立对象模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则;也就是说,需要用适当的建模语言来表达模型,建模语言由记号即模型中使用的符号和使用记号的规则语义、语法和语用组成;41.掌握用UML提供的类图来建立对象模型的方法;理解类图的定义、基本符号和具体内容;类图建立对象模型的方法:1、定义类2、定义属性3、定义服务4、定义类与类之间的各种关系关联、泛化、依赖和细化;类图的定义:类图描述类与类之间的静态关系;类图是一种静态模型,它是创建其他UML图的基础;基本符号:UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域下面两个区域可省略3个区域分别放类的名字、属性和服务;42.能结合实例掌握类图中类与类之间的关系:关联、泛化继承、依赖和细化;能根据实例情况正确判断出类与类之间的具体关系类型;关联:关联表示两个类的对象之间存在某种语义上的联系;泛化继承:UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系;具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息;泛化关系指出类与类之间存在“一般-特殊”关系;泛化可进一步分成普通泛化和受限泛化;依赖:描述两个模型元素类、用例等之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它是依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素;细化:当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系;43.动态模型的概念、内容;P223概念:动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;内容:动态模型是基于事件共享而互相关联的一组状态图的集合;44.功能模型的概念、内容和建立功能模型的方法;P224概念:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此直接地反应用户对目标系统的需求;内容:功能模型由一组数据流图组成;用例图也是进行需求分析和建立功能模型的强有力工具;方法:创建用例模型的工作包括:定义系统,寻找行为者和用例、描述用例,定义用例之间的关系,确认模型;其中,寻找行为者和用例是关键;45.掌握用例图的概念、内容和方法;P224概念:用例图包括模型元素有系统、行为者、用例和用例之间的关系;内容:系统、用例、行为者、用例之间的关系;方法:创建用例模型的工作包括:定义系统,寻找行为者和用例、描述用例,定义用例之间的关系,确认模型;其中,寻找行为者和用例是关键;46.掌握面向对象分析的基本过程:三个子模型与5个层次;P232三个子模型:静态结构对象模型交互次序动态模型数据变换功能模型复杂问题大型系统的对象模型通常由5个层次组成:主题层、类与对象层、结构层、属性层和服务层;47.结合实例来掌握面向对象分析过程中建立对象模型的方法包含哪些步骤;P231 1.首先,系统分析员要对需求文档进行分析;发现和改正需求文档中的歧义性、不一致性,剔除冗余的内容,挖掘潜在的内容,弥补不足,从而使需求文档更完整、更准确;2.然后,是需求建模;系统分析员根据提取的用户需求,即用面向对象观点建立对象模型、动态模型和功能模型;3.最后,是需求评审;通过用户、领域专家、系统分析员和系统设计人员的评审,并进行反复修改后,确定需求规格说明;48.结合实例来掌握面向对象分析过程中建立动态模型的方法包含哪些步骤;P24749.结合实例来掌握面向对象分析过程中建立功能模型的方法包含哪些步骤;P25350.能结合实例画事件跟踪图P24951.能结合实例画类的状态图P25052.能结合实例画出0层数据流图与功能级数据流图;P42。
软件工程知识点归纳

软件工程知识点归纳第1章软件工程学概述 (3)1.1 软件危机 (3)1.2 软件工程 (3)1.3 软件生命周期 (3)1.4 软件过程 (3)第2章可行性研究 (4)2.1 可行性研究的任务 (4)2.2 可行性研究过程 (4)2.3 系统流程图 (4)2.4 数据流图 (4)2.5 数据字典 (5)2.6 成本/效益分析 (5)第3章需求分析 (5)3.1 需求分析的任务 (5)3.2 与用户沟通获取需求的方法 (5)3.3 分析建模与规格说明 (5)3.4 实体-联系图 (5)3.5 数据规范化 (5)3.6 状态转换图 (6)3.7 其他图形工具 (6)3.8 验证软件需求 (6)第4章形式化说明技术 (6)第5章总体设计 (6)5.1 设计过程 (6)5.2 设计原理 (7)5.3 启发规则 (7)5.4 描绘软件结构的图形工具 (7)5.5 面向数据流的设计方法 (8)第6章详细设计 (8)6.1 结构程序设计 (8)6.2 人机界面设计 (8)6.3 过程设计的工具 (8)6.4 面向数据结构的设计方法 (8)6.5 程序复杂程度的定量度量 (8)第7章实现 (9)7.1 编码 (9)7.2 软件测试基础 (9)7.3 单元测试(模块测试) (10)7.4 集成测试(子系统测试和系统测试) (10)7.5 确认测试(验收测试) (10)7.6 白盒测试技术 (10)7.7 黑盒测试技术 (11)7.8 调试(修改测试发现的错误) (11)7.9 软件可靠性 (11)第8章维护 (11)8.1 软件维护的定义 (11)8.2 软件维护的特点 (11)8.3 软件维护过程 (12)8.4 软件的可维护性 (12)8.5 预防性维护 (12)8.6 软件再工程过程 (12)参考书目 (12)第1章软件工程学概述1.1 软件危机1. 软件危机的定义、表现、产生原因2. 消除软件危机的途径3. 软件产品必须由一个完整的配置组成,软件配置主要包括程序、文档和数据等成分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程知识点总结软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
接下来是为大家收集的软件工程知识点总结,以供大家学习!知识点一软件工程的基本概念1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。
1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。
2)数据是使程序能够正常操作信息的数据结构。
3)文档是与程序开发、维护和使用有关的图文资料。
国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。
2、软件特点:1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分;2)软件的生产与硬件不同,它没有明显的制作过程;3)软件在运行、使用期间不存在磨损、老化问题;4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;5)软件复杂性高,成本昂贵;6)软件开发涉及诸多的社会因素3、软件的分类:按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)1)应用软件是为解决特定领域的应用而开发的软件。
2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。
3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。
4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。
软件危机主要体现在以下几个方面:①软件开发的实际成本和进度估计不准确②开发出来的软件常常不能使用户满意③软件产品的质量不高,存在漏洞,需要经常打补丁④大量已有的软件难以维护⑤软件缺少有关的文档资料⑥开发和维护成本不断提高,直接威胁计算机应用的扩大⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长5、软件工程:此概念的出现源自软件危机。
软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。
1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。
2)软件工程的三个要素:方法、工具和过程。
①方法:完成软件工程项目的技术手段;②工具:支持软件的开发、管理、文档生成;③过程:支持软件开发的各个环节的控制、管理。
3)软件工程的核心思想:把软件产品看作是一个工程产品来处理。
知识点二软件的生命周期1、软件生命周期概念:将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
2、软件生命周期一般划分为定义、开发和维护3个阶段:1)定义阶段:可行性研究、需求分析2个阶段;软件定义阶段:包括制定计划和需求分析。
①制定计划:确定总目标;可行性研究;探讨解决方案;制定开发计划。
②需求分析:对待开发软件提出的需求进行分析并给出详细的定义。
方法:1)结构化需求分析方法;2)面向对象的分析方法。
任务:导出目标系统的逻辑模型,解决“做什么”的问题。
步骤:需求分析一般分为需求获取、需求分析、编写需求规格说明书和需求评审四个步骤进行。
2)开发阶段:概要设计、详细设计、编码实现和测试4个阶段;①软件设计:分为概要设计和详细设计两个部分。
②软件实现:把软件设计转换成计算机可以接受的程序代码。
③软件测试:在设计测试用例的基础上检验软件的各个组成部分。
3)维护阶段:使用、维护、退役阶段。
软件运行维护阶段:软件投入运行,并在使用中不断地维护,进行必要的扩充和删改。
软件生命周期中所花费最多的阶段是软件运维护阶段。
4)软件工程原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。
5)软件工具就是帮助开发软件的软件。
它们对提高软件生产率,促进软件生产的自动化都有重要的作用。
6)软件开发环境(或称软件工程环境)是全面支持软件开发全过程的软件工具的集合,这些软件工具按照一定的方法和模式组合起来,共同支持软件生命周期内的各个阶段和各项任务的完成。
知识点三软件设计基本概念1、软件工程过程:问题定义——可行性研究——需求分析——软件设计——软件编码——软件测试——软件维护2、软件设计分为总体设计和详细设计1)总体设计目的:要解决的问题是“怎样实现目标系统”任务:确定软件的总体结构,进行模块划分,确定每个模块的功能、接口及模块之间的调用关系,并对全局数据结构进行设计,同时产生概要设计说明书2)详细设计目的:要解决的问题是“应该怎样具体实现目标系统”任务:在概要设计的基础上,设计每个模块实现的细节及对局部数据进行设计(包括模块的数据结构和所需的算法),同时产生详细设计说明书3、软件编码目的:产生能在计算机上执行的程序任务:根据系统的要求和开发环境,选用合适的程序设计语言,把详细设计的结果翻译成用该程序设计语言编写的程序代码(源程序)4、软件测试是为了发现程序中的错误而执行程序的过程目的和任务:通过在计算机上执行程序来尽可能多地发现软件产品中的错误和缺陷,并改正程序中的错误,以保证程序的可靠运行 5、软件维护阶段是长期的过程,因为,经过测试的软件还可能有错,用户的要求还会发生变化,软件运行的环境也可能变化等等。
因此,交付使用的软件仍然需要继续排错、修改和扩充,这就是软件维护。
软件维护的目的是满足用户对已开发产品的性能与运行环境不断提高的需要,进而达到延长软件的寿命软件维护就是在软件交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
软件维护的类型有如下几种:1)改正性维护:诊断和改进错误的过程。
2)适应性维护:为与变化的环境适当配合而进行的修改软件的活动。
3)完善性维护:为了满足用户提出的增加新功能或修改已有功能的建议而进行维护。
4)预防性维护:为了改进未来的可维护性和可靠性。
软件开发时期要完成设计和实现两大任务,其中设计任务用需求分析和软件设计两个阶段完成,实现任务用编码和测试两个阶段完成。
开发任务完成的好与坏,关系到软件产品的质量,完成开发任务的关键是选择好的软件开发方法。
目前,软件开发方法主要有结构化开发方法和面向对象开发方法知识点4软件设计的基本原理软件设计的基本原理包括:抽象、模块化、信息隐蔽和模块独立性。
1、模块化:指解决问题时自顶向下的方法逐层把软件系统划分成若干个模块的过程2、抽象:认识复杂过程中使用的思维工具,即抽出事务的本质的共同的特性而暂不考虑它的细节和其他因素。
3、信息隐蔽:旨在设计和确定模块式的时候,是的一个模块内包含的信息,对于不需要这些信息的其他模块来说不可访问4、模块独立性:指每个模块只完成系统要求的独立的功能,并且与其他模块联系最少且接口简单模块的耦合性和内聚性是衡量软件的模块独立性的两个定性指标。
1)内聚性:是对模块功能强度的度量,即对一个模块内部各个元素(语句之间、程序段)间彼此结合的紧密程度的度量。
2)耦合性:是模块间互相连接的紧密程度的度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。
一个设计良好的软件系统应具有高内聚、低耦合的特征。
在结构化程序设计中,模块划分的原则是:模块内具有高内聚度,模块间具有低耦合度。
软件设计有两个步骤:(1)概要设计(又称结构设计)是将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;(2)详细设计是确定每个模块的实现算法和局部数据结构,通过对结构表示进行细化,得到软件的详细数据结构和算法。
知识点5 结构化分析方法结构化方法的软件开发过程面向对象方法的软件开发过程1、结构化分析(简称SA)方法是面向数据流进行需求分析的方法。
2、结构化分析方法的常用工具:数据流图、数据字典、结构化语言、判定树、判定表3、SA的基本步骤如下:①自顶向下对系统进行功能分解,画出分层的数据流图②由后向前定义系统的数据和加工,编制数据字典和加工说明③写出需求规格说明书(SRS)4、数据流图是以图形的方式描绘数据在软件系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。
数据流图由数据流、加工(又称数据处理)、数据存储(又称文件)、数据源点或终点四种基本成分组成。
数据流图(简称DFD)图形元素:①数据流:是数据在系统内传播的路径。
使用箭头代表数据的流向,数据名称标在箭头的边上②加工:输入数据经过加工变换产生输出。
使用圆框代表加工③数据存储:指处理过程中存放各种数据。
使用双杠(或单杠)表示数据文件或数据库。
文件与加工之间用箭头线连接,单向表示只读或只写,双向表示可读可写④数据源点或终点:指软件系统外部环境中的实体(包括人员、组织或其他软件系统,统称为外部实体)。
使用方框表示数据的源点和终点5、建立数据流图的步骤:第一步:由外向里:先画系统的输入输出,然后画系统的内部。
第二步:自顶向下:顺序完成顶层、中间层、底层数据流图。
第三步:逐层分解。
6、DFD图的数据流可分为两种类型:变换流和事务流变换流:信息沿着输入通路进入系统,同时将信息的外部形式转换成内部形式,通过变换中心处理之后,再沿着输出通路转换成外部形式输出事务流:信息沿着输入通路到达一个事务中心,事务中心根据输入信息的类型在若干个动作序列中选择一个来执行,这种信息流称为事务流7、数据字典就是用来定义数据流图中的各个成分的具体含义和详细的描述。
它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。
是结构化分析方法的核心。
数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的。
数据字典有四类条目:数据流、数据项、数据存储和基本加工。
8、SD方法的中心任务就是把用DFD图表示的系统分析模型方便地转换为软件结构的设计模型。