2022年自考软件工程笔记总结 .docx
精品_精品资料_第一章绪论1.1 软件工程的产生1.1.1 软件的特点软件的定义 :运算机程序及其说明程序的各种文档软件的特性 :(1) 软件是一种规律产品,它与物质产品有很大的区分(2) 软件产品的生产主要是研制,软件产品的成本主要表达在软件的开发和研制上,软件开发研制完成后,通过复制就产生了大量软 件产品(3) 软件产品不会用坏,不存在磨损、消耗问题(4) 软件产品的生产主要是脑力劳动,仍未完全摆脱手工开发方式, 大部分产品是“定做”的(5) 软件费用不断增加,软件成本相当昂贵1.1.2 软件生产的进展1) 程序设计时代 (年年)这个阶段的生产方式是个体手工劳动,使用的工具是机器语言、汇编语言.开发方法是追求编程技巧,追求程序运行效率程序难读、难懂、难修改硬件特点是价格贵、储备容量小、运行牢靠性差软件特点是只有程序、程序设计概念,不重视程序设计方法2) 程序系统时代 (年年)这个阶段的生产方式是作坊式的小集团合作生产,生产工具是高级语言开发方式仍然靠个人技巧,但开头提出结构化方法硬件特点是速度、容量、工作牢靠性有明显提高,价格降低,销售有爆炸性增长软件特点是程序员数量猛增,大量其他行业人员进入这个行业,由于缺乏训练,因而开发人员素养差这时已意识到软件开发的重要性,但开发技术没有新的突破,大量软件开发的需求已提出,但开发人员的素养和落后的开发技术不适应规模大、结构复杂的软件开发,产生了尖锐的冲突,导致了软件危机的产生3) 软件工程时代 (年至现在)这阶段的生产方式是工程化的生产,使用数据库、开发工具、开发环境、网络、分布式、面对对象技术来开发软件硬件特点是向超高速、大容量、微型化以及网络化方向进展软件特点是开发技术有很大进步,但是未能获得突破性进展,软件价格不断上升,没有完全摆脱软件危机1.1.3 软件危机1. 软件危机的产生软件进展到其次阶段末期,软件开发技术的进步跟不上硬件进展的速度2. 软件危机的表现可编辑资料 - - - 欢迎下载精品_精品资料_(1) 经费预算常常突破,完成时间一再拖延(2) 开发的软件不能满意用户要求(3) 开发的软件可保护性差(4) 开发的软件牢靠性差3. 软件危机的缘由(1) 软件的规模越来越大,结构越来越复杂(2) 软件开发治理困难而复杂(3) 软件开发费用不断增加(4) 软件开发技术落后(5) 生产方式落后(6) 开发工具落后1.1.4 软件工程年北大西洋公约组织的工作会议上第一提出“软件工程”的概念,要用工程化的思想来开发软件1. 软件工程定义用科学学问和技术原理来定义、开发、保护软件的一门科学2. 软件工程的性质软件工程是一门综合性的交叉学科,涉及运算机科学、工程科学、治理科学、数学等领域运算机科学中的讨论成果均可用于软件工程,但运算机科学着重于原理和理论,而软件工程着重于如何建造一个软件系统软件工程要用工程科学中的观点来进行费用估算、制定进度、制定方案和方案软件工程要用治理科学的方法和原理进行软件的生产和治理软禁工程要用数学的方法建立软件开发中各个种模型和各种算法3. 软件工程目标目的是胜利的建造一个大型软件系统所谓胜利,是要达到付出较低的开发成本达到要求的软件功能取得较好的软件性能开发的软件易于移植需要较低的保护费用能按时完成开发任务,准时交付使用开发的软件牢靠性高4. 软件工程内容主要是软件开发技术和软件治理两个方面软件开发技术中主要讨论软件开发方法、软件开发过程、软件开发工具和环境软件开发治理中主要讨论软件治理学、软件经济学、软件心理学5. 软件工程面临的问题a) 软件费用b) 软件牢靠性c) 软件保护可编辑资料 - - - 欢迎下载精品_精品资料_d) 软件生产率e) 软件重用软件工程过程和软件生存周期软件工程过程目的是为各种人员供应一个公共的框架,以便用相同的语言进行沟通(1) 猎取过程(2) 供应过程(3) 开发过程(4) 操作过程(5) 保护过程(6) 治理过程(7) 支持过程软件生存周期指一个软件从提出开发要求开头直到该软件报废为止的整个过程(1) 可行性分析和项目开发方案必需要回答的问题是“要解决的问题是什么”,有可行的解决方法吗, 假如有需要多少费用多少资源时间明确项目性质明确项目目标明确项目规模确定该问题有没有可行的解决方法指定项目开发方案(2) 需求分析确定软件系统必需做什么确定软件系统必需具备哪些功能(3) 概要设计把确定的各项功能需求转换成需要的体系结构设计软件的结构,明确该结构的模块组成(4) 具体设计为每个模块完成的功能进行具体描述,把功能描述转变为精确的、结构化的过程描述(5) 编码把每个模块的掌握结构转换成运算机可接受的程序代码,即写成以某种特定程序设计语言表示的“原程序清单”(6) 测试保证软件质量的重要手段(7) 保护1.3 软件生存周期模型、方法和工具1.3.1 软件生存周期模型描述软件开发过程中各种活动如何执行的模型1. 瀑布模型将软件生存周期各个活动规定为依线性次序连接的如干阶段的模型 包括全部的软件生存周期环节,规定了由前至后、相互连接的固定次序可编辑资料 - - - 欢迎下载精品_精品资料_缺点:抱负的线性开发模式,缺乏敏捷性开发过程中用户看不到软件是什么样子,造成开发方向错误2. 增量模型一种非整体开发的模型,软件在该模型中是“逐步”开发出来的,开发一部分展现一部分,可以及早发觉问题.或者开发一个“原型”软件,完成部分主要功能再逐步完善具有较大的敏捷性,适合于软件需求不明确、设计方案有肯定风险的软件项目缺点:对于复杂的大型软件,开发一个原型往往达不到要求3. 螺旋模型将瀑布模型与增量模型结合起来,加入了两种模型均忽视了的风险分析开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合每个周期内分四个工作不:制定方案、风险分析、开发实施、用户评估适合于大型软件的开发缺点:需要有相当丰富的风险评估体会和特的学问,使得应用受到肯定限制4. 喷泉模型一种以用户需求为动力,以对象作为驱动的模型,适合于面对对象的开发方法克服了瀑布模型不支持软件重用和多想开发活动集成的局限性是开发过程具有迭代性和无间隙性5. 基于学问的模型又称只能模型,它把瀑布模型和专家系统结合在一起仍处于讨论试验阶段,仍未达到有用阶段6. 变换模型适合于形式化开发的模型1.3.2 软件开发方法使用早已定义好的技术集和符号表示习惯来组织软件生产的过程1. 结构化方法由结构化分析,结构化设计、结构化程序设计构成,是一种面对数据流的开发方法.简洁有用,应用较广,技术成熟2. 方法面对数据结构的开发方法3. 维也纳开发方法()一种形式化的开发方法,软件需求用严格的形式语言描述,然后把描述模型逐步变换成目标系统4. 面对对象的开发方法岁月主流基本动身点是尽可能根据人类熟悉世界的方法和思维方式来分析和解决问题可编辑资料 - - - 欢迎下载精品_精品资料_包括面对对象分析、面对对象设计、面对对象实现年推出统一建模语言,是面对对象的标准建模语言1.3.3 软件开发工具1. 软件工具的重要性为了支持软件人员开发和保护活动而使用的软件项目估算工具、需求分析工具、编码工具、测试工具、保护工具等2. 工具箱将各种软件工具简洁组合起来就构成工具箱工具箱的工具界面不同意,工具内部无联系,工具切换由人工操作3. 软件开发环境工具系统的整体化及集成化,使之形成完整的软件开发环境使软件工具支持整个生存周期4. 运算机帮助软件工程新的软件工具目的是实现软件生存周期各个环节的自动化,主要用于软件的分析和设计,使用这些工具开发人员可以以对话的方式建立各种软件系统运算机帮助软件工程可以简洁的定义为软件开发的自动化, 结构化方法可以用于瀑布模型、增量模型、螺旋模型进行开发方法可以用于瀑布模型、增量模型维也纳方法只能用于变换模型进行开发其次章软件可行性讨论与项目开发方案可行性讨论目的是用最小的代价在尽可能短的时间内去确定该项目是否能够开发,是否值得开发在较高层次上以较抽象的方式进行需求分析和设计过程可行性讨论的任务进行概要的分析讨论,初步确定项目的规模和目标,确定项目的约束和限制,列举出来. 然后进行简要的需求分析, 抽象出项目的规律结构, 建立规律模型, 从规律模型动身经过压缩的设计, 探究出如干种可供挑选的解决方法, 对每种解决方法都要讨论它的可行性可以从以下三个方面分析讨论每种解决方法的可行性1. 技术可行性、技术可行性一般要考虑的情形包括(1) 开发的风险(2) 资源的有效性(3) 技术(4) 开发人员在评估技术可行性时,一旦估量错误, 将会显现灾难性后果2. 经济可行性进行开发成本的估算以及明白取得效益的评估,确定要开发的项目是否值得投资开发3. 社会可行性要开发的项目时候存在任何侵害、阻碍等责任问题,要开发项目的运行方可编辑资料 - - - 欢迎下载精品_精品资料_式在用户组织内是否行得通,现有治理制度、人员素养、操作方式是否可行可行性讨论的具体步骤.确定项目规模和目标.讨论正在运行的系统.建立新系统的高层规律模型使用建立规律模型的工具数据流图和数据字典描述数据在系统中的流淌和处理情形. 不是需求分析阶段, 不是完整具体的描述, 只是概括的描述高层的数据处理和流淌.导出和评判各种方案.举荐可行的方案.编写可行性讨论报告 可行性讨论报告的主要内容引言可行性讨论前提对象有系统的分析所建议系统的技术可行性分析所建议系统的经济可行性分析社会因素可行性分析其他可供挑选方案结论看法系统流程图系统流程图的作用用图形符号来表示系统中的各个元素.表达了系统中各个元素之间的心理流淌的情形系统流程图的符号系统流程图的例子可编辑资料 - - - 欢迎下载精品_精品资料_成本效益分析目的是从经济角度评判开发一个新的软件项目是否可行估算将要开发的系统的开发成本,与可能取得的效益进行比较和权衡效益分有形效益和无形效益有形效益的分析1. 货币的时间价值2. 投资回收期可编辑资料 - - - 欢迎下载精品_精品资料_3. 纯收入 项目开发方案项目概述实施方案人员组织及分工交付期限第三章软件需求分析需求分析的任务 需求分析的概念开发人员要精确的懂得用户的要求,进行细致的调查分析, 将用户非形式的需求陈述转化为完整的需求定义,再由需求定义装换到相应的形式功能规约(需求规格说明)的过程需求分析的难点:(1) 问题的复杂性(2) 沟通障碍(3) 不完备性和不一样性(4) 需求易变性软件需求分析与说明的方法适用的基本原就:(1) 必需能够表达和懂得问题的数据域和功能域(2) 可以把一个复杂问题按功能进行分解并可逐层细化(3) 建模结构化分析方法和面对对象分析方法都遵循以上原就需求分析的基本任务要精确的定义新系统的目标,为了满意用户的需要,回答系统必需“做什么”的问题. 可行性讨论和软件方案阶段对这个问题的回答是概括的、粗略的本阶段主要进行以下几个方面的工作:1. 问题识别双方确定对问题的综合需求,这些需求包括:(1) 功能需求:所开发的系统必需具备什么样的功能,这是最重要的(2) 性能需求:待开发的软件的技术性能指标.储备容量,运行时间(3) 环境需求:软件运行时所需要的软、硬件的要求(4) 用户界面需求:人机交互方式、输入输出数据格式等等另外仍有牢靠性、安全性、保密性、可移植性、可保护性等方面的需求2. 分析与综合,导出软件的规律模型对猎取的需求, 进行分析检查, 逐步细化软件的功能, 划分成各个子功能, 以确定系统的构成及主要成分,建立新系统的规律模型3. 编写文档(1) 编写“需求规格说明书”(2) 编写初步用户使用手册可编辑资料 - - - 欢迎下载精品_精品资料_(3) 编写确认测试方案(4) 修改完善软件开发方案需求规格说明书主要内容结构化分析方法简称,是面对数据流进行需求分析的方法自顶向下逐层分解的分析策略对一个复杂问题分析人员不行能一开头就考虑到问题的全部方面及全部细节,对此实行的策略是分解,把一个复杂问题划分成如干小问题,然后分别解决, 将问题的复杂性降低到人可以把握的程度分解可分层进行,先考虑问题最本质的方面,忽视细节形成问题的高层概念,然后逐层添加细节. 顶层抽象的概括整个系统, 底层具体画出系统的每个细节, 中间层是逐步过渡这种层次分解使分析人员分析问题时不至于一下子陷入细节,而是逐步的去明白更多细节依照这个策略, 对于任何复杂的系统,分析工作都可以有方案、有步骤、有条不紊的进行描述工具方法的描述工具是:(1) 数据流图(2) 数据字典(3) 描述加工规律的结构化语言、判定表、判定树数据流图描述系统的分解,及系统由哪几部分组成,各部分之间的联系等等数据字典定义了数据流图中每一个图形元素结构化语言、 判定便或判定树具体描述数据流图中不能被再分解的每一个加工分析步骤(1) 明白当前系统的工作流程,获得当前系统的物理模型(2) 抽象出当前系统的规律模型(3) 建立目标系统的规律模型(4) 做进一步补充和优化数据流图()简称,是方法中表示系统规律模型的一种工具,只反应系统必需完成的规律功能,所以是一种功能模型可编辑资料 - - - 欢迎下载精品_精品资料_基本图形符号数据流图有四种基本图形符号:(1) 数据流. 是数据在系统内传播的路径,由一组成分固定的数据项组成,必需有流向, 除了与数据储备之间的数据流不用命名,其他用名词或名词短 语命名(2) 加工(又称为数据处理) .对数据流进行某些操作或变换.加工用动词短语命名(3) 数据储备(又称为文件) .指临时储存的数据,它可以是数据库文件或任何形式的数据组织. 流向数据储备的数据流可以懂得为写入文件或查询文件,流出的数据可以懂得为从文件读取数据或得到查询结果(4) 数据源点或终点: 软件系统外部环境中的实体 (包括人员、 组织或其他软件系统),统称为外部实体在一张图上可重复画同名的源终点,在方框的右下角加斜线就表示是一个实体.有时数据储备也需重复标识画数据流图的步骤按问题的层次结构进行逐步分解,并以一套分层的数据流图反应这种结构关系(1) 第一画系统的输入输出,即先画顶层数据流图.顶层流图只包含一个加工, 用以表示被开发的系统, 然后考虑系统的输入输出数据.顶层图的作用在于说明被开发的系统范畴以及它与四周化境的数据交换关系(2) 画系统内部, 即画下层数据流图. 一般将层号从开头编号,采纳自顶向下,可编辑资料 - - - 欢迎下载精品_精品资料_由外向内的原就.一般沿着输入流的方向, 凡数据流的组成或值发生变化的的方就设置一个加工, 这样始终进行到输出数据流.知道每一个加工足够简洁,不能再分解为止,不能再分解的加工称为基本加工(3) 留意事项a) 命名b) 画数据流而不是掌握流图中不反应加工的执行次序c) 一般不画物质流d) 每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果e) 编号子图的编号就是父图中相应加工的编号,加工的编号由子图号,小数点和局部号组成f) 父图与子图的平稳子图的输入输出数据流同父图相应加工的输入输出数据流必需一样保证了数据流图的一样性g) 局部数据储备h) 提高数据流图的易懂得性留意合理分解为了使数据流图便于在运算机上输入与输出,以下给出了描述数据流图的另一套基本符号实例售票治理系统可编辑资料 - - - 欢迎下载精品_精品资料_可编辑资料 - - - 欢迎下载精品_精品资料_数据字典()简称, 用来定义数据流图中各个成分的具体含义,它以一种精确的、 无二义性的说明方式为系统的分析、设计及保护供应了有关元素的一样的定义和具体的描述它和数据流图共同构成了系统的规律模型,是需求规格说明书的主要组成部分数据字典的内容及格式数据字典是为分析人员查找数据流图中有关名字的具体定义而服务的,因此也像一般字典一样,要把全部条目按肯定的次序排列起来,以便查阅数据字典有以下四类条目: 数据流数据项 数据存数基本加工数据项是组成数据流和数据储备的最小元素.源点终点一般不在字典中说明可编辑资料 - - - 欢迎下载精品_精品资料_1.数据流条目数据流条目给出了中数据流的定义,通常列出数据流的各组成数据项在定义数据流或数据储备组成时,使用下表给出的符号:2.数据储备条目数据储备条目是对数据储备的定义,主要内容举例如下:3. 数据项条目数据项条目是不行再分解的数据单位,其定义格式及举例如下:可编辑资料 - - - 欢迎下载精品_精品资料_4. 加工条目加工条目是用来说明中基本加工的处理规律的,由于上层的加工是由下层的基本加工分解而来,只要有了基本加工的说明,就可懂得其他加工加工条目的内容及举例如下:数据字典中的加工规律主要描述该加工“做什么”,即实现加工的策略, 而不是实现加工的细节, 它描述如何把输入数据流变换为输出数据流的加工规章.加工规律有几种常用的描述方法,结构化语言、判定表、 判定树数据字典的实现建立数据字典一般有两种形式:1. 手工建立:数据字典的内容用卡片形式存放(1) 按四类条目规范的格式印制卡片(2) 在卡片上分别填写各类条目的内容(3) 先按图号次序排列,同一图号的全部条目按数据流、数据项、 数据储备和数据加工的次序排列(4) 同一图号中的同一类条目 (如数据流卡片) 可按名字的字典次序存放, 加工一般按编号次序存放(5) 统一成分在父图和子图都显现时,就只在父图上定义(6) 建立索引目录2. 利用运算机帮助建立并保护(1) 编制一个 “字典生成与治理程序” ,可以按规定的格式输入各类条目, 能对字典条目增、删、改, 能打印查询报告和清单,能进行完整性一样性检查.美国密执安高校讨论的就是这样一个系统可编辑资料 - - - 欢迎下载精品_精品资料_(2) 利用已有的数据库开发工具,针对数据字典建立一个数据库文件,可将数据流、 数据项、 数据储备和加工分别以矩阵表的形式来描述各个表项的内容,如数据流的矩阵表为:有的本身包含一个数据字典子系统,建库时能自动生成数据字典运算机帮助开发数据字典比手工建立数据字典有更多的优点,能保证数据的一样性和完整性,使用也便利,但增加了技术难度与积极开销加工规律的描述加工规律也称为“小说明” ,描述加工规律一般用一下三种工具: 结构化语言判定表判定树结构化语言介于自然语言和形式语言之间的一种半形式语言结构可分为外层和内层两层:1. 外层:用来描述掌握结构,采纳次序、挑选、重复三种基本结构(1) 次序结构:是一组祈使语句、挑选语句、重复语句的次序排列(2) 挑选结构:一般用 、等关键词(3) 重复结构:一般用、等关键字2. 内层:一般是采纳祈使语句的自然语言短语,使用数据字典中的名词和有 限的自定义词, 其动词含义要具体, 尽量不用形容词和副词来修饰.仍可使用一些简洁的算术运算和规律运算符号判定表在有些情形下,数据流图中的某个加工的一组动作依靠于多个规律条件的取值.这时用判定表就能够清晰的表示复杂的条件组合与应作的动作之间的对应关系判定表由四部分组成,用双线分隔开四个区域:构造一张判定表,可实行以下步骤:1. 提取问题中的条件2. 标出条件的取值3. 运算全部条件的组合数4. 提取可能实行的动作或措施5. 制作判定表6. 完善判定表初始的判定表可能不完善,表现在以下几个方面:(1) 缺少判定列中应实行的动作(2) 有冗余的判定列: 两个或多个规章中, 具有相同的动作, 而与它所对可编辑资料 - - - 欢迎下载精品_精品资料_应的各个条件组合中有取值无关的条件判定表能够把在什么条件下系统应做什么动作精确无误的表示出来,但不能描述循环的处理特性,循环处理仍需结构化语言例子:判定树判定树是判定表的变形,一般情形下它比判定表更直观,更易于懂得和使用可编辑资料 - - - 欢迎下载精品_精品资料_这三种描述加工规律的工具各有优缺点对于次序执行和循环执行的动作,用结构化语言描述对于存在多个条件复杂组合的判定问题,用判定表和判定树判定树较判定表直观易读,判定表进行规律验证较严格,能把全部的可能性全部都考虑到, 可将两种工具结合起来,定树先用判定表做底稿,在此基础上产生判经过需求分析, 开发人员已经基本上懂得了用户的要求,能,定义了系统的数据,进行整理,最终形成文档描述了处理这些数据的基本策略.需求说明书确定了目标系统的功将这些共同的懂得方法方法是美国空军在年针对集成化运算机帮助制造工程项目中用于进行复杂系统分析和设计的方法.方法分为三部分:用来描述系统的功能活动及其联系,建立系统的功能模型:用来描述系统的信息及其联系,建立系统的信息模型:用来进行系统模拟,建立系统的动态模型的图形表示该方法中,将系统功能称为活动,将表示系统功能的图形称为活动图形一个活动可以没有输入,但肯定要有掌握建立功能模型的基本方法1. 确定建模的范畴、观点及目的2. 建立系统的内外关系图 图3. 建立顶层图 图4. 建立低层次的图形分解时,应遵循两条原就:第一,保持在同一水平上分解(宽度优先),如,等图,而不是, ,(深度可编辑资料 - - - 欢迎下载精品_精品资料_优先),可防止较高层次的变化影响较低层次,造成可能的重复工作,同时可较早的查出错误及遗漏其次,对于同一水平层次上的各个方框,挑选难度最大的部分往下分解, 其后分解较简洁的部分在图中几个活动之间无明确的次序和时间,要留意分解时箭头表示的上下层之间的平稳关系.方法的特点1. 采纳方框和箭头等简洁的图形符号描述系统的活动和数据流,描述活动所受到的约束条件及实现机制图宜作为正式文档2. 采纳严格的自顶向下、逐层分解的方式建立系统功能模型因此, 是建立系统功能模型的有效方法.在开发 运算机集成制造系统的治理信息系统()过程中,大都采纳此方法建立软件需求分析的功能模型结构化分析方法小结结构化分析方法是软件需求分析中公认的、有成效的、 技术成熟、 使用广泛的一种方法,它较适合于开发数据处理型软件的需求分析方法的弱点主要表现在:(1) 不适合描述实时掌握系统为明白决实时软件的需求分析,提出了掌握流图() 的定义,也有用描述系统动态行为的状态转换图()代替(2) 方法使用在分析与描述“数据要求”方面是有局限的可编辑资料 - - - 欢迎下载精品_精品资料_数据库技术使很多大型数据处理系统中的数据都组织成数据库的形式,应与数据库技术中的实体联系图(图)结合起来(3) 不适合描述人机界面系统的需求对于一些频繁的人机交互的软件系统,方法往往对这一部分用自然语言做补充,对这类系统可采纳其它的分析方法(如面对对象分析方法)(4) 不便于实现自动化方法可与形式化方法结合起来,形式化是软件自动化进展的基础形式化方法典型的有基于模型的语言及开发方法(5) 需求分析的质量及效率不够高可以借助需求分析工具提高可编辑资料 - - - 欢迎下载