要给一个名词下定义,是一件很严肃和严谨的事情,因此,要给出需求工程准确的定义是不太现实的。本书从方法论推进和实施的角度出发,提出了本书对需求工程的理解和定义。需求工程是面向业务全局、系统顶层的一种着眼于软件过程全过程的工程,是将客户业务作为内部研究对象、将软件工程实施作为外部研究对象的工程。之后,书中提到的需求工程即以此定义为准。......
2023-11-17
面向对象(Object Oriented,简称OO)方法将世界看成一个个相互独立的对象,相互之间并无因果关系。对象之间的交互必须有某种条件的约束或触发才会按照一定的规律进行信息的传递。用面向对象的观点来看,一个多细胞生物,由无数个细胞构成,看上去就是一个能够正常工作的系统,但是单个细胞之间的联系并非那么紧密,它们之间通过一定的连接,独立的细胞就能够依据某个规律结合在一起,具备一定的性质和功能,然后再进行组合又可以构成更为复杂的对象,这就是面向对象的基本原理。
面向对象方法应用在软件开发领域即是强调面向客观世界或问题域中的事物,主要解决基本的适应和演化问题,因此,方法论的建模过程也更多从面向对象的视角进行。那么,我们就从面向对象的基本概念,使用过程中遇到的问题等方面具体进行讨论。
一个对象是现实世界中物理或概念的实体,它提供了我们对现实世界的理解,例如一辆汽车、一扇门、一个账户、一次交易等。再进一步说,一辆汽车,有着漂亮的外壳,而它的内部就像一个黑盒子,这就是封装;再例如机动车可以向下再次划分为轿车、卡车、面包车等,而这些划分的子类都具有父辈全部的特性,这就是继承;同样是轿车,从品牌方面又可以分为大众、别克、现代、吉利等,虽然同属轿车,但背后却有不同的对象,可以有着不同的发动机、不同的变速箱、不同的机动特点,这就是多态。
如图2-2所示,我们从微观角度出发,汽车的每个零件都是一个对象,于是我们可以发现内部的每个零件其实是个“近视”,它不知道也不清楚它所处的大环境,也不清楚它的工作会对整体产生多大的影响,每个零件唯一能确定的就是与它直接联系的其他零件,它们之间相互“依赖”,并通过一定的渠道保持沟通交流,即“耦合”。同时,每个零件又都有自己专属的特性,而且这些特性不允许其他对象访问,这就是属性。而其他对象只能通过它提供的一些固定接口访问,这就是“方法”。当然从图2-2也可以看出,某些零件,例如螺丝、螺帽等是可以通用的,这也体现了面向对象的另外一个重要特性:复用。
图2-2 图说对象(www.chuimin.cn)
还是汽车的示例,从另外一个角度来看,零件可以按照一定的规则组装成发动机,也可以按照另外的规则组装成变速箱。然后,还可以把这些部件再次组装成更大的东西,例如整部小汽车,当然,也可以是一辆挖掘机。这个例子说明了面向对象的另外一个非常重要的特性:抽象及其层次。抽象划分层次的优势就是无论在哪一个层次上,我们在做分析的时候只需要面对有限的复杂度和有限的对象结构,这样就可以专心于当前层次结构的对象及其运行过程;抽象划分层次还可以实现底层零部件的更换不会影响上层结构及其功能,正如发动机驱动皮带的更换并不会影响整车的驾驶。
总之,面向对象把世界看成相互独立的零散的小零件,这些对象本质上是独立的,既独立于过程,也独立于规则。当需要把世界联系起来的时候,对象才会依据某种规则组织起来,完成特定的功能。我们的方法论主要以面向对象为主,但是现实世界如何与对象世界关联起来呢?使用统一建模语言UML,准确地讲UML在一定程度上就是代表着面向对象分析设计的方法,所以,我们将在2.2节将方法论中应用到的UML元素给大家一一介绍。最后,我们用一个案例来判定一下,你是否已经将面向对象方法带入了日常工作中,或者说你的分析习惯是否已经面向对象了?
案例&知识:
如果你的分析习惯是在调研需求时最先弄清楚有多少个业务流程,先画出业务流程图,然后顺藤摸瓜,找出业务流程中每一步骤的参与部门或岗位,弄清楚在这一步参与者所做的事情和填写的表单数据,并关心他们是如何把这份表单传给到下一个环节的。那么很不幸,你还在做面向过程的事情。
如果你的分析习惯是在调研需求时最先弄清楚有多少部门,有多少岗位,然后找到每一个岗位的业务代表,问他们类似这样的问题:你平时都做什么?这件事是谁交办的?做完了你需要通知或传达给谁吗?做这件事情你都需要填写什么表格吗?……那么,恭喜你,你已经学会面向对象方法了!
有关软件需求工程的文章
要给一个名词下定义,是一件很严肃和严谨的事情,因此,要给出需求工程准确的定义是不太现实的。本书从方法论推进和实施的角度出发,提出了本书对需求工程的理解和定义。需求工程是面向业务全局、系统顶层的一种着眼于软件过程全过程的工程,是将客户业务作为内部研究对象、将软件工程实施作为外部研究对象的工程。之后,书中提到的需求工程即以此定义为准。......
2023-11-17
需求工程的过程分为需求准备、需求获取、业务建模、系统建模等阶段,中间各环节通过关联规则体系串接起来以达到跟踪监控整体需求工程进度的目的。......
2023-11-17
综合管理部和综合管理部主管为代理(泛化)关系。虽然业务角色不能够逾越或改变涉众期望,但是能够自行决定实现涉众期望的过程。反之,综合管理部主管参与薪资表的审批等系统操作,故综合管理部主管可以转化为系统用户。......
2023-11-17
在方法论中原型界面就是原型,并不代表系统的最终实现,可以使用草图来表示。图3-18审核薪资原型界面同时配合原型界面的使用以及为设计人员提供关键元素,每个原型界面都有对应的用例脚本展示,主要以边界类、业务类及实体类的划分为依据,按照MVC的主要思想将设计的关键要素表达出来。......
2023-11-17
业务目标又称为业务前景,是对要建设的系统的展望。业务目标非常重要,在定义边界一章中会看到,边界正是基于业务目标来定义的。投资构建系统的原因,以及这样做利益相关者会从业务中得到什么,这些都可帮助确定业务目标。业务目标不仅仅是要解决问题,还要提供业务上的效益。业务目标大部分情况下是由客户提出,当然也可以由开发方整理得出。在初步了解业务目标以后,接下来的工作就是找出项目范围内的利益相关者。......
2023-11-17
快速而不完美的建模在我们的方法论中作为一种贯彻思想,通过快速为过程建模来理解当前的工作,并与客户达成一致意见。图2-4白板建模使用白板对业务过程建模,一个明显的优势就是方便擦除,便于讨论和修改调整,方便RA人员和客户共同参与建模过程。其实当RA和客户在进行业务碰撞的时候,发现有些业务是可以简化的,或者发现有些业务之间改条连线会更加高效。......
2023-11-17
为了真正理解客户的需求并给出满足这些需求的解决方案,必须理解真实世界中的问题。这些工作包括业务背景调查、业务前景分析、业务可行性分析、技术可行性分析等。在统一过程中,以上内容汇集到被称为《前景》的文档中。业务前景和客户期望所描述的内容与UML分析技术关系密切,严格来说,这些正是UML分析的开始。这几部分基本囊括了薪酬管理系统的主要业务范围,读者可稍作了解。......
2023-11-17
相关推荐