软件工程第二讲——软件工程概述

1.问题的产生

    在上学期学完算法与数据结构这门课程后,我们了解到“程序 = 数据结构 + 算法”,经过上学期的算法与数据结构的学习,我们会使用c/c++来编写二叉树的遍历程序,二叉树为“数据结构”,而遍历的细节就是“算法”。但在当前Java为软件开发的主流语言中,此处的程序在功能地位上就显得十分尴尬,因为Java给我们带来了没有指针的便捷,那么没有指针,我们就可以不必了解二叉树吗,当在工作之后调用别人实现的算法即可,我们所画很大时间与精力学的“算法与数据结构”还有用吗?当进入工作后,因为以前同事所写的程序“很垃圾”无法维护,要推翻重写时,是否想过要重写的程序就是前任重新写过的,而且效果一代不如一代的影响。所以软件行业赖以生存的“软件”,程序员用来安生立命的“程序”是什么?

2. 基本概念

  程序,源程序,就是一行行的代码。源程序的却是建立在数据结构上的一些算法。但需要编译成机器能懂的目标代码。

  对于一个复杂的软件,不仅要有合理的软件架构,软件的设计和实现,还要用各种文件来描述各个程序文件之间的依赖关系,编译参数,链接参数等等。——软件的构建

  软件团队中的每个人员每天都在不断地修改各种代码,如何保证软件在修改过程中能保证质量,不至于越改越差?

  要为某个需求写一些特殊功能,然后不就要把这些功能再合并回主版本。有些程序还有32位和64位不同的版本。这是源代码管理的问题——也叫软件配置管理

  有些工具和程序是为了保证别的软件的质量,这质量保证的工作叫Quailty Assurance,也叫软件测试(Testing)

  软件要有人买就得先找到顾客,顾客有各种需求。有些靠谱、有些不靠谱,要把靠谱的需求都实现,软件开发团队就要从“需求分析”开始,进行各种工作“设计(软件架构),实现(写数据结构和算法),测试,到最后发布软件”

  软件在运行过程还会不可避免地出现各种问题,也许就需要个软件打补丁,这叫软件的维护。这一些列的过程就是软件的生命周期,还需要有人负责软件项目的管理。

  一个好的软件,即使功能和同类软件区别不大,但是会让人感觉到非常好用。这就是软件的“用户体验”特别好。

  用户体验和数据结构、算法没什么关系,但是很多成功软件就应在这方面。

  软件还有相应的商业模式。在不同的商业模式中有些做法是合理的,有些看似合理但不合法,有些极不合理又不合法,但没有相关法律法规去约束,这就需要软件行业的行规,软件工程师的职业道德来约束IT人的行为。

  由以上基本概念,得出结论:软件 = 程序 + 软件工程。软件企业 = 软件 + 商业模式

  程序是基本功,在程序之外,软件工程决定了软件的命运。软件的商业模式决定了一个软件企业的成败。软件从业人员和软件企业的道德操守会极大影响软件用户和社会。

软件工程的发展

  商用软件与程序的区别:在航空业和软件业的对比中,一个发动机在经历签完到程序加工完成后,最后在飞行时发现了问题,最初的设计师会自己爬到引擎中进行修理,钻出后说出他搞定了,在软件行业中很多软件工程师往往已做这样的事而自豪。但是飞机的安全功能会发生这种问题,那么还会有人去称作这种飞机吗,我们的安全酱油谁来保障呢?同样在商业软件有BUG时,那么安全问题将无处不在。

软件工程定义

   软件工程包括“软件需求分析,软件设计,软件构件,软件测试和维护”。把软件工程中相关的技术和过程统一到一个体系中叫“软件开发流程”。他的目的是提高软件开发、运营维护的效率;以及用户满意度、可靠性和软件的可维护性。

  软件工程的BUG:软件的行为和用户的期望值不一样的话,就叫bug。是否是bug,取决于用户和开发者的不同角度。如某聊天软件不支持视频聊天,用户期望这个软件可以视频聊天。但开发人员说这个版本根本没有打算支持视频聊天。这还是一个bug吗?

以上为课堂总结内容,明天将发表课堂练习进度。

 

posted @ 2022-03-11 23:49  几人著眼到青衫  阅读(92)  评论(0)    收藏  举报