`
wangdong9451
  • 浏览: 9130 次
  • 来自: 北京
社区版块
存档分类
最新评论

跟着我一起用nodejs做项目——02分析设计阶段(1)

阅读更多

        首先和大家说声对不起,由于本人第一次重头开始做项目,所以期间遇到了好多好多,多种多样,样样都能难道我的问题,在这里还要感谢扬哥的大力援助,让我一瘸一拐的终于走到了又一个革命性的阶段——设计阶段,说来也有些惭愧,之前由于我对基础知识的了解少之甚少,所以造成对好多知识点理解有偏差,所以我从上周四开始,我就每天抽出几个小时的时间,对UML(Unified Model Language)和RUP(Rational Unified Process)的基础知识有了更全新的理解,所以今天(2014年4月2日修改)对之前写的东西进行修改重构,我这里先说一下RUP吧,因为RUP是软件工程的过程,先给大家看一张图片



 RUP中包含了很多非常有效的一些经历过验证的开发方法,其中有六个最佳的有效部署,即迭代开发,需求管理,使用基于构建的体系结构,可视化的软件建模,验证软件的质量,控制软件的变更。图片中的横轴代表了制订开发过程时的时间,体现了过程的动态结构。它以术语周期(cycle)、阶段(phase)、迭代(iteration)和里程碑(milestone)来表达。纵轴表现了过程的静态结构:如何用术语活动(activity)、产物(artifact)、 角色(worker)和工作流(workflow)来描述。我们做的需求分析设计从阶段来说,应该属于初始阶段与细化阶段,从工作流来说应该属于需求工作流与分析设计工作流,我们做软件只要遵守RUP,就可以把大多数风险控制在可控的范围内,并且提高效率,按阶段完成开发任务。

       首先就是结构问题,我为什么总是在这里强调结构,但是有好多有经验的程序员,大概也都了解,结构没有什么特殊的要求,只要能让程序员看明白就行了,但是MDA(模型驱动架构,有不懂的可以谷歌一下)是未来的趋势,所以希望以后建模都能形成一定的格式,这样,到自动生成代码阶段就不会遇到这样或者那样的问题了,所以我希望大家也能按照固定的结构去画图。我是这样设计的结构,首先在上一步的分析中,我们写了分析用例,找到了支持软件运行的几大模块,我将模块作为一个最上层的包(就是一个文件夹),然后将模块下的用例分别作为一个包,在这个包下面去画设计模型。

        说到分析设计建模,无外乎就是把“Somebody do something”的这种模式用一种客户和程序员都能看懂的方式表达出来比如生活中的一些简单的例子“客户取款”、“商家卖东西”,我们做的系统也不例外,拿这个题库管理模块为例,首先要找到系统的使用者,然后使用者能做的什么事,我们姑且将这个疑问放一放,谜底将会在之后的描述中被揭开。

        我们揭晓来了解一些用例分析的注意事项,首先第一点,就是一个用例只能描述一件事,有的人习惯用“万能” 用例,也就是所谓的“上帝用例”,我并不推荐,这样会使人误解的,就好比你去饭店点了“水”,这个水的概念可以是矿泉水,可以是茶水,也可以是饮料,所以你要定位,给我一杯“白开水”。第二点,简单原则,通俗易懂,能简捷准确的说明某项功能,不给别人任何瞎想的空间,我再举一个反面的例子,就好比“两元店”里的宣传语“买啥都两块,两块钱你买不了吃亏,也买不了上当”,但是你进去之后发现,并不是像广告语里说的那样买啥都两块,还有贵一些的物品,第三就是唯一性,每一件事或者每个场景只能出现一次,但是可以使用“引用”的方式进行组合。



             结构图形

        其实对于需求的分析就好比是玩汉诺塔,拼n阶魔方,把n阶通过一定的方法进行降阶、拆解变成n-1阶,最后变成一阶并解决问题,从宏观到微观。

        有时候我们会发现在需求定义的场景中,有一部分场景,他们的工作背景和工作方式都比较类似,彼此之间有着某种特殊的联系,那么这些用例就可以组成一个封闭的区间这就是用例的边界,我们有时候会用参与的角色来区分用例的边界,例如,我们要做的这个题库管理模块,“测评师”可以进行“添加题目”、“删除题目”、“查询题目”、“修改题目”这几个用例就可以看做是一个边界,因为他们都是对题库进行操作。如下图

 所以我们有时候可以把这个边界抽象内聚成一个用例即下图所示,也就是我之前说过的设计用例。当然里面的用例也就是我前面说过的实现用例。

 当然我们根据需求“测评师”可以对“题目分类”进行“增删改查”操作,所以这又是一个边界。

 这时候我们先只考虑“做什么”,等到下一步在研究“怎么做”,先找出“做什么”,才能进行下一步“怎么做”。所以我们做出了下面的设计模型,实现为设计用例,虚线为实现用例。


                            实现的为设计用例,虚线的为实现用例

说完了“做什么”,接下来就是“怎么做”,这里我们使用了一种UML的经典图形Activity(活动图),我这里面所画的图全部都是用EA画的,大家还可以试试Rose,还有VS201*,当然我认为用EA话Activity是最爽的,因为EA中有一个叫做甬道的东西,可以直观的看出参与者和系统之间的交互,活动图说白了,就是把用户和系统进行的交互活动用线穿起来,必须有起始点(这里别忘了,注意一下)。你可以把自己想象成用户,然后怎么操作,系统应该怎么处理我的操作。这样就可以很容易画出下面的活动图。下面的活动图就是对添加分类操作进行的设计。画活动图还有一个重要的因素就是最后要推导出相应的对象(后面构建阶段可以用于数据库表格的建立,还有例如java中的bean对象),这里我们推导出了《题目分类》这样一个对象,同时我们要把推导出的这个对象加入到对象模型中。

这个是题库管理模块中题目分类管理中的添加分类的实现用例的活动图。仅供大家参考,禁止用于商业用途。分析设计建模就先聊到这里,如果大家发现我哪里说得不对,可以尽管留言,我会继续改进的。

  • 大小: 110.6 KB
  • 大小: 252.1 KB
  • 大小: 167.3 KB
  • 大小: 7.7 KB
  • 大小: 155.4 KB
  • 大小: 39.3 KB
  • 大小: 34.4 KB
分享到:
评论

相关推荐

    nodejs:NodeJS示例项目

    节点js NodeJS示例项目

    隔壁孩子10篇博客node入门而且写了一个前后端分离项目,你怎么还在睡觉!!!(五)

    ———————————————————————————————————————————————————————————— —————–今日份复习nodejs—————————- —– Mongodb数据可以介绍 —– ...

    NodeJS入门项目案例(Express+Mysql)

    NodeJS入门项目案例(Express+Mysql)是一个适合初学者的教程,旨在引导你进入Node.js服务端开发的世界。在这个项目中,我们将使用Express框架,一个简洁且强大的Web应用开发框架,以及Mysql,一个流行的开源关系型...

    踏上nodejs的不归路——03阶段性胜利

    标题“踏上nodejs的不归路——03阶段性胜利”暗示了这是一篇关于Node.js学习过程的文章,作者可能在前两部分介绍了基础概念和入门技巧,而在这一阶段,他或她取得了某种进展或者实现了某个功能。由于描述是“NULL”...

    一个完整的nodejs项目

    1. **项目结构分析** 一个完整的Node.js项目通常包括以下部分: - `package.json`:项目配置文件,记录了项目依赖、版本、脚本等信息。 - `node_modules`:存放项目依赖的第三方模块。 - `src`或`app`目录:源...

    Idea 配置前端web nodejs项目

    Idea 配置前端 Web Nodejs 项目 Idea 配置前端 Web Nodejs 项目是指在 IntelliJ IDEA 集成开发环境中配置 Nodejs 项目的步骤。下面我们将详细讲解配置的步骤和相关知识点。 Idea 配置 Nodejs 项目 首先,我们需要...

    毕业设计基于nodejs开发的电商购物商城系统.rar含源码项目

    本框架是基于nodejs express框架二次开发的,本框架包含数据库操作示例... 适合nodejs入门学习或者nodejs开发人员开发中小型web项目。直接在命令窗口运行:npm start,就可启动程序!访问地址:http://127.0.0.1:3000/

    详解nodejs微信公众号开发——1.接入微信公众号

    1.公众平台测试帐号的使用 登录微信公众平台,由于很多开发人员并没有认证的的微信公众号,所以比较折中的方式是使用公众平台测试帐号来测试功能,其优势是能够测试微信公众号的绝大部分功能,不受认证门槛的限制。...

    基于Nodejs的定制化流程引擎设计与实现

    大型企业的业务流程因每个单位或部门的工作性质而或多或少有差异,因此流程管理也成为难题,本设计实现开发人员在程序开发阶段将流程引擎与业务系统结合,业务管理人员不需要开发人员的参与下定制业务流程。技术以...

    nodejs项目之网上书城设计与实现(源码+LW+PPT).zip

    nodejs项目之网上书城设计与实现(源码+LW+PPT) 系统的功能分为管理员和用户两个部分,系统的主要功能包括首页、个人中心、用户管理、图书信息管理、类型管理、系统管理、订单管理等内容。本系统是针对已注册登录的...

    NodeJS——服务器端JavaScript运行环境.pdf

    在技术发展的道路上,NodeJS 的出现带来了很多的可能性和挑战,如如何更好地使用 NodeJS 构建高性能的服务器应用程序、如何更好地使用 NodeJS 结合其他技术等。NodeJS 的出现为开发者提供了一个新的选择项和机会,...

    (基于nodejs的项目)学院会议纪要管理系统 (源码+说明+演示视频)

    (基于nodejs的项目)学院会议纪要管理系统 (源码+说明+演示视频)(基于nodejs的项目)学院会议纪要管理系统 (源码+说明+演示视频)(基于nodejs的项目)学院会议纪要管理系统 (源码+说明+演示视频)(基于nodejs的项目)学院...

    基于vue-nodejs的教务管理系统源码+数据库+毕业设计.zip

    基于vue-nodejs的教务管理系统源码+数据库+毕业设计,已获老师指导并通过的高分项目 项目安装 1、下载node.js 2、检查是否下载成功 node -v 3、npm i @vue/cli -g 4、前后端分别运行: npm install 前端代码运行 ...

    详解webpack打包nodejs项目(前端代码)

    我的项目情况是这样的:用node.js做后台,ejs做模板引擎(即整个页面是一个ejs文件)由node.js将数据渲染完成后,再将完整页面返回给用户。 那么这样做会遇到的问题: 1. 本项目没有html页面,ejs的作用也不是引入...

    nodejs设计模式

    nodejs 设计模式英文版,本书详细解释了node的一些底层知识和设计的方法

    整理的三个nodejs项目

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程,打破了传统的客户端-服务器端的界限。在这个“整理的三个Node.js项目”中,包含的`microblog`、`master`和`chat...

    express搭建nodejs项目源代码

    nodejs基于express框架搭建项目的代码,直接通过127.0.0.1:3000就可以直接访问

    基于vue+nodejs毕业设计-网上书城系统(源码+说明)

    基于vue+nodejs毕业设计-网上书城系统(源码+说明) 【项目技术】 nodejs+vue+mysql+s/b 【实现功能】 通过这个系统能够满足网上书城的管理及用户的网上书城购买功能。系统的主要功能包括:首页、个人中心、用户管理...

    微信小程序+Nodejs项目实战合集

    微信小程序+Nodejs项目实战合集 内含两套完整实战教你全为了解一个小程序的开发流程及步骤

    毕业设计 基于区块链和nodejs的云笔记系统,使用了nodejs和以太坊区块链技术源码+详细文档+全部资料(高分项目).zip

    毕业设计 基于区块链和nodejs的云笔记系统,使用了nodejs和以太坊区块链技术源码+详细文档+全部资料(高分项目).zip毕业设计 基于区块链和nodejs的云笔记系统,使用了nodejs和以太坊区块链技术源码+详细文档+全部...

Global site tag (gtag.js) - Google Analytics