Dyson's Blog


  • 首页

  • 归档

系统分析与设计:技术与工作报告

发表于 2019-06-23

微信小程序用户登陆

  • 授权:使用wx.getUserInfo访问微信用户的信息,在返回的res中,可以获取到用户昵称、头像、性别、地区等信息。
1
2
3
4
5
6
wx.getUserInfo({
success: res => {
//get userInfo incluing nickname, avatar and gender
console.log(res.userInfo);
}
})
  • 身份识别与数据读取:对于曾经登陆过该小程序的用户,首先获取其wechatopenid,然后根据openid获取到该用户在后台数据库中的id,最后在根据id来进行数据查询
1
2
3
4
5
6
7
8
9
10
11
12
13
api.getOpenId()
.then(res => {
console.log(res);
that.userInfo.wechatopenid = res.result;
}

api
.querySomeByModel("users", {
wechatopenid: that.userInfo.wechatopenid
})
.then(result => {
console.log(result);
}

vue框架中全局数据的访问与修改

  • 由于前端框架中涉及了多个界面,而几个界面之间又有共同的数据访问关系,所以必须维护一些全局变量及其操作接口来实现数据访问与修改。实现方法为在component的store.js中定义store变量,保存需要的user变量等信息,然后实现一个改变函数changeUser作为操作接口。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var store = new Vuex.Store({
state: {
user: {},
isAuthorized:true
},
mutations: {
changeUser(state, curUser){
state.user = curUser
},
changeAuthorized(state, au){
state.isAuthorized = au
}
}
})
  • 访问和修改的具体方法如下:
1
2
3
4
5
import store from "@/components/store";

let user = store.state.user

store.commit("changeUser", user);

系统分析与设计大项目个人报告

发表于 2019-06-23
学号 github昵称
16340301 JunxiangZhao

个人简短小结

我在团队中的角色是前端开发人员,负责代码前端开发。前端代码实现使用了vue框架,具体负责的部分是挣闲钱小程序的“用户”页面的UI与功能的实现,包括了用户信息的授权、登陆、信息修改,数据访问等与用户相关的功能。

PSP 2.1统计

PSP2.1 Personal Software Process Stages Time (%)
Planning 计划 10
· Estimate 预估任务时间 10
Development 开发 80
· Analysis 需求分析(包括自我学习) 5
· Design Spec 生成设计文档 5
· Design Review 设计复审 6
· Coding Standard 代码规范 3
· Design 具体设计(绘制UI, 架构设计等) 8
· Coding 具体编码 27
· Code Review 代码复审 11
· Test 测试(自我测试,修改代码,提交修改) 15
Reporting 报告 10
· Test Report 测试报告 3
· Size Measurement 计算工作量 1
· Postmortem & Process Improvement Plan 事后总结, 并提出过程改进计划 6

主要工作清单

  • 最有价值的工作:统一处理所有与用户信息相关的功能,给其他功能的开发打下基础
  • 最有苦劳的工作:前期需求分析阶段,协助完成问卷调查、UML建模文档书写等工作

代码仓库贡献

a

个人博客清单

  • 16340301-小程序开发前端

特别致谢

  • 感谢后端负责人16340293-Tuid同学, 一个人完成了所有后端工作,让前端任务可以顺利进行
  • 感谢项目经理 16340294-Duke同学,作为项目经理督促开发工作的进行。
  • 感谢其他所有开发伙伴的合作与配合

系统分析与设计作业六

发表于 2019-06-22

1、使用类图,分别对 Asg_RH 文档中 Make Reservation 用例以及 Payment 用例开展领域建模。然后,根据上述模型,给出建议的数据表以及主要字段,特别是主键和外键

  • 注意事项:
    • 对象必须是名词、特别是技术名词、报表、描述类的处理;
    • 关联必须有多重性、部分有名称与导航方向
    • 属性要注意计算字段
  • 数据建模,为了简化描述仅需要给出表清单,例如:
    • Hotel(ID/Key,Name,LoctionID/Fkey,Address…..)

Make Reservation

hotel_domain

  • Hotel(Id, name, address, star_rating, favorites, info)
  • Location(Id, name)
  • Customer(Id, name, email)
  • Room(Type, date, isAvailable, price, available_num, reserved_num)

Payment

payment_domain

  • Payment(Id, date, time)
  • CreditCard(Id, type, number, security_num, expiry_date)
  • Customer(Id, name, emailAddress)
  • CardHolder(Id, titel, firstName, lastName, address1, address2, city, county/state, postcode, daytimeTelephone, eveningTelephone)

2、使用 UML State Model,对每个订单对象生命周期建模

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

reservation_state

系统分析与设计作业五

发表于 2019-05-22

根据订旅馆建模文档,Asg-RH.pdf:

绘制用例图模型(到子用例)

用例图-订旅馆

给出 make reservation 用例的活动图

活动图-订旅馆

根据课程练习“投递员使用投递箱给收件人快递包裹”的业务场景

分别用多泳道图建模三个场景的业务过程

  • 业务一

泳道图1

  • 业务二

泳道图2

  • 业务三

泳道图3

根据上述流程,给出快递柜系统最终的用例图模型

  • 用正常色彩表示第一个业务流程反映的用例
  • 用绿色背景表述第二个业务场景添加或修改的用例,以及支持 Actor
  • 用黄色背景表述第三个业务场景添加或修改的用例,以及支持 Actor

用例图-快递柜系统

系统分析与设计作业四

发表于 2019-04-20

1、简答题

用例的概念

用例,是软件工程或系统工程中对系统如何反应外界请求的描述,是一种通过用户的使用场景来获取需求的技术。 每个用例提供了一个或多个场景,该场景说明了系统是如何和最终用户或其它系统互动,也就是谁可以用系统做什么,从而获得一个明确的业务目标。

用例和场景的关系?什么是主场景或happy path?

  • 场景是参与者与系统之间的一系列特定活动和会话,也称为用例实例,它是使用某一系统的特定故事,或者用例的某条路径;用例是场景的集合,包括主场景以及零个或多个可选场景。
  • 主场景指最常用的系统会话,直接地实现用户目标的故事,通常是成功的场景。

用例有哪些形式?

  • Brief:使用一个简短的段落概括用例,通常只概括主场景的内容。
  • Casual:使用非正式的段落格式,通常使用几个段落来描述多个不同的场景。
  • Fully:所有的步骤和视图,以及系统中可能出现的所有变化都被详细记录,同时附有额外的章节来说明前提条件、成功保证等内容。

对于复杂业务,为什么编制完整用例非常难?

因为对于复杂业务,涉及的参与者和场景很多,可能出现的变化也很多,编制用例只能覆盖有限的部分场景,对于各种不同的变化情况很难完全覆盖,所以很难编制出完整的用例。

什么是用例图?

用例图(use case diagram)是用户与系统交互的最简表示形式,展现了用户和与他相关的用例之间的关系。通过用例图,人们可以获知系统不同种类的用户和用例。用例图也经常和其他图表配合使用。

用例图的基本符号与元素?

  • 参与者:系统的主要参与者,指与系统交互的角色。可以是人、计算机系统、组织等。用以下符号表示:

actor

  • 用例:用例是描述参与者为了某个目的使用系统的一系列相关成功和失败场景的集合。使用如下符号表示:

usecase

  • 系统边界:系统边界是用于表示正在建模的系统的边界。用如下符号表示:

system

  • 关系:表示参与者与系统之间的交互或者用例之间的关联关系,用如下符号表示:

relation

用例图的画法与步骤

  • 确定研讨的系统
    • 使用用例图 System框 表示一个待研究的系统
    • 正确命名系统或子系统,例如 Reserve Hotel。
    • 千万不要将研究的系统的名称起的太泛,如“网上商店”。正确的姿势是“网上书店”,以避免业务空泛问题
  • 识别Actor:
    • 识别使用系统的主要参与者(primary actors)/角色(roles)
    • 识别系统依赖的外部系统
  • 识别用例(服务)
    • 识别用户级别用例(user goal level)
      • 以主要参与者目标驱动
      • 收集主要参与者的业务事件
      • 必须满足以下准则:boss tese, EBP test, Size Test
      • manage 用例。特指管理一些事物的 CRUD 操作,例如管理文件、管理用户等
    • 识别子功能级别的用例(sub function level)
      • 子用例特征
      • 正确使用用例与子用例之间的关系
  • 建立 Actor 和 Use Cases 之间的关联
    • 请使用 无方向连线,表示两间之间是双向交互的协议

用例图给利益相关人与开发者的价值有哪些?

  • 使用用例图使利益相关人能更形象准确地传达对需求的认识,清晰地表达其想法
  • 开发者可以通过用例图清楚了解到客户的需求,为开发过程提供更清晰的思路,提高双方沟通的效率

2、建模练习题(用例模型)

选择2-3个你熟悉的类似业务的在线服务系统(或移动 APP),如定旅馆(携程、去哪儿等)、定电影票、背单词APP等,分别绘制它们用例图。并满足以下要求:

  • 请使用用户的视角,描述用户目标或系统提供的服务
  • 粒度达到子用例级别,并用 include 和 exclude 关联它们
  • 请用色彩标注出你认为创新(区别于竞争对手的)用例或子用例
  • 尽可能识别外部系统和服务

猫眼APP

CatEye

淘票票APP

TaoTicket

然后,回答下列问题:

1.为什么相似系统的用例图是相似的?

因为相似系统的功能、用户都是很类似的,从而确定的系统边界、参与者和用例场景都是很类似的,进而导致用例图很相似。

2.如果是定旅馆业务,请对比 Asg_RH 用例图,简述如何利用不同时代、不同地区产品的用例图,展现、突出创新业务和技术

对比Asg_RH用例图,在现在这个时代,订旅馆时可以考虑的因素更多了,除了距离、价格等因素外,可以把外观、舒适度、用户评价、周边便利条件等作为排序功能的指标加入到子用例中,为用户提供更多的考量标准,提高客户满意度。在支付手段上,随着移动支付的普及,当代的旅馆预定业务应支持现金、银行卡、微信支付宝等多种方式,为用户提供更多的便利性,提高软件竞争力。

3.如何利用用例图定位创新思路(业务创新、或技术创新、或商业模式创新)在系统中的作用

因为用例图表现了用户在达成某种目的需要的必经之路,因而可以在图中发现这条必经之路上可以增加商机的地方。比如在选择场次和支付之前,猫眼APP和淘票票分别将小吃和饮料的优惠套餐加入界面,简介增加影院的收入渠道,提高软件竞争力。

另外用例图较为简洁地提出了用户目标(因为每个用例的划分就是对于实现每个大目标以及小目标的划分),因而已经实现的用户目标清晰可见,更方便联想用户的潜在需求。

4.请使用 SCRUM 方法,选择一个用例图,编制某定旅馆开发的需求(backlog)开发计划表

Hotel

以上述用例图为例,编制backlog如下:

Id Name Imp Est How to Demo Notes
1 login 5 3 login with Id number and phone number verified by face recognition
2 find hotel 10 8 can be found by map or sort by distance geo API
3 make reservation 10 6 choose hotel and than select a room send e-mails to comfirm
4 pay 8 3 pay by card or other methods stmp API to send informing e-mail
5 manage basket 3 8 allow the travelers to collect hotels interested in

5.根据任务4,参考使用用例点估算软件成本,给出项目用例点的估算

用例 #业务 #计算 原因 UC权重
login 2 5 face recognition 5
find hotel 5 4 framework 10
make reservation 4 6 10
pay 3 4 invoke API 5
manage basket 1 8 5

系统分析与设计作业三

发表于 2019-04-12

一、简答题

1、简述瀑布模型、增量模型、螺旋模型(含原型方法),并分析优缺点(从项目特点、风险特征、人力资源利用角度思考)

  • 瀑布模型是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么需要返回上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,像瀑布一样。
    • 优点:定义了软件开发基本流程与活动,开发阶段界定清晰,便于评审、审计、跟踪、管理和控制
      • 创意阶段:描述问题,市场,关键技术等
      • 分析阶段:用户故事、领域模型、业务流程等
    • 缺点
      • 依赖问题:前期需求模糊,后期工作难以开展
      • 容错问题:在后期发现需求问题,需要返回前面的阶段进行修改,工作量难以接收
      • 资源调配问题:知识技能需求不同,人员数量要求不同
  • 增量模型把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。
    • 优点
      • 将软件模块化,分批次提交,降低开发难度
      • 以组件为单位进行开发,降低软件开发的风险
      • 开发人员只需处理相应模块,人员分配灵活。
    • 缺点
      • 软件项目必须是可模块化的,易于拆分的,否则难以使用增量模型
      • 要求开发人员具有全局把握能力,能够对模块进行系统集成
      • 客户必须同意分阶段提交产品
      • 增量粒度难以选择
  • 螺旋模型采用一种周期性的方法进行系统开发,与原型方法相同,以进化的开发方式为中心,每迭代一次软件便前进一个层次,在每个阶段内使用瀑布模型法,同时引入了其他模型不具备的风险分析。
    • 优点
      • 引入了明确的风险管理机制
      • 结合了原型方法和螺旋模型,
      • 客户参与到每个阶段的反馈中,保证了项目方向的正确性与可控性
      • 随着项目推进,客户始终掌握项目的最新信息 , 从而能够和管理层有效地交互
    • 缺点
      • 项目开发成本高
      • 错误的风险分析会带来更大的风险
      • 建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求

2、简述统一过程三大特点,与面向对象的方法有什么关系?

统一过程三大特点

  1. 用例驱动(Use Case Driven):开发人员把需求分析得到的用例应用到开发的各个阶段,包括编码阶段和测试阶段。
  2. 以架构为中心(Architecture Centric):软件架构提供了整个系统的蓝图,并从不同维度提供了一个结构化的开发框架。
  3. 迭代和增量过程(Iterative and Evolutionary):RUP强调采用迭代和增量的方法来开发软件,把整个项目分为多个迭代过程。

统一过程与面向对象方法的关系

面向对象方法(Object-Oriented Method)是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。

统一过程不仅是一个软件开发过程,而且是一个通用的过程框架。可用于不同类型的软件、系统、各种不同的应用领域、各种不同功能级别以及不同的项目规模。统一过程使用了面向对象的方法,例如增量方法中的模块。但是统一过程更强调一种开发过程框架,形成软件开发过程的方法论。

3、简述统一过程四个阶段的划分准则是什么?每个阶段关键的里程碑是什么?

四个阶段的划分准则

  1. 初始阶段
  2. 细分阶段
  3. 构造阶段
  4. 交付阶段

划分准则:达到里程碑的要求即可划分为一个阶段。统一过程每个阶段都有对应的要求和评估方法,即里程碑,如果达到了这些要求,则可以进入下一个阶段。

里程碑

  1. 初始阶段:确定项目的软件范围和边界条件,识别出系统的关键用例
  2. 细分阶段:需求基本明确,架构得到验证,定出一个实用的架构
  3. 构造阶段:初始功能运作正常,产品特性基本满足
  4. 交付阶段:产品交付,提交一个可运行的软件产品和用户手册等文档。

4、软件企业为什么能按固定节奏生产、固定周期发布软件产品?它给企业项目管理带来哪些好处?

软件企业使用统一过程,明确每个阶段的里程碑,可以在每次迭代产生一个可交付的产品。同时合理利用软件产品范围的弹性,合理规划范围(20%的业务决定80%的满意度),使得软件生产按固定节奏运行,固定迭代周期、固定开发周期、固定升级周期。因此软件企业能按固定节奏生产、固定周期发布软件产品。

使用统一过程对软件开发进行管理,保证了企业产品发布的周期性和固定节奏,方便了成本的控制,有效地规避了风险,把复杂的系统划分为简单的系统,更有效地应对需求变更。

系统分析与设计作业二

发表于 2019-03-22

1、简答题

用简短的语言给出对分析、设计的理解。

  • 分析指做正确的事情,强调对问题和需求的调研,而不是找到解决方案。分析应该发掘出问题中的关键要素。
  • 设计指用正确的方法去做一件事,强调要提出一个能满足需求的概念性解决方案,可以是软件或硬件。要求用层次化的框架去构建系统的结构,确定抽象的软件对象以及它们之间的联系,而暂时不考虑具体的实现。

用一句话描述面向对象的分析与设计的优势。

分析设计者可以从对象角度对问题进行建模,不需要成为语言方面的专家,分析人员与开发人员可以使用共同的语言进行交流,降低沟通成本。

简述 UML(统一建模语言)的作用。考试考哪些图?

UML是一种能够可视化分析与设计结果的标准图形化语言。UML帮助系统开发人员阐明,展示,构建和记录软件系统的产出,可以帮助项目团队沟通、探索潜在的设计和验证软件的架构设计。
UML具有十多种视图,可分为以下四类:

  • 用例图:用户角度:功能、执行者
  • 静态图:系统静态结构
    • 类图:概念及关系
    • 对象图:某种状态或时间段内,系统中活跃的对象及其关系
    • 包图::描述系统的分解结构
  • 行为图:系统的动态行为
    • 交互图:描述对象间的消息传递
      • 顺序图:强调对象间消息发送的时序
      • 合作图::强调对象间的动态协作关系
    • 状态图:对象的动态行为。状态-事件-状态迁移-响应动作
    • 活动图:描述系统为完成某功能而执行的操作序列
  • 实现图:描述系统的组成和分布状况
    • 构件图:组成部件及其关系
    • 部署图:物理体系结构及与软件单元的对应关系

从软件本质的角度,解释软件范围(需求)控制的可行性

软件的本质可以概括为复杂性、一致性、可变性和不可视性。软件的本质决定了软件开发的困难性,因此,需要对软件的范围进行合理控制。软件分析不是发现更多的功能与需求,而是确认有效的功能与需求,去伪存真不断满足客户需要。软件设计也不是追求最先进技术,而是控制变化附加的成本,使得软件生产的预算、时间等能在掌控之中。软件的可变性和一致性使得开发者能够根据实际情况进行调整,把软件范围控制在时间、预算允许的范围内。

2、项目管理实践

看板使用练习(提交看板执行结果贴图,建议使用 Git project)

  • 使用截图工具(png格式输出),展现你团队的任务 Kanban
  • 每个人的任务是明确的。必须一周后可以看到具体结果
  • 每个人的任务是1-2项
  • 至少包含一个团队活动任务

1

UML绘图工具练习(提交贴图,必须使用 UMLet)

  • 请在 参考书2 或 教材 中选择一个类图(给出参考书页码图号)
    教材P182
    uml

系统分析与设计作业一

发表于 2019-03-18

简答题

软件工程的定义

Software engineering is “(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, that is, the application of engineering to software,” and “(2) the study of approaches as in (1).” –– IEEE Standard 610.12

软件工程是将系统的、规范的、可度量的方法应用到软件的开发、运行和维护中的一种工程方法,同时也包括了与之相关的研究。

解释导致software crisis 本质原因、表现,述说克服软件危机的方法

本质原因

计算机硬件性能的提高、软件复杂度的增加与软件开发能力之间存在矛盾,导致对于复杂软件的需求无法得到满足。

表现

  • 项目运行超过预算
  • 项目运行超时
  • 软件的使用效率较低
  • 软件质量过差
  • 软件不能满足用户需求
  • 项目无法管理,代码难以维护
  • 软件无法交付

克服软件危机的方法

应用更科学、高效的软件工程管理方法去指导软件开发的过程,提高效率并降低成本,改善产品质量。

软件生命周期

软件生命周期是指软件的产生知道成熟的全部过程。

SWEBoK 的 15 个知识域(An Overview of the SWEBOK Guide 请中文翻译其名称与简短说明)

英文名称 中文名称 解释
Software Requirements 软件需求 软件需求关注软件需求的启发,协商,分析,规范和验证。
Software Design 软件设计 软件设计涵盖了设计过程和最终产品。
Software Construction 软件构造 软件构造包括与满足其要求和设计约束的软件程序开发相关的主题
Software Testing 软件测试 软件测试包括软件测试的基础知识;测试技术;人机界面测试与评估;与测试有关的措施
Software Maintenance 软件维护 软件维护包括软件维护的基础知识
Software Configuration Management 软件配置管理 软件配置管理涵盖 SCM 过程的管理;软件配置识别,控制,状态核算,审计;软件发布管理和交付
Software Engineering Management 软件工程管理 软件工程管理涵盖了启动和范围定义;软件项目计划;软件项目制定; 产品验收;审查和分析项目绩效;项目结束
Software Engineering Process 软件工程过程 软件工程关注软件生命周期过程的定义,实施,评估,测量,管理和改进
Software Engineering Models and Methods 软件工程模型与方法 软件工程模型和方法解决了涵盖多个生命周期阶段的方法
Software Quality 软件质量 软件质量包括软件质量的基础知识; 软件质量管理流程
Software Engineering Professional Practice 软件工程专业实践 软件工程专业实践涵盖专业性;道德准则;小组动态;和沟通技巧
Software Engineering Economics 软件工程经济学 软件工程经济学关注的是在业务环境中做出决策,以使技术决策与组织的业务目标保持一致
Computing Foundations 计算基础 计算基础涵盖了提供软件工程实践所需的计算背景的基础主题
Mathematical Foundations 数学基础 数学基础涵盖了提供软件工程实践所必需的数学背景的基础主题
Engineering Foundations 工程基础 工程基础涵盖了提供软件工程实践所必需的工程背景的基础主题

简单解释 CMMI 的五个级别。例如:Level 1 - Initial:无序,自发生产模式。

  • Level 1 - Initial:无序,自发生产模式:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力。管理是反应式的
  • Level 2 - Managed,可管理级: 建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
  • Level 3 - Defined,已定义级: 已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
  • Level 4 - Quantitatively Managed 量化管理级: 分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
  • Level 5 - Optimizing 优化管理级: 过程的量化反馈和先进的新思想、新技术促使过程持续不断改进

用自己语言简述 SWEBok 或 CMMI (约200字)

CMMI(能力成熟度模型集成)是用来衡量软件质量与成熟度的标准。其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和理解,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面

Hello World

发表于 2019-03-08

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment

JunxiangZhao

9 日志
1 标签
RSS
© 2019 JunxiangZhao
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4