zoukankan      html  css  js  c++  java
  • 软件工程

    软件工程 - 最长单词链

    项目 内容
    这个作业属于哪个课程? 北航软工2019班级博客
    这个作业的要求在哪里? 结对项目-最长单词链
    我在这个课程的目标是? 按时完成老师给的任务
    这个作业在哪个具体方面帮助我实现目标 ? 让我了解该课程的基本内容

    1、Github地址

    GitHub - HansBug/pair_program_word_chain

    大佬的博客地址

    2、PSP表格(独立)

    PSP2.1 Personal Software Process Stages 预估耗时(小时) 实际耗时(小时)
    Planning 计划 1 0.5
    · Estimate · 估计这个任务需要多少时间 10 50
    Development 开发 20 22.7
    · Analysis · 需求分析 (包括学习新技术) 6 5.43
    · Design Spec · 生成设计文档 0.5 2
    · Design Review · 设计复审 (和同事审核设计文档) 3 1
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 0.5 3
    · Design · 具体设计 0.5 4
    · Coding · 具体编码 10 13
    · Code Review · 代码复审 1 3
    · Test · 测试(自我测试,修改代码,提交修改) 1 3
    Reporting 报告 3 2
    · Test Report · 测试报告 1 3
    · Size Measurement · 计算工作量 1 3
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 1 2
    合计 38 82.3

    3、结对编程的设计(独立)

    基本设计过程

    我们把代码分成3个部分:

    1. 核心接口
    2. 命令行程序
    3. GUI程序

    core.dll中的接口

    接口定义在文件core.h中,EXPORT关键字是我们自己定义的 DLL函数导出前缀。

    EXPORT int TEST_LIB_PLUS(int a, int b);
    EXPORT int gen_chain_word(char *words[], int len, char *result[], char head, char tail, bool enable_loop);
    EXPORT int gen_chain_char(char *words[], int len, char *result[], char head, char tail, bool enable_loop);
    

    4、计算模块接口的设计与实现过程

    上手就是埋头写代码,哪有时间来设计?

    5、画出UML图(独立)

    UML图

    6、计算模块接口部分的性能改进

    性能分析图

    7、描述这些做法的优缺点, 说明你是如何把它们融入结对作业中的(独立)

    这些做法非常棒!我们

    8、计算模块部分单元测试展示

    下图就是计算模块的部分单元测试啦:

    单元测试

    9、计算模块部分异常处理说明

    异常我们采用负数返回值表示,定义在 core.h 里面。

    // This is all the possible return value for exported dll function
    #define CORE_WORDS_HAS_CIRCLE        (-1)
    #define CORE_WORDS_HAS_EMPTY         (-2)
    #define CORE_WORDS_HAS_INVALID       (-3)
    #define CORE_NO_WORD_CHAIN           (-4)  // no word chain
    #define CORE_NO_MATCHED_WORD_CHAIN   (-10) // we found word chains, but they don't match start or end characters.
    

    10、界面模块(如果没有实现GUI,则可以描述命令行模块)的详细设计过程

    界面设计

    画界面用的是 QT 自带的 QT Designer 设计工具。这个工具灰常好用,所见即所得,操作又略略繁琐,虽然耗费了我们大量的时间来熟悉这个鬼东西,但最终还是取得了不错的效果。

    QT Designer 设计的界面是保存在一个名字为.ui文件中的,这个文件采用 xml 语言描述了界面设计。在编译QT App时,QT会自动将这个 .ui 文件转换成一个 .h 文件,我们可以直接在代码中使用这个文件,特别方便。

    界面特色

    我们的 GUI 是采用 QT 框架实现的,它具有以下特色:

    1. 界面美观、简洁大方、操作简单、功能完善
    2. 计算采用后台线程进行计算,较长时间运算不会卡 UI 线程

    QT App 界面截图

    11、界面模块(GUI或命令行模块)与计算模块的对接

    界面模块与计算模块的对接最后进行的几个步骤,此时我们已经完成了核心模块的编写,因此,直接在代码中调用核心模块的头文件即可正常编写代码,再配合上cmake,就能自动进行动态链接。

    所以,对接就这样完成啦。

    12、描述结对的过程

    我们同心协力,携手并进,有说有笑的完成了结对。

    图片记录:

    结对过程 - 滑稽打码

    13、结对的每一个人的优点和缺点在哪里(独立)

    张少昂
    优点 听大佬的话 技术666
    缺点 技术水平太菜了 (大佬没有缺点)
  • 相关阅读:
    Allegro PCB Design GXL (legacy) 使用slide无法将走线推挤到焊盘的原因
    OrCAD Capture CIS 16.6 导出BOM
    Altium Designer (17.0) 打印输出指定的层
    Allegro PCB Design GXL (legacy) 将指定的层导出为DXF
    Allegro PCB Design GXL (legacy) 设置十字大光标
    Allegro PCB Design GXL (legacy) 手动更改元器件引脚的网络
    magento产品导入时需要注意的事项
    magento url rewrite
    验证台湾同胞身份证信息
    IE8对css文件的限制
  • 原文地址:https://www.cnblogs.com/fondoger/p/buaa-software-engineering-pair-project-longest-word-chain.html
Copyright © 2011-2022 走看看