Hu Junnan 2018-07-01T11:00:27+00:00 sunny940704247@qq.com 系统分析与设计课程作业9 2018-07-01T15:00:10+00:00 Hu Junnan http://hujunnan.github.io/SDA-HW9 使用 ECB 实现 make reservation 用例的详细设计(包含用例简介,顺序图,类图)

用例简介:用户选择旅店房间类型,填写入住信息(包括入住时间和入住天数)与个人信息,提交订单,获得订单信息

顺序图:

hw9_1

类图:

hw9_2

将逻辑设计类图映射到实际项目框架的包图。用树形结构表述实现的包和类

hw9_3

]]>
系统分析与设计课程FinalReport 2018-07-01T15:00:10+00:00 Hu Junnan http://hujunnan.github.io/SDA-FinalReport final report

author: hjn 15331107

PSP 2.1 统计表

PSP 2.1 Personal Software Process Stages Time/h
Planning 计划 8
- Estimate -估计这个任务需要多少时间 8
Development 开发 68
- Analysis -需求分析(包括学习新技术) 20
- Design Spec -生成设计文档 20
- Design Review -设计复审(和同事审核设计文档) 6
- Coding Standard -代码规范(为目前的开发制定合适的规范) 3
- Design -具体设计 8
- Coding -具体编码 10
- Code Review -代码复审 0
- Test 测试(自我测试,修改代码,提交修改) 1
Report 报告 6
- Test Report 测试报告 3
- Size Measurement 计算工作量 1
- Postmortem & Process Improvement Plan -事后总结,并提出过程改进计划 2

个人GITt统计报告

commit_summary

commit_1

commit_2

commit_3

commit_4

commit_5

commit_6

最得意/或有价值/或有苦劳的工作清单

工作 说明
商家端文档撰写 负责了商家端的ui设计、用例、活动图、顺序图、类图文档编写
API设计 设计好API为前后端的工作提供了支持

个人的技术类、项目管理类博客清单

博客
微信小程序开发学习报告
]]>
系统分析与设计课程作业8 2018-06-03T15:00:10+00:00 Hu Junnan http://hujunnan.github.io/SDA-HW8 描述软件架构与框架之间的区别与联系

*架构就是把系统分解为一些部件,描述这些部件的职责及其协同作用。软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。组件的外部可见属性是指其他组件对该组件所做的假设。

*框架是特定语言和技术的架构应用解决方案,是具体语言和技术相关的,是一种或多种架构的组合的实现。框架是集成了你的代码和多种第三方解决方案的工具,让你聚焦业务逻辑代码而不是技术实现。

*区别:框架是软件,架构不是软件。框架落脚在“架”字上,可以理解成名词性的,是一个客观性的名词存在,如.Net Framework;而架构体现在“构”字上,理解成构造,是一个动词性的,是一系列动作发生的策略性体现。框架是一种特殊的软件,它并不能提供完整无缺的解决方案,而是为你构建解决方案提供良好的基础。框架是半成品。典型地,框架是系统或子系统的半成品;框架中的服务尅被最终应用系统直接调用,而框架中的扩展点是供应用开发人员定制的“可变化点”。架构不是软件,而是关于软件如何设计的重要策略。软件架构决策设计到如何将软件系统分解成不同的部分、各部分之间的静态结构关系和动态交互关系等。

*联系:经过完整的开发过程之后,架构决策将体现在最终开发出的软件系统中;当然,引入软件架构之后,整个开发过程变成了“分两步走”,而架构决策往往会体现在框架之中。

以你的项目为案例

绘制三层架构模型图,细致到分区

hw8_1

结合你程序的结构,从程序员角度说明三层架构给开发者带来的便利

*开发人员可以只关注某一层

*前后端分离,不同层负责不同层面。并行开发支持。利用前后端分离,实现并行开发。

*项目结构更清晰,分工更明确

*利于各层逻辑的复用

*开发次序和重要性是明确的。领域模型、基础模块(用户和基础数据的DTO和Service必须优先开发与测试),能减少这些模块的错误,特别是领域模型设计失误。

研究 VUE 与 Flux 状态管理的异同

异:Flux状态管理分为四层:view视图层、action层、dispatcher派发层、store仓库层。Flux使view查询store,用户交互触发的action被提交到dispatcher中。当action被派发后,store会随之更新自己并且通知view进行修改。而Vue区分同步更新和异步更新。Vue的更新直接通过state实例,作为state方法来调用。

同:vue和flux都是基于CQRS思想,更新和引用的数据流动时单向的,避免当一个Model被多个View引用时,一个Model被View改变时导致的混乱的波纹扩散式更新。而且都用store来存储状态,都提供数据驱动的、可组合搭建的视图组件。

]]>
系统分析与设计课程作业7 2018-05-17T15:00:10+00:00 Hu Junnan http://hujunnan.github.io/SDA-HW7 题目:Maoyan Application订票业务

用例图

hw7_1

活动图

hw7_2

领域模型

hw7_3

订单的状态图

hw7_4

系统顺序图

hw7_5

]]>
系统分析与设计课程作业6 2018-05-05T15:00:10+00:00 Hu Junnan http://hujunnan.github.io/SDA-HW6 1、 使用 UML State Model

建模对象: 参考 Asg_RH 文档, 对 Reservation/Order 对象建模。

建模要求: 参考练习不能提供足够信息帮助你对订单对象建模,请参考现在 定旅馆 的旅游网站,尽可能分析围绕订单发生的各种情况,直到订单通过销售事件(柜台销售)结束订单

hw6_1

2、 研究淘宝退货流程活动图,对退货业务对象状态建模

hw6_2

]]>
系统分析与设计课程作业5 2018-04-29T15:00:10+00:00 Hu Junnan http://hujunnan.github.io/SDA-HW5 1、 领域建模

a. 阅读 Asg_RH 文档,按用例构建领域模型。

按 Task2 要求,请使用工具 UMLet,截图格式务必是 png 并控制尺寸

说明:请不要受 PCMEF 层次结构影响。你需要识别实体(E)和中介实体(M,也称状态实体)

在单页面应用(如 vue)中,E一般与数据库构建有关,M一般与store模式有关

在 java web 应用中,E一般与数据库构建有关,M一般与 session 有关

hw5_2

b. 数据库建模(E-R 模型)

按 Task 3 要求,给出系统的 E-R 模型(数据逻辑模型)

建模工具 PowerDesigner(简称PD) 或开源工具 OpenSystemArchitect

不负责的链接 http://www.cnblogs.com/mcgrady/archive/2013/05/25/3098588.html

导出 Mysql 物理数据库的脚本

简单叙说 数据库逻辑模型 与 领域模型 的异同

hw5_3

/==============================================================/ /* DBMS name: MySQL 5.0 / / Created on: 2018/4/29 22:53:48 / /==============================================================*/

drop table if exists hotel;

drop table if exists location;

drop table if exists reservation;

drop table if exists room;

drop table if exists traveler;

/==============================================================/ /* Table: hotel / /==============================================================*/ create table hotel

(

id int not null,

code int,

name varchar(50) not null,

location_code int not null,

primary key (id)

);

/==============================================================/ /* Table: location / /==============================================================*/ create table location

(

code int not null,

name varchar(50) not null,

hot real not null,

primary key (code)

);

/==============================================================/ /* Table: reservation / /==============================================================*/ create table reservation

(

id int not null,

price float not null,

DATE datetime not null,

travel_id int not null,

key AK_Key_1 (id)

);

/==============================================================/ /* Table: room / /==============================================================*/ create table room

(

id int not null,

price float not null,

isVal real not null,

date datetime not null,

reservation_id int not null,

hotel_id int not null,

primary key (id)

);

/==============================================================/ /* Table: traveler / /==============================================================*/ create table traveler

(

id int not null,

name varchar(50) not null,

address varchar(100) not null,

country varchar(50) not null,

phone_num numeric(11,0) not null,

postcode numeric(6,0) not null,

primary key (id)

);

alter table hotel add constraint FK_Reference_4 foreign key (code) references location (code) on delete restrict on update restrict;

alter table reservation add constraint FK_Reference_1 foreign key (travel_id) references traveler (id) on delete restrict on update restrict;

alter table room add constraint FK_Reference_2 foreign key (reservation_id) references reservation (id) on delete restrict on update restrict;

alter table room add constraint FK_Reference_3 foreign key (hotel_id) references hotel (id) on delete restrict on update restrict;

数据库逻辑模型与领域模型 的异同:

  • 异:数据库模型面向实际代码开发而领域模型面向需求。数据库逻辑模型明确给出各字段的具体设计,更便于程序设计
  • 同:都是将数据库的类给图像化,具体化。
]]>
系统分析与设计课程作业4 2018-04-22T15:00:10+00:00 Hu Junnan http://hujunnan.github.io/SDA-HW4 1、 用例建模

•a. 阅读 Asg_RH 文档,绘制用例图。 按 Task1 要求,请使用工具 UMLet,截图格式务必是 png 并控制尺寸

hw4_1

•b. 选择你熟悉的定旅馆在线服务系统(或移动 APP),如绘制用例图。并满足以下要求:

对比 Asg_RH 用例图,请用色彩标注出创新用例或子用例

尽可能识别外部系统,并用色彩标注新的外部系统和服务

hw4_2

•c. 对比两个时代、不同地区产品的用例图,总结在项目早期,发现创新的思路与方法

从两个时代的用例图,可以发现现在比过去在客户选择旅店的时候会考虑更多的服务,提供更人性化的服务。在不同的地区,付款方式可能不同,或者有些只支持支付宝,或者有些支持微信支付,因此要提供不同支付方式的支持。所以,在项目早期,可以通过目前的需求画用例图,然后通过与其它软件的用例图做比较,观察可以改进或者冗余的用例。

•d. 请使用 SCRUM 方法,在(任务b)用例图基础上,编制某定旅馆开发的需求 (backlog)

ID 需求名称 重要性 工作量 需求目标 注意事项
1 选择城市 80 10 填写城市、入住及退房日期 可用GPS自动获取当前位置
2 选择酒店 90 20 选择旅店 旅店可按照星级、价格、好评等排序
3 选择房间 100 30 选择房间类型及数量 房间显示选择时间内的冗余数量
4 确认预定信息 80 15 确认及提交订单 自动补全入住和退房时间
5 填写个人信息 70 15 填写个人资料及联系方式 必须使用有效的证件号码与联系方式且注意对用户信息的保护
6 查看清单 60 15 确认详细清单,包括旅店房间信息及个人信息  
7 支付 50 10 选择付款方式,进行付款 提供多种第三方支付系统,支付失败及时给予反馈信息

2、业务建模

•a. 在(任务b)基础上,用活动图建模找酒店用例。简述利用流程图发现子用例的方法。

hw4_3

总结: 流程图的一些步骤本身就可以作为一个单独的子用例。 流程图的分叉节点和合并节点之间能抽象汇总为一个子用例。

•b. 选择你身边的银行 ATM,用活动图描绘取款业务流程

hw4_4

•c. 查找淘宝退货业务官方文档,使用多泳道图,表达客户、淘宝网、淘宝商家服务系统、商家等用户和系统协同完成退货业务的过程。分析客户要完成退货业务,在淘宝网上需要实现哪些系统用例

hw4_4

3、用例文本编写

•在大作业基础上,分析三种用例文本的优点和缺点

•摘要式用例文本

优点:简洁,能让团队成员快速了解主题和范围,编写时间短。

缺点:不够细节,在项目中后期造成理解上的困难,需求不够清晰。

•非正式用例文本

优点:较简洁,仍不会涉及太多的细节和复杂分析,但比摘要用例详细。

缺点:在项目后期进行开发时会显得要求不清晰,不利于深入分析需求。

•详述用例文本

优点:对于每个用例有具体的业务流程说明。

缺点:编写复杂,耗时长,且需要考虑各种繁琐的细节。

]]>
微信小程序开发学习报告 2018-04-14T15:00:10+00:00 Hu Junnan http://hujunnan.github.io/技术学习报告 微信小程序开发

参考文档

起步

1.申请账号

根据指引填写信息和提交相应资料,拥有自己的小程序账号

2.安装开发工具

下载地址

3.创建第一个小程序

新建项目,选择小程序项目,选择代码存放的硬盘路径,填入申请小程序时得到的AppID,给小程序命名,最后,勾选“创建QuickStart项目”(注意:你要选择一个空的目录才有这个选项),点击确定,这样就得到了第一个小程序了。点击顶部菜单编译就可以在IDE预览你的第一个小程序。

代码构成

1.JSON配置文件

1.1 app.json

app.json是对当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部tab等。配置项列表:

属性 类型 必填 描述
pages String Array 设置页面路径
window Object 设置默认页面的窗口表现
tabBar Object 设置底部tab的表现
networkTimeout Object 设置网络超时时间
debug Boolean 设置是否开启debug模式

pages: 接受一个数组, 每一项都是字符串,来指定小程序由哪些页面组成。每一项对应页面的【路径+文件名】信息,数组的第一项代表小程序的初始页面。小程序中新增/减少页面,都需要对pages数组进行修改。文件名不需要写文件后缀,因为框架会自动去寻找路径下.json,.js,.wxml,.wxss四个文件进行整合

window:用于设置小程序的状态栏、导航条、标题、窗口背景色。

tab:如果小程序是一个多tab应用(客户端窗口底部或顶部有tab栏可以切换页面),可以通过tabBar配置项指定tab栏的表现,以及tab切换时显示的对应页面。(当设置position为top时,将不会显示icon;tabVar中的list是一个数组,只能配置最少2个、最多5个tab,tab按数组的顺序排序)

networkTimeout:可以设置各种网络请求的超时时间

debug:可以在开发者工具中开启debug模式,在开发者工具的控制台面板,调试信息以info的形式给出,其信息有Page的注册,页面路由,数据更新,事件触发。可以帮助开发者快速定位一些常见的问题。

1.2 page.json

每一个小程序页面也可以使用json文件来对本页面的窗口表现进行配置。页面的配置比app.json全局配置简单得多,只是设置app.json中的window配置项的内容,页面中配置项会覆盖app.json的window中相同的配置项。页面的json只能设置window相关的配置项,以决定本页面的窗口表现,所以无需写window这个键。

1.3 project.config.json

小程序开发者工具在每个项目的根目录都会生成一个project.config.json,你在工具上做的任何配置都会写入到这个文件,当你重新安装工具或者换电脑工作时,你只要载入同一个项目的代码包,开发者工具就自动会帮你恢复到你开发项目时的个性化配置,其中包括编译器的颜色、代码上传时自动压缩等一系列选项。

2.WXML模板

WXML用来描述当前页面的结构,和HTML非常相似,有标签、属性等构成。但也有很多不一样的地方。详见WXML

2.1 标签名字不一样。

写HTML时,经常用到的标签是div,p,span,开发者在写一个页面的时候可以根据这些基础的标签组合成不一样的组件,如日历、弹窗等。WXML把这些常用的组件包装起来,用的是view,button,text等小程序给开发者包装好的基本功能。

小程序的组件

组件名 说明
view 视图容器
scroll-view 可滚动视图容器
swiper 滑块视图容器
icon 图标
text 文字
progress 进度条
button 按钮
form 表单
input 输入框
checkbox 多项选择器
radio 单项选择器
picker 列表选择器
picker-view 内嵌列表选择器
slider 滚动选择器
switch 开关选择器
label 标签
navigator 应用链接
audio 音频
image 图片
video 视频
map 地图
canvas 画布

2.2 多了一些wx:if这样的属性以及这样的表达式

在网页的一般开发流程中,我们通常用JS操作DOM,这样代码会充斥这非常多的界面交互逻辑和程序的各种状态变量。因此有了MVVM的开发模式(例如React,Vue),提倡吧渲染和逻辑分离,简单来说就是不让JS直接操控DOM,JS只用管理状态即可,然后通过一种模板语法来描述状态和界面结构的关系。WXML通过的语法(Mustache 语法)把一个变量绑定到界面上,我们称为数据绑定。仅仅通过数据绑定还不够完整的描述状态和界面的关系,还需要if/else,for等控制能力,在小程序里边,这些控制能力都用wx:开头的属性来表达

3.WXSS样式

WXSS具有CSS大部分的特性,小程序在WXSS也做了一些扩充和修改

3.1 新增了尺寸单位

在写CSS样式时,开发者需要考虑到手机设备的屏幕会有不同的宽度和设备像素比,采用一些技巧来换算一些像素单位。WXSS在底层支持新的尺寸单位rpx,开发者可以免去换算的烦恼

3.2 提供了全局的样式和局部样式

3.3 WXSS仅支持部分CSS选择器

4.JS交互逻辑

通过编写JS脚本响应用户操作或者调用API

]]>
系统分析与设计课程作业2 2018-03-20T15:00:10+00:00 Hu Junnan http://hujunnan.github.io/SDA-HW2 一、简答题

1.简述瀑布模型、增量模型、螺旋模型(含原型方法)的优缺点

瀑布模型的优点:

  • 保证整个软件产品较高的质量,保证缺陷能够提前地被发现和解决
  • 保证系统在整体上的充分把握,使系统具备良好的扩展性和可维护性

缺点:

  • 对于前期需求不明确,而又很难短时间明确清楚的项目很难很好利用该模型
  • 对于中小型项目,需求设计和开发人员往往在项目开始后就会全部投入到项目中,而不是分阶段投入,因此会导致项目人力资源过多的闲置问题

增量模型的优点:

  • 能够很好的控制前期的风险并解决
  • 从总体的方面系统地思考问题,从最早就可以给出相对完善的框架或原型,后期的每次迭代都是针对上次迭代的逐步精

缺点:

  • 并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构
  • 其灵活性可以使其适应变化的能力大大优于瀑布模型,但也容易退化为边做边改模型,从而使软件过程的控制失去整体性

螺旋模型的优点:

  • 设计的灵活性,可以在项目的各个阶段进行变更
  • 以小的分段来构建大型系统,使成本计算变得简单容易
  • 客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目可控性

缺点:

  • 过多的迭代次数会增加开发成本,延迟提交时间
  • 需要相当丰富的风险评估经验和专业知识,如若未能及时标识风险,会造成重大损失

2.简述UP的三大特点,其中哪些内容体现了用户驱动的开发,哪些内容体现风险驱动的开发?

  • Architecture Centric(以架构为中心的):software architecture provides the central point around which all other development evolves  Use Case Driven(用例驱动):Use cases are expressed from the perspective of the users, in natural language, and should be understandable by all stakeholders. Use-case-driven means the development team employs the use cases from requirements gathering through code and test  Iterative and Evolutionary(受控的迭代式增量开发):An iterative and evolutionary approach allows start of development with incomplete, imperfect knowledge
  • 用例驱动以及受控的迭代式增量开发体现了用户驱动的开发,以架构为中心体现了风险驱动的开发

3.UP四个阶段的划分准则是什么?关键的里程碑是什么?

  • Inception(初始):大体的构造、范围和评估。里程碑:生命周期目标里程碑(评价项目基本的生存能力)
  • Elaboration(细化):迭代核心架构。里程碑:生命周期结构里程碑(检验详细的系统目标和范围、系统的选择以及主要风险的解决方案)
  • Construction(构造):所有剩余的构件和应用程序功能并集成产品,所有的功能被详细测试。里程碑:初始功能里程碑(确定了产品是否可以在测试环境中进行部署;要确定软件、环境、用户是否可以开始系统的运作)
  • Transition(移交):为发布做准备的产品测试,基于用户反馈做少量调整。里程碑:产品发布里程碑(确定目标是否实现,是否开始另一个开发周期)

4.IT 项目管理中,“工期、质量、范围/内容” 三个元素中,在合同固定条件下,为什么说“范围/内容”是项目团队是易于控制的

  • 在合同固定的条件下,工期和质量都在合同上规定好的,不能随意变动。只有范围/内容才是能项目团队所掌握。

5.为什么说,UP 为企业按固定节奏生产、固定周期发布软件产品提供了依据?

  • UP是用户驱动的、基于架构的、迭代增量开发的过程。UP的每个阶段都可以分解为迭代。每一次迭代,都有一个新产品的产生,并且每一次迭代时间都是限制的,时间定量是迭代开发的关键思想。因此,UP为企业按固定节奏生产,固定周期发布软件产品提供了依据。

二、项目管理使用

使用截图工具(png格式输出),展现你团队的任务 Kanban

hw2_1

hw2_2

]]>
Table-sorter 2018-03-16T18:12:10+00:00 Hu Junnan http://hujunnan.github.io/table-sorter Sortable table

Sortable table

To-Do

What? When? Location
Paris Web 2007 2007-11-15 IBM La Defense / INSIA
Paris On Rails 2007 2007-12-10 Cite des Sciences
Burger Quiz party 2007-04-14 Volta

Staff

First name Last name Latest checkin
Richard Piacentini 2007-03-27
Eric Daspet 2007-03-28
Aurore Jaballah 2007-03-15
]]>