




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大学计算机基础大学计算机基础第五章 软件工程主讲:乔志会软件工程软件工程Page 2软件工程 随着软件规模和复杂程度的不断提高,软件从早期的程序发展为复杂的软件系统,参与软件系统开发的人员越来越多,使得软件开发面临诸多问题,如软件开发的规范化管理、软件质量管理、开发成本控制、开发方法和技术研究等。软件工程软件工程是为了适应软件产业化发展的需要而发展起来的一门软件项目开发的工程方法学。 软件工程软件工程Page 3软件工程概述软件开发软件测试与维护统一建模语言UML及应用软件工程项目计划与管理软件工程软件工程Page 41.软件工程概述n 软件工程软件工程是从管理和技术两方面研究如何更好地开发和
2、维护计算机软件的工程学科,它采用工程的概念、原理、技术和方法来管理和控制软件开发的各个阶段,把经过时间证明正确的管理技术和最新的技术方法相结合,实现大型软件开发的正确性、易用性、易维护性和可重用性等目标。n 主要内容 软件发展与软件危机 软件过程与软件生存周期 软件开发模型软件工程软件工程Page 51.软件工程概述n 软件发展与软件危机 主要内容: (1)软件技术的发展 (2)软件危机 (3)软件工程的概念 软件工程软件工程Page 61.软件工程概述n 软件发展与软件危机 (1)软件技术的发展 程序设计阶段程序设计阶段:软件由使用者为特定目的而自编自用,没有通用的方法和统一的标准,软件开发
3、围绕硬件进行,工程规模小,没有软件文档。 程序系统阶段程序系统阶段:多道程序设计和多用户系统引入了人机交互的概念,出现了软件产品和软件作坊。但由于程序设计的个性化特征突出,使得软件维护修改十分困难,出现了软件危机。 软件工程阶段软件工程阶段(结构化方法):以软件的产品化、系列化、工程化、标准化为特征的软件产业迅速发展,建立了软件工程化的设计原则、方法和标准,结构化设计方法得以发展和完善。 软件工程阶段软件工程阶段(面象对象方法):计算机体系结构迅速从集中的主机环境发展为分布式网络环境,计算机科学正朝着社会信息化和软件产业化方向发展,面向对象的开发方法和其它新的技术方法已在软件工程中表现出强大的
4、生命力。 软件工程软件工程Page 71.软件工程概述n 软件发展与软件危机 (2)软件危机 软件危机软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题,例如软件开发成本高、质量低、开发周期难控制、软件可靠性差、生产率低等状况。软件危机包含两方面的问题:一是如何开发软件,怎样满足用户对软件的日益增长的需求;二是如何维护数量不断膨胀的已有软件。具体来说,软件危机主要表现以下方面: 软件开发成本和进度无法控制。 软件质量难以保证。 软件不可维护或维护程度非常低。 软件产品没有适当的文档数据。 软件的成本不断提高。 软件开发生产率的提高赶不上硬件的发展和应用需求的增长。 总之,可以将软
5、件危机归结为成本、质量、生产率等问题。 软件工程软件工程Page 81.软件工程概述n 软件发展与软件危机 (3)软件工程的概念 软件工程软件工程是把系统化、规范化、可度量的方法应用于软件开发、运行和维护过程,即将工程化方法应用于软件方法研究中。软件开发方法、工具和过程构成了软件工程的三要素。软件工程的技术特点是强调规范化和文档化,目的是生产正确可用、开销合宜的软件产品。 软件工程软件工程Page 91.软件工程概述n 软件过程与软件生存周期 主要内容: (1)软件过程 (2)软件生存周期软件工程软件工程Page 101.软件工程概述n 软件过程与软件生存周期 (1)软件过程 软件过程软件过程
6、是为了获得高质量软件所需要实施的一系列过程、活动和任务的框架,其中包含了软件开发中需要制订的工作步骤。软件工程过程没有统一的模式,但一般情况下,软件过程应包含以下基本任务或过程: 软件定义:根据用户需求,进行软件规格和使用限制的定义。 软件开发:根据软件规格定义,开发出合格的软件产品。 软件验收:通过验收确认软件能够满足用户提出的要求。 软件维护:根据用户需求变化对软件进行更新,修正软件缺陷,维护软件正常运行。 软件工程软件工程Page 111.软件工程概述n 软件过程与软件生存周期 (1)软件生存周期 软件从计划开发开始,到废弃不用为止,称为计算机软件的生存周期计算机软件的生存周期。一般来说
7、,软件生存周期包括计划、开发、运行三个时期,六个阶段。 制订计划:确定软件开发目标,给出软件功能、性能、可靠性以及接口等方面的要求;研究完成该项软件任务的可行性,探讨解决问题的可能方案;制订完成开发任务的实施计划,连同可行性研究报告提交管理部门审查。 需求分析和定义:在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段做得好,将为整个软件开发项目的成功打下良好的基础。 软件设计:把已确定的各项需求转换成相应的体系结构,并对结构中的每个模块需完成的任务进行具体描述。编写设计说明书,提交有关部门评审。软件工程软件工程Page 121.软件工程概述n 软件过程与软件生存周期
8、 (1)软件生存周期 软件从计划开发开始,到废弃不用为止,称为计算机软件的生存周期。一般来说,软件生存周期包括计划、开发、运行三个时期,六个阶段。 程序编写:将软件设计的结果用某一特定的计算机语言来实现,要求程序具有结构性,可读性好,与软件设计要求一致。 软件测试:在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。 运行维护:软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行修改和维护。 软件工程软件工程Page 131.软件工程概述n 软件开发模型 主要模
9、型: (1)瀑布模型 (2)增量模型 (3)螺旋模型 (4)智能模型软件工程软件工程Page 141.软件工程概述n 软件开发模型 (1)瀑布模型维护维护软件软件软件开发软件开发软件定义软件定义软件项目计划软件项目计划需求分析需求分析软件设计软件设计编码编码软件测试软件测试软件维护软件维护问题定义问题定义软件工程软件工程Page 151.软件工程概述n 软件开发模型 (1)瀑布模型 瀑布模型给出了软件生命周期各阶段的固定顺序,上一阶段完成后才能进入下一阶段,整个开发过程就像流水下泻,故称之为瀑布模型。 图中的虚线表示在某一阶段发现错误时,其错误可能是由上一阶段造成的,因此开发过程可能要反馈到上
10、一阶段。在瀑布模型中,每个阶段完成后都要进行严格的评审。 瀑布模型历史悠久、广为人知,其优势在于它是规范的、文档驱动的方法。但是,正是由于瀑布模型是由文档驱动的,在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品,这就有可能导致最终交付的产品不能完全满足用户的真正需要。 维护维护软件软件软件开发软件开发软件定义软件定义软件项目计划软件项目计划需求分析需求分析软件设计软件设计编码编码软件测试软件测试软件维护软件维护问题定义问题定义软件工程软件工程Page 161.软件工程概述n 软件开发模型 (2)增量模型用户用户需求需求顶层规格说明顶层规格说明增量开发计划增量开发计划用户用户反馈反馈
11、用户用户反馈反馈用户用户增量增量1增量增量2增量增量3 完整系统完整系统软件工程软件工程Page 171.软件工程概述n 软件开发模型 (2)增量模型 增量模型在各个阶段并不交付一个可运行的完整产品,而是将开发和交付分解为多个增量构件,每次只提交用户所需要的部分功能。即将用户的需求划分成多个块(增量),最需要的需求在最早期的构件中实现和交付。一个增量构件的开发一旦启动,就必须将需求冻结,以便于后续的增量构件可以增加进来。如图所示。 增量式开发的优越性在于客户的要求可以随着每个构件交付,较早地使用系统所必须具有的功能。早期的构件作为原型,帮助明确后续增量构件的需求。整个项目失败的风险较小,最需要
12、的系统服务将接受最多的测试。 用户需求顶层规格说明增量开发计划用户反馈用户反馈用户增量1增量2增量3 完整系统软件工程软件工程Page 181.软件工程概述n 软件开发模型 (3)螺旋模型 软件工程软件工程Page 191.软件工程概述n 软件开发模型 (3)螺旋模型 对于大型软件,开发一个原型往往达不到要求,便出现了螺旋模型,如图所示。螺旋模型将瀑布模型与增量模型结合起来,并且加入了被这两种模型都忽略了的风险分析。 该模型从核心开始,第一圈可能产生软件规格说明书,第二圈可能开发出一个原型,随后可能是软件更完善的版本。经过计划区域的每一圈都会对计划进行调整,基于从用户处得到的反馈,调整进度和费
13、用以及版本的内容。项目管理者可以根据项目的具体情况调整所需要的迭代次数。它适合于大型软件的开发。应该说,它是最为实际的方法,它吸收了软件工程“演化”的概念,使得开发人员和客户对每个演化层出现的风险都有所了解,从而做出相应的反应。软件工程软件工程Page 201.软件工程概述n 软件开发模型 (4)智能模型 用户概念用户概念需求分析需求分析设计设计维护维护编码编码测试测试分析专家系统分析专家系统设计专家系统设计专家系统测试专家系统测试专家系统维护专家系统维护专家系统软件工程软件工程Page 211.软件工程概述n 软件开发模型 (4)智能模型 智能模型也称为基于知识的软件开发模型。它综合了上述若
14、干种模型,并与专家系统结合起来。该模型应用基于规则系统,采用规约和推理机制,帮助软件人员完成开发工作,并使维护在系统规格说明一级进行。如图所示。 用户概念用户概念需求分析需求分析设计设计维护维护编码编码测试测试分析专家系统分析专家系统设计专家系统设计专家系统测试专家系统测试专家系统维护专家系统维护专家系统软件工程软件工程Page 222.软件开发n 软件开发的过程包括系统分析(可行性分析、需求分析),系统设计(概要设计、详细设计),程序编码等内容。n 主要内容 可行性分析 需求分析 软件设计 程序编码软件工程软件工程Page 232.软件开发n 可行性分析 可行性研究的任务是用最小的代价、在尽
15、可能短的时间内确定该软件项目是否能够开发,判断系统目标和规模能否实现,使用软件产生的效益是否值得客户去投资。n 主要内容 (1)可行性研究的任务 (2)可行性研究的具体步骤 (3)可行性研究报告的主要内容 (4)成本-效益分析 (5)项目开发计划 软件工程软件工程Page 242.软件开发n 可行性分析 (1)可行性研究的任务 首先进行概要分析,初步确定项目的规模、目标及约束和限制,并清楚的列举出来。然后根据分析结果,抽象出项目的逻辑结构,建立逻辑模型。从逻辑模型出发,探索出若干种可供选择的解决方案。对每种解决方案研究其可行性。可行性分析一般包括以下三个方面: 技术可行性; 经济可行性; 社会
16、可行性。软件工程软件工程Page 252.软件开发n 可行性分析 (1)可行性研究的任务 可行性分析一般包括以下三个方面: 技术可行性 分析项目的功能、性能、限制条件,确定在现有的资源和技术条件下,项目能否实现。包括硬、软件资源,技术水平和已有的工作基础。即使用现有技术能实现这个系统吗? 经济可行性 对软件开发成本和可能取得的效益进行评估、比较,确定项目是否值得投资。经济可行性包括成本效益分析、开发所需的成本和资源、潜在的市场前景等。 社会可行性 分析项目是否存在侵权、妨碍等责任问题,项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。 软件工程软件工程Page 2
17、62.软件开发n 可行性分析 (2)可行性研究的具体步骤 确定项目规模和目标 调查访问有关人员,仔细阅读分析有关资料,对项目规模和目标进行确认和定义,把项目的限制和约束描述清楚,确保系统分析员正在解决的问题确实是需要解决的问题。 研究正在使用的系统 现有系统可能是人工操作的系统,或是旧的计算机系统。分析并确定运行现有系统的费用,开发新系统所存在的问题,对新系统的功能要求,使用新系统能否减少费用等。 建立系统高层逻辑模型 根据对现有系统的分析,逐步明确新系统的功能、处理流程及其约束,然后用数据流图和数据字典等工具概括地描述数据在系统中的流动和处理情况。 软件工程软件工程Page 272.软件开发
18、n 可行性分析 (2)可行性研究的具体步骤 导出和评价各种方案 建立系统高层逻辑模型后,从技术角度出发,提出实现逻辑模型的可能方案,然后根据技术、经济和社会可行性对这些方案进行评估,去掉行不通的方案,得到了可行的方案。 推荐可行的方案 根据可行性研究的结果和用户的情况,决定该项目是否值得开发,可行的解决方案是什么,并说明推荐该方案的原因和理由。项目是否值得开发,主要是从经济上看是否合算,这就要求系统分析员对可行方案进行成本效益分析。 编写可行性研究报告 将可行性研究的结果写成相应的文档,即可行性研究报告,提请用户及其主管部门进行仔细审查,决定是否开发该项目,能否接受推荐的方案。 软件工程软件工
19、程Page 282.软件开发n 可行性分析 (3)可行性研究报告的主要内容 引言 可行性研究前提 对现有系统的分析 新系统的技术可行性分析 新系统的经济可行性分析 社会因素可行性分析 可供选择的方案 结论意见 软件工程软件工程Page 292.软件开发n 可行性分析 (4)成本-效益分析 成本效益分析的目的是从经济角度评价开发新的软件项目是否可行。首先估算新系统的开发成本,然后与可能取得的效益进行比较和权衡。系统的经济效益等于使用新系统增加的收入加上因此而节省的运行费用,如:操作人员人数、工作时间和消耗的物资等。软件工程软件工程Page 302.软件开发n 可行性分析 (4)成本-效益分析 成
20、本估计是分析软件产品的复杂程度,开发时间及费用等。下面介绍三种成本估算技术。 代码行技术:根据经验和历史数据估计实现一个功能需要的源程序行数,以及每行代码的平均成本估计软件的成本。每行代码的平均成本主要取决于软件的复杂程度和工资水平。 任务分解技术:把软件分解为若干个相对独立的任务,分别估计每个任务的成本,累加后得出软件开发的总成本。每个任务的成本与完成该任务需要的人力和月平均工资有关。 自动估计成本技术:采用自动成本估计软件工具可减轻人的劳动,使得估计结果更客观。但采用这种技术必须有大量的历史数据作为基础,并且需要有良好的数据库系统支持。 软件工程软件工程Page 312.软件开发n 可行性
21、分析 (5)项目开发计划 可行性研究完成后,应制定项目开发计划。项目开发计划是管理文档,其主要内容有: 项目概述:说明项目的主要工作,软件的功能、性能;完成项目应具备的条件,完成期限及其他条件限制;应交付的软件名称,使用的编程语言及储存形式;应交付的文档等。 实施计划:说明任务的划分,各项任务的责任人,项目开发进度和各阶段的任务;用图表说明每项任务的开始时间和完成时间;项目的预算和各阶段的费用预算。 人员组织及分工:说明开发该项目所需人员的类型和数量,以及组成结构等。 交付期限:说明项目最后完成及交付的日期。 软件工程软件工程Page 322.软件开发n 需求分析 需求分析是软件定义的最后一个
22、阶段,基本任务是回答“系统必须做什么”的问题。需求分析的目的,是通过开发人员与用户进行广泛交流,澄清模糊的概念,最终形成一个完整的、清晰的、一致的需求说明。需求分析的好坏将直接影响到所开发软件的成败。n 主要内容 (1)需求分析的基本原则 (2)需求分析的基本任务 (3)结构化分析方法 (4)系统流程图 (5)数据流图与数据字典 (6)需求分析的步骤 (7)需求规格说明书与评审软件工程软件工程Page 332.软件开发n 需求分析 (1)需求分析的基本原则 需求分析方法应遵循以下基本原则: 把复杂问题按功能进行分解并逐层细化。如果软件要处理的问题涉及面太大,关系太复杂,软件就很难理解。若把问题
23、划分成若干模块,并确定各模块之间的接口,就可完成整体功能。在需求分析过程中,软件领域中的数据,功能和行为都可以进行划分。 能够表达和理解问题的数据域和功能域。数据域包括数据流,数据内容和数据结构。其中数据流是数据通过一个系统时的变化方式。功能域则反映数据流,数据内容和数据结构三方面的控制信息。 建立模型。所谓模型就是所研究对象的一种表达形式。模型可以帮助分析人员更好地理解软件系统的信息,功能和行为,这些模型也是软件设计的基础。 软件工程软件工程Page 342.软件开发n 需求分析 (2)需求分析的基本任务 需求分析的任务是确定系统必须完成哪些工作,对目标系统需实现的功能提出完整、准确、清晰、
24、具体的要求。需求分析要进行以下几方面的工作: 确定对系统的综合要求。主要包括功能要求性能要求运行环境要求其他要求等方面。功能要求是划分并描述系统必须完成的所有功能;性能要求包括响应时间、数据精确度及可操作性、安全性等;运行要求主要是对系统运行时软件、硬件环境及接口的要求;其他要求,包括可靠性、可维护性等要求,并对将来可能提出的要求做出分析。 分析系统的数据要求。由系统的信息流归纳出系统所需要的数据以及数据间的逻辑关系,即描述出系统所需要的静态数据、动态数据(输入、输出数据)数据库名称类型,数据字典以及数据的采集方式等。 软件工程软件工程Page 352.软件开发n 需求分析 (2)需求分析的基
25、本任务 需求分析的任务是确定系统必须完成哪些工作,对目标系统需实现的功能提出完整、准确、清晰、具体的要求。需求分析要进行以下几方面的工作: 导出目标系统的详细逻辑模型。通过以上两项分析的结果导出目标系统的详细逻辑模型,详细逻辑模型用数据流图数据字典和IPO图等软件需求表达工具来表示。 修订系统开发计划。经过前面几个阶段的工作之后,分析员能够对系统的成本和进度有更准确的估计,因此,必须对开发计划进行修正。把分析的结果用正式的文件(“需求规格说明书”)记录下来,作为最终软件的部分材料。 软件工程软件工程Page 362.软件开发n 需求分析 (3)结构化分析方法 结构化分析方法的基本手段是“分解”
26、和“抽象”,这是系统开发技术中控制复杂性的两种通用手段。 对于一个复杂的系统,结构化分析方法使用了“自顶向下,逐层分解”的方法,即先把分析对象抽象成为一个系统,然后自顶向下逐层分解,使复杂系统分解成足够简单,能够清楚地被理解和表达的若干子系统,这样就可以分别理解系统的每一个细节、前后顺序和相互关系,找出各部分之间的数据接口,用这种抽象与分解的方法来剖析一个系统。 描述结构化分析结果的主要手段是数据流图和数据字典。 软件工程软件工程Page 372.软件开发n 需求分析 (4)系统流程图 系统流程图是描绘物理系统的传统工具。 它的基本思想是用图型符号以黑盒子形式描绘系统中的每个部件(程序文件数据
27、库表格等)。系统流程图表达的是信息在系统各部件之间流动的情况,而不是对信息的加工处理过程。 系统流程图的图形符号元素比较简单,也容易理解。一个图形符号代表一种物理部件,这些部件可以是程序文件数据库表格人工过程等。 软件工程软件工程Page 382.软件开发n 需求分析 (4)系统流程图 系统流程图绘制,应注意以下几方面: 物理部件的名称应写在图形符号内,用以说明该部件的含义; 系统流程中不应该出现信息加工控制的符号; 用以表示信息流的箭头符号,无须标注名称。软件工程软件工程Page 392.软件开发n 需求分析 (4)系统流程图 实例:人事档案管理系统 人事资料管理模块主要是对人事信息进行数据
28、维护和数据利用,包括个人基本信息、婚姻信息、学历信息、考勤信息和工资信息的插入、删除和修改,人事信息的查询、浏览、打印、分类汇总、统计和生成分析报表。 人事档案管理系统流图如图所示。用户用户档案档案表表审审核核数数据据审 核 后审 核 后的数据的数据人事人事档案表档案表编编制制报报表表报表报表相关部门相关部门软件工程软件工程Page 402.软件开发n 需求分析 (5)数据流图与数据字典 数据流图 数据流图是描述数据处理过程的工具,是系统逻辑模型的图形表示,它直接支持系统功能建模。数据流图从数据传递和加工的角度,刻画数据流从输入到输出的移动变换过程。 数据流图中的主要图形元素与说明: 符号名称
29、说明加工(变换数据的处理) 输入数据经加工变换产生输出 数据流 沿箭头方向传送数据,般在旁边标注数据流名 数据存储 表示处理过程中存放各种数据的文件 数据的源点/终点 表示系统和环境的接口,属系统之外的实体 软件工程软件工程Page 412.软件开发n 需求分析 (5)数据流图与数据字典 数据流图 一般通过对实际系统的了解和分析后,使用数据流图为系统建立逻辑模型。建立数据流图的步骤如下: a)由外向里,先画系统的输入输出,再画系统的内部结构; b)自顶向下,顺序完成顶层、中间层、底层数据流图; c)逐层分解。 软件工程软件工程Page 422.软件开发n 需求分析 (5)数据流图与数据字典 数
30、据流图 实例:人事档案管理系统 对人事档案管理系统流图进行抽象处理可以得到以下数据流图 用户用户 1收集数据收集数据 2处理数据处理数据 3利用数据利用数据相关部相关部门门人事数据人事数据未审核人事数据未审核人事数据报表报表报表报表人事数据人事数据人事数据人事数据人事资料人事资料用户数据用户数据D1 D1 未审核人事数据未审核人事数据D3 D3 报表报表D2 D2 人事档案人事档案软件工程软件工程Page 432.软件开发n 需求分析 (5)数据流图与数据字典 数据流图 实例:人事档案管理系统 对系统有了更深入的认识之后,可以进一步细化数据流图。通常,使用功能分解方法来细化数据流图:选取数据流
31、图上功能比较复杂的处理,把它分解成若干个子功能,这些较低层次的子功能成为新数据流图上的处理,它们有自己的数据存储和数据流。 例如在前面所示数据流图中,根据分析员对处理数据功能的进一步了解,该处理过程可分解成以下2个逻辑功能。 审核数据:对未审核人事数据进行审核,然后存入人事档案。 维护数据:对由于人员变动等原因引起的人事数据变化和用户角色变化进行增加、删除和修改等操作。 软件工程软件工程Page 442.软件开发n 需求分析 (5)数据流图与数据字典 数据流图 实例:人事档案管理系统 对数据处理的细化: 软件工程软件工程Page 452.软件开发n 需求分析 (5)数据流图与数据字典 数据流图
32、 实例:人事档案管理系统 可对“维护数据” 继续细化为下列两个子功能。 a) 修改更新人事数据:对人事资料数据进行增加、删除和修改; b) 查询人事数据:对人事数据进行查询、打印。 可对“利用数据” 细化为下列4个子功能。 a) 汇总数据:对人事档案数据进行汇总; b) 统计数据:对人事档案数据进行统计; c) 分析数据:对人事档案数据进行分析; d) 查询打印表格:查询打印出各种报表。 软件工程软件工程Page 462.软件开发n 需求分析 (5)数据流图与数据字典 数据流图 实例:人事档案管理系统 最后,把细化数据流图的结果逐层替换高层处理框,得到详细完整的人事档案管理数据流图 软件工程软
33、件工程Page 472.软件开发n 需求分析 (5)数据流图与数据字典 数据字典 数据字典(DD)是结构化分析方法的核心,是对所有与系统相关的数据元素的一个有组织的列表,以及精确、严格的定义,使得用户和系统分析员对于输人、输出、数据存储和中间计算结果有了共同的理解。数据字典把不同的需求文档和分析模型紧密地结合在一起,与各模型的图形表示互相配合,能够清楚地表达数据处理的要求。数据字典和数据流图共同构成系统的逻辑模型。 概括地说,数据字典的作用就是对数据流图中出现的图形元素的确切描述和解释。通常数据字典包含的信息有:名称、别名、何处使用如何使用、内容描述、补充信息等。软件工程软件工程Page 48
34、2.软件开发n 需求分析 (5)数据流图与数据字典 数据字典 可以采用自然语言描述数据之间的关系,为了描述清晰简洁,通常采用下列符号: = 意思是等价于(或定义为); + 意思是和(即,连接两个分量); 意思是或(即,从方括弧内的若干分量中选择一个); 意思是重复(即,重复花括号内的分量); ( ) 意思是可选(即,园括号内的分量可有可无)。 软件工程软件工程Page 492.软件开发n 需求分析 (5)数据流图与数据字典 数据字典 实例:人事档案管理系统 人事档案管理系统模块中的人事档案表,建立数据字典如下: 名字:人事档案表别名:履历表描述:记录职工基本信息定义:人事档案表=工号+姓名+性
35、别+出生日期+民族+学历+工龄+照片位置:人事档案数据库软件工程软件工程Page 502.软件开发n 需求分析 (6)需求分析的步骤 需求分析一般可以概括为以下4个步骤。 需求获取 需求获取是系统分析员在同用户的交流过程中不断收集、积累各种用户信息,通过认真理解用户的各项要求,澄清模糊需求,排除不合理需求,从而较全面地提炼系统的功能性与非功能性需求。功能性与非功能性需求包括系统功能、物理环境、用户界面,用户因素、资源、安全性、质量保证及其他约束。 需求分析 对获取的需求进行分析和综合,最终给出系统的解决方案和目标系统的逻辑模型。软件工程软件工程Page 512.软件开发n 需求分析 (6)需求
36、分析的步骤 需求分析一般可以概括为以下4个步骤。 编写需求规格说明书 需求规格说明书是需求分析的阶段成果,可以为用户、分析人员和设计人员之间的交流提供方便,直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。 需求评审 在需求分析的最后一步,对需求分析阶段的工作进行复审,验证需求文档的一致性可行性、完整性和有效性。 软件工程软件工程Page 522.软件开发n 需求分析 (7)需求规格说明书与评审 需求规格说明书 系统规格说明书是系统分析和定义阶段生成的一种文档,描述软件系统应达到的目标,具有的功能、性能和支配系统开发的各种约束条件;指明各子系统在整个系统中的地位和作用;描述系统的输
37、入输出数据和控制信息。系统规格说明书是硬件工程、软件工程、数据库工程和人机工程的基础。 实例:人事管理系统说明规格书软件工程软件工程Page 532.软件开发n 需求分析 (7)需求规格说明书与评审 需求规格说明的评审 系统分析阶段生成的系统规格说明书必须通过技术评审和管理复审后才能用于系统开发。首先,系统开发人员应当和用户对系统规格说明书进行技术评审,解决以下问题: a) 系统规格说明书中的定义是否正确,包括项目范围,系统功能、性能和界面以及开发人员和用户对系统目标的认识等是否正确、一致。 b) 系统功能的复杂性是否与开发风险、成本和进度预测保持一致。 c)系统及各子系统功能与接口定义是否详
38、细。 d)是否指明系统性能、可靠性和可维护性等需求,是否为以后开发打下坚实的基础。软件工程软件工程Page 542.软件开发n 需求分析 (7)需求规格说明书与评审 需求规格说明的评审 技术评审通过后,由项目管理部门和客户方负责人进行管理复审,主要解决以下问题: a) 系统是否有稳定的商业需求,是否有经济和社会效益。 b) 系统开发是否还有其他的选择方案。 c) 系统各部分开发风险如何,所需资源是否具备。 d) 成本和进度计划是否合理等。 管理复审最后应做出是否继续开发项目的决策。系统规格说明书通过技术评审和管理复审后,即可按照硬件工程软件工程、数据库工程人机工程等并行进行开发工作。软件工程软
39、件工程Page 552.软件开发n 软件设计 软件设计的主要任务是设计软件的结构、过程和模块,软件设计通常可以分为概要设计和详细设计。n 主要内容 (1)概要设计 (2)详细设计软件工程软件工程Page 562.软件开发n 软件设计 (1)概要设计 软件设计的任务是将需求分析阶段得到的软件需求规格说明书转换为用适当手段表示的软件设计文档。 概要设计又称为总体设计,是软件设计中的第一个阶段,主要侧重于系统宏观结构设计,而系统内部实现细节,即模块算法是详细设计的重点。 主要内容 概要设计的任务与原则 概要设计方法 概要设计说明书软件工程软件工程Page 572.软件开发n 软件设计 (1)概要设计
40、 概要设计的任务与原则 概要设计任务 根据需求分析阶段得到的目标系统物理模型确定一个合理的软件系统体系结构。这个体系结构包括合理地划分组成系统的模块、模块间的调用关系及接口关系。软件体系结构从总体上决定了软件系统的可扩充性、可维护性及系统性能。总体设计还应为软件系统提供所用的数据结构或者数据库结构 概要设计的原则 降低模块的耦合性,提高模块的内聚;保持适中的模块规模 ;模块应具有高扇入和适当的扇出 ;软件结构的深度和宽度不宜过大 ;模块作用域应处于其控制域范围之内 ;尽量降低模块的接口复杂度 软件工程软件工程Page 582.软件开发n 软件设计 (1)概要设计 概要设计方法 面向数据流的设计
41、方法,即结构化设计法,是根据需求阶段对数据流的分析设计软件结构。数据流图主要描绘信息在系统内部加工和流动情况,面向数据流的设计方法根据数据流图的特性定义两种“映射”,这两种映射能将数据流图转换为程序结构。 面向数据流设计方法的设计步骤: a) 精细化DFD,确定DFD类型。 b) 把DFD映射到系统模块结构设计出模块结构的上层。 c) 基于DFD逐步分解高层模块设计出下层模块。 d) 根据模块独立性原理,精化模块结构。 e) 模块接口描述。 软件工程软件工程Page 592.软件开发n 软件设计 (1)概要设计 概要设计方法 实例:人事档案管理系统软件工程软件工程Page 602.软件开发n
42、软件设计 (1)概要设计 概要设计方法 实例:人事档案管理系统软件工程软件工程Page 612.软件开发n 软件设计 (1)概要设计 概要设计方法 实例:人事档案管理系统软件工程软件工程Page 622.软件开发n 软件设计 (1)概要设计 概要设计方法 实例:人事档案管理系统软件工程软件工程Page 632.软件开发n 软件设计 (1)概要设计 概要设计说明书 实例:人事档案管理系统 概要设计说明书是体系结构设计阶段中最重要的技术文档,主要内容包括(以人事管理为例说明): 软件工程软件工程Page 642.软件开发n 软件设计 (2)详细设计 详细设计的目的是在总体设计基础上,为软件每个模块
43、确定相应算法及数据结构,获得目标系统精确描述,为编码工作做准备,并最终决定代码质量。 主要内容: 详细设计的任务与原则 详细设计的方法 详细设计的工具 详细设计规格说明书 软件工程软件工程Page 652.软件开发n 软件设计 (2)详细设计 详细设计的任务与原则 详细设计的任务 为每个模块选择适当的算法并对算法进行详细描述;确定每个模块所用的数据结构;确定各个模块及模块间接口的细节,包括用户界面和外部软硬件接口、模块间的接口、模块局部数据和输入输出数据;为每个模块设计测试用例;编写详细设计说明书,参加复审。 详细设计的原则 将程序可读性放在首位,在确保正确可靠的基础上尽量使模块逻辑描述清晰易
44、读;设计过程采用逐步细化的方法,对软件结构和数据描述进行细化;选择适当的工具对各模块算法进行描述。 软件工程软件工程Page 662.软件开发n 软件设计 (2)详细设计 详细设计的方法 详细设计的目标是给出实现每个模块功能详细算法,保证算法正确可靠、清晰易读。结构化程序设计是详细设计的关键技术之一,主要有以下几个要点。 采用自顶向下,逐步细分的设计方法:采用这种方法可将系统每个模块逐步分解细化为一系列具体处理步骤,符合人类思维的一般方式,将一个复杂的大问题逐渐分解为若干个易于解决的简单问题,然后各个击破。 使用三种基本控制结构构造算法:为了保证算法结构清晰易读,通常限制只能采用顺序、选择和循
45、环三种基本控制结构来构造算法。三种基本结构共同特点是只有一个入口和个出口。 软件工程软件工程Page 672.软件开发n 软件设计 (2)详细设计 详细设计的工具 算法流程图 盒图(N-S图) 问题分析图(PAD) 判定表 判定树 过程设计语言(PDL) 软件工程软件工程Page 682.软件开发n 软件设计 (2)详细设计 详细设计的工具 实例:人事档案管理系统 用盒图(N-S图)描述部分模块实现算法: 软件工程软件工程Page 692.软件开发n 软件设计 (2)详细设计 详细设计规格说明书 详细设计说明书是详细设计阶段产生的技术文档。与总体设计说明书相比,后者侧重于软件结构的定义,前者侧
46、重于对模块实现算法的具体描述。详细设计说明书是对总体设计说明书所定义的系统总体结构中,各个模块实现过程细化,通常包括以下几方面内容(以人事管理为例说明): 软件工程软件工程Page 702.软件开发n 程序实现 (1)程序设计语言的选择 程序设计语言的选择影响人们思考问题的方式和软件开发的整个过程。软件应用领域是选择程序设计语言的关键因素,常见的工程应用领域有以下几类。 科学工程计算:需要大量的标准库函数来处理复杂的数值计算,常用的高级语言有FORTRAN语言、C语言、C+语言等 数据处理与数据库应用:用于解决非数值问题,可供选用的语言包括COBOL语言、SQL语言、FoxPro和Oracle
47、等。 实时处理:对软件运行速度和实时性要求很高,常用的语言有汇编语言、Ada语言等。 系统软件:系统软件需要同计算机硬件打交道,可选用汇编语言、C语言、Ada语言等。 人工智能:如专家系统、推理工程、自然识别等,可以选择LISP语言、PROLOG等。 软件工程软件工程Page 712.软件开发n 程序实现 (2)程序设计风格及软件效率 程序风格 程序即要被计算机理解和执行,又要易于被人阅读。编程风格在很大程度上影响程序的可读性、可测试性和可维护性。良好的编码风格包括以下几方面:源程序文档化;数据说明;语句结构;输入/输出。 软件效率 提高软件效率的途径在于选择良好的设计方法、数据结构和算法,应
48、避免和简化复杂运算,多采用执行时间短的算术运算,少使用多维数组等复杂数据类型,简化循环结构等。选用高效的编译程序,采用动态数据存储结构和存储单元共享技术可适当节约内存空间。 软件工程软件工程Page 723.软件测试与维护n 软件测试的概念和原则 (1)软件测试的定义 软件测试是根据软件规格说明和程序内部结构设计的一批测试用例,用测试用例运行程序以发现软件错误的过程。所谓测试用例是指为了测试软件而设计的一组数据,包括输入数据和预期结果两部分。预期输出结果用于对实际输出结果进行检验。测试用例可表示为: 测试用例=输入数据+预期结果。 需要注意的是,软件测试是查找错误的过程。软件测试只能证明错误存
49、在,而不能证明程序没有错误。而且测试不可能发现所有错误,只能在有限条件下,尽可能发现错误。 软件工程软件工程Page 733.软件测试与维护n 软件测试的概念和原则 (2)软件测试的原则 测试用例设计、测试过程应遵循以下原则: 应尽早和不断地进行软件“测试”,即将“测试”贯穿于软件开发的各个阶段,以便尽早发现和预防错误。 测试用例中即要选择合理的输入数据,也要选择不合理的输入数据。 在软件开发各个阶段应分别制定测试计划,在测试开始后严格执行,防止随意性。 对发现错误较多的程序模块,应进行重点测试,同时测试是否引入新的错误。 避免程序员测试自己的程序。测试用例的设计应有第三方参与。 用穷举测试是
50、不现实的,通过设计测试用例,充分覆盖所有条件或语句即可。 长期妥善保存测试计划、测试用例、出错统计和有关的分析报告。 软件工程软件工程Page 743.软件测试与维护n 测试方法和步骤 软件测试常用方法 (1)静态分析技术 静态分析技术不执行被测试软件,对需求分析说明书、软件设计说明书、源程序做结构检查、流图分析、符号执行等来找出软件错误。可以人工进行分析,也可以用测试工具静态分析程序来进行。 (2)动态分析技术 动态测试将程序视为一个函数,该函数描述了程序输入与输出的关系。输入的全体称为函数定义域,输出的全体称为函数值域。动态测试是取定义域中每个数值作为输入,实际运行程序,判定执行结果是否全部包含在函数值域中,来检验程序的正确性和可靠性。 常用的动态测试方法有黑盒测试和白盒测试。 软件工程软件工程Page 753.软件测试与维护n 测试方法和步骤 软件测试步骤 软件测试过程分为4步:单元测试、整体测试、有效性测试和系统测试,如图所示。 软件工程软件工程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年安徽省中考历史试卷真题及答案详解(精校打印版)
- 中小学心理健康教育与学生心理健康素养提升论文
- 中学语文“思辨性阅读与表达”教学策略与传统文化教育的融合论文
- 艾弗格公司管理制度
- 苗圃地冬季管理制度
- 茶油树基地管理制度
- 融入数字孪生的中职智慧园林学习空间构建与应用
- 管理学谷歌案例分析
- 视觉感知汽车领域应用分析
- 自动控制原理课程设计 (一)
- (更新版)国家开放大学电大《计算机绘图(本)》网考形考作业试题及答案
- 扩频通信中直接扩频系统的同步技术
- 幼儿园食育环境创设的实践研究 论文
- 电机学知到章节答案智慧树2023年东北电力大学
- 气候变化科学概论试题及答案
- 湖南省郴州市2016年中考数学试卷(解析版)
- 项目部内审检查表
- 森林计测学(测树学)智慧树知到答案章节测试2023年浙江农林大学
- 对外汉语教学法智慧树知到答案章节测试2023年西北师范大学
- jgj113-2015建筑玻璃技术规范
- 陕西延长石油四海煤化工有限公司金属镁厂1万吨-年金属镁生产项目环评报告
评论
0/150
提交评论