软件工程核心概念与实践解析

1、简要描述基于项目的软件工程和基于产品的软件工程之间的根本区别。

  • 基于项目的软件工程(即软件系统工程)
  • 通常有外部客户参与。
  • 客户存在问题,并根据自身对问题的理解指定待开发软件的特性,即确定软件需求。
  • 需求变更通常由客户提出,且必须与开发软件的公司达成一致。
  • 包含合同协议阶段和客户验收阶段。

  • 基于产品的软件工程

  • 同一家公司负责指定和开发系统。
  • 软件规格基于已确定的客户可能购买软件的机会。
  • 开发系统的公司可以轻松更改规格。
  • 通常没有合同协议阶段和客户验收阶段。

  • 技术层面

  • 两者在技术上无根本差异。
  • 对于一些关键系统(如安全关键系统),软件系统工程通常采用更结构化的过程。
  • 软件系统工程常使用形式化规范和模型检查器等技术和工具,这些在产品开发中很少使用。

2、确定iLearn系统这个软件产品的是什么(WHAT)、面向谁(WHO)以及为什么(WHY)。

WHAT

iLearn系统是一个开放的学习环境,允许教师为学生轻松配置班级和学生使用的资源集,能让用户访问和使用现有的基于网络的资源,系统可存在于多种不同配置中,允许用户对系统进行配置以创建特定环境。

WHO

教师和教育工作者。

WHY

该系统与现有虚拟学习环境不同,其重点是学习过程而非材料、评估和课程作业的管理,能使教师利用任何合适的基于网络的资源为学生创建特定学科和年龄段的学习环境,且成本比其他替代产品更低。

3、为什么软件产品经理必须是具有一系列技能的多面手,而不仅仅是技术专家?

  • 业务、技术和客户问题相互依存,产品经理必须考虑到所有这些方面。
  • 产品经理要确保开发的软件满足软件产品公司及其客户的业务目标和需求。
  • 向产品业务的管理者传达客户和开发团队的关注点和需求。
  • 与高级管理人员和营销人员合作规划产品发布时间表。
  • 让开发人员了解对客户重要的技术问题,这些问题可能影响产品的进度、成本和功能。
  • 定期与客户沟通,了解他们对产品的期望、用户类型及其背景以及产品的使用方式。
  • 其对客户能力的了解是产品用户界面设计的关键输入。
  • 还可能让客户参与产品的 alpha 和 beta 测试。

4、为什么在开始开发新软件产品之前要实现一个原型?

实现原型的目的

  • 可测试想法,确认产品具有市场潜力
  • 验证可行性并向潜在客户和资助者展示软件
  • 帮助理解如何组织和构建最终产品
  • 让潜在用户提出喜好和建议
  • 说服投资者产品有商业潜力
  • 识别基本软件组件或服务,测试技术,必要时修改软件实现思路

5、解释为什么软件产品快速开发和交付很重要。为什么有时交付一个未完成的产品,然后在交付后发布该产品的新版本是明智的?

快速开发与交付的重要性

快速开发和交付软件产品很重要,因为优秀的产品常常会因劣质产品先进入市场,导致客户购买劣质产品而失败。实际上,买家在初始选择产品投入时间和金钱后,不愿更换产品。

有时交付未完成的产品然后发布新版本是明智的,这样可以更快将产品推向市场,占据市场份额,同时能根据用户反馈在后续版本中完善产品。

6、请说明极限编程(Extreme Programming)未被广泛使用的三个原因。

  1. 开发团队会根据组织文化和所编写软件类型挑选有用的技术,并非采用全部极限编程实践。
  2. 结对编程是否比个人工作更高效缺乏确凿证据,许多管理者认为其效率低下。
  3. 以可持续节奏工作、不加班虽原则上有吸引力,但难以让管理者相信能满足紧迫交付期限。

7、解释为什么产品负责人在Scrum开发团队中扮演着至关重要的角色。在没有外部客户的环境中工作的开发团队(例如学生项目团队)如何重现产品负责人的角色?

产品负责人在Scrum开发团队中的重要性

产品负责人在Scrum开发团队中扮演重要角色,原因如下:

  • 负责与现有和潜在客户以及公司销售和营销人员沟通
  • 了解客户对软件产品的需求
  • 识别产品采用和使用的潜在障碍
  • 理解产品创新特性以明确客户受益点
  • 利用这些知识开发产品待办事项列表并确定待办事项优先级
  • 确保开发团队始终专注于正在构建的产品
  • 避免团队转向技术上有趣但相关性较低的工作

对于没有外部客户的开发团队,如学生项目团队,可指定一名成员承担产品负责人角色:

  • 该成员收集团队内部需求和期望
  • 模拟客户视角确定产品特性和优先级
  • 也可让团队成员轮流扮演该角色,共同参与决策

8、解释为什么使用人时或人天来估算完成产品待办事项所需的工作量,可能会导致估算工作量与实际工作量之间出现显著差异。

  • 使用人时或人天估算工作量与实际工作量有显著差异,原因在于:
  • 一是多人协作可缩短实际日历时间,与单人完成所需时间不同;
  • 二是开发人员可能有其他职责,无法全职投入项目,导致实际所需日历时间长于估算。
  • 此外,项目初期团队缺乏经验或使用新技术时,估算依赖团队成员主观判断,初始估算难免有误。

9、Scrum 设计用于一个由五到八人组成的团队共同开发软件产品。如果尝试将 Scrum 用于学生团队项目,成员们共同开发一个程序,可能会出现哪些问题?在这种情况下可以使用 Scrum 的哪些部分?

  • 可能出现的问题
  • 在非商业环境如大学中,学生团队规模较小且成员技能集大致相同,难以形成理想的 Scrum 团队;
  • 项目期间团队人员可能变动;
  • 部分成员可能兼职或在家工作。

  • 可使用的部分

  • 产品待办事项列表;
  • 有时间限制的冲刺;
  • 自组织团队。

10、解释为什么在编写系统使用场景之前,开发一些代表系统用户类型的人物角色是有帮助的。

人物角色在团队协作中的作用

人物角色有助于团队形成对用户、其技能以及使用软件动机的共同认知。

不同类型用户的作用

  • 能帮助想象用户使用软件的需求和方式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值