1、2018/10/7,河南理工大学,1,软件过程是为了获得高质量软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。,2018/10/7,河南理工大学,2,按照在软件生命周期全过程中应完成的任务的性质,在概念上可以把软件生命周期划分成八个阶段: 问题定义 可行性研究 需求分析 概要设计 详细设计 编码和单元测试 综合测试 维护,2018/10/7,河南理工大学,3,瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型,2018/10/7,河南理工大学,4,第二篇 传统方法学,2018/10/7,河南理工大学,5,第3章 结构化分析,2018/10/7,河南理工大学,6,为了开发
2、出真正满足用户需求的软件产品,首先必须知道用户的需求。对软件需求的深入理解是软件开发工作获得成功的前提和关键,不论我们把设计和编码工作做得如何出色,不能真正满足用户需求的程序只会给用户带来失望,给开发者带来烦恼。,2018/10/7,河南理工大学,7,传统的软件工程方法学采用结构化分析(Structured Analysis ,SA)技术完成需求分析工作。,2018/10/7,河南理工大学,8,2018/10/7,河南理工大学,9,3.1 概述,需求分析是发现、求精、建模、规格说明和复审的过程。 为了发现用户的真正需求,首先应该从宏观角度调查、分析用户所面临的问题。也就是说,需求分析的第一步是
3、尽可能准确地了解用户当前的情况和需要解决的问题。,2018/10/7,河南理工大学,10,模型,为了更好地理解问题,人们常常采用建立模型的方法。 所谓模型,就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。 通常,模型由一组图形符号和组织这些符号的规则组成。,2018/10/7,河南理工大学,11,结构化分析,结构化分析就是一种建立模型的活动,通常建立三种模型: 数据模型 功能模型 行为模型,2018/10/7,河南理工大学,12,软件需求规格说明,除了用分析模型表示软件需求之外,还要写出准确的软件需求规格说明。 模型既是软件设计的基础,也是编写软件规格说明的基础。,20
4、18/10/7,河南理工大学,13,在分析软件需求和编写软件规格说明的过程中,软件开发者和软件用户都起着关键的、必不可少的作用。 用户与开发者之间需要通信、沟通的内容非常多,在双方交流信息的过程中很容易出现误解或遗漏,也可能存在二义性。,2018/10/7,河南理工大学,14,2018/10/7,河南理工大学,15,3.2 与用户通信的技术,软件需求分析总是从两方或多方之间的通信开始。 用户面临的问题需要用基于计算机的方案来解决;开发者应该对用户的需求作出反应,给用户提供帮助。 这样就产生了相互通信的需求。但是,正如前面已经讲过的,从开始通信到真正相互理解的道路通常是充满坎坷的。 良好的通信技
5、术有助于加快理解的过程。,2018/10/7,河南理工大学,16,访谈,访谈(或称为会谈)是最早开始运用的获取用户需求的技术,也是迄今为止仍然广泛使用的主要的需求分析技术。 访谈有两种基本形式: 正式的 非正式的,2018/10/7,河南理工大学,17,在正式的访谈中,系统分析员将提出一些事先准备好的具体问题,例如,询问客户公司销售的商品种类、雇用的销售人员数目以及信息反馈时间应该多快等。 在非正式的访谈中,将提出一些可以自由回答的开放性问题,以鼓励被访问的人员表达自己的想法,例如,询问用户为什么对目前正在使用的系统感到不满意。,2018/10/7,河南理工大学,18,简易的应用规格说明技术,
6、这种方法提倡用户与开发者密切合作,共同标识问题,提出解决方案的要素,商讨不同的方法并指定基本的需求。 今天,简易的应用规格说明技术已经成为信息系统界使用的主流技术。,2018/10/7,河南理工大学,19,基本准则,尽管存在许多不同的简易应用规格说明方法,但是它们遵循的基本准则是相同的。 在中立地点举行由开发者和用户双方出席的会议。 制定准备会议和参加会议的规则。 提出一个议事日程,这个日程应该足够正式以便能够涵盖所有要点,同时这个日程又应该足够非正式,以便鼓励自由思维。 由一个“协调人”来主持会议,他既可以是用户也可以是开发者还可以是从外面请来的人。 使用一种“定义机制”(例如,工作表、图表
7、等)。 目标是标识问题、提出解决方案要素、商讨不同的方法以及在有利于实现目标的氛围中指定初步的需求。,2018/10/7,河南理工大学,20,软件原型,快速原型应该具备的特性: 快速原型应该具备的第一个特性是“快速”。快速原型的目的是尽快向用户提供一个可在计算机上运行的目标系统的模型,以便使用户和开发者在目标系统应该“做什么”这个问题上尽可能快地达成共识。 快速原型应该具备的第二个特性是“容易修改”。如果原型的第一版不是用户所需要的,就必须根据用户的意见迅速地修改它,构建出原型的第二版,以更好地满足用户的需求。,2018/10/7,河南理工大学,21,构建原型的要点是,它应该实现用户看得见的功
8、能(例如屏幕显示或打印报表),省略目标系统的“隐含”功能(例如修改文件)。在实际开发软件产品时,“修改试用反馈”的过程可能重复多遍,如果修改耗时过多,势必延误软件开发时间。,2018/10/7,河南理工大学,22,2018/10/7,河南理工大学,23,3.3 分析建模与规格说明,3.3.1分析建模 结构化分析实质上是一种创建模型的活动。通过需求分析而建立的模型必须达到下述的三个基本目标。 描述用户的需求。 为软件设计工作奠定基础。 定义一组需求,一旦开发出软件产品之后,就可以用这组需求为标准来验收该产品。,2018/10/7,河南理工大学,24,为了达到上述这些目标,在结构化分析过程中导出的
9、分析模型的形式,如图3.1所示。,2018/10/7,河南理工大学,25,图3.1 分析模型的结构,2018/10/7,河南理工大学,26,软件需求规格说明,通过需求分析除了创建分析模型之外,还应该写出软件需求规格说明,它是分析阶段的最终成果。 下面给出的简略大纲可以作为软件需求规格说明的框架。,2018/10/7,河南理工大学,27,.引言A .系统参考文献B .整体描述C .软件项目约束.信息描述A .信息内容B .信息流1 .数据流2 .控制流.功能描述A .功能分解B .功能描述1 .处理说明2 .限制3 .性能需求4 .设计约束5 .支撑图C .控制描述 1 .控制规格说明2 .设计
10、约束ZK),2018/10/7,河南理工大学,28,.行为描述A .系统状态B .事件和动作.确认标准A .性能范围B .测试种类C .预期的软件响应D .特殊考虑.参考书目.附录,2018/10/7,河南理工大学,29,3.4 实体关系图,数据模型包含三种相互关联的信息: 数据对象 描述数据对象的属性 数据对象彼此间相互连接的关系,2018/10/7,河南理工大学,30,数据对象,数据对象是对软件必须理解的复合信息的表示。 所谓复合信息是指具有一系列不同性质或属性的事物,因此,仅有单个值的事物(例如宽度)不是数据对象。,2018/10/7,河南理工大学,31,属性,属性定义了数据对象的性质。
11、 应该根据对所要解决的问题的理解,来确定特定数据对象的一组合适的属性。,2018/10/7,河南理工大学,32,关系,数据对象彼此之间相互连接的方式称为关系,也称为联系。 (1) 一对一联系(11) (2) 一对多联系(1N) (3) 多对多联系(MN) 联系也可能有属性。,2018/10/7,河南理工大学,33,实体关系图的符号,通常,使用实体关系图(EntityRelationship Diagram)来建立数据模型。 通常把实体关系图简称为ER图,相应地,用ER图描绘的数据模型也可以称为ER模型。 ER图基本成分: 实体(即数据对象):矩形框 关系:连接相关实体的菱形框表示关系 属性:用
12、椭圆形或圆角矩形表示实体(或关系)的属性并用无向边把实体(或关系)与其属性连接起来,2018/10/7,河南理工大学,34,例如:某学校教学管理的ER图 教师 学生 课程,2018/10/7,河南理工大学,35,图3.2 某校教学管理 ER 图,2018/10/7,河南理工大学,36,2018/10/7,河南理工大学,37,3.5 数据流图,当信息在软件中移动时,它将被一系列“变换”所修改。 数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。,2018/10/7,河南理工大学,38,数据流图符号,数据流图有四种基本符号: 正方形(或立方体)表示数据的源
13、点或终点; 圆角矩形(或圆形)代表变换数据的处理; 开口矩形(或两条平行横线)代表数据存储; 箭头表示数据流,即特定数据的流动方向。,2018/10/7,河南理工大学,39,数据流(特定数据的流动方向),数据的源点和终点,变换数据的处理,数据存储,或,或,或,数据流图基本符号的含义,2018/10/7,河南理工大学,40,T,C,A,B,*,数据A和数据B同时输入才能变换成C,T,C,A,B,*,数据A变换成B和C,T,C,A,B,+,数据A或B,或A和B同时输入变换成C,T,C,A,B,+,数据A变换成B或C,或B和C,T,C,A,B,只有数据A或只有数据B(不能A,B同时)输入时变换成C,
14、T,C,A,B,数据A变换成B或C,但不能变换成B和C,附加符号,2018/10/7,河南理工大学,41,例子,下面通过一个简单例子具体说明怎样画数据流图。 假设一家工厂的采购部每天需要一张定货报表,报表按零件编号排序,表中列出所有需要再次定货的零件。,2018/10/7,河南理工大学,42,对于每个需要再次定货的零件应该列出下述数据;零件编号、零件名称、定货数量、目前价格、主要供应者和次要供应者。 零件入库或出库称为事务,通过放在仓库中的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。,2018/10/7,河南理工大学,43,步骤:,从问题描述中提取数据
15、流图的四种成分 接下来考虑处理 最后,考虑数据流和数据存储,2018/10/7,河南理工大学,44,表3.1总结了上面分析的结果,其中加星号标记的是在问题描述中隐含的成分。,2018/10/7,河南理工大学,45,2018/10/7,河南理工大学,46,一旦把数据流图的四种成分都分离出来以后,就可以着手画数据流图了。 任何系统的基本模型都由若干个数据源点/终点以及一个处理组成,这个处理就代表了系统对数据加工变换的基本功能。对于上述的定货系统可以画出如图3.4所示的基本系统模型。,2018/10/7,河南理工大学,47,图3.4 定货系统的基本系统模型 (突出表明了数据的源点和终点),2018/
16、10/7,河南理工大学,48,下一步应该把基本系统模型细化,描绘系统的主要功能。 在图3.5中给处理和数据存储都加了编号,这样做的目的是便于引用和追踪。,2018/10/7,河南理工大学,49,图3.5 定货系统的功能级数据流图,2018/10/7,河南理工大学,50,接下来应该对功能级数据流图中描绘的系统主要功能进一步细化。,2018/10/7,河南理工大学,51,在对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。,2018/10/7,河南理工大学,52,图3.6 把处理事务的功能进一步分解后的数据流图,2018/1
17、0/7,河南理工大学,53,命名,数据流图中每个成分的命名是否恰当,直接影响数据流图的可理解性,因此,给这些成分起名字时应该仔细推敲。下面讲述在命名时应注意的问题。,2018/10/7,河南理工大学,54,1为数据流(或数据存储)命名 名字应代表整个数据流(或数据存储)的内容,而不是仅仅反映它的某些成分。 不要使用空洞的、缺乏具体含义的名字(如“数据”、“信息”、“输入”之类)。 如果在为某个数据流(或数据存储)起名字时遇到了困难,则很可能是因为对数据流图分解不恰当造成的,应该试试重新分解,看是否能克服这个困难。,2018/10/7,河南理工大学,55,2为处理命名 通常先为数据流命名,然后再
18、为与之相关联的处理命名。这样命名比较容易,而且体现了人类习惯的“由表及里”的思考过程。 名字应该反映整个处理的功能,而不是它的一部分功能。 名字最好由一个具体的及物动词,加上一个具体的宾语组成。应该尽量避免使用“加工”、“处理”等空洞笼统的动词作名字。,2018/10/7,河南理工大学,56,通常名字中仅包括一个动词,如果必须用两个动词才能描述整个处理的功能,则把这个处理再分解成两个处理可能更恰当些。 如果在为某个处理命名时遇到困难,则很可能是发现了分解不当的迹象,应考虑重新分解。,2018/10/7,河南理工大学,57,2018/10/7,河南理工大学,58,3.6 状态转换图,根据本章3.
19、1节讲述的第3条分析准则,在需求分析过程中应该建立起目标系统的行为模型。 状态转换图(简称状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。,2018/10/7,河南理工大学,59,状态,状态是任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。 状态规定了系统对事件的响应方式。 系统对事件的响应,既可以是做一个(或一系列)动作,也可以是仅仅改变系统本身的状态,还可以是既改变状态又做动作。,2018/10/7,河南理工大学,60,在状态图中定义的状态主要有:初态(即初始状态)、终态(即最终状态)和中间状态。 在一张状态图中只能有一个初态,而终态则可以有0至多个。
20、,2018/10/7,河南理工大学,61,事件,事件是在某个特定时刻发生的事情,它是对引起系统从一个状态转换到另一个状态的外界事件的抽象。 简而言之,事件就是引起系统状态转换的控制信息。,2018/10/7,河南理工大学,62,符号,在状态图中,初态用实心圆表示,终态有一对同心圆(内圆为实心圆)表示。 中间状态用圆角矩形表示,可以用两条水平横线把它分成上、中、下3个部分。 上面部分为状态的名称,这部分是必须有的; 中间部分为状态变量的名字和值,这部分是可选的; 下面部分是活动表,这部分也是可选的。,2018/10/7,河南理工大学,63,活动表的语法格式,事件名(参数表)/动作表达式 其中,“
21、事件名”可以是任何事件的名称。在活动表中经常使用下述3种标准事件:entry,exit和do。entry事件指定进入该状态的动作,exit事件指定退出该状态的动作,而do事件则指定在该状态下的动作。需要时可以为事件指定参数表。活动表中的动作表达式描述应做的具体动作。,2018/10/7,河南理工大学,64,状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。 状态变迁通常是由事件触发的,在这种情况下应在表示状态转换的箭头线上标出触发转换的事件表达式; 如果在箭头线上未标明事件,则表示在源状态的内部活动执行完之后自动触发转换。,2018/10/7,河南理工大学,65,事件表达式语法
22、,事件表达式的语法如下: 事件说明守卫条件/动作表达式 其中,事件说明的语法为:事件名(参数表)。 守卫条件是一个布尔表达式。如果同时使用事件说明和守卫条件,则当且仅当事件发生且布尔表达式为真时,状态转换才发生。如果只有守卫条件没有事件说明,则只要守卫条件为真状态转换就发生。 动作表达式是一个过程表达式,当状态转换开始时执行该表达式。,2018/10/7,河南理工大学,66,图3.7 状态图中使用的主要符号,2018/10/7,河南理工大学,67,图3.8 电话系统的状态图,2018/10/7,河南理工大学,68,2018/10/7,河南理工大学,69,3.7 数据字典,数据字典是为了描述在结
23、构化分析过程中定义的对象的内容,而使用的一种半形式化的工具。 数据字典是所有与系统相关的数据元素的有组织的列表,并且包含了对这些数据元素的精确、严格的定义,从而使得用户和系统分析员双方对输入、输出、存储的成分甚至中间计算结果有共同的理解。,2018/10/7,河南理工大学,70,数据字典,简而言之,数据字典是描述数据的信息的集合,是对系统中使用的所有数据元素的定义的集合。 通常包含信息: 名字数据、控制项、数据存储或外部实体的主要名称。 别名第一项中对象的其他名字。 使用地点与方式使用数据或控制项的处理的列表,以及使用这些对象的方式(例如作为处理的输入,从处理输出,作为数据存储,作为外部实体)
24、。 内容描述描述数据或控制项内容的符号。 补充信息关于数据类型、预置值、限制等的其他信息。,2018/10/7,河南理工大学,71,虽然可以使用自然语言描述由数据元素组成数据的关系,但是为了更加清晰简洁起见,建议采用下列符号: 意思是 等价于(或定义为); 意思是 和(即,连接两个分量); 意思是或(即,从方括弧内列出的若干个分量中选择一个),通常用“”号分开供选择的分量; 意思是重复(即,重复花括弧内的分量); ( )意思是可选(即,圆括弧里的分量可有可无)。,2018/10/7,河南理工大学,72,常常使用上限和下限进一步注释表示重复的花括弧。 一种注释方法是在开括弧的左边用上角标和下角标
25、分别表明重复的上限和下限;另一种注释方法是在开括弧左侧标明重复的下限,在闭括弧的右侧标明重复的上限。,2018/10/7,河南理工大学,73,例如A和1A5含义相同。,5,2018/10/7,河南理工大学,74,3. 小结,传统的软件工程方法学使用结构化分析技术,完成分析用户需求的工作。需求分析是发现、求精、建模、规格说明和复审的过程。,2018/10/7,河南理工大学,75,需求分析的第一步是了解用户当前所处的情况,发现用户所面临的问题;接下来应该通过与用户交流,对用户的基本需求反复细化,以得出对目标系统的完整、准确和具体的需求。,2018/10/7,河南理工大学,76,为了详尽地了解并正确
26、地理解用户的需求,必须使用适当的技术与用户通信和沟通。访谈是历史悠久的与用户通信的技术,至今仍被系统分析员广泛采用。,2018/10/7,河南理工大学,77,为了促使用户与分析员密切合作共同分析需求,人们研究出一种面向团队的需求收集法,称为“简易的应用规格说明技术”,现在,这种技术已经成为信息系统界使用的主流技术。,2018/10/7,河南理工大学,78,实践表明,快速建立软件原型是最准确、最有效和最强大的需求分析技术。快速原型应该具备的基本特性是“快速”和“容易修改”,因此,必须有适当的软件工具支持快速原型技术。,2018/10/7,河南理工大学,79,通常使用第四代技术、可重用的软件构件及
27、形式化规格说明与原型环境等工具,快速地构建和修改原型。,2018/10/7,河南理工大学,80,为了更好地理解问题,人们常常采用建立模型的方法,结构化分析实质上就是一种建模活动,通常建立数据模型、功能模型和行为模型。在需求分析阶段建立起来的模型,在软件开发过程中有许多重要作用。,2018/10/7,河南理工大学,81,模型能帮助分析员更好地理解软件系统的信息、功能和行为,从而使得需求分析工作更容易完成,使需求分析的结果更系统化。,2018/10/7,河南理工大学,82,模型是复审需求分析成果时的焦点,因此,也成为验证规格说明的完整性、一致性和准确性的重要依据。,2018/10/7,河南理工大学
28、,83,模型是设计的基础,为设计者提供了软件的实质性表示,通过设计工作将把这些表示转化成软件实现。,2018/10/7,河南理工大学,84,除了创建分析模型之外,在需求分析阶段还应该写出软件需求规格说明,经过认真评审并得到用户确认之后,作为这个阶段的最终成果。,2018/10/7,河南理工大学,85,通常,使用实体关系图来建立数据模型,读者应该掌握这种图形的基本符号,能够正确地使用这些符号建立软件系统的数据模型。,2018/10/7,河南理工大学,86,数据流图是描绘信息流和数据从输入移动到输出的过程中所经受的变换的图形化技术。可以在任何抽象层次上使用数据流图来表示信息处理系统或软件。,201
29、8/10/7,河南理工大学,87,它是分析员与用户之间通信、沟通的有效工具,也是进行软件设计的极好出发点。,2018/10/7,河南理工大学,88,由于结构化分析通常主要关注目标系统应该完成的逻辑功能,而数据流图提供了功能建模的基本机制,因此,数据流图是结构化分析过程中使用的最主要的建模工具。,2018/10/7,河南理工大学,89,应该熟练掌握数据流图的基本符号,并能正确地使用这些符号建立目标系统的功能模型。,2018/10/7,河南理工大学,90,状态转换图通过描绘系统的状态及引起系统状态转换的事件,表示系统的行为,从而提供了行为建模的机制。,2018/10/7,河南理工大学,91,数据字
30、典描述在数据模型、功能模型和行为模型中出现的数据对象和控制信息的特性,给出这些对象的精确定义。,2018/10/7,河南理工大学,92,因此,数据字典成为把三种分析模型粘合在一起的“粘合剂”,是分析模型的“核心”。,2018/10/7,河南理工大学,93,在开发大型软件系统的过程中,数据字典的规模和复杂程度都迅速增加,通常需要使用CASE工具来创建和维护数据字典。,2018/10/7,河南理工大学,94,习题,2018/10/7,河南理工大学,95,3-5 复印机的工作过程大致如下:未接到复印命令时处于闲置状态,一旦接到复印命令则进入复印状态,完成一个复印命令规定的工作后又回到闲置状态,等待下
31、一个复印命令;如果执行复印命令时发现没纸,则进入缺纸状态,发出警告,等待装纸,装满纸后进入闲置状态,准备接收复印命令;如果复印时发生卡纸故障,则进入卡纸状态,发出警告等待维修人员来排除故障,故障排除后回到闲置状态。 请用状态转换图描绘复印机的行为。,作业及解答(第3章),2018/10/7,河南理工大学,96,从问题陈述可知,复印机的状态主要有“闲置”、“复印”、“缺纸”和“卡纸”。引起状态转换的事件主要是“复印命令”、“完成复印命令”、“发现缺纸”、“装满纸”、“发生卡纸故障”和“排除了卡纸故障”。,作业及解答(第3章),2018/10/7,河南理工大学,97,3-6 北京某高校可用的电话号
32、码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。 请用定义数据字典的方法,定义上述的电话号码。,作业及解答(第3章),2018/10/7,河南理工大学,98,电话号码=校内电话号码|校外电话号码 校内电话号码=非零数字+ 3 位数字 /后面继续定义 校外电话号码=本市号码|外地号码 本市号码=数字零+8位数字 外地号码=数字零+3位数字+8位数字 非零数字=1|2|3|4|5|6|7|8|9 数字零0 3位数字3数字3 /3至3个数字 8位数字=非零数字+7位数字 7位数字=7数字7 数字0|1|2|3|4|5|6|7|8|9,作业及解答(第3章),