中华MBA网校
新用户注册 登录
  首页 初中层管理者    公司战略  |  市场营销  |  人力资源  |  企业经营  |  财务金融  |  项目管理  |  信息科技  |  团队建设  |  运营管理  |  事业规划
   当前位置:首页 ->> 初中层管理者 ->> 信息科技
如何进行需求分析建模设计(怎样更好的为需求建模呢)
来自:    时间:2023年   阅读1211次     【
 如果说项目开发是建造一座大楼, 那么类和实例是组成这座大楼的钢筋和混凝土。 这个说法被用烂了,但是对于我们coder来说这个例子很有说服力, 我就在这里直接引用啦。 想要学好编程, 不想做一个只会撸代码的底层码农, 面向对象编程必须有很好的掌握, 但是要掌握面向对象,就必须掌握类这个基本面向对象单元的使用。这边文章的目的也在于此,一起和小伙伴们说说类与实例。

在阐述这边文章的主题前, 我们先复习一下面向对象中“类是什么/实例又是什么”。以及他们在静态和运行状态下有啥不同呢?

类: 是描述现实事物的抽象, 通过其有的事物拥有的特征集合来描述一类事物(静态)。

实例: 是类实例化后指代的特定个体,只存在于内存中(运行态)。

当我们用C++实现面向对象编程时, 不同的类文件,最后在编译器和连接器链接后, 类的方法,static变量等等都会存放在text,data,bss段中; 但是当C++运行时, 通过new得到的实例和实际代码段的关系。

实例化图

看完这张图, 大家可以思考一下如下问题:

1. 当类实例化后,我们通过sizeof获取实例在内存的大小是多少?

2. 当类实例在多线程运行时,如果实例中有static变量, 为啥必须加锁做线程安全保护? 为啥普通的变量是安全的?

java,python等等其他语言也存在类似结构对应,只是表达形式上有所差别。对此不作解释。 以上两个问题,大家可以多多思考, 留待后面解释。

上面解释了类和实例的关系。 类作为面向对象的基础单元, 我们在开始任何需求时,应该最先需要剖析类,然后才是类和类的关系,按照这个步骤才能清晰可见的分析清楚需求,编码时也可以将代码放到他该放置的地方,避免重复或者编写无意义代码(多余数据之间的转换等等,看多了此类编程导致的代码冗余,问题多多,都是泪和血的教训呀)。

这篇博文题目是给大家一个好的建模方法(授人以鱼不如授人以渔), 那我们就开始怎么使用类这个面向对象最基础的东东,开始一次真正的需求分析。 先抛出来一个需求:

当前物联网NB-Iot很火, 那我们就用这个开启我们的需求分析之旅: 物联网链接了各种各样的设备(为了方便理解,这里设备就只有家电设备), 我们需求是提供一个平台对这些设备进行管理。比如我们生活中存在的家电设备:

家电设备

这些设备就是一个个独立的事物, 如果我们对其不做抽象,那他其实对应的就是运行的实例, 但是电视,洗衣机等等它们有千千万万,只用一个实例是无法表示的,所以我们抽象成类,来代表一类事物。 但是如果这样的话,我们对这些不能做统一的管理, 而且他们每个设备其实也有一些共有的特征,比如都有开关等等。那我们对他们在做抽象和分离,可以得到如下图(家电设备抽象组合图):


这里我们用了类的各种关系(组合/聚合/泛化等)对家电做了不同层次的抽象分离。 比如通过组合方式,将家电之间共有的特性分离处理来, 然后可以通过这些组合成电视,或者洗衣机,避免代码重复。 为了对各种不同的家电设备集中管理,对它们做了泛化处理,抽象出它们共同的父类设备,可以对有公共特点的我们继承父类设备,做分组等等。 当然对于我们对一组不同的设备做批处理,那我们具有公共能力的抽出接口, 让每个类继承, 使得具有支持批处理的能力。
当然设备最终是需要使用的, 那最直接的就是和我们人发生关系, (任何设备)。 这里的设备代表电视, 可能是洗衣机等等。我们为了方便描述,就只有抽象的设备来替代它们所有啦。 可以简化人与设备的关系。

人和设备

但是现实生活, 并非如此, 所以我们需要继续丰富化它们之间的关系, 可以得到(群组和设备)复杂关系来。

群组和设备

构建真实世界人与设备关系后,我们可以看到人作为类也有组合和泛化过程。 组合到了群组, 泛化群组后会有家庭、企业、工厂、其他社团等等对设备管理关系。 同时关系具体化为拥有、管理、使用、监控等等权限设置,也印出来不同的功能需求。 设备已经具体和抽象了,不做累述。 此时我们可以抽象的类有人,群组, 各种团体, 还有关系,不同权限,和各种功能类等等. 如果这里在对功能展开, 那就回衍生出更多不同的类来组成我们真实世界啦。

除去人与设备的关系, 其实设备和设备也是有关系, 限于篇幅,就不展开啦

设备关系

面向对象编程,强调的是对象, 对象可以映射到我们真实事件的万事万物。而类是对对象的抽象, 也是面向对象编程的基础。因此我们拿到任何需求, 首先分析的是如何处理需求中的真实对象,从对象中抽象得到类, 再次分析对象彼此之间的关系, 这样才能避免不必要的重复,或者才能将复杂事物之间的关系简化,找到真实我们需要解决的关系中来。

另外, 不管程序开发是多么复杂的过程, 都是有简单开始, 开始业务上一台机子就可以解决问题, 当业务量上来简单的事情需要分布在不同的机子上执行, 然后我们开始调整设计的框架,只是将原来单机模式变为分布式模式。如果我们在开始类分解的合理, 那最多是调整一下原来代码中不合理的位置, 大大降低简化开发难度(实际开发过经验得到的经验之谈)。

在文章结尾, 在提出几个问题来几个问题,一起思考下(编写代码时,适当考虑一下扩展,可以让我们现有需求的类更为合理点,但是我们不能因为扩展考虑太多,导致最后完全是意淫的不存在的需求,浪费精力):

1. 需求提出的设备,没有限定数据, 如果需求是要求是少量设备情况下怎么处理合理,如果需求提出规格,需要对1W设备管理,我们有该如何考虑, 如果更多设备我们又该如何考虑怎么实现?

2. 设备如果不仅仅局限于家电, 可能是其他设备(比如是监控器设备, 如果管理成千上万个监控设备;或者是提起采集设备, 又或者是工厂的各类设备等等),我们有该如何考虑?

预告一下题目:认识百度地图/google地图原理---planet地图数据 or 通过编译bootloader,了解gcc是如何编译与链接成.bin文件的。 看官们可以留言选择个题目。

>>浏览全部0条评论
主题:
验证码:
 
内容:
您的IP:18.190.219.65,请注意文明用词
账户:
密码:
注册 找回密码
-:::-学员心声 更多..
mmm123123 说:
    人生当中有四堂课,我们是一定要上的,哪四堂课呢?1、读万卷书2、行万里路3、阅人无数4、名师开悟。
bestme 说:
    听了老师讲的领导力是一门情商修炼专题,让我明白情商对一个领导者有多重要啊
bestme 说:
    平庸的员工是昂贵的,只有优秀的员工才是免费
qwerty 说:
    老师讲如何才能让员工自动自发的去工作,总得来说就是让员工有获得感,给企业创造利润也就是给自己增加收入
qwerty 说:
    听了老师讲解的企业管理方法--拆解后,对如何检查部署的执行力有更高的认识。
-:::-学习卡中心

 

说明:为方便广大学员购买经理人网校课程,特推出经理人网校学习卡(共分30、50、100、200、500元五种面值),每张学习卡都有不同的卡号,学员在购买学习卡后,刮开密码覆盖层,进入经理人网校,注册学员代码和密码、然后用已注册的学员代码和密码登录经理人网校,选择所要学习的课程(也可以在充值后选择)、输入学习卡的卡号和密码(如有多张可依次输入,直到充完为止)、学习卡充值完毕、就用“学习卡支付”支付课程费用、等确认支付成功后,用已注册的学员代码和密码登录经理人网校点击所报课程开始学习。
注意:为保障您的听课安全,请务必通过本网公布的正规渠道购卡并自行注册、充值!

-:::-相关软件下载
 媒体播放器下载  Real播放器下载
 FLASH播放器下载  压缩软件下载
 英语通播放器下载  AC课件播放器下载
 视频解码器下载  绿坝-花季护航
-:::-汇款及联系方式

经理人网、职业经理人证书、经理人资格证、是中国经理人获取各类管理类资格证书最佳学习网络机构!

请扫描微信二维码付款,备注您在网校的用户名,我们会把您的资金充到你的帐户里,

或支付后请加微信:gongpansixiang,通知客服人员.

 

网上书店
MBA考试类
管理经典著作
战略管理类
财务管理类
人力资源类
市场销售类
其它类型
网站关键词  |  关于我们  |  联系我们  |  招商中心  |  学习卡购买说明  |  付款及充值方式  |  帮助中心  |  学员心声
经理人网 www.58guanli.com  COPYRIGHT © 2013 - 版权所有  人人都是管理者-我爱经理人网、58管理、经理人证书、职业经理人、经理人培训、经理人招聘、MBA联考、DBA博士-是中国管理者学习交流的共同家园!

有任何问题请加微信:gongpansixiang,通知客服人员

中国工业和信息化部:湘ICP备19004842号-1  湘公网安备 43011102001727号