[I.3] 个人作业:结课总结

21371219-葛卓成 2024-06-30 21:43:05
项目内容
这个作业属于哪个课程2024年北航敏捷软件工程社区-CSDN社区云
这个作业的要求在哪里[I.3] 个人作业:结课总结
我在这个课程的目标是了解熟悉敏捷开发的方法论,学习团队合作,并通过实际开发产品来实践
这个作业在哪个具体方面帮助我实现目标总结课程实践中的经验与教训,更好地掌握敏捷软件工程能力

[个人作业 I.1 阅读和提问]

一、以前提出的问题

1. 面谈获取需求的方式是否有效

通过详细的面谈,广泛而深入地了解用户的背景、心理、需求等。这通常是一对一的采访。这种方法费时费力,效果往往取决于主持面谈的团队成员的能力。

面谈能够让需求获取者与需求方直接交流,深入了解其背景、目标和期望,有助于全面把握需求的本质。面谈可能需要较多的时间和资源成本,特别是需求方分布广泛或需要频繁面谈时。 面谈过程中,可能会受到主观因素和双方偏见的影响,可能导致信息不完全或失真。需要双方具备有效的沟通技巧,以确保信息传递准确和理解一致。因此我认为这是一种高成本但有效的方式。

2. 结对开发如何进一步提升效率?

结对编程中有两个角色:

1.驾驶员(Driver):控制键盘输人。

2.领航员(Navigator):起到领航、提醒的作用。

这两个角色是可以互换的。和现实生活中的例子类似,一个人负责具体的执行(驾驶,用键盘编写程序等),另一人负责导航、检查、掩护等。

  • 平衡交流和操作时间: 确保驾驶员和领航员在适当的时间内交换角色,避免某一方过于长时间地执行同一角色。

  • 频繁交换: 在合适的时间间隔内进行角色交换,以确保驾驶员和领航员的头脑都能保持清醒和专注。

  • 实时讨论和解释: 驾驶员应该清楚地表达他们正在做的事情和他们的思维过程,以便领航员可以理解和提供有价值的反馈。

  • 共同拥有代码: 使用版本控制系统(如Git),确保领航员和驾驶员能够方便地分享和同步他们的工作进度。

3. 如何平衡用户的个人隐私和平台的商业利益

怎样才能定义典型用户呢?我们首先要定义用户的角色。正如戏剧中有正面和反面的角色,软件系统中也有受欢迎的和不受欢迎的典型用户。如果用户有不同的安全需求,切记要定义不同的角色来适应这些需求

  • 最小化数据收集: 只收集必要的数据来支持平台功能,并尽量避免收集敏感信息。

  • 匿名化数据: 当可能时,对数据进行匿名化处理,以减少对个人身份的可识别性。

  • 用户选择权: 提供用户选择的机会,让他们决定是否同意其数据的使用方式,以及选择分享哪些信息。

  • 隐私设置: 提供易于访问和理解的隐私设置,使用户可以管理其个人信息的可见性和访问权限。

4. 软件工程师的职业道德依靠什么来维系

正式因为在软件系统开发中起到的重要作用,软件工程师有很大的机会去造福或危害社会,并有能力去促使或影响他人造福或者危害社会。

  1. 道德决策和责任:在软件工程师的职责范围内,如何确保他们在面对道德困境时能够做出正确的决策,既遵循道德准则又考虑到社会利益和公共安全?

  2. 技术创新与社会影响:在开发新技术或系统时,软件工程师如何考虑到其潜在的社会影响和风险?他们应该如何权衡技术创新的利益和可能的负面后果?

5. 如何有效地将复杂的软件系统场景分解为具体的任务

设计者在做需求分析的时候就模仿用户,设计场景,实地演一次戏,很快就能发现戏演不下去了。场景怎么写?首先针对每一个场景,设计一个场景入口(描述场景如何开始)。接着描述典型用户在这个场景中所处的内部和外部环境(内部环境指心理因素等)。然后给场景划分优先级按优先级排序写场景。"

从场景到任务,有了场景,下面就由架构设计师和各个模块的负责人一起,沿着子系统/模块的所属关系把场景划分开。例如Stone项目的用户登录场景,就可以分为以下几项。 1.UI层。子任务为:界面设计,货物资料处理,文件上传处理,编辑控件等 2.逻辑层。子任务为:用户输入字段合法性处理,上传图像逻辑和缩略图处理,资料保存逻辑等。 3.数据库。子任务为:资料读取的存储过程,图像的索引建立和维护等

二、实践中学到的知识点

1. 需求阶段

  • 明确需求的重要性: 要确保我明白用户需要什么样的功能,并且这些需求要具体、清晰,方便后续的开发工作。

  • 理解需求变化: 学会如何处理用户提出的变更请求,这样可以保证项目不会偏离最初的计划。

2. 设计阶段

  • 学习如何设计软件架构: 这是很有趣的一部分,我学到了如何为软件选择合适的结构,让它更易于扩展和维护。

  • 应用设计模式: 学习到了一些设计模式,它们是解决常见问题的好方法,也让我的代码更加优雅和可重用。

3. 实现阶段

  • 提升编码技能: 我在编写代码时变得更加熟练,学会了如何写出清晰、可读性高的代码。

  • 团队合作: 学习到了与团队成员一起合作编程的技巧,我们一起使用版本控制例如git来管理代码变更。

4. 测试阶段

  • 修复Bug: 在测试过程中,学会了如何找到并修复代码中的错误,确保软件运行顺畅。

5. 发布阶段

  • 学习如何发布软件: 知道了发布软件前需要做的准备工作,以及如何在不影响用户的情况下将更新部署到生产环境。

  • 版本管理: 学习了如何管理不同版本的软件,以及在需要时如何进行回退操作。

6. 维护阶段

  • 用户反馈处理: 学会了如何听取用户的反馈并及时作出响应,改进软件以提升用户体验。

三、心得

结对编程我感受到了倾听的重要性。与同伴共同工作,我们需要不断交流和协商,确保我们的想法和实现方式是一致的。这也锻炼了我倾听和尊重他人观点的能力。

团队项目中我们合作得非常愉快,利用研讨室集中敏捷开发,大家各尽所能,充分交流。团队项目进一步加强了我的团队合作能力和项目管理技能。在团队中,每个成员都有自己的角色和职责,需要协调各自的工作进度并保持团队的整体进展。在这个过程中,学会如何有效地分配任务、解决冲突以及与团队成员密切合作是至关重要的。

...全文
182 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

73

社区成员

发帖
与我相关
我的任务
社区描述
2024年北航敏捷软件工程
软件工程团队开发结对编程 高校 北京·海淀区
社区管理员
  • clotho67
  • Yeyanhan
  • HJin_Gwok
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧