homework-03
以下分割线内摘自zjoe
----------------------------------------------------------
基本思路
这个问题本身很容易,但无奈老师的要求实在是奇怪。要从命令行 启动程序,并且多次运行后只保留一个程序在运行。已经都写UI了 为何还要用命令行控制?如果非要满足这个要求,还需要写很麻烦 的进程切换,所以我没有完全按照老师的要求写。我的想法是用UI 作为主控程序,直接在UI内实现参数的输入。输入后用户按下按钮 触发一个过程,在这个过程中实现如下功能:
- 分离参数
- 将参数传递给计算程序,执行计算
- 获取计算结果
- 新建tab并显示结果
这样实现的话计算程序运行完后就退出了,所以系统中不会有两个 maxsum在运行。
实现
由于最近一直在linux下学习,所以决定采用gtk来实现。Gtk是用c 语言实现的图形化库,几乎是完全按面向对象的规范实现的。容器 的思想使得用起来非常方便高效。不得不说c语言真的很强大,面 向对象不是语言属性,而是思想属性。
细节
具体实现的时候其实是两个程序分开来了,原来的计算程序没动。UI 直接调用计算程序,输出的结果保存在一个文件中,UI再读入处理。 没有采用进程通信之类的,感觉实在没有必要。没有把程序写在一起 是因为太长了,而且因为要多次执行计算,计算程序中的一些变量初 始化容易出问题,索性直接调用程序。具体图形化的细节就不说了, 了解了gtk的一些规则后真没什么说的,写就行了。有些细节没有再 细致的处理,如组件大小之类的,这周作业略多,时间不太够,望谅 解。
运行效果
------------------------------------------------------------------------------
回答问题
你现在使用的代码规范是什么, 和上课前有什么改进?
答: 现在比较注意代码的模块化,并尽量让更多代码得到重用.代码要写得好其实很不容易,需要注意到实现效率和可扩展性.而面向对象可能是一种提高模块化和可扩展性的方法.
你的同伴有哪些优点 (列出至少三点), 和那些需要改进的地方 (列出至少三点)
答:代码能力强,学习效率高,并且具有一定的沟通能力.需要改进的地方:坚持用c语言写图形化,坚持GTK(其实用python+Qt很方便的),太坚持自己的看法.
你的代码从 作业2 到 作业3 经历了哪些变化? 哪些代码需要重构 (看关于代码重构的资料), 哪些需要重写, 为什么?
答:由于作业3只是在原来的基础上增加了一个图形化程序,所以原代码基本不用变化,两个代码之前的通讯是通过作业2运行结果输出的文件来的.在作业3中,主要程序是作业3中增加的图形化程序,而在图形化程序中去调用作业2的程序,基本不需要重构.
你的设计是如何保证 不同的 maxsum.exe 命令行最后在一个GUI 的界面显示的? (C++ 的设计模式中有singleton 的概念, 说明一个类的实例如何在一个进程中保持单例, 我们这里谈的是软件如何在操作系统中保持 singleton)
答:只需要保持图形化界面存在,运行一次命令之后增加一个tab就行了.由于对C++不熟所以这个问题不会回答..
当然, 请继续记录时间的估计和你实际的用时:
Personal Software Process Stages |
时间百分比(%) |
实际花费的时间 (分钟) |
原来估计的时间 (分钟) |
|
Planning |
计划 |
|||
· Estimate |
· 估计这个任务需要多少时间,把工作细化并大致排序 |
10 | 10 | 10 |
Development |
开发 |
|||
· Analysis |
· 需求分析 (包括学习新技术) |
30 | 2*60 | 1*60 |
· Design Spec |
· 生成设计文档 |
0 | 0 | 0 |
· Design Review |
· 设计复审 (和同事审核设计文档) |
0 | 0 | 0 |
· Coding Standard |
· 代码规范 (制定合适的规范) |
5 | 10 | 10 |
· Design |
· 具体设计 |
10 | 30 | 60 |
· Coding |
· 具体编码 |
30 | 4*60 | 3*60 |
· Code Review |
· 代码复审 |
0 | 0 | 0 |
· Test |
· 测试(自我测试,修改代码,提交修改) |
10 | 30 | 20 |
Reporting |
总结报告 |
5 | 10 | 10 |
|
0 |
0 |
0 | |
|
0 | 0 | 0 | |
Total | 总计 | 100% |
总用时 7.5h |
总估计的用时 5.75h |