美文网首页
软件系统分析与设计笔记(三)

软件系统分析与设计笔记(三)

作者: Nino_Lau | 来源:发表于2019-03-18 16:25 被阅读0次

软件开发生命周期模型

瀑布模型

优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从而提高了大型软件项目开发的质量和效率。
缺点:开发过程一般不能逆转,否则代价太大;实际的项目开发很难严格按该模型进行;客户往往很难清楚地给出所有的需求,而该模型却要求如此;软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心。
使用范围:用户的需求非常清楚全面,且在开发过程中没有或很少变化;开发人员对软件的应用领域很熟悉;用户的使用环境非常稳定;开发工作对用户参与的要求很低。

增量模型

优点:采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;如果核心产品很受欢迎,则可增加人力实现下一个增量;可先发布部分功能给客户,对客户起到镇静剂的作用。
缺点:并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。
使用范围:进行已有产品升级或新版本开发,增量模型是非常适合的;对完成期限严格要求的产品,可以使用增量模型;对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。

螺旋模型

优点:设计上的灵活性,可以在项目的各个阶段进行变更;以小的分段来构建大型系统,使成本计算变得简单容易;客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性; 随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
缺点:采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;过多的迭代次数会增加开发成本,延迟提交时间。
使用范围:螺旋模型只适合于大规模的软件项目。

统一软件过程

主要特点

AUP(敏捷统一过程,Agile Unified Process)以RUP为框架,对其进行适当的剪裁,并吸取了其他敏捷方法,如XP、FDD等的先进思想。主要适用于20人以下的团队采用OO(面向对象)的方法进行中小型项目的开发。其主要特点是:

1. 以架构为中心

尽管敏捷方法认为系统设计应该随着软件开发不断演化,但是,系统的架构设计应该在系统开始编码之前给予充分的斟酌。因为架构关心的不仅是功能性需求,更多关心的是非功能性需求,如系统的性能等。一个没有经过深思熟虑的架构往往会在开发后期或系统移交之后暴露出很多性能上的问题,那时再进行重构的代价是非常大的。

2.注重数据库设计

很多项目的失败都是由于数据库设计不合理,性能未给予优化造成的。AUP认为数据库设计应随系统的开发一同演进。良好的数据库设计使得系统的性能得到可靠保证。由于系统要处理大量的生产数据,数据库最终会达到千万行以上的记录。在项目开始初期,对数据库进行了充分的测试,保证达到性能的要求。因此在项目投用以后,随着遗留系统的数据导入,数据库很快膨胀到几百万行记录,但由于前期工作比较充分,系统仍能很好地满足性能的需求。

3.强调与用户的沟通

软件需求的不稳定,加之很多用户在没有看到最终系统之前,并不了解自己到底需要什么样的一个系统。因此,AUP在开发过程中,始终强调与用户进行直接、有效的沟通。在初始和细化阶段,开发人员通过界面原型不断与用户讨论需求的内容,聆听用户的反馈意见,不断改进需求。在构造和移交阶段,不断通过小型发布向用户提交可运行的版本,让用户在使用过程中不断改进和提出新的需求。

各个阶段

RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段 (Inception)、细化阶段 (Elaboration)、构造阶段 (Construction) 和交付阶段 (Transition)。每个阶段结束于一个主要的里程碑:每个阶段本质上是两个里程碑之间的时间跨度。在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。

  • 初始阶段:生命周期目标(Lifecycle Objective)里程碑
  • 精化阶段:生命周期体系结构 (Lifecycle Architecture) 里程碑
  • 构建阶段:初始运行能力 (Initial Operational Capability) 里程碑
  • 移交阶段:产品发布 (Product Release) 里程碑

统一过程为企业按固定节奏生产、固定周期发布软件产品提供了依据。统一过程模型中,各个阶段的生命周期是有固定长度的, 因此在产品的的迭代开发过程有较为明确的时间限制的。

相关文章

  • 软件系统分析与设计笔记(三)

    软件开发生命周期模型 瀑布模型 优点:有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究,从...

  • 【javaweb期末项目】从零开始制作网上学生成绩管理系统(报告

    目录:一、 前提与摘要二、 课程设计的目的和要求三、 系统分析与设计四、 实现与测试...

  • 软件系统分析与设计笔记(一)

    软件工程 软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、...

  • 软件系统分析与设计笔记(二)

    系统的分析与设计 对系统分析的理解 系统分析领域与需求分析或运营研究密切相关。这是一项明确的正式调查,目的是帮助决...

  • 项目管理

    信息系统分析与设计 PMP

  • 编程实战

    软件生命周期 一.需求分析(需求分析师) 二.需求设计(系统分析师/架构师/资深开发人员) 三.编码实现( 软件开...

  • 领域驱动设计概览

    领域驱动设计(Domain Driven Design,DDD)是由Eric Evans最早提出的综合软件系统分析...

  • 自控课设

    直流电机伺服系统控制系统分析与设计 本学期指控原理课程设计题目我选择了《直流电机伺服系统分析与设计》,主要内容包括...

  • UML类图

    基本介绍 UML(Unified Modeling Language)统一建模语言,是一种用于软件系统分析和设计的...

  • 程序员考试的等级如何划分,和程序员考试的级别

    程序员考试,全称是计算机技术与软件专业技术资格考试,分为程序员 、软件设计师、系统分析师, 也就相对于初级程序员、...

网友评论

      本文标题:软件系统分析与设计笔记(三)

      本文链接:https://www.haomeiwen.com/subject/cvkbmqtx.html