浅谈对软件工程的认识和理解

2022-09-10

通过对《软件工程导论》课程的学习和研究, 我们对这次选题已经有了大致的了解, 即使书本上的知识都是理论与定义, 但是这些知识也同样是前人在实践中探索出来的, 它是对实践过程的总结与诠释。现在呈现在大众视野中的软件工程导论经过了这个领域众多的专业工作者以及相关用户的完善与调整, 是基本标准正确的经验总结, 能够提供给后来人许多启发与帮助。我们可以设想到, 软件工程即使有些理论还不够丰富与完善, 但一定会随着这项产业的不断进步而得到增加与修饰。

一、软件工程的定义

1993年IEEE为软件工程赋予了更规范的定义:

“软件工程是:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程, 也就是把工程应用于软件;研究中提到的途径。”软件工程涉及操作系统、编程语言、开发工具、标准和设计模式等很多方面, 可以说软件的应用促进了当前经济和社会的迅猛发展, 让我们的生活工作更加高效, 如我们日常所用的Windows操作系统、OFFICE、EMAIL、SQL或ORACLE数据库或各种网络游戏, 各行各业也都有自己的专属行业软件, 无论是商业、农业、政府还是银行机构。

二、软件工程的本质特性

(1) 软件工程对较大型的程序构造起着重要作用; (2) 软件工程的研究中心是对程序复杂性的控制; (3) 软件工程需要对软件进行经常化; (4) 软件工程中软件的开发速度与质量至关重要; (5) 开发软件是一件需要多方进行配合与合作的事情; (6) 软件需要为其用户提供支持与存在感;

三、软件工程的基本原理

1983年, B.W.Boehm这位美国著名的软件工程专家提出了软件工程的七条基本原理:

(1) 要对生命的周期做出有计划的分阶段专业管理。 (2) 要坚持进行阶段性的评析和审视。 (3) 对产品质量与走向进行严格控制。 (4) 不断采取和学习现代程序设计新技术。 (5) 对结果要有清晰明了的审查。 (6) 软件开发人员要重质量轻数量。 (7) 要不断的进行软件工程的实践探究。

四、软件工程方法学

通常把在软作生命周期全过程中使用的一整套技术方法的集合称为方法学 (methodology) .也称为范型 (paradigm) , 软件工程方法学包含以下3个要素:

(1) 方法:完成软件开发过程中各个任务的技术指导, 解决“如何做”的问题。

(2) 工具:自动或半自动化的软件工程支持环境。

(3) 过程:为完成高质量的软件开发工作, 需要进行前期框架的构造, 它需要明确的指出各项工作的进行步骤。而后进行时间上的确定与规划, 要对软件维护时的种种问题有大致的掌控能力。然后进行阶段的划分, 每个阶段都要有相关的任务, 根据规划好的内容去执行任务。每一阶段的工作都要有统一评判的严格标准, 在阶段任务完成后要有专人进行专业评审, 以上就是我们所说的软件工程采用的生命周期方法学。

五、思考

(一) 需求调研和需求分析方面

在我看到的一些讨论软件工程的文章中, “客户直接参与项目成功的可能性非常高。”多次被提及, 这一点在实际开发工作中确实很重要, 就我所知现有项目开发过程基本上是这样:首先顾客提出需求说明, 然后开发人员根据需求说明进行项目开发, 最后就是客户验收。

在这里需要留意的是:开发过程中工程师与客户几乎不再接触, 于是一系列问题出现了:客户试用后发现某个功能不完善, 于是开始做需求更改;工程师对需求分析理解错误, 必须重新开发等等, 在前期我院“校园一卡通对接”和“数字化校园——图书馆模块”项目工程中就出现了这样的问题, 所以条件允许的话, 开发中多征求客户意见, 在《软件工程导论》课程中也提到“与用户沟通获取需求的方法” (1) 访谈; (2) 会议研究; (3) 达成一致;多次反复地沟通往往可以降低开发大规模修改的风险, 当然这也不是绝对的。

(二) 概要设计和详细设计方面

在这一部分中, 我个人认为比较关键的一点就是要确定软件界面的整体风格与代码复用的问题。我们的软件界面要符合受众群体的生活习惯, 操作时比较简洁方便, 迎合受众的操作习惯与审美条件。对于软件开发人员来讲, 要更重视代码复用的问题, 一个好的程序代码应该具备丰富的可读性, 代码的复用率也会比较高。而想要做到高复用率的代码, 必须要高度的抽象能力以及对于粒度的明确或分。粒度的划分可以遵循书本上给出的一些指导, 当一个函数的功能越单一, 那么它就比较容易进行组合复用, 最好减少与其他方法和函数的关联, 这样在今后不需要进行大幅度的改动就可以直接复用。

(三) “设计模式”方面

设计模式为开发人员提供了许多之前有人使用过并且成功了的能够正常使用的解决套路, 如果按照设计模式进行软件开发, 能够增强系统的扩展性与强大性。举例说明, 如果你将获知到的全部数据和显示数据的代码进行混淆, 如果未来在改动显示部分或改动获得数据部分则要混到一起的代码中挑选出自己要改动的部分, 这可能会导致原本不应该改动的代码也被随之改动。再或者因为这一部分的改动, 另外的部分也必须随之进行改变, 这样一来就导致代码被迫偏离了正确性。对于这类改动就需要专业人员在测试时增大测试的力度, 保证代码是正确的, 当然在此过程中, 测试成本会不断增加。如果采用设计模式, 就可以保证在改动过程中不会影响到其他原本正确的代码。只要对有问题的部分进行针对性测试即可, 不会存在不必要的测试内容与琐碎改动。

(四) 文档编写

在进行相关工作的过程中, 最核心的问题就是对于文档的编写。文档能够帮助从业者进行思路的整合, 使其工作更加条理。把要完成的目标, 系统的结构以及每一个版块的功能进行整理, 分门别类的写下来, 这样在接下来的开发过程中就能有参考与依据。而在一些设计出现问题需要修改时, 这些文档能够提供根据与思路。我们常说, 好记性不如烂笔头, 如果单纯的进行口头上的表达, 可能会导致遗漏一些重要的内容, 听者也很难抓住重点。但如果将重要数据和想法都写下来, 那么就可以有据可依, 当需要进行修改的时候, 打开这些文档也能够帮助整理思路。

(五) 软件维护

软件在投入运行之后, 可能反而会发现一些前期没有注意到的问题, 会发生一些或大或小的错误, 也可能一些受众会认为假设能够对一些地方做出调整, 那么能够为他们的使用提供更多的帮助, 这时就需要对软件进行维护。在这个时候需要的维护人员不会很多, 与之前的开发人员可能也不是同一批, 这就涉及到了代码的可读性。合格的好代码应该有完备详细的注释, 最好还有一些理解容易的文档内容。在维护完成之后, 要对维护记录进行保存, 对之前的一些说明进行必要的变更。

前期在参与“校园一卡通”与图书馆业务系统的对接工作时就遇到这样一件事, 因为同步程序经常性死机, 联系相关公司得知当时写该程序的开发人员已离职, 但什么文档都没有留下, 程序也没有任何注释, 因此其他开发人员只好重做。如果有一份良好的注释, 可能就不会这么麻烦了。

六、总结

“软件工程就是设计程序或者代码开发。”这种认识是错误的, 诚然, 程序设计和所有与程序相关的事情的确在软件工程中发挥着重要作用, 但程序不是软件工程的全部, 可以说软件工程包含除了程序以外的“所有东西”。我们应该学习软件工程以及开发软件产品所必需的概念、技能和技术、包括开发代码的技术和工具, 而不是一大堆的代码, 夯实理论基础的同时, 多思想, 多总结经验, 多学习, 一定会非常有益。

摘要:随着计算机科学技术的飞速发展, 软件工程给我们的生活和学习带来了相当大的变化。本文对软件工程进行简单分析, 并从需求调研和分析、设计和设计模式、文档编写和软件维护几个方面进行简要分析和讨论。

关键词:软件工程,需求调研和分析,设计模式,软件维护

参考文献

[1] 马中峰.基于PowerPC的视频监控软件系统的研究与实现[D].大连:大连理工大学, 2009.

[2] 网页.传统软件工程与面向对象、构件软件工程的比较分析.

[3] 网页.技术之路-51CTO技术博客-领先的IT技术博客.

[4] 生艳.高校教师教育技术培训绩效支持系统的设计与开发[D].曲阜:曲阜师范大学, 2010.

[5] 彭成.数字化教学游戏的概念、模型与开发技术研究[D].上海:华东师范大学, 2008.

[6] 张伟.基于B/S结构的税务申报系统的研究与实现[D].上海:同济大学, 2007.

[7] 网页.谈软件工程与计算机科学的区别-pchyeyiran-博客园.

[8] 姜淑娟, 张虹.软件工程与软件开发工具[M].清华大学出版社, 2004.

[9] 孟理.基于Web的本科毕业设计管理系统的设计与实现[D].石家庄:河北科技大学, 2015.

[10] 陈明.信息管理技术三级样题汇编[M].清华大学出版社, 2004.

[11] 张海藩.软件工程导论[M].清华大学出版社, 2008.

[12] 百度百科.软件工程方法学.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:轻型护卫舰发展战略之我见下一篇:浅析完善事业单位固定资产管理与核算的思考