您好,欢迎访问三七文档
第5章需求建模软件工程主要内容•需求分析•分析建模的方法•数据建模的方法•面向对象的分析•基于场景建模•面向流建模•基于类的建模软件工程5.1需求分析•需求分析产生软件操作特征的规格说明,指明软件和其他系统元素的接口,建立软件必须满足的约束。•分析时回答“做什么”,设计时回答“怎么做”。软件工程5.1.1整体目标和原理•三个目标:(1)描述客户需要什么(2)为软件设计奠定基础(3)定义在软件完成后可以被确认的一组需求系统描述分析模型设计模型图7-1分析模型与其它过程的关系软件工程5.1.2分析的经验原则•模型的抽象度高于设计,不要太多细节•分析模型的细致度要高于系统描述级•关于基础结构和其他非功能性的模型应推延到设计阶段再考虑•应尽量使模型的不同部分独立•确认模型充分考虑到了各方面的利益•尽量简洁软件工程5.1.3域分析•分析模型通常在特定领域内的很多应用重复发生•不同领域的要求和工作千差万别,软件实现起来各不相同。但是,往往还是能在其间找到一些共同的东西。•域分析的目标:查找这些共同点,创造能复用的东西。软件工程5.1.3域分析•域分析:软件域分析师识别、分析和详细说明来自某个特定应用领域的公共需求,特别是那些在该应用领域内被多个项目重复使用的……[面向对象的域分析是]在某个特定的应用领域内,根据通用的对象、类、部件和框架,识别、分析和详细说明公共的、可复用的能力软件工程图域分析过程的输入和输出软件工程5.2分析建模的方法1.结构化分析:–着重考虑数据和处理。2.面向对象分析:–对各种对象加以研究,包括其对应的数据和处理。–关注于定义类和影响客户需求的类之间的协作方式软件工程5.2分析建模的方法(续)图:分析模型的元素分析模型将生成如下图所示元素的派生类:软件工程5.3数据建模概念•分析建模通常开始于数据建模•数据建模的基本要素:数据对象、数据属性,对象之间的关系。•对象/关系对是数据对象的基石。可以使用实体/关系图图形化地表示这些对象/关系对软件工程5.3数据建模概念(续)•实体-联系图(Entity-RelationshipApproach,ERD)–是按照用户的观点对数据建立的模型–数据模型包括三种互相关联的信息:数据对象,描述对象的属性,描述对象间相互连接的关系。–不涉及数据世界的数据结构、存取路径、存取效率等问题。它可以转换成数据库中的数据模型。软件工程5.3数据建模概念(续)•数据对象:–是对软件必须理解的复合信息的抽象。–所谓复合信息是指具有一系列不同性质或属性的事物,仅有单个值的事物(例如,宽度)不是数据对象。–可以由一组属性来定义的实体都可以被认为是数据对象。如:外部实体(例如,产生或使用信息的任何事物);事物(例如,报表);行为(例如,打电话);事件(例如,响警报);角色(例如,教师、学生)–只封装数据,在数据对象在内没有作用于数据的操作的引用软件工程5.3数据建模概念(续)•属性–属性定义了数据对象的性质。必须把一个或多个属性定义为“标识符”,也就是说,当我们希望找到数据对象的一个实例时,用标识符属性作为“关键字”(通常简称为“键”)。软件工程5.3数据建模概念(续)•联系/关系–数据对象彼此之间相互连接的方式称为联系,也称为关系E-R图中表示实体联系的符号软件工程举例•例:在教学管理中,一个教师可以教零门、一门或多门课程,每位学生也需要学习几门课程。因此,教学管理中涉及的对象(实体)有学生、教师和课程。软件工程举例解答:用E-R图描述它们之间的联系,得下图。其中,学生与课程是多对多的联系,而教师与课程的联系是零、一对多。软件工程进一步,要确定属性。例如,1.学生具有学号、姓名、性别、年龄、专业(其它略)等属性;2.课程具有课程号、课程名、学分、学时数等属性;3.教师具有职工号、姓名、年龄、职称等属性;此外,学生通过学号、分数与课程发生联系。如此可得教学实体模型。E-R方法软件工程教学E-R图软件工程5.4面向对象的分析•面向对象(Object-oriented,OO)的目的是定义与即将解决的问题相关的所有类(以及与其相关的关系与行为),为实现这点,必须完成如下工作:–在客户和软件工程师之间必须对基本的用户需求进行交流。–确定类(定义属性、方法)–定义类的层次结构–表现对象之间的关系–为对象行为建模–重复上述步骤,直至建模完成软件工程5.4.1面向对象分析的基本过程•面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。–通常,面向对象分析过程从分析陈述用户需求的文件开始。但是,不应该认为需求陈述是一成不变的,而应该把它作为细化和完善实际需求的基础。–接下来,系统分析员应该深入理解用户需求,抽象出目标系统的本质属性,并用模型准确地表示出来软件工程•面向对象建模得到的模型包含对象的三个要素:–静态结构(对象模型)–交互次序(动态模型)–数据变换(功能模型)三个子模型与五个层次软件工程三个子模型与五个层次•解决的问题不同,这三个子模型的重要程度也不同:–几乎解决任何一个问题,都需要从客观世界实体及实体间相互关系抽象出极有价值的对象模型;–当问题涉及交互作用和时序时(例如,用户界面及过程控制等),动态模型是重要的;–解决运算量很大的问题(例如,高级语言编译、科学与工程计算等),则涉及重要的功能模型。–动态模型和功能模型中都包含了对象模型中的操作(即服务或方法)。软件工程复杂问题(大型系统)的对象模型由下述五个层次组成:三个子模型与五个层次在概念上,这5个层次是整张模型的5张水平切片软件工程•面向对象分析大体上按照下列顺序进行:寻找类一&一对象,识别结构,识别主题,定义属性,建立动态模型,建立功能模型,定义服务。•但是分析不可能严格地按照预定顺序进行,大型、复杂系统的模型需要反复构造多遍才能建成。•通常,先构造出模型的子集,然后再逐渐扩充,直到完全、充分地理解了整个问题,才能最终把模型建立起来。三个子模型与五个层次软件工程5.4.2需求陈述•书写要点–通常,需求陈述的内容包括:•问题范围•功能需求•性能需求•应用环境及假设条件等。总之,需求陈述应该阐明“做什么”而不是“怎样做”。软件工程5.4.2需求陈述(续)•需求陈述注意事项:–应该避免对设计策略施加过多的约束,也不要描述系统的内部结构,因为这样做将限制实现的灵活性–对系统性能及系统与外界环境交互协议的描述,是合适的需求–对采用的软件工程标准、模块构造准则,将来可能做的扩充以及可维护性要求等方面的描述,也是适当的需求。软件工程•例子自动取款机(ATM)系统5.4.2需求陈述(续)软件工程下面陈述对ATM系统的需求:5.4.2需求陈述(续)某银行拟开发一个自动取款机系统,它是一个由自动取款机、中央计算机、分行计算机及柜员终端组成的网络系统。ATM和中央计算机由总行投资购买。总行拥有多台ATM,分别设在全市各主要街道上。分行负责提供分行计算机和柜员终端。柜员终端设在分行营业厅及分行下属的各个储蓄所内。该系统的软件开发成本由各个分行分摊。银行柜员使用柜员终端处理储户提交的储蓄事务。储户可以用现金或支票向自己拥有的某个账户内存款或开新账户。储户也可以从自己的账户中取款。通常,一个储户可能拥有多个账户。柜员负责把储户提交的存款或取款事务输进柜员终端,接收储户交来的现金或支票,或付给储户现金。柜员终端与相应的分行计算机通信,分行计算机具体处理针对某个账户的事务并且维护账户。软件工程拥有银行账户的储户有权申请领取现金兑换卡。使用现金兑换卡可以通过ATM访问自己的账户。目前仅限于用现金兑换卡在ATM上提取现金(即取款),或查询有关自己账户的信息(例如,某个指定账户上的余额)。将来可能还要求使用ATM办理转账、存款等事务。所谓现金兑换卡就是一张特制的磁卡,上面有分行代码和卡号。分行代码唯一标识总行下属的一个分行,卡号确定了这张卡可以访问哪些账户。通常,一张卡可以访问储户的若干个账户,但是不一定能访问这个储户的全部账户。每张现金兑换卡仅属于一个储户所有,但是,同一张卡可能有多个副本,因此,必须考虑同时在若干台ATM上使用同样的现金兑换卡的可能性。也就是说,系统应该能够处理并发的访问。5.4.2需求陈述(续)软件工程当用户把现金兑换卡插入ATM之后,ATM就与用户交互,以获取有关这次事务的信息,并与中央计算机交换关于事务的信息。首先,ATM要求用户输入密码,接下来ATM把从这张卡上读到的信息以及用户输入的密码传给中央计算机,请求中央计算机核对这些信息并处理这次事务。中央计算机根据卡上的分行代码确定这次事务与分行的对应关系,并且委托相应的分行计算机验证用户密码。如果用户输入的密码是正确的,ATM就要求用户选择事务类型(取款、查询等)。当用户选择取款时,ATM请求用户输入取款额。最后,ATM从现金出口吐出现金,并且打印出账单交给用户。5.4.2需求陈述(续)软件工程5.4.3建立对象摸型•面向对象分析的首要工作,是建立问题域的对象模型,因为静态数据结构相对比较稳定•对象模型通常有五个层次。典型的工作步骤是:–首先确定对象类和关联(因为它们影响系统整体结构和解决问题的方法)–对于大型复杂问题还要进一步划分出若干个主题;–然后给类和关联增添属性,以进一步描述它们;–接下来利用适当的继承关系进一步合并和组织类。–而对类中操作的最后确定,则需等到建立了动态模型和功能模型之后。软件工程1.确定类与对象(1)找出候选的类与对象–具体地说,大多数客观事物可分为下述五类:①可感知的物理实体,例如,飞机、汽车、书、房屋等等。②人或组织的角色,例如,医生、教师、雇主、雇员、计算机系、财务处等等。③应该记忆的事件,例如,飞行、演出、访问、交通事故等等。④两个或多个对象的相互作用,通常具有交易或接触的性质,例如,购买、纳税、结婚等等。⑤需要说明的概念,例如,政策、保险政策、版权法等等。5.4.3建立对象摸型(续)软件工程•另一种更简单的找出候选的类与对象的方法:非正式分析–需求陈述为依据,把陈述中的名词作为类与对象的候选者,用形容词作为确定属性的线索,把动词作为服务(操作)的候选者。–认真阅读上面给出的需求陈述,从陈述中找出下列名词,可以把它们作为类与对象的初步的候选者:•银行,自动取款机(ATM),系统,中央计算机,分行计算机,柜员终端,网络,总行,分行,软件,成本,市,街道,营业厅,储蓄所,柜员,储户,现金,支票,账户,事务,现金兑换卡,余额,磁卡,分行代码,卡号,用户,副本,信息,密码,类型,取款额,账单,访问。5.4.3建立对象摸型(续)软件工程(2)筛选出正确的类与对象–接下来应该严格考察每个候选对象,从中去掉不正确的或不必要的,仅保留确实应该记录其信息或需要其提供服务的那些对象。5.4.3建立对象摸型(续)软件工程确定类与对象•筛选时主要依据下列标准,删除不正确或不必要的类与对象:①冗余•如果两个类表达了同样的信息,则应该保留在此问题域中最富于描述力的名称。•以ATM系统为例,应该去掉“用户”、“磁卡”、“副本”等冗余的类,仅保留“储户”和“现金兑换卡”这两个类。软件工程②无关–仅需要把与本问题密切相关的类与对象放进目标系统中。–以ATM系统为例,因此,应该去掉候选类“成本”、“市”、“街道”、“营业厅”和“储蓄所”。确定类与对象软件工程确定类与对象③笼统–在需求陈述中常常使用一些笼统的、泛指的名词,虽然在初步分析时把它们作为候选的类与对象列出来了,但是,要么系统无须记忆有关它们的信息,要么在需求陈述中有更明确更具体的名词对应它们所暗示的事务,因此,通常把这些笼统的或模糊的类去掉。–以ATM系统为例,应该去掉“银行”、“网络”、“系统”、“软件”、“信息”、“访问”等候选类。软件工程④属性–在需求陈述中有些名词实际上描述的是其他对象的属性,应该把这些名词从候选类与对象中去掉。–在ATM系统的例子中,“现金”、“支票”、“取款额”、“账单”、“余额”、“分行代码”、“卡号”、“密码”、“类型”等,实际上都应该作为属性对待。确定类与对象软件工程确定类与对象⑤操作–在需求陈
本文标题:软件工程-需求建模
链接地址:https://www.777doc.com/doc-7251291 .html