结对作业
一、项目地址
二、估计PSP
PSP |
任务内容 |
计划共完成需要的时间 (min) |
Planning |
计划 |
50 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
50 |
Development |
开发 |
约8d |
Analysis |
需求分析 (包括学习新技术) |
40 |
Design Spec |
生成设计文档 |
30 |
Design Review |
设计复审 (和同事审核设计文档) |
15 |
CodingStandard |
代码规范 (为目前的开发制定合适的规范) |
25 |
Design |
具体设计 |
45 |
Coding |
具体编码 |
300 |
Code Review |
代码复审 |
50 |
Test |
测试(自我测试,修改代码,提交修改) |
600 |
Reporting |
报告 |
100 |
Test Report |
测试报告 |
40 |
Size Measurement |
计算工作量 |
20 |
Postmortem & Process Improvement Plan |
事后总结, 并提出过程改进计划 |
40 |
三、资料阅读
信息隐藏
指在设计和确定模块时,使得一个模块内包含的特定信息(过程或数据),对于不需要这些信息的其他模块来说,是不可访问的。
设计时,提高方法的封装性,将每个方法接收数据、处理数据、传递数据功能设计好,提高抽象性
接口设计
接口在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法
设计时,通过注释解释接口的作用、调用前提、参数、返回值。防止使用者看不懂。
松耦合
模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。
设计时,一个函数实现一个独立的功能(强内聚);模块内子程序应共享数据,而减少全局变量能降低子程序性间的耦合性。
四、接口设计与实现
command主函数接收参数并对参数进行处理,异常处理结果提交给printData提示错误,否则传递参数给createFile来创建txt
createFile使用generate来生成表达式,并对产生括号addBracket、生成指定操作符表达式Expression、结果求值Expression_result
Expression_result使用了转后缀toReversePolish计算
五、接口性能改进
六、单元测试
单元测试不熟悉,未能编辑出测试代码,只能每次一组一组地运行,导致覆盖率较低
七、异常处理
参数范围
八、界面设计
使用了javafx完成
1 public class calUI extends Application { 2 long startTim=0; 3 long endTim=0; 4 int right=0; 5 static int readN=0; 6 static int sta=0; 7 //Button startAns=new Button("开始答题"); 8 AnchorPane anchorPane=new AnchorPane(); 9 Label showGe=new Label("表达式"); 10 Button subAns=new Button("产生下一道题目"); 11 Button intro=new Button("使用介绍"); 12 HBox v=new HBox(20); 13 TextField res=new TextField(); 14 String[] importGenerate=new String[11000]; 15 int[] geneRes=new int[11000]; 16 Button sub=new Button("生成题目"); 17 Button bt1=new Button("我要答题"); 18 Button bt2=new Button("我要出题"); 19 static TextField str=new TextField(); 20 Stage stage=new Stage(); 21 public static void main(String[] args) throws IOException 22 { 23 launch(args); 24 } 25 @Override 26 public void start(Stage primaryStage) { 27 primaryStage.setHeight(618); 28 primaryStage.setWidth(1000); 29 bt1.setPrefSize(100,50); 30 bt2.setPrefSize(100,50); 31 intro.setPrefSize(100,50); 32 HBox hb=new HBox(150); 33 hb.getChildren().addAll(bt1,bt2,intro); 34 hb.setAlignment(Pos.CENTER); 35 v.setAlignment(Pos.CENTER); 36 v.getChildren().addAll(showGe,res,subAns); 37 AnchorPane.setBottomAnchor(v,200.0); 38 AnchorPane.setLeftAnchor(v,300.0); 39 anchorPane.getChildren().addAll(hb,v); 40 v.setVisible(false); 41 AnchorPane.setLeftAnchor(hb,primaryStage.getWidth()/5.0); 42 AnchorPane.setTopAnchor(hb,100.0); 43 Scene myScene=new Scene(anchorPane,1000,618); 44 primaryStage.setScene(myScene); 45 primaryStage.setTitle("算你狠"); 46 primaryStage.initStyle(StageStyle.DECORATED); 47 primaryStage.show(); 48 subAns.setOnAction(new handler());//提交答案 49 bt1.setOnAction(new handler()); 50 bt2.setOnAction(new handler()); 51 }
界面2.0更新:详见张济吨博客
九、模块对接
十、结对过程
阿萨德
十一、结对思考
结对编程:
优点:
两人合作能有更强的解决问题的能力
结对编程让两个人所写的代码不断地处于“复审”的过程
结对编程特别适合于知识的分享和传递
缺点:
开发人员需要时间来适应这种新的开发模式
并不是所有的项目都适合结对编程
两个人水平相似,结对编程有浪费时间的嫌疑
结对编程很累
个人优缺点:
张济吨
优点:java基础夯实、动手能力强、敢想敢做
缺点:倔强
李伟
优点:一定的算法基础、思维活跃、认真踏实
缺点:懒散
十二、PSP表格
PSP2.1 |
任务内容 |
实际完成需要的时间 (min) |
Planning |
计划 |
60 |
Estimate |
估计这个任务需要多少时间,并规划大致工作步骤 |
60 |
Development |
开发 |
2420 |
Analysis |
需求分析 (包括学习新技术) |
45 |
Design Spec |
生成设计文档 |
20 |
Design Review |
设计复审 (和同事审核设计文档) |
10 |
CodingStandard |
代码规范 (为目前的开发制定合适的规范) |
20 |
Design |
具体设计 |
45 |
Coding |
具体编码 |
1080 |
Code Review |
代码复审 |
60 |
Test |
测试(自我测试,修改代码,提交修改) |
1140 |
Reporting |
报告 |
85 |
Test Report |
测试报告 |
25 |
Size Measurement |
计算工作量 |
20 |
Postmortem & Process Improvement Plan |
事后总结, 并提出过程改进计划 |
40 |