软件工程(3.14)

  • 软件危机出现的原因

  • 软件工程研究的内容

  • 主要包括以下两个部分:
  • (1)软件开发技术。主要研究软件开发方法、软件开发过程、软件开发工具和环境。
  • (2)软件开发过程管理。主要研究软件工程经济学和软件管理学。
  • 软件工程要达到的基本目标:

  • 软件过程,重点软件过程模型【期末必考】

  • 模型在某个意义上就是一个套路,可以减少软件开发人员开发过程中的成本,提高效率,减少bug,我之所以能成功 ,是因为我站在巨人的肩上。
  • 软件过程:软件的诞生和生命周期是一个过程
  • 也有一种定义:一组适合于所承担的项目特点的任务集合。
  • 就像人类幼崽的诞生和老人的死亡,软件也有一个大环境,它是在硬件之上,运行于操作系统的存在。当软件的更新没有同步兼容新的操作系统的时候,也是被淘汰的时候。
  • 如果不谈硬件,只谈软件就是在扯犊子;如果没有软件只谈硬件,就是一块废铁!
  • 软件生命周期【期末必考】

  • 生命周期模型规定了把生命周期划分为哪些阶段及各个阶段的执行顺序,也称为过程模型。
  • 可行性研究阶段是为后续的软件开发做必要的准备工作
  • 需求分析是指为了解决用户提出的问题,确定目标系统需要做什么
  • 软件设计就是指在需求分析的基础上,软件开发人员通过制定设计方案,把需求文档中描述的功能可操作化
  • 编码阶段,开发人员根据设计阶段制定出的设计方案,编写程序代码【就是把详细设计文档中对每个模块实现过程的算法描述转换为能用某种程序设计语言来实现的程序】
  • 软件测试是保证软件质量的关键步骤。软件测试的目的是发现软件产品中存在的软件缺陷,进而保证软件产品的质量
  • 软件维护就是在使用软件产品的过程中,软件开发人员需要对产品进行维护,以保证软件产品正常运行。【改bug,跑起来】
  • 瀑布模型

  • 不可回溯性【如果在软件生命周期的后期发现并要改正前期的错误,那么需要付出很高的代价,不属于迭代】
  • 水往低处流,人往高处走!
  • 优点是过程模型简单,执行容易;缺点是无法适应变更
  • 瀑布模型适应于需求清晰的软件开发项目。

  • 快速原型模型

  • 快速原型模型适用于需求不明确的软件开发项目

  • 举一个例子,比如说我们去手机店买手机,销售人员,根据我们的需求,不断缩小范围去推荐给我们想要功能的手机。比如最开始进去,会询问价位,后续可能会通过内存,像素等,这就是需求。快速原型就是一个不断和客户交流沟通,进行修改的模型。
  • 快速原型模型最重要的是,必须迅速构建原型,然后根据用户意见迅速修改原型

  • 习题答案

  • 一、选择题


  • 2-1、增量模型本质上是一种( )。
    A. 线性顺序模型
    B. 整体开发模型
    C. 非整体开发模型
    D. 螺旋模型
  • 2-2、软件过程是( )。
    A. 特定的开发模型
    B. 一种软件求解的计算逻辑
    C. 软件开发活动的集合
    D. 软件生命周期模型

  • 2-3、软件生命周期模型不包括( )。
    A. 瀑布模型
    B. 用例模型
    C. 增量模型
    D. 螺旋模型
  • 2-4、包含风险分析的软件工程模型是()。
    A. 螺旋模型
    B. 瀑布模型
    C. 增量模型
    D. 喷泉模型
  • 2-5、软件工程中描述生命周期的瀑布模型一般包括计划、需求分析、设计、编码、()、维护等几个阶段。
    A. 产品发布
    B. 版本更新
    C. 可行性分析
    D. 测试
  • 2-6、软件开发的瀑布模型,一般都将开发过程划分为:分析、设计、编码和测试等阶段,一般认为可能占用人员最多的阶段是( )。
    A. 分析阶段
    B. 设计阶段
    C. 编码阶段
    D. 测试阶段
  • 2-7、螺旋模型综合了()的优点,并增加了风险分析。
    A. 增量模型和喷泉模型
    B. 瀑布模型和快速原型模型
    C. 瀑布模型和喷泉模型
    D. 快速原型模型和喷泉模型
  • 二、判断题

  • (1)瀑布模型的最大优点是将软线开发的各个阶段划分得十分清晰。 X
    (2)螺旋模型是在瀑布模型和增量模型(快速原型)的基础上增加了风险分析活动。X
    (3)软件工程过程应该以软件设计(需求分析)为中心,关键是编写程序。 X
    (4)极限编程属于增量模型。X

    三、简答题

  • 1.如何理解软件生命周期的内在特征?

    【答案】:

    软件产品的生命周期是指从设计该产品的构想开始,到软件需求的确定、软件设计、软件实现、产品测试与验收、投入使用以及产品版本的不断更新,到最终该产品被市场淘汰的全过程。
    软件生命周期这个概念从时间的角度将软件的开发和维护的复杂过程分解为了若干个阶段,每个阶段都完成特定的相对独立的任务。
    由于每个阶段的任务相对于总任务难度会大幅度降低,在资源分配、时间把握和项目管理上都会比较容易控制。合理地划分软件生命周期的各个阶段,使各个阶段之间既相互区别又相互联系,为每个阶段赋予特定的任务。

    2.请对比瀑布模型、快速原型模型、增量模型和螺旋模型。

  • 【答案】:

    瀑布模型:
    主要体现了分阶段、有控制的思想。活动间强调按顺序、文档化;存在的问题是过于理想化,每一步的工作必须完整准确,否则无法进行下一步工作。

    原型模型:
    需求分析入手快速、表达直观、容易交流。重点解决瀑布模型的需求分析入手难的问题。

    增量模型:
    对于需求复杂的系统,采用分块开发、逐步集成的开发策略。增量体现了演进、迭代思想,每一块就是一个增量。每个增量是一次迭代。增量模型的新版本叫做“极限编程(XP)”。

    螺旋模型:
    融合了上述3种模型,融进了循环往复、强化了演进迭代的思想,增加了风险控制环节。但是,风险分析的正确性是左右软件眼镜的关键因素。

    3.在统一软件开发过程模型中核心工作流程包含哪些?

  • 【答案】:

    核心工作流程有业务建模,需求分析,分析设计,实现,测试和部署。

    4.当需求不能一次搞清楚,且系统需求比较复杂时应选用哪种开发模型比较合适?

  • 【答案】:

    开发模型不是孤立或排斥的,它们之间需要相互借鉴和参考。螺旋模型是一种综合性的模型,适合于较复杂的系统。

    5.敏捷过程的核心价值观有哪些?它对传统方法的“反叛”体现在哪些方面?

    【答案】:

    敏捷思想的核心价值观大体包括以下几个方面:
    (1)注重个人与交互。
    (2)重点关注可以工作的软件。
    (3)提高客户参与程度。
    (4)以积极的心态响应需求变化。
    (5)敏捷联盟强调的价值观是这一流派的核心。人是受价值观驱使的,敏捷项目管理因而也是以价值观为推动力的。一个团队可以采用敏捷做法,但如果它不接受敏捷价值观,它将不能得到敏捷方法的潜在好处。
    敏捷方法对传统方法的“反叛”体现在以人为中心,不再依靠文档来控制过程,认为传统过程过于僵化、文档繁烦,主张对传统过程瘦身,在上述价值观的支配下,做到够用为准。

    6.什么是软件过程?它与软件工程方法学有何关系?

    【答案】:

    软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。软件工程方法学包含软件过程。

    7.某大型企业计划开发一个“综合信息管理系统”,该系统涉及销售、供应、财务、生产、人力资源等多个部门的信息管理。该企业的想法是按部门优先级别逐个实现,边应用边开发。对此,需要一种比较合适的过程模型。请对这个过程模型做出符合应用需要的选择,并说明选择理由。

  • 【答案】:

    可以采用增量模型。它是瀑布模型与原型进化模型的综合,它对软件过程的考虑是:在整体上按照瀑布模型的流程实施项目开发,以方便对项目的管理;但在软件的实际创建中,则把软件系统功能分解为许多增量构件,并以构件为单位逐个创建与交付,直到全部增量构件创建完毕,并都被集成到系统之中交付用户使用。

  • 55
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值