(p11)软件工程和软件开发之间的区别始于工作功能。软件工程师可能涉及软件开发,但很少有软件开发人员是工程师。
为了解释,软件工程指的是应用工程原理来创建软件。软件工程师通过将客户的需求与适用的技术解决方案联系起来,参与软件开发生命周期。因此,他们通过系统地开发流程来提供特定的功能。最后,软件工程意味着使用工程概念来开发软件。
另一方面,软件开发人员是程序背后的创新驱动力。软件开发人员负责整个开发过程。他们是与客户合作创建理论设计的人。然后,他们让计算机程序员编写正确运行软件所需的代码。计算机程序员将与软件开发人员一起测试和解决问题。软件开发人员在软件开发生命周期的每个阶段提供项目领导和技术指导。
(p17)“转型”——形式或表现上彻底或戏剧性的变化——与社会本身一样一直在进行。今天的人工智能、区块链和其他创新,在基本层面上,只是我们的祖先几千年前使用的石头、铜和铁工具的现代迭代。在软件工程中,我们正处于自身转型的阵痛中。对于希望在数字经济中成长和繁荣的企业来说,利害关系是相似的:要么做好,要么适应,要么死亡。
在过去的二十年里,技术的加速进步创造了一个不断颠覆的环境。大型老牌企业的商业领袖不能自满。敏捷的数字化后起之秀就潜伏在角落里,许多大公司都难以跟上步伐。
健壮的软件是敏捷、数字化业务的核心,这意味着我们有必要弄清楚这一点,并解决几个紧迫的问题:软件工程如何向“现代”软件工程发展?我们从别人的转型尝试中学到了什么?主要的挑战和风险是什么?
(p30)在软件和系统工程中,功能需求是对系统及其组件的预期功能的声明。基于功能需求,工程师确定设备或软件在特定输入情况下期望显示的行为(输出)。系统设计是功能需求的早期形式。
系统的功能需求可以涉及硬件、软件或两者,包括计算、技术细节、数据操作和处理或定义系统应该伴随的其他特定功能。当设备(系统)放置在某种环境中时,功能需求可以以文档的形式解释预期的输出类型。功能需求被认为是系统设计的后期形式,因为设计是克服所面临的某种问题(技术/非技术)的结果。
(p36)在敏捷环境中管理需求
在许多方面,在敏捷项目管理环境中捕获需求的方式类似于“瀑布”,或传统的项目管理环境,与主题预期、最终用户、演练/记录当前业务工作流、创建模型等进行多次会议。然而,敏捷和传统的项目管理方法在如何随时间管理需求方面存在差异。
在敏捷项目管理环境中管理需求是考虑需求的整个生命周期,考虑完整的用户体验,甚至超越已定义的涉众。业务需求应该以这样一种方式分解,即支持迭代开发,并在业务用户和/或客户交付和审查每个增量时,能够灵活地响应潜在的更改。
此外,需求应该产生强大的、可测试的用户描述,并经常与客户、最终用户和开发团队一起澄清和审查。用户故事应该促进与团队的一致对话,这不仅加强了对业务需求的理解,而且导致了更明智的评估和优先级。由于业务用户和开发团队都参与了整个项目,因此它建立了信任并鼓励了全面的协作。最后,它确保更快、更好地交付真正传达并满足业务需求的需求
(p80)
你的任务不会自动完成。这就是你组建团队的原因,但是如果这个团队没有按照你精心安排的任务列表来安排,那么你就没有在管理你的项目。
在项目生命周期的过程中,团队成员会休假、事假或休假。如果你没有为这些时间做好准备,并且安排其他团队成员在他们不在的时候接手,你的日程安排就会受到影响.
将日程表集成到项目管理软件中是掌握资源的一种简单方法。没有理由使用一个独立的日程表,每当您需要帮助团队成员的可用性时,它就会将您发送到另一个应用程序。
另一种掌握日程安排的方法是将任务日程安排视图与资源和工作负载日程安排功能集成在甘特图上。你可以通过颜色编码来安排团队的工作量,这样你一眼就能知道谁落后了,谁领先了,谁在按计划完成任务。
(p84)人工智能如何改变项目管理
人工智能创造了自动化流程和智能工具的可能性,这将减少手工工作。然而,根据我们的经验,它将需要一定程度的项目管理成熟度。此外,为了让人工智能对一个或多个项目产生深刻的见解,它需要配备一个庞大的数据集,从中它可以了解哪些有效,哪些无效。当成功实施基于人工智能的项目管理系统时,拥有标准化的大型历史数据集和当前项目信息确实是关键挑战之一。
此外,如果你想在现有的项目管理环境中实现一个人工智能系统,就必须评估它能给你的项目带来什么好处,以及你的商业文化和风险偏好。你是想要简单的自动化——一个数字助理来帮你处理琐碎的任务——还是需要更复杂的自动化,并对项目进行深入的挑战?最后,您还需要仔细评估实现这些潜在好处的成本。
我们看到了在大型项目组织和项目组合管理中实现基于人工智能的项目系统的巨大机会,作为促进复杂转换项目和组合的预测性指导的一种方式,从而促进项目的成功和投资回报