返回顶部

个人作业-阅读和提问

作业:阅读和提问

项目 内容
这个作业属于哪个课程 2023年北航敏捷软件工程
这个作业的要求在哪里 个人作业-阅读和提问
我在这个课程的目标是 了解软件工程的涵义和内容,提高个人、团队的动手和实践能力
这个作业在哪个具体方面帮助我实现目标 帮助我初步建立软件工程敏捷开发的整体流程和概念,初步认识软件工程

问题1:编写单元测试

原文

2.1.2好的单元测试的标准,"怎样才算一个好的单元测试?单元测试应该准确、快速地保证程序基本模块的正确性"。

资料

在选择单元测试的覆盖率时,需要考虑项目的需求和复杂度,以及时间和资源的限制。通常来说,可以根据以下原则来选择单元测试的覆盖率:

  1. 代码覆盖率:保证代码的执行路径被覆盖到,即所有分支语句和条件语句都至少被执行一次。
  2. 边界覆盖率:保证代码的输入输出值覆盖到所有边界情况。
  3. 错误处理覆盖率:保证代码能够正确处理所有可能出现的异常情况。

编写有效的单元测试用例需要遵循一些原则,例如针对代码的逻辑、边界条件和异常情况编写测试用例,避免依赖外部环境和数据,确保测试的可重复性和独立性,尽可能覆盖代码的各个分支和路径,以及及时更新测试用例以适应代码的变化等。

思考

既然有这么多的单元测试原则和覆盖率考虑的方法,但是这些原则大多都是概念性的,如果我们按照这样的测试方法来写单元测试,如何判断测试用例的质量和有效性,以及如何优化测试用例的设计和执行过程?同时,不同的项目有不同的实际情况、测试需求和资源限制,此时要如何选择单元测试的覆盖率?

问题2:敏捷的使用范围

原文

第六章:表6-2 敏捷的适用范围, 酒后的敏捷

客观因素\最适用方式 敏捷 (Agile) 计划驱动 (Plan-driven) 形式化的开发方法 (Formal Method)
产品可靠性要求 不高, 容忍经常出错 必须有较高可靠性 有极高的可靠性和质量要求
需求变化 经常变化 不经常变化 固定的需求,需求可以建模
团队人员数量 不多 较多 不多
人员经验 有资深程序员带队 以中层技术人员为主 资深专家
公司文化 鼓励变化, 行业充满变数 崇尚秩序, 按时交付 精益求精
实际的例子 写一个微博网站; 开发下一版本的办公软件; 给商业用户开发软件 开发底层正则表达式解析模块; 科学计算; 复杂系统的核心组件
用错方式的后果 用敏捷的方法开发登月火箭控制程序, 前N 批宇航员都挂了。 用敏捷方法, 商业用户未必受得了两周一次更新的频率。 敏捷方法的大部分招数都和这类用户无关, 用户关心的是: 把可靠性提高到 99.99%, 不要让微小的错误把系统搞崩溃!

资料

敏捷方法并不仅仅适用于简单的应用,实际上,它可以应用于任何规模的软件开发项目。虽然敏捷方法在初期开发时可能显得更为简单,但它们在处理复杂项目时同样有效。

在处理复杂的软件开发项目时,敏捷方法可以提供更高效、更灵活的方法来管理项目。敏捷方法强调迭代、增量和自我组织的团队,并且能够适应变化,因此在面对不断变化的需求和复杂的技术架构时,敏捷方法可以更加灵活和高效地应对。

思考

通过查阅资料,我个人反对敏捷开发只适用于简单团队,实际上他可以用在各种地方,我发现在大型、复杂的软件项目中,例如亚马逊、谷歌、微软等大型科技公司都采用敏捷方法进行软件开发。同时,也有一些针对大型项目的敏捷方法框架,例如SAFe(Scaled Agile Framework)等,可以帮助团队更好地应对规模和复杂度的挑战。

问题3:goto

原文

4.3.2 goto,"函数最好有单一的出口,为了达到这一目的,可以使用goto。只要有助于程序逻 辑的清晰体现,什么方法都可以使用,包括goto示"

资料

一种观点认为,使用goto语句可以使得函数中的所有资源都在一个地方被释放,而且使得代码更加简洁易懂。在一些情况下,使用goto语句可以避免出现嵌套的if语句和循环语句,从而增加代码的可读性。

另一种观点认为,使用goto语句可能会让代码变得难以理解,特别是在代码变得越来越复杂的时候。而且,goto语句可能会导致程序陷入死循环,特别是在多线程环境下。因此,建议使用其他方式来实现函数的单一出口。

思考

根据我个人的经验,使用goto语句的确可以使得代码更加简洁,但是也可能会使得代码更加难以理解,在我个人的开发历史中我几乎没有使用过goto。如果可以使用的话,它是否真的是最好的选择?如果不是,那么还有哪些更好的方式来实现函数的单一出口呢?

问题4:结对关系的思考

原文

4.5 结对编程

(1)驾驶员:写设计文档,进行编码和单元测试等XP开发流程。

(2)领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖程度;是否需要和如何重构;帮助驾驶员解决具体的技术问题。

(3)驾驶员和领航员不断轮换角色,不宜连续工作超过一小时。领航员要控制时间。

(4)主动参与。任何一个任务都首先是两个人的责任,也是所有人的责任。没有“我的代码”、“你的代码”或“她的代码”,只有“我们的代码”。

(5)只有水平上的差距,没有级别上的差异。尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利。

思考

我个人一方面对结对编程中驾驶员和领航员的关系表达一定的质疑,结对编程中的两个驾驶员和领航员之间的角色并不是平等的,领航员有更多的控制权和决策权。这可能会导致一些问题,如驾驶员可能会感到被限制,而领航员可能会过于依赖其控制权,导致缺乏创造性。因此我在思考这种关系是否可以描述结对编程,或者说,如果不是这种关系的项目则不适用于结对编程?我很好奇真实项目工作中的具体流程

问题5:是否使用PM

原文

9.3 PM做开发和测试之外的所有事情

问:PM最大、最独特的贡献是什么?

答:带领团队达成最重要的目标,并保持团队的平衡。

资料

维尔福集团是一家以游戏开发和数字娱乐为主的公司,它以自组织和扁平化的管理结构而闻名。维尔福集团没有正式的项目经理,而是通过自组织的方式来实现项目管理和协作。这种方法使得团队成员可以自由地选择和创造项目,并充分发挥其创造性和自主性。

Medium是一个在线出版平台,旨在为读者提供高质量的原创内容。该公司采用了一种称为“Small Teams, Autonomy, Global Impact”的方法,通过小团队的自主性来完成项目管理和开发。该方法鼓励团队成员积极参与项目决策,并通过开放的沟通渠道来促进团队协作和创新。

思考

PM肯定不是全盘适用于任何团队任务的,我通过查阅资料发现,也有很多公司并没有采用了项目经理的职位,这似乎也与团队数目无关,那这样的话是否有一些独特的团队可以完全不采用PM,这种判断团队是否采用PM的方法是什么呢?

posted @ 2023-02-25 18:13  wpy的小黑屋  阅读(46)  评论(1编辑  收藏  举报