• 结对编程,快乐你我 #2


    项目 内容
    这个作业属于哪个课程 2021春季软件工程(罗杰 任健)
    这个作业的要求在哪里 结对编程第二次作业
    这个作业的GitLab项目地址在哪里 项目地址
    参与结对编程的是哪两位 3808 3050

    一、体验

    1.From 3808

    OO PTSD

    ISSUE OVERFLOW

    15-B1-016 PREFERRED LOCATION

    感谢助教们对ISSUE的及时FIX

    愿武运昌隆

    2.From 3050

    • 几天前还在看1906 oo人的笑话,今天发现小丑竟是我自己(

    • 在熟悉之后结对效率的提高较为明显,夜里昏头的时候有另一个人帮忙看着指出错误效果极佳

    • 再次认识到了需求分析的重要性,最开始没看出来cp操作有两种类型,拷贝和覆盖,然后出一个issue我惊诧一次。后来发现问题改正后至少再看那些issue就自然而然。这么说来指导书+issue其实真的有在暗示某种架构(当然啦肯定是标程吧),特别是在细节处理上,如果使用某种架构就能自然而然解决,但另一些方法,只要处理有不同就要极不优雅的特判。

    • 单元测试很重要,发现了一堆大锅。两个人写测试确实能找到一个人照顾不到的地方

    • 结对编程的项目应该和真正的工程需求还是有所不同的(应该是更有逻辑的),指导书也远比工作中有可能接触到的客户需求精准明晰,助教回复也超级及时,然而这样我们还是在需求分析上花了大量时间,确实觉得软件工程中需求的部分是最艰难的也最重要的。

    3.结对编程方式

    仍然沿用任务一时采用的Code with me

    结对编程现场图:

    二、设计实现思路

    1.思路

    1.1 文件系统

    一切皆文件,目录、文件和链接均继承自抽象文件类

    软链接仅保存绝对路径;硬链接仅保存所指对象的引用,且文件中包含保存所有指向自身的硬链接的列表,当文件发生更改时,会通知所有硬链接文件大小的变化

    获取实体的方法分为重定向和不重定向,根据指导书要求选用不同方法

    文件系统的mv方法在确认可以完成move操作后

    • 如果不需要覆盖目标文件,直接将原文件从原文件的父文件夹中移除,并放置在目标文件夹中
    • 否则,则在记录下目标文件的元数据后,移除目标文件,将元数据恢复到原文件后,再进行移除放置操作

    mv方法不涉及重定向操作,此外,当mv操作涉及覆盖时,不需要保证被覆盖对象仍与其原有硬链接同步,因此可以上述操作

    文件系统的cp方法在确认可以完成copy操作后,调用抽象文件类的抽象方法copy,创建原文件的副本

    • 如果不涉及覆盖,则直接将该副本添加到要被拷贝的目标文件夹下
    • 如果涉及覆盖,且拷贝前后对象类型不同,采用类似mv中的先删除再添加方法(与ISSUE相关内容不同,但本次测试不涉及)
    • 如果涉及覆盖,且拷贝前后对象类型相同,则调用被拷贝对象的coverFrom方法,在保留目标文件元数据的同时,利用原文件的内容完成覆盖

    1.2 用户系统

    本次用户系统较为独立,且指导书内容较为明确,依次完成UserUserGroupMyUserSystem的设计、实现和测试工作

    1.3 系统交互

    通过在SystemManager中设置两个静态变量,分别指向MyFileSystemMyUserSystem,当两个系统需要交互时,通过两个静态变量获取所需内容即可

    2.测试

    测试文件代码量 = 功能文件代码量 * 3

    2.1 回归测试

    将第一次作业单元测试和第一次作业强测数据(根据第二次指导书要求内容做出对应修改)用作回归测试

    2.2 针对测试

    对30+ISSUE(不包含【不测】类型的ISSUE)编写测试数据,进行针对性测试

    2.3 单元测试

    针对新功能编写单元测试数据,进行全面的单元测试

    三、PSP

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 5 10
    · Estimate · 估计这个任务需要多少时间 5 10
    Development 开发 1690 2635
    · Analysis · 需求分析 (包括学习新技术) 30 200
    · Design Spec · 生成设计文档 30 10
    · Design Review · 设计复审 (和同事审核设计文档) 30 20
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 10 5
    · Design · 具体设计 30 100
    · Coding · 具体编码 500 600
    · Code Review · 代码复审 60 100
    · Test · 测试(自我测试,修改代码,提交修改) 1000 1600
    Reporting 报告 70 60
    · Test Report · 测试报告 30 30
    · Size Measurement · 计算工作量 10 10
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 20
    合计 1765 2705
  • 相关阅读:
    数据结构入门
    C语言入门-全局变量
    C语言入门-类型定义
    C++ 名称空间嵌套
    C++ 名称空间
    C++ 一些术语
    C++ new初始化与定位new运算符
    网络时间自动同步工具
    C++ 语言链接性
    C++ 函数和链接性
  • 原文地址:https://www.cnblogs.com/joeye153/p/14608989.html
Copyright © 2020-2023  润新知