SoftWare Engineering -- WEEK.3


SoftWare Engineering – WEEK.3

2022.3.18 @Raoquan


WEEK.3 List

0. Coursework

  • some details

1. Requirement

  • user story
  • product backlog
  • prototyping
  • product backlog

1. Analysis & Design

  • some details

0. Coursework

认真思考了一下,这个小组作业好像也没有那么简单。虽然单纯从开发角度想,我觉得我一个人就能开发出来,但这门课的重点是软件工程,如何以敏捷开发的形式和人打交道,这是本次应该学习的。

按照描述来看,每个epic拆分的话还是能拆成很多细节点的。不让使用数据库,那么关于后台数据库的建立还是比较困难的。
而且不停的迭代中,怎么解藕也是重点。
下面写一些我的分析

a. some details

这个软件就相当于机场的那个自动值机干的事情,需要有一个良好的框架(也就是MVC)才能降低耦合。在一开始就需要规范好整体框架避免后期的麻烦。

请添加图片描述

1. DAO – data access object

先说DAO层,因为不允许使用数据库,只能用txt json xml csv。我思考了半天觉得还是用JSON比较好,有些地方加一些csv(excel表格),特别轻量的地方也可以使用txt

首先为啥用JSON不用xml,虽然JSON的主场在web开发中。这两者作为结构化的数据都很好读,而且也有对应的java接口,增删改查百度一下改改代码就可以用。但是JSON比起XML来说,轻量的太多了,传输速度也会快很多。虽然作为一个值机系统,他的后台数据是庞大的,但是我们只是一个大作业。用不到太多的数据,为了这些数据去编写庞杂的xml文件,确实有点浪费时间。
具体参照下面的例子,而且增删改查的函数,json的代码量也会小很多

<?xml version="1.0" encoding="utf-8" ?>
<country>
  <name>中国</name>
  <province>
    <name>黑龙江</name>
    <citys>
      <city>哈尔滨</city>
      <city>大庆</city>
    </citys>    
  </province>
  <province>
    <name>广东</name>
    <citys>
      <city>广州</city>
      <city>深圳</city>
      <city>珠海</city>
    </citys>   
  </province>
  <province>
    <name>台湾</name>
    <citys>
       <city>台北</city>
       <city>高雄</city>
    </citys> 
  </province>
  <province>
    <name>新疆</name>
    <citys>
      <city>乌鲁木齐</city>
    </citys>
  </province>
</country>
 var country =
        {
            name: "中国",
            provinces: [
            { name: "黑龙江", citys: { city: ["哈尔滨", "大庆"]} },
            { name: "广东", citys: { city: ["广州", "深圳", "珠海"]} },
            { name: "台湾", citys: { city: ["台北", "高雄"]} },
            { name: "新疆", citys: { city: ["乌鲁木齐"]} }
            ]
        }

所以JSON用来传输航班信息,每架航班上的乘客信息,用餐信息,也即是利用JSON来模拟数据库。
csv可以用来存放一些较小的,比如机场有哪些食堂啊,
txt就可以存放一组管理员密码,因为这个数据太少了,txt最轻量,直接读写就可以
以上只是我暂时的思路,可能在实现中还会改进

2. 业务层

首先我们要定义entity类,可能会有航班类,乘客类,座位类啥的,这都是参照数据库怎么构建的,包括entity的attribute,然后方法就是自动生成getter和setter
然后就是service类,服务类就是要为entity实现什么功能,比如为乘客。那么就定义一个passengerService的接口,在里面写将要完成的方法,比如选座,选餐,打印登机牌啥的。然后再写一个passengerServiceImpl,这里实现接口,并与dao层进行交互,也就是在函数体内部写那些JSON的增删改查的函数啥的。

3. 控制层

Controller这个层就要调用service中的服务,并且与view层,也就是我们的gui结合起来。比如gui上定义了一个摁钮是选座,它对应的是service中的选座方法,那么就在controller中关联起来。

4. 视图层

这个就没啥好说的了,就是我们的GUI,我们以前学过Swing。但是这个好像并不能像网页那样完全前后端分离吧,具体怎么写还得看后面。所以可能在这个项目中,控制层和视图层是合并的

最后,我们要有junit的测试类,怎么用上一篇博客我写过了

以上仅为面对乘客方面,我们还需要考虑管理员

b. 需求分析

先说对于乘客的,基本就是办理登记手续(选座,用餐计划,领取登机牌)
办理登记手续,pdf中说了三种方式。预定号码,身份证,扫描ID文档。办理就需要将后台的数据进行更新(座位减少什么的),然后领取登记牌。
关键是这个扫描ID文档就很微妙,单纯的读取txt中的信息那也好说,关键是这个txt文件是怎么来的?????用户怎么就把这个txt提交给机场。如果要调用摄像头进行扫描的话,这个确实需要考虑一下,虽然我知道Java可以实现CV扫描二维码,但这个功能不知道是不是想多了。后续再看吧。
然后领取登机牌。Java可以发送邮件,但是如果现实中是要打印的,也许需要将信息导出为一个txt文件,然后调用打印机打印???不过我们这里肯定不需要打印机
这是我暂时想到几个点,后续的迭代中还会根据需要加新的,这个项目应该没有上限,看大家怎么卷了

再说管理员的,这个其实功能不太多,只要能显示值机信息就行,也就是读取文档然后打印。管理员肯定是不能随便修改的,应该可以取消航班,然后邮件通知所有乘客。其他就是比较常规的东西没啥好说的

希望本次开发顺利

1. Requirement

在敏捷开发的需求分析的大致流程为:我们需要先列出user story(包括他们的acceptance criteria),然后将这些story集成为product backlog,为stories添加priority,时间等等

a. MoSCoW

用于分析优先级,基于DSCM(dynamic systems development method)

b. Estimating

就是会用 story points来衡量效益(一般使用斐波那契数列),点数越高,不确定性越高。因为点数越高,任务也越难,所以更加不确定(这个点数大小一般通过团队的经验来判断)

c. Prototyping

分为两种:物理和逻辑,前者就是画画图有个实物,后者就是在脑中的分析,这个产品它该有什么东西这类的

低保真:就是在纸上画图,这种方式很快很高效,且能及时修改得到反馈
中保真:基本就是拿软件画出来的原型图,可能就是个图,,有一定的交互功能
高保真:这个就和最后的产品差别不大,是随着不断开发生成的,能和用户交互的原型设计

2. Analysis

分析是对需求的精炼,这是开发者干的。在我的理解里,就是要构建实现项目的思路,设计底层的entity类以及数据库这些。总之就是整个项目最基础的部分,而如何缕清他们的关系,就要根据backlog来设计uml图。

a. Conceptual modelling

ppt说这个应该得到concepts(entity class),attributes(local variables in class),operations(function in class),associations(between entity classes 比如继承或者关联).
而描述他们的方式就是UML class diagrams图

b. Analysis class

有三种,entity,boundary(GUI),control(service),结合MVC很好理解,换个名字而已

c. class relationships

第一种是关联,就比如学校和学生,一个学校有0到无穷的学生,学生有0到1个学校,注意下ppt的表示方法
第二种是继承,这个没什么好说的

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值