生成式人工智能在软件开发生命周期(SDLC)中的应用:它真的能改变软件开发生命周期吗?
你的团队是否正在使用生成式人工智能提升代码质量、加快交付速度并减少每个迭代周期的耗时?还是仍处于试验和探索阶段?无论你处于这一旅程的哪个阶段,都无法否认生成式人工智能正日益改变我们当下的现实。它在编写代码以及执行测试和质量保证(QA)等相关任务方面的效果愈发显著。
GitHub Copilot、ChatGPT 和 Tabnine 等工具通过自动化繁琐任务、简化工作流程,为程序员提供了助力。
这似乎并非转瞬即逝的炒作。根据市场研究未来(Market Research Future)的报告,软件开发生命周期(SDLC)中的生成式人工智能市场规模预计将从 2025 年的 2.5 亿美元增长到 2035 年的 753 亿美元。
在生成式人工智能出现之前,工程师必须手动从冗长的技术文档和会议中提取需求,从零开始制作用户界面(UI)/ 用户体验(UX)原型图,手动编写和调试代码,并进行被动式故障排除和日志分析。
但生成式人工智能的出现彻底改变了这一局面。生产力大幅提升,重复性的手动工作有所减少。但核心问题依然存在:人工智能是如何彻底改变软件开发生命周期(SDLC)的?在本文中,我们将探讨这一问题以及更多相关内容。
生成式人工智能的有效应用场景
大型语言模型(LLMs)已成为软件开发生命周期(SDLC)中全天候的得力助手。它能自动化处理重复性、耗时的任务,让工程师能够专注于架构设计、业务逻辑和创新工作。下面我们详细看看生成式人工智能如何为软件开发生命周期(SDLC)创造价值:
| 软件开发生命周期(SDLC)的不同阶段 | 生成式人工智能的助力作用 |
|---|---|
| 需求收集与规划 | 如今,软件工程师可直接将会议记录和文档信息复制粘贴到生成式人工智能工具中,在几秒钟内提取关键洞察。他们还能利用生成式人工智能工具分析用户故事、产品规格,甚至客户邮件、会议记录等自然语言描述,并将其转化为结构清晰的用户故事。 |
| 设计与架构 | 无需始终从零开始构建架构和用户界面(UI)/ 用户体验(UX)原型图。生成式人工智能可根据独特的用户需求和反馈,生成初始设计模型和用户界面原型图,这些原型还能进一步优化,产出更具创新性的交付成果。 |
| 编码与开发 | 程序员可借助生成式人工智能生成代码片段、函数乃至整个模块。大型语言模型(LLMs)还能提供代码改进建议、指出潜在漏洞,并给出替代实现方案,节省开发者的时间和精力,让他们能更专注于核心工作。 |
| 测试与质量保证(QA) | 生成式人工智能可执行多种测试用例,包括集成测试和端到端测试。通过 Testim 和 BrowserStack 等工具,可测试智能体的基本理解能力和对用户指令的准确响应能力,重点关注智能体触发流程和应用程序接口(API)的效果。此外,生成式人工智能还能协助执行测试、识别瓶颈,且最重要的是提供相应的修复建议。 |
| 部署与维护 | 生成式人工智能可生成适用于不同环境的脚本和持续集成 / 持续部署(CI/CD)配置,从而简化部署流程。同时,它还能助力团队监控应用程序运行过程,实时识别运行时的异常情况。 |
生成式人工智能在软件开发领域的应用前景既令人期待,又令人望而生畏。它有助于提高生产力、缩短项目周期。
事物的另一面
尽管优势显而易见,但这也引发了两个问题。
首先,我们的信息安全吗?为了更快获取输出结果,能否使用机密客户信息?这是否存在风险?ChatGPT 等工具的聊天记录是否具有私密性?近期调查显示,元宇宙人工智能(Meta AI)的应用会将私人聊天标记为公开,引发了隐私担忧,这一问题亟待深入分析。
其次,也是最为重要的一点,在自动化时代,开发者的未来角色将发生怎样的变化?人工智能的出现已影响到多个服务行业的职业岗位,包括写作、设计、数字营销、数据录入等多个领域。部分报告描绘的未来,与我们五年前的想象大相径庭。美国能源部橡树岭国家实验室的研究人员指出,到 2040 年,大部分代码将由机器而非人类编写。
然而,情况是否会果真如此,并非本文的讨论范围。目前来看,与其他职业类似,程序员仍有存在的必要,但他们的工作性质和所需技能将发生一定变化。接下来,我们将为你展开生成式人工智能的 hype 核查。
理想与现实的交汇点
生成的输出结果可靠但非革命性(至少目前而言):开发者反馈,在生成式人工智能的帮助下,迭代速度更快,尤其是在编写样板代码或标准模式时。对于定义明确的问题或上下文清晰的场景,它确实能发挥作用。但对于创新性强、特定领域的逻辑以及性能关键型代码,人类的监督必不可少,这类项目不能依赖生成式人工智能 / 大型语言模型(LLM)工具。例如,以遗留系统现代化为例,IBM AS400 和 COBOL 等系统多年来一直为企业提供支持,但随着时间的推移,由于无法适应如今数字化时代的用户需求,其效用已有所下降。要维护或改进这些系统的功能,需要的软件开发者不仅要掌握这些系统的操作方法,还需及时了解新技术。
企业无法承担数据丢失的风险,指望生成式人工智能工具构建能与这些遗留系统无缝集成的高级应用程序,并不现实。这正是程序员的专业知识不可或缺的地方。想了解如何在不中断业务的情况下利用人工智能智能体实现遗留系统现代化?这只是其中一个关键用例,类似的情况还有很多。因此,大型语言模型(LLMs)确实能加速软件开发生命周期(SDLC),但无法取代人类这一核心角色。
测试自动化悄然崛起,但离不开人类监督:大型语言模型(LLMs)擅长生成各类测试用例、发现漏洞并修复错误,但这并不意味着可以将人类程序员排除在外。生成式人工智能无法决定测试内容或解读故障原因。由于人类行为具有不可预测性,例如电子商务订单可能因多种原因延迟,而一位要前往珠穆朗玛峰大本营徒步旅行、且已订购关键物资的客户,可能期望订单在出发前送达。但如果聊天机器人未接受过关于紧急程度、交付依赖关系或用户意图例外情况等上下文因素的训练,可能无法给出富有同理心或准确的回应。生成式人工智能测试工具可能无法测试到这类变量情况。而这正是人类的推理能力、多年的专业经验和直觉发挥重要作用的地方。
文档编制从未如此轻松,但存在一个隐患:生成式人工智能可通过单一指令自动生成文档、总结会议记录等,大幅减少手动重复性任务的耗时,并确保大型项目中文档的一致性。然而,它无法替你做出决策,缺乏上下文判断能力和情感成熟度。例如,理解特定逻辑的编写初衷,或某些选择对未来扩展性的影响,这些仍需依赖程序员。他们经过多年实践积累的认知和直觉,是机器难以复制的。
人工智能在现实世界的复杂性面前仍力不从心:存在上下文限制、对信任度、过度依赖和一致性的担忧,且集成摩擦依然存在。因此,首席技术官(CTOs)、首席信息官(CIOs)乃至程序员,都对在缺乏防护措施的情况下将人工智能应用于专有代码持怀疑态度。人类在提供上下文、验证输出结果以及监督人工智能方面至关重要。因为人工智能是从历史模式和数据中学习,而这些数据有时可能反映出世界的不完善之处。最后,人工智能解决方案的使用必须符合伦理、负责任且安全可靠。
结语
一项针对 4000 多名开发者的近期调查显示,76% 的受访者表示,至少有一半的人工智能生成代码需要经过重构才能投入使用。这表明,尽管技术提升了便利性,但不能完全依赖它。与其他技术一样,生成式人工智能也存在自身局限性。然而,将其完全斥为炒作也并不准确。正如我们所探讨的,它是一款极为实用的工具,能简化需求收集与规划流程、加快编码速度、在几秒钟内完成多种测试用例,并实时主动识别异常情况。因此,关键在于战略性地采用大型语言模型(LLMs),利用它减少繁琐工作,同时不增加风险。最重要的是,将其视为助手,一位 “战略性副驾驶”,而非人类专业知识的替代品。
归根结底,企业由人类创造,也为人类服务。生成式人工智能能以前所未有的方式帮助你提高效率,但从长远来看,仅依靠它们获取优质成果,可能无法取得积极效果。你对此有何看法?
