第一章软件工程基础

1、工程与科学

  • 科学以发现为核心,对自然本质及其运行规律的探索
  • 技术以发明为中心,讲求技巧
  • 工程集成科学与技术,解决实际问题

工程的特点:

  • 系统性
  • 复杂性
  • 交叉性
  • 综合性

软件 = 程序+数据+文档

  • 软件特性–>反映软件共性
  • 软件分类–>反映软件个性
  • 软件发展与危机–>共性与个性的表现

共性:

  • 软件不是制造的,而是研发–>项目管理、产品保护困难
  • 软件不会用坏–>维护困难,不能能通过重复制造解决
  • 大多数为定制–>开发的质量效率受影响
  • 成本难估计–>项目计划失败

个性:

  • 应用功能分类:

    1. 系统软件:与计算机硬件密切交互(如:操作系统)
    2. 支持软件:协助开发者的工具软件(如:编译器)
    3. 应用软件:为某种功能专门开发的软件(如:QQ)(支持软件和应用软件有时界限模糊,如word)
  • 服务对象范围:

    1. 项目软件:受特定用户委托开发而成的软件(教务管理系统)合同约束
    2. 产品软件:为市场研发(王者荣耀)市场竞争

2、软件工程

性质:指导软件开发和维护的工程性学课

理论基础:计算机技术、管理科学、数学

手段:用工程化概念、原理、技术、方法进行软件开发和维护。把经过实践证明的正确的管理措施和当前能够得到的最好的技术、方法相结合

目的:最少的代价获取高质量软件

软件工程基本原理

  • 分阶段的生命周期计划,严格管理
  • 坚持阶段评审
  • 严格产品控制
  • 现代程序设计技术
  • 结果能清楚审查
  • 开发小组人员少而精
  • 承认不断改进软件工程实践的必要性

3、软件生命周期过程

  1. 软件生存周期过程规定了:获取、供应、开发、操作和维护软件时,要实施的过程、活动、任务,目的是为各种人员提供相同框架,以便使用相同语言
  2. 软件生存期过程没有规定特定的生存期模型

4、常用的软件开发生存周期模型

1.瀑布模型

  • 瀑布模型的每个阶段都有文档编写,将整个项目可视化,便于交流,确保质量,方便管理。
  • 适合于需求明确的项目的开发

编码阶段比较靠后

导致无法及时获取用户的意见。但同时,在经历了大量的分析之后,有利于降低编码的错误率

2.原型模型

原型模型特点是:快速开发,逐步完善。

目的:及时获取用户的反馈、需求

原型的目的是定义需求,一般原型不是最终系统

原型模型不适合作为小型系统的开发(成本问题),但是也可以和用户协商。

*采用原型模型开发系统,用户和开发者必须达成一致:原型被建造仅仅是用来定义需求,之后便部分或全部抛弃, 最终的软件要在充分考虑了质量和可维护性等方面之后才被开发。 *

3.RAD模型

强调极短的开发周期(强调复用,许多组件已经经历过测试)

新软件要求与已存在的程序有高可互操性时,或系统难以被适当地划分为若干功能等情况不适合使用RAD模型

需要足够的人力

4.增量模型

开发者根据用户使用结果发布新增功能,并且每次都是增加一个增量

边投资,边生产,边收益

优点:

  • 不需要大量人力
  • 不需要大量资金(边投资,边收益)
  • 用户可以及早使用,及早发现问题

缺点:

  • 如果产品整体结构设计不当,则难以为其增加新的增量
  • 由于采用增量开发,故难于进行彻底的测试。

5.螺旋模型

螺旋模型既保持了传统生命周期模型中系统的阶段性方法,又将迭代演化的思想吸收到模型中

螺旋模型每走一周对应一个阶段。

螺旋模型是风险驱动

它不适合于签合同的项目,因为若风险分析时,认为风险过大会终止整个项目开发。

6.RUP模型


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 2470290795@qq.com

文章标题:第一章软件工程基础

文章字数:1.2k

本文作者:runze

发布时间:2020-02-24, 10:51:59

最后更新:2020-02-27, 16:16:26

原始链接:http://yoursite.com/2020/02/24/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%9F%BA%E7%A1%80/%E7%AC%AC%E4%B8%80%E7%AB%A0%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E5%9F%BA%E7%A1%80/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏