AI走进海南科技职业大学课堂(二十)
发布时间:2024-10-09 文章来源:信息工程学院官方微信公众号
软件工程是一门将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护的工程学科。它涉及到生产软件的整个生命周期,包括需求分析、设计、编码、测试、维护等环节。软件工程的目标是提高软件的质量和生产效率,降低成本,确保软件的可靠性和可维护性。
随着人工智能技术的普及,尤其是从2023年至今,大模型与软件工程各环节深度融合,为软件工程全生命周期流程带来革新,新一代智能化软件工程(AI4SE)进入快速发展期。Softengi公司首席技术官(CTO)Ilya Gandzeichuk认为,AI目前虽然还不会影响软件开发的劳动力市场,但现有的软件工程模型已经开始改变。全球知名管理咨询公司麦肯锡在其最近发布的研究报告中指出软件工程已经成为受到人工智能技术影响最大的领域之一。
图1 最受AIGC影响的领域:软件工程
一、从全生命周期的角度看人工智能对软件工程的影响
(一)人工智能对需求分析环节的影响
随着AI技术的普及,需求分析将逐渐向自动化和智能化方向发展:自然语言处理(NLP)技术可以帮助需求分析人员更好地理解用户的自然语言需求,将其转换为技术需求。此外,可以利用AI技术分析大量的历史需求数据,预测用户的潜在需求和市场趋势,帮助我们更好地制定开发计划和策略。AI将成为需求分析中不可或缺的重要工具。
需求分析工作将不再是简单的信息收集和整理,而是一个全面的、系统的过程。不仅需要理解用户的业务背景,还需要能够将用户需求转换为技术实现的具体要求。换言之,就是要将客户“心中所想“用自然语言表述出来,同时提供出在技术能力和成本投入上都相匹配的软件解决方案,并获得客户认可。
这对从事需求分析的工作岗位如系统分析师提出了更高的要求,因为他们不但需要具备更深厚的技术背景而且还需要具有更敏锐的业务洞察力。
(二)人工智能对系统设计环节的影响
利用人工智能技术可以通过分析需求文档,对系统进行业务层面的概要设计和详细设计。例如可以使用问答系统进行交互,根据AI生成的内容,让其逐步细化。在具体的软件工程项目中,由于每个公司、每个项目的概要设计和详细设计标准和格式不同,所以一般会将一些标准和模版性质的内容作为RAG知识库,辅助进行概要设计和详细设计成果的生成。
在进行系统架构设计时,由于运用人工智能技术尚无法通过权衡不同架构方案给出正确决策,因此在大多数情况下,系统架构设计仍将主要依赖高级软件开发人员的直觉和经验。尽管如此,人工智能技术可以通过云供应商的相关服务或计算目标架构的总成本来深入研究架构并用于技术选型及辅助定义整体系统架构。
(三)人工智能对实现/编码环节的影响
传统的软件开发依赖开发人员手动编写代码,效率较低且容易出错。如今,开发人员可以利用人工智能生成代码来减少手动编码的工作量,提高了开发效率和质量。当前,市场上已有多种AI工具和平台用于辅助软件开发,其中,Code Copilot(插件方式)是目前最佳实践方式。这些工具和平台不仅提高了软件开发的效率,还改变了开发流程,使得开发人员可以更专注于创新和设计,而不必花费大量时间在编码上。
(四)人工智能对测试环节的影响
利用人工智能技术可以通过分析软件规范、User Stroy等来自动生成测试用例,通过预测潜在的边缘情况,确保全面覆盖,并定制测试以验证所有功能。
利用人工智能技术可以分析系统的业务逻辑和数据流,自动生成具有代表性的测试数据,同时还能够模拟各种用户使用场景,生成更贴近真实环境的测试数据。这种智能化测试数据的生成,可以大幅提高测试数据的覆盖率和代表性。
自动化测试的新技术趋势是RPA+AI相结合。例如使用AI的NLP、OCR等技术,扩展RPA的工作范围,使其能够处理更复杂的任务,提高流程自动化能力,增强业务流程效率。
智能测试成为2024年关注焦点,但实现落地仍面临诸多亟待突破的挑战,如模型技术层、工程化层、应用层等方面的挑战。
(五)人工智能对维护环节的影响
在维护环节,利用人工智能技术不仅可以实施监控系统的运行状态,还可以快速定位问题并提供修复建议,甚至可以自动修复部分常见问题。
人工智能技术赋能维护环节的一个典型应用场景是对日志和性能指标等进行分析,发现潜在问题或针对已发生错误定位原因,提出可行的解决方案,指导团队制定有效的解决方案。例如可以考虑使用Dynatrace和New Relic等工具利用人工智能技进行实时监控网络性能指标,如带宽利用率、网络延迟等,并通过数据分析找出性能瓶颈,提出优化建议。
综上所述,人工智能正加速融入软件工程并对软件工程各环节产生积极影响。但也应看到,这种影响在不同环节是不同的,甚至有较大差异。中国信息通信研究院最新的研究表明:在受访企业中,超70%的企业在软件开发阶段应用了大模型等AI技术,其次是软件测试也超过了60%。而在软件工程各阶段中,测试和开发过程应用AI技术后提效(人效)最为明显,其次是运维。
图2 AI应用比例
为了有效应对这一趋势性变化在产业侧对于软件工程专业技术人才培养需求产生的影响,信息工程学院通过“自上而下”和“自下而上”相结合的方式,积极引导姜苈峰教师在教学过程中将人工智能知识引入软件工程专业课程,以“软件工程+AI”的教学理念,帮助学生不断丰富知识结构,提升软件工程实践能力,以有效应对未来职业发展可能面临的机遇和挑战。
二、将人工智能知识引入软件工程专业课程
在人工智能与软件工程不断加速融合的大背景下,信息工程学院顺应技术革新趋势,积极推动人工智能新知识融入软件工程专业核心课程,迈出了提升学生专业能力、促进学科交叉融合的关键一步。
以软件工程技术专业核心课程《面向对象的系统分析与设计》为例,这门课程是软件工程技术专业必修的一门高级专业平台课程,是一门理论实践为一体化的课程,功能是对接专业人才培养目标,面向软件开发人员,动态网站建设和开发程序员等工作岗位,培养软件开发专业技术和团队协作素质,具备一定整体项目统筹分析设计能力和模块规划能力、个人模块代码的开发能力,以及理论实践相结合进行项目开发的能力。软件工程系姜苈峰教师姜苈峰在讲授这门课程的核心内容:面向对象需求分析、面向对象系统设计的部分时积极响应学院要求,引入人工智能新知识解决软件工程实践在需求分析、系统设计环节关键问题,不仅丰富了解决问题的思路和方法,提升了学生的专业技能和综合素质,还能激发他们的创新思维和跨学科融合能力,为其未来的职业发展提供了有力支持。
典型教学场景一:运用人工智能工具辅助实施面向对象的需求分析。
该教学场景主要讲授如何运用面向对象的方法进行软件系统需求分析。具体实施教学过程如下:
(一)姜苈峰教师首先请同学们结合毕业设计需要思考拟设计实现的软件系统。
(二)在明确目标系统的基础之上,姜苈峰教师首先介绍如何运用通用大模型人工智能工具对目标系统进行需求分析并进行操作示范,然后组织同学们进行练习直至掌握该方法。
图3 通义千问
(三)姜苈峰教师首先介绍如何运用软件工程人工智能专用工具对目标系统进行需求分析并进行操作示范,然后组织同学们进行练习直至掌握该方法。
图4 代码小浣熊
图5 学生实操
(四)姜苈峰教师组织学生进行讨论,通过对比分析两类工具的优缺点,掌握使用这两类人工智能工具的适用场景。
图6 姜苈峰教师现场教学
典型教学场景二:运用人工智能工具辅助实施面向对象的系统设计。
该教学场景主要讲授如何运用面向对象的方法进行软件系统设计。具体实施教学过程如下:
(一)姜苈峰教师首先请同学们根据需求分析成果思考如何进行软件系统设计。
图7 现场提问
(二)姜苈峰教师首先介绍如何运用通用大模型人工智能工具生成PlanUML代码并进行操作示范,然后组织同学们进行练习直至掌握该方法。
图8 通用大模型
图9 代码
(三)姜苈峰教师首先介绍如何访问PlantUML Web Server网站利用上一步生成的PlanUML代码生成UML模型,然后组织同学们进行练习直至掌握该方法。
图10 代码生成UML模型
图11 学生实操
(四)姜苈峰教师组织学生进行讨论,运用人工智能技术和工具辅助进行系统设计有哪些优势。
图12 课堂总结
三、总结与展望
未来,海南科技职业大学信息工程学院将继续通过变革人才培养理念、创新人才培养模式、优化软件工程专业课程体系、强化实践课程建设、建立评价体系与反馈机制、提升姜苈峰教师人工智能应用能力等多种举措继续推进人工智能与软件工程专业人才培养的深度融合,培养出能够熟练运用人工智能技术、工具、平台的的,具有创新精神和工程实践能力的,高素质软件工程专业技术人才。