软件工程结对作业——第一阶段
请各位同学在开展结对编程项目时记录下述活动,并发表在博客上。本博客为结对项目阶段性总结,把清单内容讲清楚即可,不必长篇大论。一个结对的团队只需要发表一篇博客即可。
在博客开头给出教学班级和GitLab项目地址,以及结对的两个同学学号的后四位。
简单描述对于结对编程的感受,并给出两人开展现场结对编程的照片。如果还有采用其他的方式进行结对编程,也可以用照片或者截图等形式记录下来。
简单描述你对本项目程序的设计和实现思路。
采用下述PSP表格记录下你估计在程序的各个模块的开发上所需的时间和实际花费时间。
项目 | 内容 |
---|---|
这个作业属于哪个课程 | 2021春季软件工程 |
这个作业对应的GitLab项目地址 | 软件工程结对作业 |
学号后四位 | 3439和3358 |
编程感受
-
尽管是结对编程,但也要在开始结对之前对整个项目的需求进行分析和独立思考,这样才能在结对时进行讨论项目的设计和实现思路。刚刚开始第一次进行工作时,两个人进行架构设计时,是想到哪里写到哪里,效率很低,完全在讨论中度过,并遗留了很多问题。
-
结对编程时,两个人编程的习惯以及编程思想需要多进行探讨和思考,要学会接受别人的风格思路。
-
在开始编程之前,两个人一定要先交流清楚自己的想法,讨论出一个无异议的实现思路,不要写到哪里,发现两个人的思路不一样,然后开始辩论两个人谁的想法好,会严重影响编码效率。
-
结对变成让我从队友身上学到了很多东西,比如对与代码精炼的追求,对于idea各种快捷键的使用,受益匪浅。
结对过程照片如下:
设计思路
作业要求为实现一个文件管理系统,支持文件与目录的增删改查等功能。
我们设计了 Dir
类和 File
-
Dir
类,实现了对于一个目录的抽象。一个目录下可以有多个子目录和多个子文件,目录有属于自己的父目录、绝对路径、创建和修改时间等属性来进行描述。 -
File
类,实现了对于一个文件的抽象。一个文件有文件绝对路径、文件大小、文件内容、文件父目录、创建和修改时间等属性来进行描述 -
MyFileSystem
类,实现了对命令的操作。
MyFileSystem
类中的操作主要分为两类:对目录的操作和的对文件的操作。
-
对目录的操作。对目录的操作重点是如何根据一个目录路径来查找该路径所对应的
Dir
对象,并在查找过程中对此路径的合法性进行判断。我们的实现是对路径提取出每一个目录的name
,并从根目录或当前目录进行递归查找,找到之后进行对目标目录进行创建、修改或删除等操作,未找到时根据指令来判断是否抛出异常和是否进行创建目录。 -
对于文件的操作。对文件的操作重点是如何根据一个路径查找到该路径所对应的
File
类对象,并在查找过程中对输入路径进行合法性判断。我们的实现是同目录的操作,首先提出路径中的每一个过程目录的name
,并从当前根目录或当前目录进行递归查找,当查找到最后一层目录之后,在其子文件中查找目标文件对象,找到之后,进行对文件的修改、删除等操作,未找到时根据指令来判断是否抛出异常和是否进行创建文件以及对文件写入内容。
PSP表格
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | 60 | 120 |
· Estimate | · 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | 300 | 330 |
· Analysis | · 需求分析 (包括学习新技术) | 30 | 20 |
· Design Spec | · 生成设计文档 | 30 | 30 |
· Design Review | · 设计复审 (和同事审核设计文档) | 20 | 30 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 10 | 10 |
· Design | · 具体设计 | 60 | 60 |
· Coding | · 具体编码 | 300 | 300 |
· Code Review | · 代码复审0 | 30 | 60 |
· Test | · 测试(自我测试,修改代码,提交修改) | 120 | 180 |
Reporting | 报告 | 60 | 60 |
· Test Report | · 测试报告 | 120 | 120 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 30 | 20 |
合计 | 1200 |