软件工程与 UML 建模
文章平均质量分 96
讲解软件工程和 UML 统一建模语言的实用知识
smilejiasmile
这个作者很懒,什么都没留下…
展开
-
认识 UML 类关系——依赖、关联、聚合、组合、泛化
文章目录1.依赖(Dependency)2.关联(Association)3.聚合(Aggregation)4.组合(复合,Composition)5.泛化(Generalization)6.小结参考文献在学习面向对象设计时,类关系涉及依赖、关联、聚合、组合和泛化这五种关系,耦合度依次递增。关于耦合度,可以简单地理解为当一个类发生变更时,对其他类造成的影响程度,影响越小则耦合度越弱,影响越大耦合度越强。下面根据个人理解,尝试讲解这五种类关系。1.依赖(Depend转载 2021-08-06 11:09:46 · 2575 阅读 · 0 评论 -
深入浅出UML类图
在UML 2.0的13种图形中,类图是使用频率最高的UML图之一。Martin Fowler在其著作《UML Distilled: A Brief Guide to the Standard Object Modeling Language, Third Edition》(《UML精粹:标准对象建模语言简明指南(第3版)》)中有这么一段:“If someone were to come up to you in a dark alley and say, 'Psst, wanna see a UML dia转载 2021-02-22 16:53:20 · 1217 阅读 · 0 评论 -
防范因编写代码产生的系统漏洞
用于互联网服务的系统安全性是至关重要的。在过去的2018年,发生了多起用户信息泄密事件,其中不乏著名的互联网公司,攻击者都是利用系统漏洞获取用户的账号和密码,从而进一步获取用户的信息。什么是系统漏洞?系统漏洞是指系统存在的缺陷,攻击者可以利用系统的这些缺陷来进入系统内部,获取...转载 2020-03-02 17:33:34 · 499 阅读 · 0 评论 -
轻松看懂和绘制数据流程图
数据流程图是比较通用的软件建模模型,它可用于需求分析阶段和系统设计阶段的建模。数据流程图被很多程序员使用,是因为它简单易懂,从事项目的开发人员只要通过查看流程图就能明白系统紧密结合的各个部分。数据流程图很容易被人理解是因为它只有几个图形符号,人们只需稍微的学习就可以读懂和理解数据流程图。数据流程图的主要图形符号见下表。表格 1 数据流程图主要图形符号下图是数据流程图的一个例子,表...转载 2020-03-02 17:08:40 · 11087 阅读 · 3 评论 -
分析阶段的类图和设计阶段的类图有什么区别?
设计类图是类图的一个变体,类图表示一系列的类以及它们之间的关系。因为分析阶段是一个发现需求的过程,所以我们一般很少关心类的属性和方法的细节。在面向对象设计中,类的属性有一个特征叫可见性,它表示其它类是否可以访问该属性。类的每个属性都有一个类型定义,例如字符串或数值类型。在详细设计阶段,我们需要细化这些属性,并且定义方法的名称、返回值以及传入的参数。因此,虽然分析阶段和设计阶段的类图很相似,但设计阶...转载 2020-03-02 17:06:30 · 8253 阅读 · 0 评论 -
如何理解面向对象建模语言UML?
我们在设计一个程序算法时,经常用流程图来绘制,绘制流程图的目的一是理顺我们自己的思路,看看算法还有什么缺陷或问题;二是出于沟通和交流的目的,当其他人需要理解我们的算法时,直接看流程图就可以了,比你向对方叙述简单多了。在绘制流程图,我们需要遵循流程图的绘制规则,用其规定的图标和线条进行绘制,遵循流程图的绘制规则的目的是大家用同一种语言去描述算法,都能看的明白,如果你用外星人语言绘制流程图,估计也只有...转载 2020-03-02 17:04:17 · 568 阅读 · 0 评论 -
系统架构——掌握和使用UML包图模型
学过Java编程的都知道什么是Package,Package在Java编程语言中是一种包机制,这种包机制可以把若干个程序模块或包(在Java语言中,单个的程序模块也称为类)组织起来,构成一个具有层次结构的子系统。Package实际上对应了系统的层次结构。UML的包图模型类似Package结构,不同的是UML包图模型仅描述Package高层次的模块间关系,对于较低层的模块一般不涉及,这些较低层的...转载 2020-03-02 17:03:06 · 6984 阅读 · 0 评论 -
系统架构设计——使用结构图分解复杂系统
我们在进行系统架构设计时,往往将一个系统分解成若干个子系统,每个子系统又分解为若干个程序模块,分解后的子系统和程序模块都会执行一些相对独立的功能,在这里子系统也可以看作是较大的程序模块。分解后的这些子系统和程序模块组成了系统的一个层次结构。系统的层次结构并没有在前面讨论的系统流程图中反映出来,这就需要另外一种设计模型来反映系统的层次结构,这就是我们将要讨论的系统结构图。系统结构图也称为层次...转载 2020-03-02 16:59:12 · 12510 阅读 · 0 评论 -
系统架构——系统流程图和程序流程图的区别
我们在生活中见过各种各样的流程图,在车站见过购票流程图,在单位见过财务报销流程图,在家里见过电器故障排除图等等。这些图都有一个共同的特点,就是指导你一步步如何进行下一步操作,你只要按照流程图一步步执行就能顺利地买到车票、报销你的出差费用、排除电器故障,这就是流程图的作用。前面说的是生活中的流程图。现在回到我们的编程世界,我们经常看到的流程图是程序流程图。在项目任务书、需求规格说明书、系统设计说...转载 2020-03-02 16:55:44 · 23577 阅读 · 0 评论 -
需求分析——掌握和使用UML建模语言顺序图模型
在前面的文章中,我们建立了类图模型,类图模型描述了系统的类及类之间的关系。类图模型也称为系统的静态结构,因此从类图模型中我们还看不到业务的处理过程以及类与类交互的信息,在UML建模语言中,这些信息是通过顺序图来描述的。顺序图用于描述在业务处理过程中类之间的交互顺序,这些交互顺序是在场景或用例的信息流中发生的。由于描述的是动态行为,顺序图中类被称为对象,也就是实例化后的类。在顺序图中共...转载 2020-03-02 16:42:46 · 1136 阅读 · 0 评论 -
需求分析——使用类图建模
在讨论类图之前,我们先看下面的一段文字。“人脉项目的主要业务是用户通过人脉系统管理名片。用户可以通过电脑浏览器添加名片,添加的名片存储到数据库,也可以编辑和删除名片,当用户需要时可以随时查询和浏览名片。”上面的这段文字介绍了人脉项目的主要业务。由于业务相对简单,我们能够很快理解这类业务。但对一些业务比较复杂的系统来说,理解起来就不那么容易了,如果我们能够梳理业务中的关键概念及它们之间的关系...转载 2020-03-02 16:39:11 · 1558 阅读 · 0 评论 -
需求分析——掌握UML建模语言的用例图
在前面的课程中,我们主要讨论了人脉V1.0系统的角色及角色间的关系,也讨论了角色的属性和行为。在这节课中,我们将使用UML建模语言的用例图对人脉V1.0系统的角色及角色行为建立系统功能模型。在建模之前,先简单介绍一下什么是UML建模语言。UML是面向对象开发的建模语言,由OMG(OMG是一个世界性的计算机标准协会),该协会致力于发展和传播面向对象系统,OMG在1997年公布了UML建...转载 2020-03-02 16:35:03 · 1500 阅读 · 0 评论 -
需求分析——识别系统需求中的三类事件
在前面的课程中,我们了解了什么是事件?事件是可以描述的、值得记录的在某一特定时间和地点发生的事情,当事件发生时,系统要做出响应。系统可能会响应外部发生的事件,也可能会响应在系统内部发生的事件,也可能在指定的时间段系统要做出响应。我们把系统响应外部发生的事件称为外部事件;把系统响应内部发生的事件称为状态事件;把系统在指定时间段响应的事件称为临时事件。图1 影响电话订餐系...转载 2020-03-02 16:29:00 · 1550 阅读 · 0 评论 -
系统分析——以事件开始构建系统模型
当为一个系统定义需求时,先调查清楚能对该系统产生影响的事件是十分有用的。通过询问系统相关者,找到对系统影响的事件。这样系统分析员就可以把注意力集中在外部环境上,并把整个系统看成一个黑盒,从高层次上全面考察系统,而不是集中在系统内部工作上。既然事件对系统分析如此重要,就有必要对事件有个深入了解。我们来看个关于事件的例子。家中用的空调都是自动调节温度的,用于调节温度的重要部件是温度控制器,它可...转载 2020-03-02 16:24:46 · 650 阅读 · 0 评论 -
需求分析——调研需求时如何调查系统相关者?
人脉系统V1.0由牛工负责开发。在调查系统需求阶段,他要做的第一件事是阅读人脉系统V1.0需求范围说明书,了解人脉系统V1.0要实现的功能,确定要调查的工作。虽然人脉系统V1.0功能相对简单,无需调查系统相关者。牛工仍然决定要进行系统相关者的调查工作,他把系统相关者分为两类。一类是客户,也就是决定投资开发该系统的人或机构,他需要从客户方了解新系统的背景(为什么要开发这个系统?)...转载 2020-03-02 16:21:53 · 303 阅读 · 0 评论 -
需求分析——需求调研的主要步骤及方法
不管是公司安排的软件项目,还是合同项目。我们拿到一个新的软件项目,首先要做的事情就是根据现有的人力资源、技术能力、项目工期合理地制定项目管理计划。如果现有的人力资源或技术能力不能满足项目工期要求,则需要增加人员或提高人员的技术能力。项目管理计划内容可多可少,主要以自己能够管控项目开发为原则。一般说来,项目管理计划包括项目组织架构、工作分解结构、进度管理计划、需求调研计划、配置管理计划、质量管理...转载 2020-03-02 16:16:57 · 11486 阅读 · 0 评论 -
项目需求分析——如何理解和识别系统需求?
在前面的课程中,已经了解了结构化开发方法和面向对象的开发方法,并且学习了分析和设计阶段的活动以及这些阶段的每一项活动的目标。从这节课开始,我们将结合人脉项目,讨论在分析阶段使用的技巧及有关任务。分析阶段有两个关键任务,分别是识别系统需求和根据系统需求为系统建立需求模型。一般说来,负责开发软件项目的项目经理或系统分析员,需要尽可能地了解软件项目涉及的业务活动细节,这是因为只有熟悉了项目的业务活动...转载 2020-03-02 16:08:06 · 3074 阅读 · 0 评论 -
如何进行系统的架构设计?
一个软件项目在需求确定后,就可以开始系统的架构设计了。架构设计不同于编写代码,需要遵循严格的语法和编程规范。它没有规范可遵循,存在即合理,适合系统开发和运行的架构就是最合理的系统架构。系统的架构设计是在业务需求已经清晰的前提下进行的,假定在系统需求分析阶段已经确定了系统的功能和业务范围,也明确了系统运营需求。在上述需求还没有确定的情况下,不适宜开展系统的架构设计,需要回到需求分析阶段完善上述需...转载 2020-03-02 17:30:51 · 19551 阅读 · 0 评论 -
软件工程——快速掌握面向对象开发方法
在《软件工程——快速掌握结构化开发方法》一文中,我们讲述了如何用结构化开发方法开发一个简单的项目案例,并重点讨论了在结构化分析和结构化设计阶段使用事件、数据流图模型、数据字典、ER模型、结构图模型完成项目的分析与设计的整个过程。在结构化开发方法中,利用数据流图模型对系统进行层层分解,将一个大的系统分解为多个程序模块,数据流图中需要存储的信息通过ER图建立数据模型,其功能模型和数据模型是分离的,...转载 2020-03-02 17:28:33 · 989 阅读 · 0 评论 -
软件工程——快速掌握结构化开发方法
一个案例小王在一家IT公司担任项目经理,主要负责IT项目的开发。公司老板找到小王,要求小王开发一个名片自动识别APP产品,人们用手机扫描一下名片,名片上的信息就能自动识别并存储起来,当然需要使用者登录APP才可以。老板要求小王带领团队尽快完成名片自动识别APP产品的系统分析、设计和编码,让产品早日上线。小王决定使用他熟悉的结构化开发方法来开发该产品。在后面的叙述中,名片自动识别APP产品也称为...转载 2020-03-02 17:24:06 · 2833 阅读 · 0 评论 -
软件工程——认识方法、模型、工具和技术
做任何事情都要讲究一个方法,好的方法可以起到事半功倍的效果,提高我们的做事效率。在我们身边,有的人做事效率很高,处理事情井井有条;有的人做事效率就比较低下,处理事情拖拖拉拉。做事效率低下的人不代表他们的工作能力就差,而是没有一个好的做事方法,来指导他们如何去处理各类事情。在20世纪初,伯利恒钢铁公司的创始人查尔斯·施瓦布为了提高团队的工作效率,约见了当时颇有名望的工作效率顾问艾维·李,谋求提高...转载 2020-03-02 17:18:59 · 1349 阅读 · 0 评论