现在的位置: 首页 > 综合 > 正文

软件工程 – 1、概念

2013年01月17日 ⁄ 综合 ⁄ 共 2720字 ⁄ 字号 评论关闭

--作者:张骞

--原创,转载必究

 

什么是软件工程,概括来说,就是用工程化的方法对软件进行定义、开发、维护。而所谓工程化的方法,则是包括了计算机科学、工程科学、管理学、数学等领域的一种综合方法。

 

一、软件生命周期

有时也叫软件生存周期,是指软件从提出开发到软件产品报废的整个周期。

通常分为以下几个周期:

1、项目立项

有的地方也把这个周期叫做可行性分析,因为可行性分析是项目立项过程中的一个重要事务和依据;

 

2、需要开发与管理

有的地方也把这个周期叫做需求分析,这种叫法比较片面,对于需求,通常包括获取、分析、定义、确认、跟踪(即变更)这一连串的事务;

 

3、系统设计

这个周期可能会被误认为是编码,其实不然,在这里,我们需要对软件系统的架构、基于该种架构的技术实现、功能模块、数据库进行规划与设计。

该周期包括我们所熟悉的概要设计(即系统架构设计)和详细设计;

 

4、编码

这个周期所要做的是,将系统设计周期中,我们的设计思路“翻译”成计算机所能认识的程序代码;

 

5、测试

对程序代码进行测试,以保证软件产品的质量;

 

6、发布与实施

这时一个成功的软件产品已经出现在我们眼前,我们所要做的就是将它发布出来以投放市场,同时还需要负责将产品实施上线,此时就可以进行项目结项了;

 

7、维护

软件正式投入使用后,可能还会出现各种隐藏的错误,或软件运行环境发生变化而需要做出变更,或客户需求发生变化而需要对软件产品进行扩展等等,这时我们对软件产品进行维护。

 

现实当中,不同的软件规模、种类、开发方式、开发环境等因素,都可能影响到软件生命周期的构成,也就是说,并不是所有的软件产品都必须独立存在以上各个生命周期,比如实施类的项目就没有设计、编码和测试生命周期。

 

二、软件生命周期模型

望文生义,我们知道它是一种模型。它用来组织每个软件生命周期的活动如何执行,这就类似于,我们在编写PPT文档的时候使用的模板。

在现实当中,根据公司开发规范、习惯、业务需要等的不同,往往不是拘泥于某种模型,而通常是以某个模型为基础,结合自身的各种状况,从而形成某种适合自己的复合的软件生命周期模型。

以下是一些常见的软件生命周期模型:

1、瀑布模型

有时也叫线性模型,它将软件生命周期由前至后按顺序串联起来,以文档作为驱动,如同瀑布流水一般。

 

适合于需求比较明确无二义性的软件开发,比如:进销存管理、操作系统开发,每一个生命周期工作的完成都作为一个里程牌,后一周期以前一周期的输出文档作为输入,逐层推进。

 

但对于需求变化较晚或风险不明显的软件开发,到了软件生命周期的后期,就可能出现从头开始的局面。

 

2、原型模型

有时也叫快速原型模型,它要求在短时间内快速构造一个可运行的程序,以向用户演示并得到用户确认,进而明确需求,以进行系统设计。根据软件开发的规模,有时可能需要分批做多次原型构造,迭代进行。

 

适用于用户需求不明确的软件开发,通过原型可以明确用户需求。

 

但可能设计初期没有作远景规划,最终的软件质量无法得到保证,或者设计初期规划太过详细,但得到的原型并不是用户想要的,最终只是浪费资源。

 

3、螺旋模型

将瀑布模型与原型模型相结合,并加入了风险分析,以风险驱动,并决定是否继续推进项目,它以瀑布模型推进,以原型模型进行演示配合风险分析。

 

适用于大型项目,由于在生命周期的每个阶段加入了风险分析,软件质量有保证,项目风险降低,同时也减轻了后期测试的负担。

 

但对于风险分析的依赖太高,往往需要有相当丰富的风险评估经验和知识积累。

 

4、增量模型

有时也叫渐增模型,它将软件分成若干个构件或模块,先完成一部分功能模块的开发并得到确认,进而逐步完成所有模块的开发,增量推进。

 

适用于需求逐渐清晰的项目,它能够在短时间内向用户提交部分功能产品,并得到用户接受,最终完成用户所需的所有功能的开发。

 

但难点在于,新增的功能模块不可以影响或破坏已提交的功能产品,对于软件功能模块的独立性,及软件体系架构的开放性要求较高。

 

5、其他模型

喷泉模型、变换模型等,在此不一一介绍。

 

三、软件开发方法

软件开发方法,就是在每个软件生命同期中,使用某种约定好的技术集和符号,来表达分析问题、解决问题的思路或方法。

常见的软件开发方法如下:

1、结构化方法

有时也叫传统软件开发方法,这是相对于目前主流的面向对象方法而言的。

 

结构化分析(SA):使用系统流程图、数据流图来建立系统的功能模型,从而完成需求分析;

结构化设计(SD):根据模块的独立性,将数据流图转化为软件结构图来建立系统的物理模型,从而完成概要设计;

结构化程序设计(SP):将软件结构图中的每个功能模块以控制流的形式表示出来,可以配合使用流程图,从而完成详细设计。

 

结构化方法特别适合用于数据处理领域,但对于大型项目不太适用,因为它难于解决软件重用性问题、难于适应需求变化等。

 

2、面向对象方法

面向对象方法中,使用UML作为我们交流的符号。

 

面向对象分析(OOA):使用用例图来描述用户需求,可分为业务用例、系统用例;

面向对象设计(OOD):使用包图、类图、对象图等来表达系统静态模型,使用顺序图(序列图)、合作图、状态图、活动图等来表达系统动态模型;

面向对象编程(OOP):使用构件图、配置图等来表达系统代码结构。

 

面向对象方法特别适用于大型项目,它用人类习惯的思维方法来分析问题、软件的可重用性和可维护性都较高。是目前主流的软件开发方法。

 

3、其他方法

Jackson方法、面向对象的Booch方法、面向对象的Coad方法、面向对象的OMT方法等,这些开发方法由于种种历史原因,目前基本都被抛弃,此不一一赘述。

 

四、软件开发工具

1、软件开发环境

比如:操作系统、数据库管理系统、所使用的语言体系等。

 

2、软件工具

主要分为以下几类:

1)系统模拟工具:用于界面原型、数据流、算法模拟等;

2)需求开发与管理工具:用于需求分析、需求跟踪;

3)系统设计工具:用于画图、代码生成等;

4)编码和单元测试工具:用于程序编译、单元测试;

5)测试和集成工具:用于产品集成及各种测试;

6)文档工具:用于编写文档;

7)配置管理工具:用于访问和版本控制等;

8)质量保证及度量工具:主要指各种图表、表格等;

9)项目管理工具:用于制定项目计划、进度跟踪、状态报告、估算与统计等;

 

最后再介绍一个概念,计算机辅助软件工程(Computer-Aided Software Engineering),简称CASECASE的观念就是使软件开发人员在计算机的辅助下,能够更自动化、智能化地进行软件开发,达到这样效果的软件开发工具,我们称它为CASE工具,以上软件工具分类中都对应着各种各样的CASE工具。

 

抱歉!评论已关闭.