软件工程课程讲义阅读提问

软件工程课程讲义阅读提问

前言

项目内容
这个作业属于哪个课程2023年北航敏捷软件工程
这个作业的要求在哪里个人作业-阅读和提问(作业说明链接)
我在这个课程的目标是学习现代软件工程开发的相关知识,增加实践经验
这个作业在哪个具体方面帮助我实现目标通过阅读课程讲义让我对软件工程有了初步了解

问题一:

问题来源:现代软件工程讲义 6 用户调研

问题:在软件开发中,如何选择最适合的用户研究方法,以便能够更好地确定用户需求和行为,并设计和开发出更好的产品?

根据我的学习和以往的实践经验,用户调研可能会有如下问题:

  • 问题定义不准确和用户心理问题:比如在问卷调查的过程中,用户调查问卷在问题设计上存在一些问题,容易导致用户回答不准确。

  • 文中提到了焦点小组的概念。但是正如文中所说,焦点小组存在一些弱点。例如,讨论者可能出于讨好其他人的心理而发表意见;研究者可能自己就对调研的群体不是很了解,从而对需求分析产生影响。

  • 深入面谈是一种广泛而深入地了解用户的背景,心理,需求等的用户研究方法。与焦点小组相比,深入面谈更能够深入了解每个个体的需求和反馈,而不会受到其他人的影响。但缺点是费时费力,只能面对少量的用户。

  • 卡片分类可以帮助我们更好地定义一个软件的信息架构,用户的工作流程,软件菜单结构,网站的浏览路径,各种内容的层次关系等。与焦点小组相比,卡片分类具有更高的量化和可视化的特点,而且可以让不同背景的人聚在一起,想象新软件有什么特点,并将其排序和定义。

以上方法各有优缺点,我也明白在调研时需要按情况而定。但是很难有个标准或者方法告诉我什么时候应该用什么方法。在以前的调研经历中,我经常选错或者说选了不太合适的调研方式导致调研结果不理想。

问题二:

问题来源:现代软件工程讲义 源代码管理

问题:在软件开发中,版本控制系统中的代码锁定机制的设计和使用有哪些优缺点?如何根据团队需要进行选择和配置?

在软件开发过程中,版本控制系统扮演着重要的角色,可以帮助团队协作开发,追踪代码的变更历史等。代码锁定机制是版本控制系统中的一项重要功能,用于防止多个团队成员同时编辑同一个文件而导致的代码冲突。但是不同的代码锁定机制设计会有不同的优缺点,团队需要根据实际情况进行选择和配置。

  • 优点:在代码锁定机制中,一个文件被签出之后,其他团队成员无法签出该文件,有效避免了多人同时修改同一文件导致的代码冲突。例如,某个程序员正在修改一个文件,此时程序员B需要修改该文件中的某一部分,如果该文件被锁定,程序员B就不能进行修改,必须等待文件被解锁后才能进行编辑。

  • 缺点:代码锁定机制会导致协作效率降低,因为一个文件被锁定后其他人无法编辑,可能会影响其他人的开发进度。此外,如果一个团队成员忘记了解锁文件,其他成员就不能编辑该文件,会导致无法及时完成任务。

  • 不同的设计:除了完全禁止其他成员编辑外,还有一些代码锁定机制的设计允许多人同时编辑同一文件,但是系统会自动进行代码合并。这种设计虽然可以提高协作效率,但是可能会导致代码质量降低,因为合并后的代码可能存在错误或不完整。

  • 团队需要根据实际情况选择和配置代码锁定机制。例如,如果团队中成员的开发进度相对独立,且团队成员较少,可以选择禁止其他成员编辑的代码锁定机制。如果团队成员的开发进度相互依赖,需要经常进行代码合并,可以选择允许多人同时编辑的代码锁定机制,但是需要进行额外的代码质量测试和自动化合并工具的使用。

我在以前的团队软件开发过程中,常常遇到团队成员之间代码相互看不懂的情况,代码整合效率特别低,特别容易出bug,甚至有时连变量命名风格都不同。我们也尝试解决这个问题但是效果一直不好,想知道在真正的项目开发过程中是如何实现的。

问题三:

问题来源:现代软件工程讲义 8 稳定阶段 (测试的计划和执行)

问题:在软件测试中,如何确定适当的测试用例数量?根据功能测试时,如何确保我测试了所有的功能?

在我之前的测试经历中我经常遇到如下问题:

  • 测试用例不全:考虑功能测试时难免疏漏,测试用例可能没有考虑到所有可能的情况,导致一些潜在的问题未被发现。

  • 测试数据不充分:测试数据可能不够充分,没有考虑到各种可能的输入组合,导致一些问题未被发现。

  • 测试时间和规模不充分:测试时间可能不够充分,没有考虑到测试用例的数量和复杂度,导致测试结果不够准确。

如何在测试中有效的避免这些问题,是我希望在软件工程这门课程中学到的。

问题四:

问题来源:创新的时机 – 黄金点游戏

问题:如何在保持代码稳定性和可靠性的前提下,持续不断地引入新的技术和方法?

举个例子,考虑一个软件开发团队正在开发一个Web应用程序,他们想要引入一些新的技术和方法来提高开发效率和用户体验。但是,他们需要确保这些新的技术和方法不会破坏已有的代码功能,并且不会引入新的漏洞和安全问题。这个问题并不是一个简单的问题,因为软件开发中的各种组件和系统是相互依存的,更改其中一个组件可能会对整个系统产生影响。

通过资料查找,我得到以下解决方法:

一个解决这个问题的方法是通过持续集成和自动化测试来确保新的代码和现有的代码可以很好地协作,并且不会产生不良影响。在这种情况下,开发团队可以使用现有的测试框架或者构建自己的测试框架来执行自动化测试。此外,使用分支管理工具,如Git,可以将开发过程中的新代码和现有代码分离,以便进行单独的测试和审查。另一个解决这个问题的方法是通过敏捷开发的方法来实现快速迭代和小规模实验。通过将新技术和方法分解为小的组件,并在小规模实验中进行测试,团队可以逐步增加新技术和方法的使用,以最小化对整个系统的影响。这种方法需要一个敏捷开发团队,他们可以快速适应变化和调整开发方向,以确保新技术和方法的成功实施。

但是根据我自己的开发经验来说实现上面两个方法还有困难,希望在软件工程这门课程中能够培养这方面能力,学习这方面实践知识。

问题五:

问题来源:现代软件工程 10 绩效管理

问题:在软件开发团队中,如何公正地评估个人绩效?

在一些比赛或者大作业中,我们往往不会太在意贡献比例的问题。一般只要合作伙伴工作量凑合的过去,我们就会在贡献量那里写上平均。但是,评估个人绩效对于软件公司的稳定性和发展非常重要,但评估过程中存在多种挑战,如何衡量劳动生产率、资历、效率等因素,如何避免劣币驱逐良币、小团体抱团等现象,以及如何确保评估公正性和准确性等问题。因此,一个有价值的问题是:如何建立一个公正、客观、科学的评估体系,以便更好地评估软件开发团队的绩效和激励人员的积极性?

经常听一些老师说一些软件公司按照代码行数算工作量,但是,这种评价标准势必会带来很多不必要的换行,不必要的代码,让项目的代码变得复杂且没有意义。有些人写代码很快,但是bug很多,有些人代码写的很慢,但是少有bug。很难说从代码量或者bug数量来决定贡献量。

后记

读了软件工程课程的教案,让我对软件工程领域有了更深刻的认识,同时也收获了很多知识和经验。我学习了软件工程的基本概念和原则,了解了软件开发的生命周期,了解了如何进行软件需求分析和设计,以及了解了如何进行软件测试和维护等方面的知识。

在课程教案中,我也了解了很多软件开发的技能和工具,了解了UML建模工具进行建模,使用Git进行版本控制,使用Jenkins进行自动化构建和测试等。这些工具和技能的学习让我更好地了解了软件开发的过程。我相信这些知识对我课程设计的开发和未来的软件开发工作会非常有帮助。

总的来说,通过软件工程课程教案的学习,我获得了丰富的知识和经验,希望在课程的学习和课程设计中能尝试使用这些软件工程方法,学习实践技巧。我希望在课程的学习中能够进一步提高自己的能力和水平,我相信这些收获对我未来的职业发展会非常有帮助。

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值