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的表示方法
第二种是继承,这个没什么好说的
SoftWare Engineering -- WEEK.3相关推荐
- Software Engineering 265
代做Engineering 265作业.代写Python编程作业.代做Python作业.代做via Gitlab作业 Software Engineering 265 Software Develop ...
- Software Engineering at Google
Google的Fergus Henderson在Software Engineering at Google中介绍了Google的软件工程实践. 软件开发 源码仓库 单一源代码仓库,除了核心配置和安全 ...
- 加州大学欧文计算机工程硕士,UCI加州大学尔湾分校软件工程硕士Master of Software Engineering...
软件工程硕士Master of Software Engineering是加州大学尔湾分校研究生申请的热门专业,下面由美英港新教育重点介绍软件工程硕士研究生的课程设置.培养目标.申请要求及学费. 培养 ...
- Software Engineering at Google翻译-III-11-Testing overview(测试概述)
参考: https://github.com/daizhenhong/swe-at-google/blob/main/Part_III_Processes/total/Chapter-11-total ...
- 软件工程(Software Engineering)
软件工程(Software Engineering) GTI-分布式版本控制系统 查看已有的git配置信息 DVOS运维一体化 单分支模型 exit git --version git clone u ...
- Something about Software Engineering
文章目录 软件工程 定义 Definition 软件危机 Software Crisis 软件生命周期 软件工程知识体系 SWEBoK(Software Engineering Body of Kno ...
- 【北邮国院大三下】Software Engineering 软件工程 Week1
北邮国院大三电商在读,随课程进行整理知识点.仅整理PPT中相对重要的知识点,内容驳杂并不做期末突击复习用.个人认为相对不重要的细小的知识点不列在其中.如有错误请指出.转载请注明出处,祝您学习愉快. 编 ...
- 论文阅读: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 ...
- 个人阅读作业2—《No Silver Bullet: Essence and Accidents of Software Engineering》读后感
在进行了一次结对编程.一次团队编程和一次个人编程项目后,读了<No Silver Bullet: Essence and Accidents of Software Engineering> ...
最新文章
- java中判断两个字符(或者字符串相等)
- 这一年,信息技术领域上演的“断舍离”
- ASP.NET中前台javascript与后台代码调用
- 多无人机对组网雷达的协同干扰问题 数学建模
- Python 字符串方法详解
- 计算机进去pe怎么设置用户,电脑密码怎么设置,教您设置电脑开机密码
- 近十年数据库流行趋势纵览!存储计算分离、ACID 全面回归......
- 项目中遇到的问题及解决办法
- AcWing 869. 试除法求约数(枚举)
- mysql web客户端_mycli--让你惊艳的mysql客户端
- Linux安装Tomcat8并启动或停止tomcat服务
- javaweb学生选课系统
- 计算机中MAX函数是求什么,MAX函数
- Winform(XtraReport)实现打印方法(转载)(只是自我参考有错误的地方欢迎各位大佬前来交流心得)...
- php微信公众号开发,入门篇(实现了关注公众号发送欢迎信息,发关键词自回复)
- Hadoop学习(七)---namenode结点的详细讲解
- 还原扩容的缩水U盘真实容量方法(转载)
- 第六章——总线系统(2)
- 55 个 Linux 练手项目合集,打通你的 Linux 任督二脉 !
- mysql转sqlserver_mysql迁移sqlserver