软件工程第一次结对作业(暂未完成)

1.在文章开头给出Github项目地址

(由于之前和罗老师说明过的特殊原因,本工程暂未完成,会在情况允许的情况下尽量补充完成)

https://github.com/BillDior/BUAA_SE_01

项目 内容
本次作业所属课程 2019BUAA软件工程
本次作业要求 完成最长单词链项目
我在本课程的目标 熟悉软件工程相关规范,学会结对编程
本次作业的帮助 学习和复习了一些图论算法和最长路径算法,初步了解工程规程、接口规范等
2.在开始实现程序之前,在下述PSP表格记录下你估计将在程序的各个模块的开发上耗费的时间
PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 10 10
· Estimate · 估计这个任务需要多少时间 10 10
Development 开发 680
· Analysis · 需求分析 (包括学习新技术) 80 60+
· Design Spec · 生成设计文档 30 45
· Design Review · 设计复审 (和同事审核设计文档) 15
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 15 5(直接采用现成的c#规范)
· Design · 具体设计 40 40
· Coding · 具体编码 480 200+
· Code Review · 代码复审 60
· Test · 测试(自我测试,修改代码,提交修改) 200
Reporting 报告 180
· Test Report · 测试报告 120
· Size Measurement · 计算工作量 20
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 40
合计 870
3.看教科书和其它资料中关于Information Hiding, Interface Design, Loose Coupling的章节,说明你们在结对编程中是如何利用这些方法对接口进行设计的

​ 查资料得知,Information hiding目的是为了隐藏实现细节,方便他人使用自己的方法,其中实现之一方式就是Interface Design,也就是接口设计,接口设计尽量松耦合(Loose Coupling),而且可拓展性强。我编写核心计算部分的DLL的时候,打算利用C++的STL库完成,但是查询资料后发现,C++的STL库出现在接口中是非常不安全的,跨语言调用更是不可行,(甭提STL库了,C++的string类型出现在接口中都不安全,尽量使用纯C风格的接口,不跨模块分配释放内存,这样保证不同运行环境调用的安全性) 但是可以多封装一层,在dll内部可以使用stl。

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

计算模块

Chain.cpp:处理单词和单词链,秉着不重复造轮子的想法, 多数数据结构都使用了C++的STL库

  • VertexNode结构体:实现图数据结构的顶点,方便操作
  • Edge结构体:实现图数据结构的边
  • Graph结构体:实现图数据结构
  • addEdge函数:连接两个顶点
  • isConnected函数:判断第一个顶点是否连接向第二个顶点

  • Words2Graph方法,从genChain方法的参数中读取vector ,通过addEdge函数来构造一个图。
  • topSort函数,用来进行拓扑排序,方便进行最长路径计算和环判断
  • getLongestChain函数,如果无环直接利用拓扑排序以后的结果获取最长路径,有环则采用
  • genChain方法,作为dll的接口,把读到的char *word[]转化成vector 类型,供Words2Graph方法使用调用计算路径的方法,得到对应的单词链。

猜你喜欢

转载自www.cnblogs.com/dszw/p/10534157.html