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的表示方法
第二种是继承,这个没什么好说的

SoftWare Engineering -- WEEK.3相关推荐

  1. Software Engineering 265

    代做Engineering 265作业.代写Python编程作业.代做Python作业.代做via Gitlab作业 Software Engineering 265 Software Develop ...

  2. Software Engineering at Google

    Google的Fergus Henderson在Software Engineering at Google中介绍了Google的软件工程实践. 软件开发 源码仓库 单一源代码仓库,除了核心配置和安全 ...

  3. 加州大学欧文计算机工程硕士,UCI加州大学尔湾分校软件工程硕士Master of Software Engineering...

    软件工程硕士Master of Software Engineering是加州大学尔湾分校研究生申请的热门专业,下面由美英港新教育重点介绍软件工程硕士研究生的课程设置.培养目标.申请要求及学费. 培养 ...

  4. Software Engineering at Google翻译-III-11-Testing overview(测试概述)

    参考: https://github.com/daizhenhong/swe-at-google/blob/main/Part_III_Processes/total/Chapter-11-total ...

  5. 软件工程(Software Engineering)

    软件工程(Software Engineering) GTI-分布式版本控制系统 查看已有的git配置信息 DVOS运维一体化 单分支模型 exit git --version git clone u ...

  6. Something about Software Engineering

    文章目录 软件工程 定义 Definition 软件危机 Software Crisis 软件生命周期 软件工程知识体系 SWEBoK(Software Engineering Body of Kno ...

  7. 【北邮国院大三下】Software Engineering 软件工程 Week1

    北邮国院大三电商在读,随课程进行整理知识点.仅整理PPT中相对重要的知识点,内容驳杂并不做期末突击复习用.个人认为相对不重要的细小的知识点不列在其中.如有错误请指出.转载请注明出处,祝您学习愉快. 编 ...

  8. 论文阅读:Empirical software engineering experts on the use of students and professionals in experiments

    题目:Empirical software engineering experts on the use of students and professionals in experiments ES ...

  9. 个人阅读作业2—《No Silver Bullet: Essence and Accidents of Software Engineering》读后感

    在进行了一次结对编程.一次团队编程和一次个人编程项目后,读了<No Silver Bullet: Essence and Accidents of Software Engineering> ...

最新文章

  1. java中判断两个字符(或者字符串相等)
  2. 这一年,信息技术领域上演的“断舍离”
  3. ASP.NET中前台javascript与后台代码调用
  4. 多无人机对组网雷达的协同干扰问题 数学建模
  5. Python 字符串方法详解
  6. 计算机进去pe怎么设置用户,电脑密码怎么设置,教您设置电脑开机密码
  7. 近十年数据库流行趋势纵览!存储计算分离、ACID 全面回归......
  8. 项目中遇到的问题及解决办法
  9. AcWing 869. 试除法求约数(枚举)
  10. mysql web客户端_mycli--让你惊艳的mysql客户端
  11. Linux安装Tomcat8并启动或停止tomcat服务
  12. javaweb学生选课系统
  13. 计算机中MAX函数是求什么,MAX函数
  14. Winform(XtraReport)实现打印方法(转载)(只是自我参考有错误的地方欢迎各位大佬前来交流心得)...
  15. php微信公众号开发,入门篇(实现了关注公众号发送欢迎信息,发关键词自回复)
  16. Hadoop学习(七)---namenode结点的详细讲解
  17. 还原扩容的缩水U盘真实容量方法(转载)
  18. 第六章——总线系统(2)
  19. 55 个 Linux 练手项目合集,打通你的 Linux 任督二脉 !
  20. mysql转sqlserver_mysql迁移sqlserver

热门文章

  1. 如何用QT做串口调试助手Qseriaport类的使用
  2. 这些业务,正在帮助百度跳出搜索框
  3. JavaScript自定义求和函数
  4. Python学习之CSDN21天学习挑战赛计划之2
  5. miss工作室官宣加盟新公司是真的吗
  6. 使用Xcode的Instruments检测内存泄漏
  7. 调戏 ChatGPT
  8. 大数据学长面试之boss直聘面试题
  9. robotframework之解决导入httplibrary库一直标红的问题
  10. 翻译 | 正式发布Qt 5.11