软件工程(1)综述

现在已经第五周了,《软件工程》这门课程也学了有一半了,但是知道前不久我才渐渐地感受到开设这门课主要目的是什么。(突然想到超的专业就是软件工程吧 )

刚开课去图书馆借了本书,看了一点有点出乎意料,原以为里面会有大堆代码、结构之类的东西。但看起来更像一本管理学类的书籍,后来发现这门课就是教你怎么管理一桩软件开发的工程的。虽然这一点第一节课老师就讲完了,但是我久久不能了解这是什么意思,知道进行可行性分析时,我才有些开窍。

      前几个学期学了一些计算机类的课程, C语言、数据结构、MFC,现在又有了数据结构,这就形成了一条完整的线条,虽然比较单一,但是为我们开辟了一条门路。这门课程是选修课,往后还有数据库课程,但是我们还有RS和GIS类的选修,甚至还有物探的选修(orz)。突然想到之前高数课上,杨飞讲他在地质类的大会上强行秀一波的故事,那个外来的教授把数学学到这么高的水平。那么只是对数学需要这么高的要求吗?应该不然吧。。。当今是计算机时代,各个方面都在向着数字化的方向发展,软件开发遍地开花,让专业人员学习计算机相比让程序员学习不同专业知识简单多了,软件开发生产链很长,想要建设维护并不是一件简单的事情,写代码这种事情可以速成,但是如何管理一项工程,如何进行流程设计和实现确实不容易的,而且还涉及到资金的问题。这使得工程的开发变得像是开发商建房子一样,必须兼顾各方个面,除非是有丰富的工作经验,否则很难掌控雷电的。那么问题来了,开发一项工程是一件很漫长的事情,虽然没有做过,但是几个月还是要有的,所以要想仅仅通过大量经验来使自己熟悉的话,这学费有点贵啊,于是,我们这门课应运而生了。(讲了这么多,终于入题了)

      如果要在课程名称后面加上四个字的话,那一定是“开发流程”。正如老师第一节课(好像是第一节课)最后留的开发一个生成算术题的程序一样,首先这是可行的,然后提出了一系列的需求,要求这要求那的,还要进行测试等等。感觉这个题目还是很麻烦的,如果我自己写出来的话,(仅仅是如果),一定感觉它功能很强大。仔细想想,这软件真是垃圾透了,怎么会有人用,如果要有人用的话,至少还要加上良好的环境界面,很好的交互体验,防作弊功能,更甚者,我们还还能想到建立一个学生、家长、老师三个不同方式的登录方法,对于不同的登录设置不同的权限,并实现数据的同步和网络批改,对于学生做错较多的题目,还能自动统计类型,并智能地生成加强练习题目、、、(此处省略一万字)、、头脑风暴根本停不下来。这样下去,我还想是否可以和学校合作,为他们提供一些这方面的服务。毕竟,最终能赚到钱才是我们的目的。以上就算是开发的一个步骤了吧。这只是笼统的想一下,若是要静下心来,一步步的写出来,那可就不太容易了。

      接下里就是针对这个题目本身了,这是一个生成题目的软件,这让我想起了计算器,上学期我们学MFC时写过一个很简易的计算器,实在是一点实用性都没。之后考试的时候,我前面有人交了一个计算器的软件,我也看过类似的,但是当时助教问了一个问题,他说这计算器能不能算混合四则运算,可不可以实现小括号的功能,甚至多重括号。那哥们一下子就蒙了。这个东西看似简单实际上还是有很多细节需要考虑的。在最后还有附加了一些题目,可以用一种新的语言去写,我想这门少有人去做吧。还可以开发APP,大家基本都没学过Java,而且object-c又太难,主流平台就这俩,本来选课人就不多,估计这附加题顶多就一两个人去搞吧。

      写到这,我突然发现我在第四段yy的那个软件是多么可笑,就算功能真的强大了,在现在的环境下,也会absolutely defeat  我能想到,那么大家都能想到,把东西弄得复杂谁不会能?写好一块块地往上拼就是了,这好比雕塑作品,塑是做加法,比较简单,难的是雕,雕是做减法,让人感觉这见器物浑然天成,没有一点不协调的地方。现在软件也在向着这方面发展,我们用的软件越来越大,功能越来越多。可是越来越讲求人性化设计,能去掉鸡肋的都去掉,甚至可以推出一些限时行的功能。开发员把能不让你看到的都藏起来,更注重一键解决问题,讲究的是simple。我刚才想的那东西实在是一堆堆积的破铜烂铁,但是我们不能因此放弃了整个工程,可以通过多种方法来解决问题,比如说,可以推出base版、standard版、pro版等。或者说是教师版、家长版、学生版。至于前面说推出APP的事情我是不太赞同的,因为作为一个小学生,你会拿家长手机会去做习题?更多的是去玩游戏吧。

说着简单,做起来难,如何能够将客户的体验和需求在你的软件上体现出来,这就是我认为在软件开发中遇到的第二大难题(第一大是资金问题)。很对年前,我们使用软件都是这样,在网上下载一个软件,它有什么功能,我们就用什么功能,如果不足以满足我们的要求,我们就再下其它的软件。长期以来,这中情况生出很多诟病,比如软件泛滥,一个功能有几十款软件,我们不知道如何选择,还有就是广告泛滥,很多软件插播的广告太多了,让人很反感。最重要的是对于使用人本身,需要下载并管理一大堆软件,很多都是一次性的软件,实在是累。但是现在不太一样了,现在的软件都注重客户的回馈,在很多软件的功能中,都增加了评价功能,这个以前都不太在意的功能现在占的版面也越来越大。更是在很多应用商店中,客户评价直接影响到软件下载量。评价系统使得用户可以进行反馈,系统可以进行一种反馈调节,这种动态的平衡才能让软件长久生存下去。如此,现在的软件都是这样,客户需要什么功能,开发员就开发什么功能让自己的软件更健全。

好吧,第一次在博客园的blog就写这么多了,都不记得上次在sina写博客是什么时候了。自从有了微博,感觉大家都很少看博客了(快餐文化?)。不多说了,前面这一大堆啰啰嗦嗦的东西就是我对软件开发这门课程的初步看法,还有一些我对软件开发内容的瞎(遐)想。杂文没有校检,还好文字粗犷,没甚太拗口的地方。

2016年3月29日 于51栋

posted @ 2016-03-30 09:48  i永恒的心  阅读(1076)  评论(0编辑  收藏  举报