软件工程--软件过程模型

      软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。通常使用生命周期模型简洁地描述软件过程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。常见的过程模型有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。

1.瀑布模型

这个特点有两重含义:

    1.必须等前一阶段的工作完成之后,才能开始后一阶段的工作;

    2.前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果。

瀑布模型每个阶段都应坚持两个重要做法:

    1.每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。完整、准确的合格文档是软件开发时期各类人员之间相互通信的媒介,也是运行时期对软件进行维护的重要依据。

    2.每个阶段结束前都要对所完成的文档进行评审,以便迟早发现问题,改正错误。事实上越是早期阶段犯下的错误,暴露出来的时间就越晚,排除故障改正错误所需付出的代价也越高。因此,及时审查,是保证软件质量,降低软件成本的重要措施。

      可以说瀑布模型是由文档驱动的。这个事实也是它的一个缺点,在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。瀑布模型历史悠久、广为人知的,它的优势在于它是规范的、文档驱动的方法;这种模型的问题是,最终开发出的产品可能并不是用户真正需要的。

(1)传统的瀑布模型:

传统的瀑布模型

(2)实际的瀑布模型:

实际的瀑布模型

2.快速原型模型

     所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。快速原型的本质是“快速”,开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用作是获知用户的真正需求,一旦需求确定了,原型系统将被抛弃。

     快速原型模型正是为了克服瀑布模型的缺点而提出来的。它通过快速构建一个可在计算机上运行的原型系统,让用户试用原型系统并收集用户反馈意见的办法,获取用户的真实需求。

快速原型模型

3.增量模型

     增量模型也称为渐增模型,使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。

优点:

    1.能在较短的时间内向用户提交可完成部分工作的产品。

    2.逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。

     增量模型具有可在软件开发的早期阶段使投资获得明显回报和较易维护的优点,但是,要求软件具有开放的结构是使用这种模型时固有的困难。

增量模型

4.螺旋模型

     螺旋模型的基本思想就是,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作每个阶段之前都增加了风险分析过程的快速原型模型。

     螺旋模型主要适用于内部开发的大规模软件项目。如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。事实上项目越大,风险也越大,因此进行风险分析的必要性也越大。此外只有内部开发的项目,才能在风险过大时方便中止项目。

     螺旋模型的主要优势在于,它是风险驱动,但是,这也可能是它的一个弱点。除非软件开发人员具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风:当项目实际上正在走向灾难时,开发人员可能还认为一切正常。

      风险驱动的螺旋模型适用于内部开发的大型软件项目,但是,只有在开发人员具有风险分析和排除风险的经验及专门知识时,使用这种模型才会获得成功。

(1)简化的螺旋模型

简化的螺旋模型

(2)完整的螺旋模型

螺旋模型 4.喷泉模型

      喷泉模型对软件复用和生存周期中多项开发活动的集成提供了支持,以面向对象的软件开发方法为基础,它适合面向对象的开发方法。它克服了瀑布模型不支持软件重用和多项开发活动集成的局限性。喷泉模型使开发过程具有迭代性和无间隙性。系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统。无间隙是指在分析、设计和实现等开发活动之间不存在明显的边界。

喷泉模型

      按照在软件生命周期过程中应完成的任务的性质,在概念上可以把软件生命周期划分成定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试以及运行维护等8个阶段。实际从事软件开发工作时,软件规模、种类、开发环境及使用的技术方法等因素,都影响各阶段的划分。

      软件过程是为了获得高质量的软件产品所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。由于没有适用所有软件项目的任务集合,科学、有效的软件过程应该定义一组适合所承担的项目特点的任务集合。通常使用软件过程模型简洁地描述软件过程,它规定了把软件生命周期划分成的阶段及各个阶段的顺序。

posted @ 2009-10-20 19:54 侯垒 阅读(16967) 评论(4) 推荐(6) 编辑
摘要: 使用UML类图,我们可以表示出类的静态内容以及它们之间的关系。在类图中,我们可以显示出类的成员变量和成员函数,以及类之间的继承和引用关系。简而言之,我们可以描绘出类之间所有源码级的依赖关系。 阅读全文
posted @ 2009-10-07 14:27 侯垒 阅读(2452) 评论(1) 推荐(1) 编辑
摘要: 本文仅提供通过设置SoapHeader来控制非法用户对WebService的调用,如果是WebService建议使用WSE3.0来保护Web服务,如果使用的是Viaual Studio 2008可以使用WCF,WCF里面提供了更多的服务认证方法。以下提供一种基于SoapHeader的自定义验证方式。 阅读全文
posted @ 2009-08-22 10:10 侯垒 阅读(45535) 评论(17) 推荐(7) 编辑
摘要: 一、什么是闭包? “官方”的解释是:所谓“闭包”,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。 阅读全文
posted @ 2009-08-19 20:17 侯垒 阅读(775) 评论(0) 推荐(0) 编辑
摘要: 我在发表过“据库中使用自增量字段与Guid字段主键的性能对比”这篇文章后,得到博客园各园友的很多评价,大家对我的测试方法也提出一些改进的方法。让我吃惊的是一园友提出:把guid和id的测试顺序颠倒一下,看下结果。今天就再测试一下,欢迎各园友提出更好的测试方案。 阅读全文
posted @ 2009-07-29 11:43 侯垒 阅读(6467) 评论(44) 推荐(4) 编辑
摘要: SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回给调用者。如果没有在查询中指定某一子句,将跳过相应的步骤。下面是对应用于SQL server 2000和SQL Server 2005的各个逻辑步骤的简单描述。 阅读全文
posted @ 2009-07-29 08:23 侯垒 阅读(1396) 评论(5) 推荐(5) 编辑
摘要: 我们正在通过亲身实践以及帮助他人实践,提示更好的软件开发方法。 通过这项工作,我们认为: 人和交互 重于 过程和工具 可以工作的软件 重于 面面俱到的文档 客户合作 重于 合同谈判 随时应对变化 重于 遵循计划 虽然右项也有价值,但我们认为左项更加重要。 阅读全文
posted @ 2009-07-19 11:05 侯垒 阅读(1130) 评论(0) 推荐(1) 编辑
摘要: 网站使用的asp.net+access数据库,刚开始访问正常,一旦访问用户比较的多的时间就会出现System.Data.OleDb.OleDbException:未指定的错误,错误代码为:'0x80004005',重启服务器后访问正常。错误信息如图所示: 阅读全文
posted @ 2009-07-18 20:02 侯垒 阅读(6759) 评论(4) 推荐(1) 编辑
摘要: 架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。 阅读全文
posted @ 2009-02-11 09:31 侯垒 阅读(954) 评论(0) 推荐(0) 编辑
摘要: 我们在软件开发过程中,数据库是一个永久不变的话题,但是根据软件架构与客户要求的不同我们会选择不同的数据库,在C#中不同数据库操作编写代码不尽相同,下面提供一种通用的数据库操作方案,只需要根据config的配置就可以动态的选择不同的数据库. 阅读全文
posted @ 2009-02-09 10:21 侯垒 阅读(3479) 评论(4) 推荐(2) 编辑
摘要: 在我们的数据库设计时,数据库的主键是必不可少的,主键的设计对整数据库的设计影响很大,我就对自动增量字段与Guid字段的性能作一下对比. 阅读全文
posted @ 2008-12-13 14:35 侯垒 阅读(16409) 评论(50) 推荐(4) 编辑
摘要: 在软件开发过程中我们经常将GridView中的数据导出到Excel中供客户端下载以下提供一种解决方案,并解决下载后乱码的问题. 阅读全文
posted @ 2008-12-01 12:06 侯垒 阅读(999) 评论(1) 推荐(0) 编辑
摘要: 概述: 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法确相对稳定。如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?这就是要说的建造者模式。 阅读全文
posted @ 2008-07-20 22:24 侯垒 阅读(4551) 评论(22) 推荐(0) 编辑
摘要: 让我们共同体验美好的大学生活,共同学习,共同提高。 欢迎常来“大学生联盟”做客,这里的学习氛围和温馨的学习环境,一定让您流连忘返。 阅读全文
posted @ 2008-05-23 21:18 侯垒 阅读(1899) 评论(68) 推荐(0) 编辑
摘要: 我把数据库操作类整理了一下,它包含了常用的数据库操作,由三种方式:简单的SQL拼接字符串的形式,SQL语句使用参数的形式和存储过程的形式,每种形式均有五个方法,并且都有事务.,可以直接调用.代码如下: 阅读全文
posted @ 2008-05-21 10:20 侯垒 阅读(3091) 评论(6) 推荐(0) 编辑
Powered by: holly
点击右上角即可分享
微信分享提示