目录
软件的开发是多种多样的,课本中展示了多种系统的分析方法,如果我要设计一个软件,套用这些方式是否能够解决我的问题,如果解决失败我该怎么办。
一、前言
今天是2024年4月份,软件工程专业日新月异,对于软件工程技术与运用(如下图1所示)这本书也日益更新,在学习这本书之前,我已经学习完软件工程专业导论,这可能让我更易于接受与理解这本书的内容。
图1 软件工程技术与应用
在本教材的目录(如下图2、图3所示)中第一章也对与软件工程导论进行了简要介绍,第二章对统一建模语言UML及建模工具进行介绍,UML所绘制的图像能够较好的表示流程,代码详解,作者的意思等等,以及往后的一些系统章节教程。
图2 软件工程目录
二、读后有感
2.1 感兴趣的问题
(1)什么是软件工程?
对于正在就读软件工程课程的我来说,对软件无疑充满兴趣与好奇,对于什么是软件工程这一话题每一个人的理解都有所不同。在现在AI盛行的时代,我们不仿看看AI怎么说:
软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准等方面。软件工程的目标是在给定成本、进度的前提下,开发出具有适用性、有效性、可修改性、可靠性、可理解性、可维护性、可重用性、可移植性、可追踪性、可互操作性和满足用户需求的软件产品。
软件工程的发展大致分为四个阶段:
- 无软件概念阶段(1946年~1955年)
- 意大利面阶段(1956年~1970年)
- 软件工程阶段(1970年至今)
- 面向对象阶段(1990年至今)
软件工程领域的主要研究热点是软件复用和软件构件技术,它们被视为是解决“软件危机”的一条现实可行的途径,是软件工业化生产的必由之路。软件工程师是对应用软件创造软件的人们的统称,软件工程师按照所处的领域不同可以分为系统分析师、系统架构师、前端和后端工程师、程序员、测试工程师、用户界面设计师等等。
我们也可以试着问AI一些有趣的问题:
我:AI属于软件吗?
Copilot:是的,人工智能(AI)可以被视为一种特殊类型的软件。
此时引发了我的思考,AI作为一种软件,从表面上来看,我提出问题,AI解决问题,然而AI是如何解决我的问题,其间必然有一个复杂的过程,剖析这一过程也许能粗略解释软件是什么。
以下是我的理解:
AI通过理解问题,找寻信息,生成回答来进行表面工作,这是软件所展示的功能,更深层次的来说,AI通过确定目标,收集数据,选择算法,训练模型,测试和优化,部署与应用来进行内部的作业。那么软件工程通过可行性需求分析、系统设计、程序设计、测试优化、维护来尽量解决客户的问题。简单来说,通过分析实际情况选取最佳的算法与模型进行开发,并不断进行维护优化来解决生活实际问题的便是软件工程。(以上仅为个人的粗略理解)
(2)UML与软件工程有着怎样的联系?
我在课本第二章上看到一句话:作为一名软件开发的人员,必须正确理解并学会UML的使用。这让我提出这一感兴趣的问题。
对于这一问题的解释,可以这么说:
在面向对象的软件开发过程中,使用UML建模技术,可以达到以下目的:有助于按照所需要的样式或实际情况对系统进行可视化;可以描述系统的行为或结构;提供了指导系统构造的模板;有助于对做出的决策进行文档化。
软件工程的开发离不开团队合作,UML可以帮助开发人员更好的理解问题,分析问题以建立完善、可靠的系统模型,使开发人员和用户对于问题的描述可以有相同的理解,保障问题分析的统一性,有利于后期工作。当然了,你必须保障你的UML模型是正确的,不然将会产生严重的后果。
总的来说,开发者之间通过UML来理解软件工程的项目,以提高效率与正确性,UML更像是软件工程的一种描述工具。
2.2 疑惑的问题
软件的开发是多种多样的,课本中展示了多种系统的分析方法,如果我要设计一个软件,套用这些方式是否能够解决我的问题,如果解决失败我该怎么办。
提出这个问题的原因在于,课本所展示的这些算法让我茫然,貌似提供了各种各样的思想,实际应用中或许不曾想到。
软件的开发更注重实践并且更趋向于灵活,也许我学会了课本当中的许多思想与方法,而在软件开发中也许应用其中,但是最后测试仍然失败,那么我就得退回到代码设计当中,茫然的看待几千甚至几万行的代码,这时我应当怎么办。也许不断提高自己的技能,开发创新,从固执思维圈里跳出来才能看到希望。
三、结束语
希望自己能够在软件工程的道路上不断打磨自己,能够学到真正的本领。
四、参考文献
[1]王方丽,邓一星.UML在面向对象软件工程教学中的应用探讨[J].电子元器件与信息技术,2021,5(10):105-107.DOI:10.19772/j.cnki.2096-4455.2021.10.049.
刘耀升
桂林理工大学 软件工程22-3班