软件开发
软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉,需求分析,设计,实现和测试的系统工程。 软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。
软件开发的核心问题
软件开发的核心问题就是如何从概念上对一个复杂的业务系统进行建模。这个建模是含义广泛的,不仅仅包括对象建模,还包括数据建模、算法建模等等一系列的内容。总而言之是要先找到解决复杂问题的突破口(先要搞明白需要做什么,然后再考虑如何做)。至于采用什么表示方法(简单文本、UML 图、E-R 图)、采用什么高级语言、是否一定要用面向对象、使用什么开发工具都是次要的问题。
有些人每做一个新项目,不管三七二十一先画一大堆图出来。其实你看《编写有效用例》这本书中用到了很多图形吗(当然我不否认图形在有些场合的重要性)?很多时候可能你只需要把你的想法简单地在纸上画出来(一只铅笔、一张白纸,成本接近于 0)就足以帮助你理清思路了。如果你的想法都无法清晰地画在纸上,那么 ROSE 这样昂贵的工具就能帮助你了吗?还是你只能装装样子,否则混老板的工资于心不忍呢?
软件开发中,工具是非常重要的,完全有必要非常纯熟地掌握所使用的工具。但是一旦掌握以后,就应该进一步思考一些深层次的问题了。按照我的看法,开源软件解决了工具的问题,然而如果你一味依赖开源软件,而不去利用这些很好的基础解决复杂的问题(建造更加复杂的架构),那么等于是把你的明天拱手相送了。
软件开发中的三种基本策略:复用、分而治之、优化与折衷
1.复用
利用某些已开发的、对建立新系统有用的软件元素来生成新的软件系统。
2.分而治之
分而治之是指把大而复杂的问题分解成若干个简单的小问题,然后逐个解决。
3.优化与折衷
软件的优化是指优化软件的各个质量因素,如提高运行速度、提高对内存资源的利用率、使用户界面更加友好、使三维图形的真实感更强等等。
软件开发流程
软件开发流程(Software development process)
软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。
1 相关系统分析员和用户初步了解需求,然后用WORD列出要开发的系统的大功能模块,每个大功能 模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。
2 系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚例用系统大致的大功能模块,大功能模块有哪些小功能模块,并且还例出相关的界面和界面功能。
3 系统分析员和用户再次确认需求。
4 系统分析员根据确认的需求文档所例用的界面和功能需求,用迭代的方式对每个界面或功能做系统的概要设计。
5 系统分析员把写好的概要设计文档给程序员,程序员根据所例出的功能一个一个的编写。
6 测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能,然后验收。
举个例子来看:
1 某公司想找人订做一套人事管理软件,从某种渠道上得知我们有提供这种服务,所以联系上了我们。
2 我们会派专门的软件工程师到他们那里去了解我们要设计一个什么的东西给他们用,然后回来做个方案给他们,其中方案的内容包括:我们开发出来的软件大概的界面是怎样?方便什么人使用?什么人可以使用什么功能?方便到什么程度?大概的硬件要求是怎样等?
3 他们看了方案后,确定他们就是要做一套这样的软件,我就开始开发这套软件。
4 我们把开发出来的软件交用他们使用,其中在使用的过程中哪里使用不方便或哪里达不到要求,我们会第第一时间修改这些功能,直到他们要求的所有功能都能很完美的解决掉。
软件开发典型的开发模型有:①瀑布模型(waterfall model);②渐增模型/演化/迭代(incremental model);③原型模型(prototype model);④螺旋模型(spiral model);⑤喷泉模型(fountain model);⑥智能模型(intelligent model) ; 7. 混合模型(hybrid model)
主流软件开发语言:Java、C、C++、VB、php、Perl、PyThon、C#、Javascript、Ruby。