2020软件工程-结对项目作业

谁说胖子不能爱 提交于 2020-03-22 17:19:11

2020软件工程-结对项目作业

1. 项目简介

github链接

项目 内容
这个作业属于哪个课程 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2020_LJ
这个作业的要求在哪里 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2020_LJ/homework/10466)
我在这个课程的目标是 提升软件开发能力
这个作业在哪个具体方面帮助我实现目标 提升了个人编程能力, 测试和提升代码性能的能力

2. PSP时间花费

PSP2.1 Personal SoftWare Process Stages 预计耗时 实际耗时
Planning 计划 120 60
Estimte 估计这个任务需要多少时间 1800 1700
Development 开发 1100 1000
Analysis 需求分析 0 0
Desing Spaec 生成设计文档 100 40
Design Review 设计复审 100 10
Coding Standard 代码规范 0 0
Design 具体设计 60 40
Coding 具体编码 1100 180
Code Review 代码复审 60 60
Test 测试 180 180
Reporting 报告 100 120
Test Report 测试报告 0 0
Size Measurement 计算工作量 5 0
Postmortem & Process Improvement 事后总结 60 50
- 合计 1800 1700

3. 接口设计

经过查阅资料和学习, 我了解到在接口设计中有常用的一些原则, 本次作业的设计中, 我们用到了这些原则。

  • 单一职责原则

    Single Responsibility Principle: There shuld never be more than one reason for class to change

    单一职责原则要求一个接口, 一个功能, 如果在private 方法和public接口中, 改动过多, 那么容易引起错误。 在结对编程的设计中, 计算模块里我们尽量保证一个函数只做一个事情, 比如Line Circle Point分出三个类, 每个求交点的函数只处理一种类型等。

  • 里氏替换原则

    Liskov Substitution Principle: Functions that use pointers or references to base classed must be able to use objecsts of derived classes without knowing it

    这一法则是多态的体现, 所有父指针的使用点都可以用子指针, 这要求了子类只扩展父类, 但是不可以用在覆写父类函数的时候让函数的应用范围减少。 在最初的版本中, 我们采用了Line Circle继承父类的方式实现, 后来发现这种继承影响性能, 就放弃了继承。

  • 依赖倒置原则

    依赖倒转原则是TDD测试驱动开发的体现, 要求高层模块不依赖特定的底层模块, 而是依赖其抽象, 这要求编程者提前想好接口。

  • 接口隔离原则

    clients should not be forced to depend upon interfacess that they don't use

    保证接口单一, 不要过于臃肿, 在计算模块和UI模块的对接时, 我们尽量细化接口, 让模块的每个按钮对应了刚好一个接口, 同时接口之间的功能达到了隔离。

  • 迪米特法则

    law of Demeter: least knowledge
    loose coupling: Loose coupling means they mostly independent

    这一原则要求两个类之间要低耦合, 达到loose coupling, 一个类不需要知道另一个类是怎么实现的, 更不需要因为一个类内部代码的修改二更改自己的方法。 在我们的结对编程中, 为了实现接口的高效对接, 对于接口进行和抽象和封装

5. UML图

UML图是用来表示类之间设计关系的图表, 主要有以下五种关系

  • 依赖关系
  • 关联关系
  • 聚合关系
  • 组合关系
  • 继承关系

用UML图表示计算模块的关系如下图所示

7. Design By Contract

10. 界面模块设计

11. 界面模块与计算模块的对接

12. 描述结对的过程

13. 结对编程优缺点

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!