zoukankan      html  css  js  c++  java
  • 结对项目第二阶段小结

    结对项目第二阶段小结

    基本信息

    项目 内容
    本作业所属课程 2020春季软件工程(罗杰 任健)
    本作业要求 采用结对编程的形式完成一个简单的文件管理系统

    结对编程感受

    1045

    相比于第一次结对,这次合作配合的确实更好了。这次主要的问题不是出在编码,而是出在需求理解。这次增加了软链接、硬链接、移动、拷贝,这四个十分灵活的指令,为了能够操作软链接文件,其在不同指令具有不同的语义,再加上这四个指令在<dstpath>已存在且为目录时会缺省对目录下的<srcname>进行操作,所以分支情况很多,更进一步,为了减少指导书篇幅、避免一致性问题,很多条件和分支都采用了xx指令同样处理,不在赘述类似的描述。所以很多时候需要通过issue来进行提问,但是问题就出来了,单独在宿舍编程的时候,遇到需要等待issue解答的情况,可以先去做别的事情,但是结对编程的时候,我们都专门腾出时间,在食堂进行结对编程,等待解答就无事可做,所以就按照自己的理解先做了,然后等解答有了结果再回来改,有些地方蒙对了,不用再改了,但是有些地方就需要重新来写了。

    3298

    本次软工作业最大的难度可能就是读懂指导书吧.指导书多次出现下面不在赘述的字眼,感觉非常需求难以理清.虽然和队友提了很多issue,但是到现在都不敢说自己弄懂了指导书.直到最后一天还在照着issue看有没有什么遗漏的地方.这次作业可能就是在锻炼我们不要跟产品经理打架的能力吧.每次食堂写完代码都是痛苦面具,吃饭都不想去新北负一楼了.

    而我跟队友的配合也越来越默契,这次帮队友分担了一部分的单元测试,第一次写单元测试的感觉还是有点微妙的,直到周三我们都没有通过弱测,然后写了一部分单元测试以后找到了bug,从此对单元测试由黑转路了.

    程序设计和实现思路

    本次作业相对于上次作业,主要有两方面改动,一方面是用户管理系统,这一部分都是比较常规的增改删查,另一方面是文件系统加入了软链接、硬链接、拷贝、移动,这一部分不仅和之前的部分有很深的耦合,其提供的灵活性也造成了很大的麻烦。

    对于硬连接部分,为File类建立内部类InnerFile,原本的创建时间、修改时间、创建用户、内容等信息全部在InnerFile中保存,File只保存路径相关的属性,如父目录引用、文件名,创建硬链接时,多个File引用相同的InnerFile以达到设计要求。值得注意的是,虽然软链接本质为文件,并且在cpmv等指令中与文件有相同的行为,但是由于设计需求中不要求对软链接建立硬链接,所以软链接类Redirection并没有采取File类似的设计。如果有条件的话,会考虑让FileRedirection拥有相同的基类,该基类负责对内容的控制,FileRedirection分别负责对内容不同的解释方式。

    另外,本次作业加入了操作的原子要求,即一个操作要么全部完成,要么什么更改都不进行,所以我们加入了简单的事务管理,不考虑多个事务的协同,同时只能进行一个事务。具体的实现方法是每一个对FileControlBlock的修改操作,都向RollbackStack中注册一个回调函数以撤销其更改,当事务提交时,清空RollbackStack,当事务因异常而失败时,将RollbackStack中的回调函数依次弹出并调用,进行撤销。由于之前已经将每一个FileControlBlock的可变部分强制分离出来,添加到内部类FileControlBlock.ModifyHandler中,所以这样的实现并不困难。

    以下为FileControlBlock部分的模型的UML图:

    时间花费记录

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划
    · Estimate · 估计这个任务需要多少时间 10 10
    Development 开发
    · Analysis · 需求分析 (包括学习新技术) 20 30
    · Design Spec · 生成设计文档 10 10
    · Design Review · 设计复审 (和同事审核设计文档) 10 10
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 10
    · Design · 具体设计 10 30
    · Coding · 具体编码 400 600
    · Code Review · 代码复审 100 200
    · Test · 测试(自我测试,修改代码,提交修改) 200 400
    Reporting 报告
    · Test Report · 测试报告 10 10
    · Size Measurement · 计算工作量 10 10
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 10 10
    合计 800 1320
  • 相关阅读:
    PostgreSQL 模式(SCHEMA)
    PostgreSQL学习---模式schema
    psql 工具详细使用介绍
    CentOS 下 VNC Server 的配置与使用
    如何处理/boot/efi/EFI/cento from install of fwupdate-efi
    uGUI练习(二) Animate UI
    uGUI练习(一) Anchor
    uGUI练习 开篇
    Fix "Missing Scripts"
    用uGUI开发自定义Toggle Slider控件
  • 原文地址:https://www.cnblogs.com/SnowPhoenix/p/14611971.html
Copyright © 2011-2022 走看看