IBM AI Developer 专业证书专项课程-Introduction to Software Engineering-Unit1

需求分析步骤

1. 识别利益相关者
   利益相关者是那些对软件产品开发有直接或间接影响的个人或团体。通常,这些利益相关者包括决策者、最终用户、系统管理员、工程师、市场营销人员、销售人员和客户支持人员。确保每个受影响的群体都有代表参与是至关重要的。

2. 建立目标和目的
   产品的目标应该是明确定义的,它们是广泛且长期可实现的结果,可能包括客户成果和业务目标。目的则更为具体,它们是可执行和可测量的行动,用于实现这些目标。

3. 从利益相关者那里引出需求
   需求引出是一个迭代过程,可以通过调查、问卷和访谈等方式进行。这个过程的目的是收集和理解利益相关者的需求和期望,以便在后续步骤中进行记录和分析。

4. 记录需求
   随着需求的引出,它们应该被详细记录。记录的需求应该清晰、准确,并且易于被所有利益相关者和项目团队理解。这些记录将作为后续分析和确认的基础。

5. 分析和确认需求
   需求分析的目的是确保需求的一致性、清晰性和完整性。这包括检查需求是否符合既定的目标和目的,以及是否满足所有利益相关者的期望。确认需求则涉及与利益相关者共享需求文档,并获取他们的批准。

6. 优先排序需求
   一旦需求被确认,下一步是确定需求的优先级。这可以通过使用“必须有”、“非常需要”和“最好有”等标签来完成。优先排序有助于确定哪些需求应该首先被实现,以及如何在资源有限的情况下做出最佳决策。
 

需求分析文档

软件需求说明(SRS):捕获软件应执行的功能,并建立性能基准或服务水平。SRS包括目的声明、受众和范围、约束、假设和依赖性,以及可以分为以下四类的需求:功能需求、外部接口需求、系统特性和非功能需求。

用户需求说明(URS):描述最终用户对软件系统的业务需求和期望。用户需求通常以“用户故事”或“用例”形式编写,回答三个问题:谁是用户?需要执行的功能是什么?用户为什么需要这个功能?用户验收测试确定这些需求是否已满足。

系统需求说明(SysRS):明确整个系统的要求,比SRS范围更广。SysRS包含系统能力、接口和用户特征。它还可能包括政策要求、法规要求、人员要求、性能要求、安全要求和系统验收标准。此外,它还概述了系统所需的硬件期望,而不仅仅是软件需求。

软件开发方法论


方法论:Waterfall(瀑布模型)、V-shape模型、Agile(敏捷开发)。
Waterfall:瀑布模型是一种线性顺序的开发方法,每个阶段完成后才能开始下一个阶段。这种方法适用于需求明确且变更较少的项目。例如,开发一个企业资源规划(ERP)系统,从需求分析开始,依次经过设计、编码、测试,最后部署。
V-shape模型:V-shape模型在瀑布模型的基础上,增加了对应每个开发阶段的测试阶段,使得问题可以在开发的早期被发现和修复。例如,开发一个医疗信息系统,需求分析后进行系统设计,然后是架构设计,编码阶段,最后是逐级向上的测试阶段。
Agile:敏捷开发是一种迭代和增量的开发方法,强调团队协作、客户反馈和快速响应变化。敏捷方法论包括Scrum、Kanban等。例如,开发一个移动应用程序,通过两周一次的冲刺周期,逐步构建和完善应用功能。

软件开发生命周期(SDLC)的阶段


SDLC 阶段:规划、设计、开发、测试、部署和维护。
规划阶段:在这个阶段,项目经理和团队成员会与客户沟通,收集需求,分析并确定需求的优先级。同时,会进行市场调研和风险评估,制定项目计划和预算。例如,开发一个在线教育平台,需要确定功能需求,如视频播放、在线测验、课程管理等。
设计阶段:设计师和架构师会根据收集的需求,设计系统的架构和组件。这个阶段会产生设计文档和原型,供团队成员和客户评审。例如,基于需求,设计平台的数据库结构,用户界面,以及后端服务架构。
开发阶段:开发阶段是将设计转化为实际代码的过程。开发者会使用各种编程语言和工具,遵循编码规范,进行模块化开发。例如,按照设计文档,开发团队开始编写代码,实现前端用户界面和后端逻辑。
测试阶段:测试团队会根据测试计划,执行各种类型的测试,以确保软件的质量和性能。测试过程中发现的问题会被记录并反馈给开发团队进行修复。例如,对在线教育平台进行单元测试、集成测试、性能测试和用户验收测试。
部署阶段:部署团队负责将软件从开发环境转移到生产环境。这包括配置服务器、数据库迁移和安全性设置。例如,将经过测试的教育平台部署到服务器,用户可以通过网站访问。
维护阶段:维护是软件生命周期中持续时间最长的阶段。维护团队负责监控系统运行状态,处理用户反馈,定期发布更新和补丁。例如,在线教育平台上线后,定期检查系统性能,修复用户报告的问题,并根据反馈进行功能改进。

软件文档


文档类型:产品文档、过程文档。
产品文档:产品文档是面向最终用户的文档,包括功能说明、操作步骤、故障排除等,帮助用户理解和使用产品。例如,为一款新的智能手机应用编写用户手册,详细介绍如何安装、配置和使用应用。
过程文档:过程文档是面向开发团队的文档,描述了软件开发过程中的步骤、规则和标准操作程序,确保开发过程的质量和效率。例如,为软件开发团队制定详细的开发流程文档,包括代码提交规则、代码审查流程、持续集成策略等。

软件工程项目中的角色


项目经理/Scrum主管:项目经理负责项目的整体规划、资源分配、进度跟踪和风险管理。在敏捷开发中,Scrum主管则更注重团队的协作和沟通,确保团队目标的实现。例如,负责管理一个电子商务网站开发项目,确保项目按时、按预算完成。
利益相关者:利益相关者是项目的影响者和决策者,他们提供项目需求、反馈和批准。他们的需求和期望是项目成功的关键。例如,在开发一个客户关系管理(CRM)系统时,利益相关者包括销售团队、客户服务团队和管理层。
系统或软件架构师:架构师负责定义系统的技术架构和设计原则,确保系统的技术实现满足业务需求和质量标准。例如,设计一个高性能的金融交易平台,确保系统的可扩展性、安全性和稳定性。
UX设计师:UX设计师专注于用户的需求和体验,设计应用的界面布局、交互流程和视觉元素,以提升用户的满意度和产品的市场竞争力。例如,为一款新的健康追踪应用设计用户界面,确保应用直观易用,提供良好的用户体验。
软件开发者:开发者负责将设计转化为代码,实现软件的功能和逻辑。他们需要具备良好的编程技能和对业务需求的理解。例如,根据设计文档,开发一个具有高级数据分析功能的商业智能软件。
测试者/QA工程师:测试工程师负责设计和执行测试计划,包括功能测试、性能测试、安全测试等,以确保软件的质量符合标准。例如,对一款新的在线游戏进行测试,确保游戏在不同平台上的性能和稳定性。
站点可靠性/运维工程师:运维工程师负责软件的部署、监控、维护和优化,处理突发事件,确保系统的稳定运行和用户满意度。例如,负责一个大型电子商务网站的运维,确保网站的高可用性和性能。
产品经理/产品负责人:产品经理负责产品的战略规划、市场定位和生命周期管理,确保产品满足市场需求并实现商业目标。例如,负责一款新的社交媒体应用的产品规划和市场推广。
技术作家/信息开发人员:技术作家负责将技术信息转化为易于理解的文档和教程,帮助用户更好地理解和使用产品。例如,为一款复杂的企业软件编写详细的用户手册和在线帮助文档。

软件版本


版本号:表示软件发布、更新和补丁信息。
  - 例子:一个文本编辑器的初始版本为1.0.0,添加了新功能如拼写检查后更新为1.1.0,修复了一个关键bug后更新为1.1.1。
语义化版本控制:主要版本号、次要版本号、补丁号和构建号。
  - 例子:一个数据库管理系统的版本号为2.0.0,表示这是一个重大更新。后续添加了新的特性如数据备份功能,更新为2.1.0;修复了一些已知问题,更新为2.1.1。
兼容性问题:新旧版本软件间的常见问题,更新软件版本可能解决兼容性问题。
  - 例子:一个办公软件的新版本增加了对新文件格式的支持,但旧版本无法打开这些新格式的文件。用户需要更新到最新版本才能使用新功能。
向后兼容性:旧版本的文件、程序和系统与新版本兼容。
  - 例子:一个图像处理软件的新版本可以打开旧版本创建的图像文件,即使文件格式有所不同,确保了用户的工作和生活不会因软件更新而中断。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值