Homework_lesson7

作业要求:域建模

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

  • 按 Task2 要求,请使用工具 UMLet,截图格式务必是 png 并控制尺寸
  • 说明:请不要受 PCMEF 层次结构影响。你需要识别实体(E)和 中介实体(M,也称状态实体)
    • 在单页面应用(如 vue)中,E 一般与数据库构建有关, M 一般与 store 模式 有关
    • 在 java web 应用中,E 一般与数据库构建有关, M 一般与 session 有关
      domain_model

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

  • 按 Task 3 要求,给出系统的 E-R 模型(数据逻辑模型)
  • 建模工具 PowerDesigner(简称PD) 或开源工具 OpenSystemArchitect
  • 不负责的链接 http://www.cnblogs.com/mcgrady/archive/2013/05/25/3098588.html
  • 导出 Mysql 物理数据库的脚本
  • 简单叙说 数据库逻辑模型 与 领域模型 的异同
    er_model
    导出MySQL脚本:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    -- +---------------------------------------------------------
    -- | MODEL : RH
    -- | AUTHOR :
    -- | GENERATED BY: Open System Architect
    -- +---------------------------------------------------------
    -- | WARNING : Review before execution
    -- +---------------------------------------------------------

    -- +---------------------------------------------------------
    -- | CREATE
    -- +---------------------------------------------------------
    CREATE TABLE `Elocation`
    (
    code INTEGER NOT NULL,
    name VARCHAR(20) NOT NULL,
    hot VARCHAR NOT NULL,
    PRIMARY KEY (code)
    );

    CREATE TABLE `EHotel`
    (
    hotel_id INTEGER NOT NULL,
    name VARCHAR(20) NOT NULL,
    intro LONGTEXT NOT NULL,
    star_rating INTEGER NOT NULL,
    hot_index VARCHAR(20) NOT NULL,
    address VARCHAR(20) NOT NULL,
    PRIMARY KEY (hotel_id)
    );

    CREATE TABLE `Eroom_desc`
    (
    desc_id INTEGER NOT NULL,
    type VARCHAR(10) NOT NULL,
    list_price FLOAT NOT NULL,
    PRIMARY KEY (desc_id)
    );

    CREATE TABLE `Eroom`
    (
    room_id INTEGER NOT NULL,
    num INTEGER NOT NULL,
    isavaliable BIT NOT NULL,
    date DATE NOT NULL,
    PRIMARY KEY (room_id)
    );

    CREATE TABLE `EReservation`
    (
    reservation_id INTEGER NOT NULL,
    check_in_date DATE NOT NULL,
    check_out_date DATE NOT NULL,
    nights_num INTEGER NOT NULL,
    total_price FLOAT NOT NULL,
    PRIMARY KEY (reservation_id)
    );

    CREATE TABLE `customerInfo`
    (
    customer_id INTEGER NOT NULL,
    full_name VARCHAR(20) NOT NULL,
    email_address VARCHAR(20) NOT NULL,
    Dr_Miss BIT NOT NULL,
    isSmoke BIT NOT NULL,
    PRIMARY KEY (customer_id)
    );

    CREATE TABLE `Eorder_item`
    (
    item_id INTEGER NOT NULL,
    adult_num INTEGER NOT NULL,
    children_num INTEGER NOT NULL,
    min_child_num INTEGER NOT NULL,
    max_child_num INTEGER NOT NULL,
    PRIMARY KEY (item_id)
    );
两者区别:
  • 同:领域模型和数据库逻辑模型都将系统的概念类以图形化的形式表示出来,定义了各个概念类的名字、属性以及类间的关系。
  • 异:领域模型包含状态实体而ER模型只包含持久性实体,领域模型主要面向需求分析与设计,而数据库逻辑模型更面向编程开发。

HomeworkLesson6

1、 用例建模

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

答:阅读文档后绘制用例图如下
user_case_RH

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

  • 对比 Asg_RH 用例图,请用色彩标注出创新用例或子用例
  • 尽可能识别外部系统,并用色彩标注新的外部系统和服务

答:绘制用例图如下,新的user case和新的外部系统已经用红色标出
new_user_case_RH

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

答:相比Asg_RH里的用例和外部服务,现代的旅馆在线预定服务更加符合现代人的出行习惯和消费心理。在项目早期,可以t通过揣摩用户的消费心理,尽可能满足用户的需求,比方说用户更加期望同等的消费下获取更高的服务水平,更加习惯去熟悉的酒店,于是出现了favor hotel(收藏喜爱的酒店)的用例和按设施排序酒店等子用例。从用户角度出发,进行思考,以此出发找到新的业务和市场从而开发出新的功能。

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

ID Name Imp Est How to demo Notes
1 find hotel 30 10 输入相关条件筛选酒店给用户选择 若某条件无法筛选忽略该条件
2 make reservation 40 15 用户选择酒店后,选择房间类型并确认订单 选择酒店后应该有各房间类型详细信息
3 manage basket 5 2 用户可以管理自己的订单
4 pay 15 8 支持各种常见的在线支付方式 调用各种外部支付系统
5 favor hotel 10 4 用户可以为自己喜欢的酒店标记favor 当用户下次使用时根据favor信息推荐

2、业务建模

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

答:找酒店活动图如下

RH_find_hotel

利用流程图发现子用例的方法:

在构建活动图的过程中,我们会注意到每个节点的业务的复杂性,并因此分解复杂的业务即可发现子用例,活动图还将各个用例之间的时间先后顺序呈现出来,可以借助活动图实现业务复用,合理安排业务,从而发现子用例。

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

答:活动图如下:

Process_get_cash

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

答:泳道图如下:

Process_taobao

淘宝网需要实现的系统用例有:评定是否接受请求,快速退款的预先支付,通知商家受理退款,介入买家卖家双方评定是否应该接受退款请求,接受到银行退款等。

3、用例文本编写

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

  • 摘要Brief
    • 优点:编写方便用时短,简明扼要
    • 缺点:不够详尽
  • 非正式Casual
    • 优点:简洁,段落格式,比摘要详细,覆盖了多个不同场景
    • 缺点:仍然不够详细全面
  • 详述fully
    • 优点:有严格的书写格式规范,考虑全面
    • 缺点:费时,书写起来很复杂

Homework_lesson5

1.作业要求

每人至少一篇 技术学习报告 或 工具使用方法 或 项目工作经验总结 或 其他值得分享的项目知识。如果你已有博客,请在标题上做连接。

个人大概用了一下下面几个工具,这里稍微介绍一下:

  • umlet工具绘制uml图或者用例图
  • 使用api blueprint编写api文档

    2.umlet工具的使用

  • 安装

ubuntu环境下比较方便直接输入以下命令即可

1
sudo apt intsall umlet

安装完后在控制台上输入umlet就可以打开,可以把它锁定到任务栏方便打开。

windows平台的话去官网下一下安装包顺便配置一下相关的jdk即可。

  • 使用umlet绘图

首先在右上角可以选择绘制的图的类型,比如这里我选择了用例图
pic1
然后就可以看到下方各种相关图形
pic2
双击图形(或者直接拖到左边,箭头只能双击)即可在左边的编辑框内编辑,点击在左边编辑框内的图形,则可以在右下角的方框内编写该图形相关属性,比如我编写了一个名为example的user case并且把它的背景颜色置为红色。

pic3


pic4

编辑完后最后保存即可,umlet会生成一个.uxf文件下次可以打开。

3.使用api blueprint编写api文档

api blueprint可以用来编写http api文档,并且可以使用模拟服务器方便前后端同时开发,这里主要说一下怎么连到github上你加入的组织(连到个人仓库按照官网指示一步步进入就可以了)

  • 关联github账号
    首先去官网按照官网提示一步步将github账号关联上去即可,这边是官网链接
    https://apiary.io/
  • 连接到你加入的组织
    首先要确保你给了该应用权限,在github的setting的application选项里面我们可以看到
    pic5
    进去后你可以看到如下界面则你已经给了apiary足够权限,那么你只要在下面的Organization access给你要连接到的组织选项点击发送一份邮件给组织的owner让他确认后你就可以连接上去了
    pic6
    然后在apiary官网那边你就可以选择到该organization内的repo了。
    pic7
    更多详细的文档可以看官方的这份文档https://help.apiary.io/tools/troubleshooting-github/#connecting-organization-repository
  • 至于编写文档其实就跟写markdown差不多,参考一下文档就可以了,编写完后访问https://xxxx.docs.apiary.io (其中xxxx是你编写文档的时候写的host) 就可以看到一份文档,点击api名称就可以看到详情,选择mock server就可以看到对应的api地址,前后端就可以同时开始开发了。
    pic8

HomeWork 2

1、简答题

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

  • 瀑布模型
    • 优点 : 有利于大型软件开发过程中组织管理;
    • 缺点 : 开发过程一般不能逆转,否则代价太大;实际项目的开发很难严格按照该模型进行;客户往往很难清楚地给出所有需求,而该模型却要求如此;软件的实际情况必须等到项目开发后期才能看到,这要求用户要有足够的耐心;
  • 增量模型
    • 优点 : 采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;如果核心产品很受欢迎,则可增加人力实现下一个增量;可先发布部分功能给客户,对客户起到镇定剂作用;
    • 缺点 : 并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;增量模型的灵活性可以使其适应变化的能力大大优于瀑布模型,也很容易退化成边做边改模型,从而使软件的控制失去整体性;
  • 螺旋模型
    • 优点 : 设计上的灵活性,可以在项目的各个阶段进行变更;以小的分段来构建大型系统,使成本计算变得简单容易;客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;随着项目推进,客户始终掌握项目的最新信息,从而客户能够有效地和管理层交互;
    • 缺点 : 采用螺旋模型需要具有相当丰富的风险评估经验和专业知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;过多的迭代次数会增加开发成本,延迟提交时间。

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

      up的三大特点如下:
  1. 迭代式的增量开发:允许用不完整的,不完善的知识开发,并在开发的过程中不断地完善;
  2. 用例驱动:指开发团队使用通过代码和测试收集需求的用例
  3. 以系统架构为中心:为整个项目建立架构,包括商业建模、需求分析与设计、具体实现、以及测试与维护的各个模块。

其中,用例驱动和以系统架构为中心体现了用户驱动的开发,迭代式的增量开发体现了风险驱动开发。

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

  1. 初始阶段:
  • 划分准则:体现了风险驱动,满足用户需求,并不试图获取全部需求、以及详细的计划,而只是详细识别出最重要的用例并加以详细描述。制定一个项目计划和第一次迭代计划。也会考虑初步的可行性方案。
  • 里程碑 : 生命周期目标 (Lifecycle Objective) 里程碑,包括一些重要的文档,如:项目构想 (Vision)、原始用例模型、原始业务风险评估、一个或者多个原型、原始业务案例等。需要对这些文档进行评审,以确定正确理解用例需求、项目风险评估合理、阶段计划可行等。
  1. 细化阶段:
  • 划分准则:体现了风险驱动,架构为中心,并不只是做设计,会实现最重要的部分用例,形成可执行的架构,并可以测试,活动包括了分析、设计、编码、测试。迭代实现最重要的用例。迭代的开发,进化式需求,化解需求变更对架构的影响的风险,体现了持续化解风险的思想,并确保满足用户的需求。产生一个可执行的架构,体现了把注意力放在可执行的软件上的思想,体现了在早期确定一个可执行的架构的思想,可测试架构、测试体现了持续验证软件质量的思想。
  • 里程碑:生命周期体系结构 (Lifecycle Architecture) 里程碑。包括风险分析文档、软件体系结构基线、项目计划、可执行的进化原型、初始版本的用户手册等。通过评审确定软件体系结构已经稳定、高风险的业务需求和技术机制已经解决、修订的项目计划可行等。
  1. 构建阶段:
  • 划分准则:体现了风险驱动,构建阶段除了编码也会有建模、分析、设计,也会有测试。迭代构建。保证满足用户需求。测试持续验证软件质量。
  • 里程碑:初始运行能力 (Initial Operational Capability) 里程碑。包括可以运行的软件产品、用户手册等,它决定了产品是否可以在测试环境中进行部署。此刻,要确定软件、环境、用户是否可以开始系统的运行。
  1. 产品化阶段/移交阶段:
  • 划分准则:确保软件对最终用户是可用的。产品化阶段可以基于用户反馈的少量调整,跨越几次迭代,包括为发布做准备的产品测试。
  • 里程碑:产品发布 (Product Release) 里程碑。确定最终目标是否实现,是否应该开始产品下一个版本的另一个开发周期。在一些情况下这个里程碑可能与下一个周期的初始阶段的相重合。

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

    工期是合同里规定好的,项目的每个阶段也都是有时间规定的,不能轻易更改。客户在合同中也规定好了项目的验收条件,因此质量也是不由团队控制的。只有范围/内容是由项目团队完成的,所以这是他们易于控制的。

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

    UP是一种融合了喷泉模型和增量模型的综合生命周期模型。每一次迭代就是为了完成一定阶段性小目标而从事的一系列开发活动。UP把开发分为多个循环,每个循环分为四个阶段,能够确保每个阶段完成相应的任务,完成一定的里程碑,有利于促进整个周期的节奏固定。。

    2、项目管理使用

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

如下图所示:

Alt text

HomeWork 1

1、简单题

软件工程的定义

根据IEEE的定义,a.软件工程是将系统化、规范化、可度量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;b.在a中所述方法的研究。

阅读经典名著“人月神话”等资料,解释 software crisis、COCOMO 模型

  • software crisis : 即软件危机,是早期计算机科学的一个术语,是指在软件开发及维护的过程中所遇到的一系列严重问题,这些问题皆可能导致软件产品的寿命缩短、甚至夭折。
  • COCOMO模型 : 即构造性成本模型,是由巴里·勃姆提出的一种软件成本估算方法。这种模型使用一种基本的回归分析公式,使用从项目历史和现状中的某些特征作为参数来进行计算。

    软件生命周期

    软件生命周期(SDLC)是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。

    按照 SWEBok 的 KA 划分,本课程关注哪些 KA 或 知识领域?

    ACM与IEEE Computer Society联合修定的SWEBOK(Software Engineering Body of Knowledge)提到,软件工程领域中的核心知识包括:
  • software requirements (软件需求)
  • software design (软件设计)
  • software construction (软件建构)
  • software engineering management (软件测试)
  • software maintenance (软件维护与更新)
  • software configuration management, SCM (软件构型管理)
  • software engineering management (软件工程管理)
  • software development process (软件开发过程)
  • software engineering tools and methods (软件工程工具与方法)
  • software quality (软件质量)

本课程关注软件设计、软件测试、软件构型管理、软件工程管理、软件开发过程、软件质量等核心知识。

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

  • Level 1 - Initial:无序,自发的生产模式。
  • Level 2 - Repeatable:有基本的项目管理过程,制定必要规律,管理化制度的生产模式。
  • Level 3 - Defined:软件管理及工程过程化、标准化,完善培训和评价制度的生产模式。
  • Level 4 - Managed:分析度量数据,控制生产流程,管理预测性能的生产模式。
  • Level 5 - Optimizing:量化反馈、持续更新、改善流程,集中精力改进过程的生产模式。

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

  • SWEBok : SoftWare Engineering Body Of Knowledge,软件工程知识体系,是由多个行业成员和团体合作建立的一种国际标准,用于说明软件工程知识体系指南。建立SWEBok的目标在于促进世界范围内对软件工程的一致观点,阐明软件工程相对其他学科的位置并确立它们的界限,刻画软件工程学科的内容,提供使用知识体系的主题,为开发课程表和个人认证与许可材料,提供一个基础。SWEBok的知识领域在前面的问题中已经回答,到目前为止的版本一共定义了15个KAs,而与SWEBok相关的学科则有计算机工程,计算机科学,管理,数学,项目管理,质量管理,软件人类工程学,系统工程。
  • CMMI : Capability Maturity Model Integration,即能力成熟度模型集成(也有称为:软件能力成熟度集成模型),是一套融合多学科的、可扩充的产品集合, 其研制的初步动机是为了利用两个或多个单一学科的模型实现一个组织的集成化过程改进。CMMI的本质是软件管理工程的一个部分。CMMI分为五个级别,可以大致理解为初始级,可重复级,已定义级,量化管理级,优化管理级。CMMI的五个级别可看作五个台阶,每一个台阶都是上面一阶台阶的基石。要上高层台阶必须首先踏上较低一层台阶。企业在实施CMMI的时候,一般地讲,应该先从二级入手。在管理上下功夫。争取最终实现CMMI的第五级,达到CMMI的目的,即高效率、高质量和低成本地开发软件,改善软件生产过程。

2、解释 PSP 各项指标及技能要求:

阅读《现代软件工程》的 PSP: Personal Software Process 章节。 http://www.cnblogs.com/xinz/archive/2011/11/27/2265425.html

按表格 PSP 2.1, 了解一个软件工程师在接到一个任务之后要做什么,需要哪些技能,解释你打算如何统计每项数据? (期末考核,每人按开发阶段提交这个表)

表格PSP 2.1如下
Alt text
需要做的事情如上表。
需要的职业技能为

  • 自我管理的能力;
  • 团队执行能力;
  • 时间管理能力;
  • 对应的编程技术能力;

如何统计数据:
对每一项的数据进行分开统计,在统计的过程中注意统计有效时间而不是全部时间,而在计量单位上可以使用推荐的每人每月工作量来统计。