《清华大学郑人杰殷仁昆教授软件工程讲义-》由会员分享,可在线阅读,更多相关《清华大学郑人杰殷仁昆教授软件工程讲义-(88页珍藏版)》请在金锄头文库上搜索。
1、软件工程软件工程第二章第二章 需求分析需求分析2.1 2.1 系统分析系统分析2.2 2.2 软件需求分析软件需求分析2.3 2.3 结构化分析方法结构化分析方法2.4 2.4 快速原型化方法快速原型化方法2.5 2.5 需求定义与评审需求定义与评审1 1软件工程软件工程2.1 2.1 系统分析系统分析基于计算机的系统的系统元素包括硬件、软件、基于计算机的系统的系统元素包括硬件、软件、人、数据库、文档和过程。人、数据库、文档和过程。系统分析的目标系统分析的目标1)识别用户要求识别用户要求2)评价系统的可行性,进行经济和技术分析评价系统的可行性,进行经济和技术分析3)把功能分配给硬件、软件、人、
2、数据库和其把功能分配给硬件、软件、人、数据库和其它系统元素它系统元素4)建立成本和进度限制建立成本和进度限制5)生成系统规格说明生成系统规格说明2 2软件工程软件工程识别用户要求识别用户要求n分析员必须考虑以下问题:分析员必须考虑以下问题:n识别希望的功能和性能范围识别希望的功能和性能范围; ; n确定系统的功能、性能、约束和接口确定系统的功能、性能、约束和接口; ;vv 功能功能和和性能性能v 可靠性可靠性和和质量质量v 总的系统目标总的系统目标v 成本成本与与进度限制进度限制vv 制造需求制造需求v 市场与竞争情况市场与竞争情况v 有效的技术有效的技术v 将来可能的扩充将来可能的扩充3 3
3、软件工程软件工程可行性研究可行性研究n可行性研究可行性研究v从经济可行性、技术可行性、法律可行性和从经济可行性、技术可行性、法律可行性和用户操作可行性等方面评价系统是否值得做,用户操作可行性等方面评价系统是否值得做,是否能做。是否能做。可行性研究的步骤可行性研究的步骤 1) 确定项目的规模和目标确定项目的规模和目标 2) 研究当前正在运行的系统研究当前正在运行的系统 3) 建立新系统的高层逻辑模型建立新系统的高层逻辑模型 4) 导出和评价各种方案导出和评价各种方案4 4软件工程软件工程5)推荐可行的方案推荐可行的方案6)编写可行性研究报告编写可行性研究报告n成本估算成本估算专家估算技术(专家估
4、算技术(Delphi技术)技术)成本估算模型(成本估算模型(COCOMO)n效益估算效益估算投资回收期投资回收期纯收入纯收入投资回收率投资回收率经济可行性经济可行性 成本成本效益分析效益分析5 5软件工程软件工程技术可行性技术可行性 技术风险分析技术风险分析n技术解决方案的实用性技术解决方案的实用性使用的技术实用化程度使用的技术实用化程度技术解决方案合理程度技术解决方案合理程度n技术资源的可用性技术资源的可用性参与人员的工作基础参与人员的工作基础基础硬件基础硬件/软件的可用性软件的可用性软件工具实用性软件工具实用性6 6软件工程软件工程法律可行性法律可行性 侵权和责任问题侵权和责任问题n专利法
5、专利法n著作权法著作权法n软件保护条例软件保护条例n用户类型:用户类型:外行型熟练型专家型外行型熟练型专家型n操作习惯操作习惯n使用单位的计算机使用情况使用单位的计算机使用情况n使用单位的规章制度使用单位的规章制度用户操作可行性用户操作可行性7 7软件工程软件工程2.2 2.2 软件需求分析软件需求分析n需求分析是一项软件工程活动,其目的是:需求分析是一项软件工程活动,其目的是:清楚地理解所要解决的问题,完整地获取用清楚地理解所要解决的问题,完整地获取用户要求;户要求;刻划出软件的功能和性能;刻划出软件的功能和性能;指明软件与其他系统元素的接口;指明软件与其他系统元素的接口;建立软件必须满足的
6、约束。建立软件必须满足的约束。1. 1. 软件需求分析的目的软件需求分析的目的 8 8软件工程软件工程n需求分析是一项软件工程活动,它包括:需求分析是一项软件工程活动,它包括:1)需求获取需求获取刻划出软件的刻划出软件的功能功能和和性能性能;指明软件与其他系统元素的指明软件与其他系统元素的接口接口;建立软件必须满足的建立软件必须满足的约束约束。2)需求建模需求建模需求分析建立起来的模型为日后软件设计需求分析建立起来的模型为日后软件设计人员提供了可被翻译成人员提供了可被翻译成数据数据、体系结构体系结构、接口接口和和处理过程处理过程设计的模型。设计的模型。2. 2. 需求分析的任务需求分析的任务9
7、 9软件工程软件工程3)需求规格说明需求规格说明需求规格说明为开发人员和用户提供软件需求规格说明为开发人员和用户提供软件开发完成时质量评价的依据。开发完成时质量评价的依据。4)需求评审需求评审需求分析研究的对象是需求分析研究的对象是用户的要求用户的要求。必须必须全面理解全面理解用户的各项要求,用户的各项要求,准确表准确表达达被接受的用户要求。被接受的用户要求。只有经过确切描述的软件需求才能成为只有经过确切描述的软件需求才能成为软件设计的基础。软件设计的基础。 1010软件工程软件工程n软件开发是要实现软件开发是要实现目标系统的物理模型目标系统的物理模型。需求。需求分析的任务就是借助于分析的任务
8、就是借助于当前系统的逻辑模型导当前系统的逻辑模型导出目标系统的逻辑模型出目标系统的逻辑模型,解决目标系统,解决目标系统 “ “做做什么什么” ” 的问题。的问题。目标系统目标系统当前系统当前系统物理模型物理模型逻辑模型逻辑模型模型化模型化抽象化抽象化物理模型物理模型逻辑模型逻辑模型具体化具体化实例化实例化理理解解需需求求导导出出怎么做怎么做做什么做什么1111软件工程软件工程3 3、需求获取、需求获取n需求获取是在问题及其最终解决方案之间架设需求获取是在问题及其最终解决方案之间架设桥梁的第一步。桥梁的第一步。n需求获取的目的是清楚地理解所要解决的问题,需求获取的目的是清楚地理解所要解决的问题,
9、完整地获得用户的需求。完整地获得用户的需求。n获取需求的一个必不可少的结果是对项目中描获取需求的一个必不可少的结果是对项目中描述的客户需求的普遍理解。一旦理解了需求,述的客户需求的普遍理解。一旦理解了需求,分析者、开发者和客户就能探索出描述这些需分析者、开发者和客户就能探索出描述这些需求的多种解决方案。求的多种解决方案。1212软件工程软件工程软件需求的层次软件需求的层次1)业务需求业务需求 反映了组织或客户对系统、产品反映了组织或客户对系统、产品高层次的目标要求,它们一般在项目视图和高层次的目标要求,它们一般在项目视图和范围文档中给予说明。范围文档中给予说明。2)用户需求用户需求 描述用户使
10、用软件需要完成哪些描述用户使用软件需要完成哪些任务,它们可通过使用实例图或脚本说明加任务,它们可通过使用实例图或脚本说明加以阐明。以阐明。3)功能功能非功能需求非功能需求 定义了开发者必须实现定义了开发者必须实现的软件功能,而非功能需求如表所示的软件功能,而非功能需求如表所示:1313软件工程软件工程1414软件工程软件工程需求获取过程需求获取过程n需求获取包括以下活动:需求获取包括以下活动:1)发现和分析问题发现和分析问题 发现问题症结,并分析问发现问题症结,并分析问题的原因题的原因/结果关系。结果关系。2)获取获取需求需求 根据对问题的理解定义需求。根据对问题的理解定义需求。a)使用调查研
11、究方法收集信息;使用调查研究方法收集信息;b)遵循需求获取框架,按照三个成分观察:遵循需求获取框架,按照三个成分观察:即即数据数据、过程过程和和接口接口。3)需求归档需求归档 以草稿形式归档调查结果。形式以草稿形式归档调查结果。形式有用例、决策表、需求表等。有用例、决策表、需求表等。1515软件工程软件工程需求获取技术的基本特征需求获取技术的基本特征n好的需求获取技术,对于规范需求获取活动,好的需求获取技术,对于规范需求获取活动,高效准确地获取需求定义,是十分重要的。高效准确地获取需求定义,是十分重要的。n好的需求获取技术,应具有如下基本特征:好的需求获取技术,应具有如下基本特征:提供便于沟通
12、的工具,如易于理解的语言和提供便于沟通的工具,如易于理解的语言和直观的图表;直观的图表;提供定义系统边界(交互)的方法;提供定义系统边界(交互)的方法;提供支持抽象的机制,如提供支持抽象的机制,如“分解分解”、“映射映射”等;等;1616软件工程软件工程鼓励分析员使用面向问题的术语思考问题,鼓励分析员使用面向问题的术语思考问题,编写文档;编写文档;为分析员提供多种可供选择的解决方案;为分析员提供多种可供选择的解决方案;适应需求的变化。适应需求的变化。n适于以上特征的需求获取方法:适于以上特征的需求获取方法:基于数据流图的结构化分析方法;基于数据流图的结构化分析方法;基于用例(基于用例(use
13、case)的)的建模方法。建模方法。n需求获取技术的关键点在于:需求获取技术的关键点在于:a.深入浅出深入浅出 需求获取要尽可能全面、细致。需求获取要尽可能全面、细致。1717软件工程软件工程获获取取的的需需求求是是个个全全集集,系系统统真真正正实实现现的的是是个个子子集集。分分析析时时的的调调研研内内容容并并不不都都纳纳入入到到新系统中,目的在于以后的扩充。新系统中,目的在于以后的扩充。b.以流程为主线以流程为主线 在在与与用用户户交交流流的的过过程程中中,应应该该用用流流程程将将所所有有的的内内容容串串起起来来。如如信信息息、组组织织结结构构、处处理规则等。这样便于交流沟通。理规则等。这样
14、便于交流沟通。流流程程描描述述有有宏宏观观,也也有有微微观观。既既要要强强调调总总体体的的业业务务流流程程、全全生生存存周周期期的的业业务务流流程程,又要对流程细化,有分支的业务流程。又要对流程细化,有分支的业务流程。1818软件工程软件工程需求获取应遵循的原则需求获取应遵循的原则n抽象和分解是在人们认识世界和改造世界的长抽象和分解是在人们认识世界和改造世界的长期实践中总结出来的行之有效的原则,在需求期实践中总结出来的行之有效的原则,在需求获取的过程中需遵循的三个原则:获取的过程中需遵循的三个原则:a.分解分解:捕获问题空间的:捕获问题空间的整体整体 部分关系部分关系。如。如问题子问题分解;问
15、题子问题分解;b.抽象抽象:捕获问题空间的:捕获问题空间的一般化一般化 特殊化关系特殊化关系。如问题的不同变型;。如问题的不同变型;c.投影投影:捕获问题空间的:捕获问题空间的多维视图多维视图。即从不同。即从不同角度考察。角度考察。1919软件工程软件工程需求获取的步骤需求获取的步骤n软件开发项目和组织文化的不同,对于需求开软件开发项目和组织文化的不同,对于需求开发没有一个简单的、公式化的途径。发没有一个简单的、公式化的途径。n下面下面9个步骤,针对信息系统的需求获取。个步骤,针对信息系统的需求获取。1)定义项目的视图和范围定义项目的视图和范围 包括组织结构图、包括组织结构图、各部门的岗位各部
16、门的岗位/角色列表。角色列表。2)确定用户类确定用户类 包括人员包括人员/责任矩阵。责任矩阵。3)确定目标系统的业务工作流确定目标系统的业务工作流 包括物流、资包括物流、资金流、信息流,建立业务工作流模型。金流、信息流,建立业务工作流模型。2020软件工程软件工程4)运用需求获取技术运用需求获取技术开发反映主要业务规则的开发反映主要业务规则的用例(或数据流图)用例(或数据流图)并设置优先级。并设置优先级。 5)收集来自用户的收集来自用户的质量特性信息和其他非功能质量特性信息和其他非功能需求需求 将性能、安全性、可靠性等需求和其将性能、安全性、可靠性等需求和其他设计约束结合业务规则,形成功能需求
17、。他设计约束结合业务规则,形成功能需求。6)分类在用例(或数据流图)中涉及的数据分类在用例(或数据流图)中涉及的数据 包括数据的组成和数据之间的关系。包括数据的组成和数据之间的关系。7)详细拟订用例(或数据流图)的规格说明,详细拟订用例(或数据流图)的规格说明, 建立功能模型,并进行审查,用以澄清需求建立功能模型,并进行审查,用以澄清需求获取的参与者对需求的理解。获取的参与者对需求的理解。2121软件工程软件工程8)开发并评估界面原型开发并评估界面原型 设想输入设备、输出设想输入设备、输出设备、显示风格、显示方式、输出格式等,设备、显示风格、显示方式、输出格式等,建立接口规范和信息流传输规则。
18、建立接口规范和信息流传输规则。9)从功能描述中开发概念测试用例从功能描述中开发概念测试用例 用测试用用测试用例来验证用例(或数据流图)、功能需求和例来验证用例(或数据流图)、功能需求和原型。原型。2222软件工程软件工程n需求获取可能是软件开发中最困难、最关键、需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流的方面。表现在:最易出错及最需要交流的方面。表现在:需求的不稳定性需求的不稳定性:在整个软件生存周期内软:在整个软件生存周期内软件需求会随着时间的推移发生变化;件需求会随着时间的推移发生变化;需求的不准确性需求的不准确性:用户和开发人员的认识会:用户和开发人员的认识会随着使用系
19、统实现业务流程的实践逐步提高,随着使用系统实现业务流程的实践逐步提高,一开始不可能设想得面面俱到。一开始不可能设想得面面俱到。n需求获取只有通过有效的客户需求获取只有通过有效的客户/开发者的合作开发者的合作才能成功。才能成功。 2323软件工程软件工程针对信息系统的需求调研方法针对信息系统的需求调研方法调调研研用用户户的的组组织织结结构构、岗岗位位设设置置、职职责责定定义义,从从功功能能上上区区分分有有多多少少个个子子系系统统,划划分分系系统统的的大致范围,明确系统的目标。大致范围,明确系统的目标。调调研研每每个个子子系系统统的的工工作作流流程程、功功能能与与处处理理规规则则,收收集集原原始始
20、信信息息资资料料,用用数数据据流流来来表表示示物物流、资金流、信息流三者的关系。流、资金流、信息流三者的关系。对对调调研研内内容容事事先先准准备备,针针对对不不同同管管理理层层次次的的用用户户询询问问不不同同的的问问题题,列列出出问问题题清清单单。将将操操作作层层、管管理理层层、决决策策层层的的需需求求既既联联系系又又区区分分开来,形成一个需求的层次。开来,形成一个需求的层次。2424软件工程软件工程对对与与用用户户沟沟通通的的情情况况及及时时总总结结归归纳纳,整整理理调调研研结结果果,初初步步构构成成需需求求基基线线。若若基基线线符符合合要要求,则需求获取完成。求,则需求获取完成。n需求调研
21、的主要手段:需求调研的主要手段:发调查表;发调查表;召开调查会;召开调查会;向用户领域的专家个别咨询;向用户领域的专家个别咨询;实地考察,实地考察,跟踪现场业务流程;跟踪现场业务流程;查阅与待开发系统有关的资料;查阅与待开发系统有关的资料;使用各种调查工具等。使用各种调查工具等。2525软件工程软件工程需求整理与表达的方法需求整理与表达的方法n采用采用穷举方法穷举方法可以避免遗漏。可以避免遗漏。n采用采用归纳方法归纳方法,通过对各种情况进行综合分类,通过对各种情况进行综合分类可以使问题条理化。可以使问题条理化。n采用采用抽象方法抽象方法,可以发现问题的实质,抓住问,可以发现问题的实质,抓住问题
22、的主要矛盾,忽略其次要矛盾。题的主要矛盾,忽略其次要矛盾。n需求整理可以多种手段共用,如组织结构图、需求整理可以多种手段共用,如组织结构图、业务流程图、多叉树、关系矩阵、文字叙述、业务流程图、多叉树、关系矩阵、文字叙述、表格、图形等。需求描述包括组织结构与岗位表格、图形等。需求描述包括组织结构与岗位定义、业务流程、处理规则、数据项、功能以定义、业务流程、处理规则、数据项、功能以及及上述上述 5 个方面个方面的关系。的关系。2626软件工程软件工程4. 4. 需求建模需求建模n需求建模是为了分析需求,以确定项目的确切需求建模是为了分析需求,以确定项目的确切需求。需求。n需求建模遵循三个原则:需求
23、建模遵循三个原则: 划分划分:描述需求的整体:描述需求的整体部分关系;部分关系; 抽象抽象:描述需求的一般化:描述需求的一般化特殊化关系;特殊化关系; 投影投影:描述需求的多维视图;:描述需求的多维视图;n定义系统模型要区分逻辑模型和物理模型。定义系统模型要区分逻辑模型和物理模型。n常用模型有常用模型有数据建模数据建模、功能建模功能建模和和过程建模过程建模。2727软件工程软件工程常用的分析方法常用的分析方法面向数据流的结构化分析方法面向数据流的结构化分析方法 (SA)面向数据结构的面向数据结构的Jackson方法方法 (JSD)面向数据结构的结构化数据系统开发方法面向数据结构的结构化数据系统
24、开发方法 (DSSD)面向对象的分析方法面向对象的分析方法 (OOA) 等等2828软件工程软件工程n结构化分析方法最初只是着眼于数据流,自顶结构化分析方法最初只是着眼于数据流,自顶向下,逐层分解,建立系统的处理流程,以数向下,逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻据流图和数据字典为主要工具,建立系统的逻辑模型。辑模型。n扩充后,将建模技术扩展到数据建模、功能建扩充后,将建模技术扩展到数据建模、功能建模和行为建模,以实体模和行为建模,以实体- -关系图、数据流图和关系图、数据流图和控制流图、状态控制流图、状态- -迁移图为工具,数据字典为迁移图为工具,数据字
25、典为核心,从不同视点建立系统的分析模型。核心,从不同视点建立系统的分析模型。2.3 2.3 结构化分析方法结构化分析方法2929软件工程软件工程结构化分析的分析模型结构化分析的分析模型实体实体关系图关系图状态状态迁移图迁移图数据流数据流数据流数据流图图图图数据对象描述数据对象描述加工规格说明加工规格说明数据数据字典字典控制规格说明控制规格说明3030软件工程软件工程1. 1. 数据建模数据建模n数据模型包括三种互相关联的信息:数据对象,数据模型包括三种互相关联的信息:数据对象,描述对象的属性,描述对象间相互连接的关系。描述对象的属性,描述对象间相互连接的关系。n在需求分析阶段描述数据对象和它们
26、之间的关在需求分析阶段描述数据对象和它们之间的关系,使用了系,使用了E-R 图。图。n例如,在教学管理中,一个教师可以教授零门、例如,在教学管理中,一个教师可以教授零门、一门或多门课程,每位学生也需要学习几门课一门或多门课程,每位学生也需要学习几门课程。因此,教学管理中涉及的对象有学生、教程。因此,教学管理中涉及的对象有学生、教师和课程。师和课程。3131软件工程软件工程教学数据模型教学数据模型学号学号 姓名姓名 专业专业 性别性别 学生学生职工号职工号姓名姓名专业专业职称职称年龄年龄教师教师课程号课程号 课程名课程名 学分学分 学时学时 课程课程学号学号课程号课程号成绩成绩选课选课3232软
27、件工程软件工程实例的关联有三种:一对一实例的关联有三种:一对一 (1:1) ;一对多;一对多 (1:m) ;多对多多对多 (n:m) 。这种实例的关联称为这种实例的关联称为“基数基数”,基数表明了,基数表明了“重复性重复性”。教师教师学生学生教授教授基数基数:一位教师一位教师 基数基数:多位学生多位学生参与度参与度: :必须必须 参与度参与度: :可选可选3333软件工程软件工程XY一个一个X与一个与一个Y相关联相关联一个一个X与一个或多个与一个或多个Y相关联相关联XY一个一个X与零个或一个与零个或一个Y相关联相关联XY一个一个X与零个与零个, 一个或多个一个或多个Y相关联相关联XY一个一个X
28、与一个与一个Y或或Z相关联相关联XYZ一个一个X与一个与一个Y与与Z相关联相关联XYZ3434软件工程软件工程2.2. 功能建模和数据流功能建模和数据流n最初最初, ,结构化分析方法仅讨论数据流建模,目标结构化分析方法仅讨论数据流建模,目标系统被表示成如图所示的数据变换流程图。系系统被表示成如图所示的数据变换流程图。系统的功能体现在核心的数据变换中。统的功能体现在核心的数据变换中。外部实体外部实体外部实体外部实体外部实体外部实体外部实体外部实体目标目标系统系统输入信息输入信息输入信息输入信息输出信息输出信息输出信息输出信息顶层数据流图(上下文环境图)顶层数据流图(上下文环境图)3535软件工程
29、软件工程数据流图中的主要图形元素数据流图中的主要图形元素数据加工数据加工 (数据变换数据变换)数据源或数据潭数据源或数据潭 (外部实体外部实体)数据流数据流数据存储文件数据存储文件或或或或3636软件工程软件工程分层的数据流图分层的数据流图3737软件工程软件工程实例考务处理系统的功能实例考务处理系统的功能(1) 对考生送来的报名单进行检查对考生送来的报名单进行检查;(2) 对合格的报名单编好准考证号后将准考证送对合格的报名单编好准考证号后将准考证送给考生,并将汇总后的考生名单送给阅卷站给考生,并将汇总后的考生名单送给阅卷站;(3) 对阅卷站送来的成绩单进行检查,并根据考对阅卷站送来的成绩单进
30、行检查,并根据考试中心制定的合格标准审定合格者试中心制定的合格标准审定合格者;(4) 制作考生通知单制作考生通知单 (含成绩及合格含成绩及合格/不合格标志不合格标志) 送给考生送给考生;(5) 按地区进行成绩分类统计和试题难度分析,按地区进行成绩分类统计和试题难度分析,产生统计分析表。产生统计分析表。3838软件工程软件工程顶层数据流图顶层数据流图考考生生考务考务处理系统处理系统考考试试中中心心阅卷站阅卷站不合格报名表不合格报名表报名表报名表准考证准考证考生通知单考生通知单成成绩绩单单合格标准合格标准错误成绩单错误成绩单考考生生名名单单统计分析表统计分析表3939软件工程软件工程根据考务处理业
31、务,画出顶层数据流图,以反映根据考务处理业务,画出顶层数据流图,以反映最主要业务处理流程及系统与外界的关系。最主要业务处理流程及系统与外界的关系。经过分析,考务业务处理的主要功能应当有经过分析,考务业务处理的主要功能应当有登记登记报名单报名单、统计成绩统计成绩两个主要数据流。输入的源点两个主要数据流。输入的源点和输出终点是考生、考试中心和阅卷站。和输出终点是考生、考试中心和阅卷站。然后从输入端开始,根据考务业务工作流,画出然后从输入端开始,根据考务业务工作流,画出数据流流经的各加工框,逐步画到输出端,得到数据流流经的各加工框,逐步画到输出端,得到第第 0 层数据流图。层数据流图。4040软件工
32、程软件工程报名表报名表准考证准考证1 1登记登记报名表报名表2统计统计成绩成绩不合格不合格报名表报名表考生通知单考生通知单成成绩绩单单统计分析表统计分析表第第0 0层数据流图层数据流图考生名册考生名册合合格格标标准准考考生生名名单单错错误误成成绩绩单单4141软件工程软件工程第一层数据流图第一层数据流图 (a)(a)1.1 检查检查报名表报名表报名表报名表准考证准考证1.2编准考证编准考证号码号码不合格不合格报名表报名表考生名册考生名册考生名单考生名单合格合格报名表报名表1.3登记登记考生考生合格报名表合格报名表4242软件工程软件工程第一层数据流图第一层数据流图 (b)(b)2.1检查检查成
33、绩单成绩单2.2审定审定合格者合格者考生名册考生名册正确正确成绩单成绩单2.3制作制作通知单通知单2.4分析统分析统计成绩计成绩2.5分析试分析试题难度题难度试题得分表试题得分表考生考生通知单通知单难度难度分析表分析表合格合格标准标准分类分类统计表统计表成绩单成绩单错误错误成绩单成绩单经审定的经审定的成绩单成绩单4343软件工程软件工程3. 3. 行为建模行为建模n行为建模给出需求分析方法的所有操作原则,行为建模给出需求分析方法的所有操作原则,但只有结构化分析方法的扩充版本才提供这种但只有结构化分析方法的扩充版本才提供这种建模的符号。建模的符号。n数据流图不描述时序关系,控制和事件流通过数据流
34、图不描述时序关系,控制和事件流通过行为模型描述。行为模型描述。n在描述系统或各个数据对象的行为时,采用状在描述系统或各个数据对象的行为时,采用状态迁移图。通过描述系统或对象的态迁移图。通过描述系统或对象的状态状态,以及,以及引起系统或对象状态转换的引起系统或对象状态转换的事件事件来表示系统或来表示系统或对象的行为。对象的行为。4444软件工程软件工程状态迁移图状态迁移图n例如,有关处理器分配的进程状态迁移。例如,有关处理器分配的进程状态迁移。t2t3t4t1运行运行就绪就绪等待等待4545软件工程软件工程n状态迁移图是描述系统的状态如何响应外部的状态迁移图是描述系统的状态如何响应外部的事件进行
35、推移的一种图形表示。事件进行推移的一种图形表示。“”表示可得到的系统表示可得到的系统状态状态“”表示从一种状态向另一种状态的表示从一种状态向另一种状态的迁移迁移。S2S1S3t1t2t3t4t4t3t2t1事件事件状态状态S1 S2 S3S3S2S3S14646软件工程软件工程PetriPetri网网nPetri网已广泛地应用于硬件与软件系统的开网已广泛地应用于硬件与软件系统的开发中,它适用于描述相互独立、协同操作的发中,它适用于描述相互独立、协同操作的处理系统,也就是并发执行的处理系统。处理系统,也就是并发执行的处理系统。nPetri网简称网简称PNG (Petri Net Graph),它
36、有两它有两种结点:种结点:位置位置:符号符号“”,表示系统,表示系统状态状态。转移转移:符号符号 “|”, 表示系统中的表示系统中的事件事件。 有向边有向边“”表示表示向转移的输入向转移的输入,或,或从转从转移的输出移的输出。4747软件工程软件工程标记标记,或称,或称令牌令牌 (token),是表明系统当前处是表明系统当前处于什么状态的标志。于什么状态的标志。Petri网网可能的变化有:可能的变化有:4848软件工程软件工程进程进程 得到资源得到资源 占用资源运行占用资源运行 释放资源释放资源 不用资源运行不用资源运行PR1 LOCK R 处理处理11 UNLOCK R 处理处理12PR2
37、LOCK R 处理处理21 UNLOCK R 处理处理22n例如,处理两个进程例如,处理两个进程PR1和和PR2的同步问题(此时的同步问题(此时两个进程共用一个资源两个进程共用一个资源R):):4949软件工程软件工程p1p2p3p4p5p7p6t1t2t3t4t5t6等待等待R等待等待RR空闲空闲处理处理11处理处理12处理处理21处理处理22进程进程1进程进程25050软件工程软件工程4. 4. 数据字典数据字典n数据字典是结构化分析方法的核心,与各模型数据字典是结构化分析方法的核心,与各模型的图形表示配合,能清楚地表达数据处理的要的图形表示配合,能清楚地表达数据处理的要求。求。n词条描述
38、词条描述对于在模型中每一个被命名的图对于在模型中每一个被命名的图形元素,均加以定义,其内容有形元素,均加以定义,其内容有: 名字,别名名字,别名或编号,分类,描述,定义,位置,其它,等或编号,分类,描述,定义,位置,其它,等5151软件工程软件工程(1)数据流词条描述)数据流词条描述数据流名:数据流名:说明:简要介绍它产生的原因和结果说明:简要介绍它产生的原因和结果数据流来源:来自何方数据流来源:来自何方数据流去向:去向何处数据流去向:去向何处数据流组成:数据结构数据流组成:数据结构数据量流通量:数据量,流通量数据量流通量:数据量,流通量(2)数据元素词条描述数据元素词条描述类型:数字类型:数
39、字( (离散值,连续值离散值,连续值) ),文字,文字( (编码类编码类型型) )长度长度5252软件工程软件工程取值范围:取值范围:相关的数据元素及数据结构:相关的数据元素及数据结构:(3)数据文件词条描述)数据文件词条描述数据文件名:数据文件名:简述:存放的是什么数据简述:存放的是什么数据输入输出数据:输入输出数据:数据文件组成:数据结构数据文件组成:数据结构存储方式:顺序,直接,关键码存储方式:顺序,直接,关键码存取频率:存取频率:(4)加工逻辑词条描述)加工逻辑词条描述5353软件工程软件工程加工名:加工名:加工编号:反映该加工的层次加工编号:反映该加工的层次简要描述:加工逻辑及功能简
40、述简要描述:加工逻辑及功能简述输入输出数据流:输入输出数据流:加工逻辑:简述加工程序,加工顺序加工逻辑:简述加工程序,加工顺序(5)数据源及数据谭词条描述)数据源及数据谭词条描述 名称:外部实体名名称:外部实体名 简要描述:什么外部实体简要描述:什么外部实体 有关数据流:有关数据流: 数目:数目:5454软件工程软件工程5.5. 数据结构的描述数据结构的描述 符号符号 含义含义 举举 例例 被定义为被定义为 与与 x = a+bx = a+b.,.,.或或或或 .|. .|. 或或或或 x = a, b, x x = a, b, x = a|b= a|b. . 或或或或 m.n m.n 重复重
41、复 x = a, x = 3a8x = a, x = 3a8(.) (.) 可选可选 x = (a)x = (a)“.” “.” 基本数据元素基本数据元素 x = ax = a . . 连结符连结符 x = 1.9x = 1.95555软件工程软件工程存折户名所号帐号开户日性质存折户名所号帐号开户日性质 (印印密密) 1 存取行存取行50户名户名 2 字母字母24所号所号 001.999帐号帐号 00000001. 99999999开户日年月日开户日年月日性质性质“ 1 ”.“ 6 ”注:注:“ 1 ”表示普通户,表示普通户,“ 5 ”表示工资户等表示工资户等印密印密“ 0 ”注:印密在存折上
42、不显示注:印密在存折上不显示存取行日期(摘要)支出存入余额存取行日期(摘要)支出存入余额操作复核操作复核5656软件工程软件工程6. 6. 基本加工逻辑说明基本加工逻辑说明 对数据流图的每一个基本加工,必须有一个基本对数据流图的每一个基本加工,必须有一个基本加工逻辑说明。加工逻辑说明。基本加工逻辑说明必须描述基本加工如何把基本加工逻辑说明必须描述基本加工如何把输入输入数据流变换为输出数据流数据流变换为输出数据流的加工规则。的加工规则。加工逻辑说明必须描述实现加工的策略而不是实加工逻辑说明必须描述实现加工的策略而不是实现加工的细节。现加工的细节。加工逻辑说明中包含的信息应是充足的,完备的,加工逻
43、辑说明中包含的信息应是充足的,完备的,有用的,无冗余的。有用的,无冗余的。描述加工逻辑说明的工具:结构化语言、决策表、描述加工逻辑说明的工具:结构化语言、决策表、决策树。决策树。5757软件工程软件工程(1) (1) 结构化语言结构化语言结构化语言是一种伪码,它的词汇表由结构化语言是一种伪码,它的词汇表由命令动词命令动词数据字典中定义的名字数据字典中定义的名字有限的自定义词有限的自定义词逻辑关系词逻辑关系词 IF_THEN_ELSE、SWITCH、WHILE_DO、FOR、DO_WHILE等组成。等组成。它是一种介于自然语言和形式化语言之间的语它是一种介于自然语言和形式化语言之间的语言。用以消
44、除在语法上的歧义性。言。用以消除在语法上的歧义性。5858软件工程软件工程n语言的语言的正文用基本控制结构进行分割正文用基本控制结构进行分割,加工中,加工中的的操作用自然语言短语来表示操作用自然语言短语来表示。n其基本控制结构有三种:其基本控制结构有三种:简单陈述句结构:简单陈述句结构:避免复合语句;避免复合语句;重复结构:重复结构:while_do、for_do或或do_while结结构。构。判定结构:判定结构:if_then_else 或或switch_do 结构;结构;n用结构化语言描述的规格说明的正文可以在计用结构化语言描述的规格说明的正文可以在计算机上编辑,不必过多地考虑语言的在语法
45、上算机上编辑,不必过多地考虑语言的在语法上的限制,使得分析员可以集中考虑加工的策略的限制,使得分析员可以集中考虑加工的策略或规则。或规则。5959软件工程软件工程商店业务处理系统中商店业务处理系统中“检查发货单检查发货单”if 发货单金额超过发货单金额超过$500 then if 欠款超过了欠款超过了60天天 then 在偿还欠款前不予批准在偿还欠款前不予批准 else (欠款未超期)欠款未超期) 发批准书,发货单发批准书,发货单 else (发货单金额未超过发货单金额未超过$500) if 欠款超过欠款超过60天天 then 发批准书,发货单及赊欠报告发批准书,发货单及赊欠报告 else (
46、欠款未超期)欠款未超期) 发批准书,发货单发批准书,发货单 6060软件工程软件工程(2) (2) 决策表决策表如果数据流图的加工需要依赖于如果数据流图的加工需要依赖于多个逻辑条件多个逻辑条件的取值的取值,使用决策表来描述比较合适。,使用决策表来描述比较合适。条件茬条件茬条件项条件项动作茬动作茬动作项动作项规则规则单个单个条件条件单个单个动作动作6161软件工程软件工程以以“检查发货单检查发货单”为例为例操操在偿还欠款前在偿还欠款前不予批准不予批准 作作 发出批准书发出批准书 发出发货单发出发货单 发出赊欠报告发出赊欠报告 1234条条 发货单金额发货单金额 $500 $500 $500 $5
47、00件件 赊欠情况赊欠情况 60天天60天天 60天天60天天6262软件工程软件工程(3) (3) 判定树判定树判定树也是用来表达加工逻辑的一种工具。有判定树也是用来表达加工逻辑的一种工具。有时侯它比判定表更直观。时侯它比判定表更直观。检检查查发发货货单单金额金额$500金额金额 $500 欠款欠款60天天不发出批准书不发出批准书 欠款欠款 60天天发货单发货单发出批准书、发出批准书、 欠款欠款60天天发出批准书、发出批准书、发货单及赊欠报告发货单及赊欠报告 欠款欠款 60天天发出批准书、发出批准书、发货单发货单6363软件工程软件工程n这是一种有效驾驭风险的技术。通过原型这是一种有效驾驭风
48、险的技术。通过原型可以增进软件者和用户对系统服务需求的理可以增进软件者和用户对系统服务需求的理解,使比较含糊的具有不确定性的解,使比较含糊的具有不确定性的软件需求软件需求(主要是功能)明确化(主要是功能)明确化。可以容易地确定可以容易地确定系统的性能系统的性能,确认,确认各项主要各项主要系统服务的可应用性系统服务的可应用性,确认系统设计的可行,确认系统设计的可行性,确认系统作为产品的结果。性,确认系统作为产品的结果。有的原型可以直接成为产品,有的略加修改有的原型可以直接成为产品,有的略加修改就可成为最终系统的一个组成部分。就可成为最终系统的一个组成部分。2.4 2.4 快速原型化方法快速原型化
49、方法6464软件工程软件工程1)探索型探索型: 目的是要弄清对目标系统的要求,确定所希望目的是要弄清对目标系统的要求,确定所希望的特性,并探讨多种方案的可行性。的特性,并探讨多种方案的可行性。2)实验型实验型: 这种原型用于大规模开发和实现之前,考核方这种原型用于大规模开发和实现之前,考核方案是否合适,规格说明是否可靠。案是否合适,规格说明是否可靠。3)进化型进化型: 这种原型的目的不在于改进规格说明,而是将这种原型的目的不在于改进规格说明,而是将系统建造得易于变化,在改进原型的过程中,系统建造得易于变化,在改进原型的过程中,逐步将原型进化成最终系统。逐步将原型进化成最终系统。1. 1. 原型
50、分类原型分类6565软件工程软件工程2. 2. 原型使用策略原型使用策略n软件原型支持需求工程的两项活动:软件原型支持需求工程的两项活动:需求获取需求获取需求有效性验证需求有效性验证n其他用途:其他用途:用户培训用户培训系统测试系统测试n原型开发主要分类:原型开发主要分类:进化式原型开发进化式原型开发抛弃式原型开发抛弃式原型开发6666软件工程软件工程1 1)进化式原型开发)进化式原型开发n基本思路是:先给出一个系统的最初实现,让基本思路是:先给出一个系统的最初实现,让用户去使用和评价,不断进行细化和改善,经用户去使用和评价,不断进行细化和改善,经过多次这样的反复过程后形成最终的完善的系过多次
51、这样的反复过程后形成最终的完善的系统。统。开发抽象描述开发抽象描述建立原型系统建立原型系统使用原型系统使用原型系统系统充分吗系统充分吗?交付系统交付系统否否是是6767软件工程软件工程2 2)抛弃式原型开发)抛弃式原型开发n基本思路是:原型的根本作用是弄清楚需求和基本思路是:原型的根本作用是弄清楚需求和为风险评估提供补充信息。通过评估后,原型为风险评估提供补充信息。通过评估后,原型被抛弃,重新规划和实施系统的开发。被抛弃,重新规划和实施系统的开发。框架需求框架需求开发原型开发原型确定系统确定系统评估原型评估原型开发软件开发软件问题问题可可验证系统验证系统问题问题可可交付的软件系统交付的软件系统
52、可复用构件可复用构件6868软件工程软件工程3. 3. 原型开发技术原型开发技术1)可执行规格说明可执行规格说明2)基于场景基于场景 (scenario) 的设计的设计3)自动程序设计自动程序设计4)专用语言专用语言5)可复用可复用(reusable)的软件的软件6)简化假设简化假设6969软件工程软件工程1 1)可执行规格说明)可执行规格说明n可执行规格说明是用于需求规格说明的一种自可执行规格说明是用于需求规格说明的一种自动化技术。使用这种方法,人们可以直接观察动化技术。使用这种方法,人们可以直接观察他们用语言规定的任何系统性行为。包括他们用语言规定的任何系统性行为。包括a)代数规格说明代数
53、规格说明b)有限状态模型有限状态模型c)可执行的数据流图可执行的数据流图7070软件工程软件工程a)a)代数规格说明代数规格说明n使用集合、定义于这些集合上的函数和定义于使用集合、定义于这些集合上的函数和定义于这些函数上的方程来描述对象。规格说明的操这些函数上的方程来描述对象。规格说明的操作语义用这些方程表示。作语义用这些方程表示。n举例:定义一个无界的栈及其操作举例:定义一个无界的栈及其操作NEW_STACK: StackPUSH:Stack,Element StackPOP: Stack (Element | Undefined)POP( NEW_STACK ( ) ) Undefined
54、POP( PUSH( Stack,elem) ) elem7171软件工程软件工程b)b)有限状态模型有限状态模型nparnas提出的使用最广泛的一种可执行规格说提出的使用最广泛的一种可执行规格说明形式。从一个初始状态开始明形式。从一个初始状态开始接收输入接收输入,到,到产产生输出生输出,状态状态在在推移变化推移变化。施加在状态元素上。施加在状态元素上的约束确定了有效状态的推移。的约束确定了有效状态的推移。n举例:建立举例:建立用户程序用户程序 对话对话goofnew entryreportenterquithelpprintstartinfobye7272软件工程软件工程c)c)可执行的数据
55、流图可执行的数据流图n数据流图是基于结构化开发方法的结构化规格数据流图是基于结构化开发方法的结构化规格说明。说明。n用一种可执行的语言程序代替定义处理逻辑的用一种可执行的语言程序代替定义处理逻辑的结构化英语,数据流图就成为由可执行语言程结构化英语,数据流图就成为由可执行语言程序模块组成的网络,在一定环境或工具的支持序模块组成的网络,在一定环境或工具的支持下就可成为一个可以执行的原型系统下就可成为一个可以执行的原型系统。7373软件工程软件工程2 2)基于场景的设计)基于场景的设计n场景是指用户界面的原型。场景是指用户界面的原型。n一个场景用以一个场景用以模拟在系统运行期间用户经历的事模拟在系统
56、运行期间用户经历的事件件。它提供了它提供了输入输入处理处理输出的屏幕格式和有输出的屏幕格式和有关对话的模型关对话的模型。因此,软件开发人员能够给用户。因此,软件开发人员能够给用户显示系统的逼真的视图,使用户得以判断是否符显示系统的逼真的视图,使用户得以判断是否符合他的意图。合他的意图。n分析员与用户的沟通往往通过演示场景。分析员与用户的沟通往往通过演示场景。n可在任一场景中使用一套可复用的软件模块,以可在任一场景中使用一套可复用的软件模块,以表达某一方面的要求。表达某一方面的要求。7474软件工程软件工程n可使用一种原型语言来描述原型系统。原型开可使用一种原型语言来描述原型系统。原型开发过程中
57、用这种语言来定义发过程中用这种语言来定义屏幕屏幕数据项数据项相关的操作相关的操作从系统的外部描述开始,开发与数据库的从系统的外部描述开始,开发与数据库的接口接口错误处理和恢复过程错误处理和恢复过程等系统的与外部视图一致的细节。等系统的与外部视图一致的细节。7575软件工程软件工程3 3)自动程序设计)自动程序设计n在程序自动生成环境的支持下,利用计算机实在程序自动生成环境的支持下,利用计算机实现软件的开发。现软件的开发。n可以自动或半自动地把用户的非过程式问题规可以自动或半自动地把用户的非过程式问题规格说明转换为某种高级语言程序:格说明转换为某种高级语言程序:1)演绎综合手段:演绎综合手段:基
58、于数学推理的构造式证明。基于数学推理的构造式证明。2)程序变换手段:程序变换手段:将一程序转换成另一功能等价的程序,并将一程序转换成另一功能等价的程序,并保持其正确性不变。保持其正确性不变。7676软件工程软件工程3)实例推广手段:实例推广手段:从实例特征出发,将它推广为待编程序的从实例特征出发,将它推广为待编程序的特征,最后得到程序。特征,最后得到程序。4)过程化手段:过程化手段:研究甚高级语言的编译和知识的过程化。研究甚高级语言的编译和知识的过程化。n专用语言是应用领域的模型化语言。专用语言是应用领域的模型化语言。n在原型开发中使用专用语言,可方便用户和软在原型开发中使用专用语言,可方便用
59、户和软件开发者在计划中的系统特性方面的交流。件开发者在计划中的系统特性方面的交流。4 4)专用语言)专用语言7777软件工程软件工程5 5)软件复用技术)软件复用技术n利用可复用的模块,做出适当的组合,就可得利用可复用的模块,做出适当的组合,就可得到快速构造的原型系统。到快速构造的原型系统。n为了快速地构造原型,这些模块为了快速地构造原型,这些模块必须有简单而清晰的界面;必须有简单而清晰的界面;应当尽量不依赖其它的模块或数据结构;应当尽量不依赖其它的模块或数据结构;应具有一些通用的功能。应具有一些通用的功能。7878软件工程软件工程6 6)简化假设)简化假设n在开发过程中为使设计者迅速得到一个
60、简化的在开发过程中为使设计者迅速得到一个简化的系统,可以预设一些使得问题简化的假设。尽系统,可以预设一些使得问题简化的假设。尽管这些假设可能实际上并不能成立,但它们在管这些假设可能实际上并不能成立,但它们在原型开发过程中可以使开发者的注意力集中在原型开发过程中可以使开发者的注意力集中在一些主要的方面。一些主要的方面。7979软件工程软件工程2.5 2.5 需求定义与评审需求定义与评审n又称需求规格说明或需求规约。又称需求规格说明或需求规约。n需求定义的主要目的是分析需求草稿和模型,需求定义的主要目的是分析需求草稿和模型,解决其中存在的二义性和不一致性,系统地准解决其中存在的二义性和不一致性,系
61、统地准确地表达系统需求,形成需求规格说明。包括确地表达系统需求,形成需求规格说明。包括 系统应提供的功能和服务;系统应提供的功能和服务; 非功能需求;非功能需求; 系统开发或运行的限制条件;系统开发或运行的限制条件; 与系统互连的其他系统的信息。与系统互连的其他系统的信息。8080软件工程软件工程n软件需求规格说明的基本原则:软件需求规格说明的基本原则:功能与实现分离,描述要功能与实现分离,描述要“做什么做什么”而不而不是是“怎样实现怎样实现”。要求使用面向处理的规格说明语言,从而要求使用面向处理的规格说明语言,从而得到得到“做什么做什么”的规格说明。的规格说明。如果目标软件只是一个大系统中的
62、一个元如果目标软件只是一个大系统中的一个元素,那么整个大系统也包括在规格说明的素,那么整个大系统也包括在规格说明的描述之中。描述之中。规格说明必须包括系统运行的环境。规格说明必须包括系统运行的环境。1. 1. 需求规格说明的原则需求规格说明的原则8181软件工程软件工程系统规格说明必须是一个认识的模型,而系统规格说明必须是一个认识的模型,而不是设计或实现的模型。不是设计或实现的模型。规格说明必须是可操作的。规格说明必须是可操作的。规格说明必须容许不完备性并允许扩充。规格说明必须容许不完备性并允许扩充。规格说明必须局部化和松散的耦合。当信规格说明必须局部化和松散的耦合。当信息被修改时,只要修改某
63、个单个的段落,息被修改时,只要修改某个单个的段落,能够很容易地加入和删去一些段落。能够很容易地加入和删去一些段落。8282软件工程软件工程2.2. 需求规格说明的内容需求规格说明的内容n基于基于IEEE 830改写的规格说明模板内容:改写的规格说明模板内容:a.引言引言a.1 目的目的a.2 文档约定文档约定 a.3 预期的读者和阅读建议预期的读者和阅读建议a.4 产品的范围产品的范围a.5 参考文献参考文献b.综合描述综合描述 b.1 产品的前景产品的前景 b.2 产品的功能产品的功能8383软件工程软件工程b.3 用户类和特征用户类和特征b.4 运行环境运行环境b.5 设计和实现的限制设计
64、和实现的限制b.6 假设和依赖假设和依赖c.外部接口外部接口 c.1 用户界面用户界面 c.2 硬件接口硬件接口 c.3 软件接口软件接口 c.4 通信接口通信接口d.系统特性系统特性 d.1 说明和优先级说明和优先级8484软件工程软件工程d.2 激励响应序列激励响应序列d.3 功能需求功能需求e.其他非功能需求其他非功能需求 e.1 性能需求性能需求 e.2 基本设施需求基本设施需求 e.3 安全性需求安全性需求 e.4 软件质量属性软件质量属性 e.5 业务规则业务规则 e.6 用户文档用户文档f.其他需求其他需求附录附录A:词汇表词汇表8585软件工程软件工程附录附录B: 软件需求分析
65、模型软件需求分析模型附录附录C: 待确定的问题待确定的问题n又称需求验证。需求评审的目的是确保需求又称需求验证。需求评审的目的是确保需求编写正确。审查的内容包括:编写正确。审查的内容包括:1)系统定义的目标是否与用户的要求一致;系统定义的目标是否与用户的要求一致;2)需求分析阶段提供的文档资料是否齐全;需求分析阶段提供的文档资料是否齐全;3)文文档档中中的的所所有有描描述述是是否否完完整整、清清晰晰、准准确确反映用户要求;反映用户要求;3. 3. 需求评审需求评审8686软件工程软件工程4)与与所所有有其其它它系系统统成成分分的的重重要要接接口口是是否否都都已已经描述;经描述;5)主主要要功功
66、能能是是否否已已包包括括在在规规定定的的软软件件范范围围之之内,是否都已充分说明;内,是否都已充分说明;6)软软件件的的行行为为和和它它必必须须处处理理的的信信息息、必必须须完完成的功能是否一致;成的功能是否一致;7)设计的限制条件是否符合实际;设计的限制条件是否符合实际;8)是否考虑了开发的技术风险;是否考虑了开发的技术风险;9)是是否否详详细细制制定定了了检检验验标标准准,它它们们能能否否对对系系统定义是否成功进行确认;统定义是否成功进行确认;8787软件工程软件工程4. 4. 需求管理需求管理n需求管理就是管理需求变化的过程。需求管理就是管理需求变化的过程。n需求管理涉及需求变更如何被处理的策略、需求管理涉及需求变更如何被处理的策略、规程和过程。它规定了规程和过程。它规定了应如何提交一个需求变更请求?应如何提交一个需求变更请求?如何分析需求变更对范围、进度和成本的如何分析需求变更对范围、进度和成本的影响?影响?如何批准或驳回需求变更?如何批准或驳回需求变更?如果批准了变更,改变更如何实现?如果批准了变更,改变更如何实现?8888软件工程软件工程