【软件工程】什么?你还在复习软工但是不知道背哪里?速看!

  • Post author:
  • Post category:其他





特别提醒:此篇文章仅针对砂砖的软工考试!


再特别提醒!!!考试中的题目来自老师上课讲的,并无出入。

如果考试内容不符

,哥们也不知道说啥了。


在这里插入图片描述

在这里插入图片描述


写在前面:完整pdf版见Github

Github-Trae1ounG


示例:


在这里插入图片描述

如果对你有用麻烦点赞收藏加关注,并给我的仓库点一个Star!

谢谢!


Github-Trae1ounG


软工考题:


阅读题5分 1-3章

阅读题5分 4-6章

阅读5分 7-9章

编程20 4-7章

三道简答5分

简答一:软件工程概述

简答二:软件过程

简答三:项目管理(18章)

五道分析题(10分)

分析题一:用例图

分析题二:活动图

分析题三:顺序图

分析题四:类图

分析题五:白盒/黑盒?


概念题:




软件工程概述

软件的概念和特点

软件危机的概念和产生的原因

软件工程的定义、三要素、应用软件工程的原因


  • 软件的概念和特点

    • 软件=程序+文档+数据
    • 程序是按事先设计的功能和性能需求执行的指令序列
    • 数据:是程序能正常操作信息的数据结构
    • 文档:与程序开发、维护和使用有关的图文材料
    • 特征

      • 软件是开发的或者是工程化的,并不是制造的
      • 软件生产是简单的拷贝
      • 软件会多次修改
      • 软件开发环境对产品影响较大
      • 软件开发时间和工作量难以估计
      • 软件的开发进度几乎没有客观衡量标准
      • 软件测试非常困难
      • 软件不会磨损和老化
      • 软件维护易产生新的问题

  • 软件危机

    :在计算机软件的开发和维护过程中所遇到的一系列严重问题。

  • 项目超出预算

    v 项目超过计划完成时间

    v 软件运行效率很低

    v 软件质量差

    v 软件通常不符合要求

    v 项目难以管理并且代码难以维护

    v 软件不能交付


  • 产生软件危机的原因

    • 客观:软件本身特点

      • 逻辑部件
      • 规模庞大
    • 主观:不正确的开发方法

      • 忽视需求分析
      • 错误认为:软件开发=程序编写
      • 轻视软件维护

  • 软件工程是一门指导计算机软件开发和维护的工程学科。软件工程是一门交叉性学科

  • 应用软件工程的原因:

    • 软件工程概念的提出:其目的是倡导以工程的原理、原则和方法进行软件开发,以解决软件危机
  • 软件工程可定义为三元组: <目标,原则,活动>

    (1)给出了软件所涉及软件工程的工程要素

    (2)给出了各要素之间的关系

    (3)给出了软件工程学科所研究的主要内容


  • 软件工程目标

目标:


生产具有正确性、可用性以及开销合宜的产品。

-正确性:

• 意指软件产品达到预期功能的程度。

-可用性:

• 意指软件基本结构、实现及文档为用户可用的程度。

-开销合宜:

• 指软件开发、运行的整个开销满足用户要求的程度


  • 软件工程的活动

活动:-生产一个最终满足需求且达到工程目标的软件产品所需要的步骤。主要包括

需求、设计、实现、确认和支持

等活动


(a)需求:


定义问题,即建立系统模型


(b)设计:

-在需求分析的基础上,给出系统的软件设计方案。

-设计包括总体设计(也称为概要设计)和详细设计:

  • 总体设计建立整个软件体系结构

    • 包括子系统、模块(或构件)以及相关层次的说明、每一模块(或构件)的接口定义
    • 体系结构类型可分为:层次模块体系结构、C/S体系结构、以数据库为中心的体系结构、管道结构和面向对象的结构等
  • 详细设计针对总体设计结果,给出体系结构中每一模块或构件的详细描述


©实现:

把设计结果转换为可执行的程序代码


(d)确认

-确认活动贯穿于整个开发过程.

-实现完成后的确认,保证最终产品满足用户的需求。


(e)支持活动:

-支持活动包括修改和完善。

-它为系统的运行提供完善性维护、纠错性维护和适应性维护。


  • 软件工程的发展已经历了四个重要阶段

    • 传统的软件工程
    • 对象工程
    • 过程工程
    • 构件工程

      在这里插入图片描述




软件过程

软件生命周期概念、软件过程概念、常见的几种软件过程模型:瀑布、增量、原型、螺旋、敏捷等,比较各自优缺点



软件生命周期


  • 软件生命周期

软件产品或软件系统从设计、投入使用到被淘汰的全过程

包括

问题定义、可行性研究、需求分析、总体设计、详细设计、编码、测试、维护



软件过程


软件过程

是在工作产品构建过程中,所需完成的工作活动、动作和任务的集合。


活动

主要实现宽泛的目标,与应用领域、项目大小、结果复杂性或者实施软件工程的重要程度没有直接关系


动作

包含了主要工作产品生产过程中的一系列任务。


任务

关注小而明确的目标,能够产生实际产品



软件过程模型


软件过程模型

是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


①瀑布模型


1、按照软件生命周期的各个阶段,依次向下,逐步求精的方式完成软件项目;

2、每一阶段都有每一阶段明确的任务,每一阶段的完成都有相应的文档生成,

3、为下一阶段提供依据。

优点: 能够逐步稳定的使项目向前发展。

缺点: 无法解决软件需求不明确或者变动的问题。

1、在项目生命周期的后期才能看到最终的成果,用户不能提前了解到软件产品的实际效果。

2、当需求发生变化时,整个软件项目需要从头再来,增加了软件的周期成本。

3、通过很多的强制完成日期和里程碑,来跟踪各个项目阶段,容易使软件项目质量收到影响。


②增量模型

  • 增量:满足用户需求的一个子集,能够完成一定功能、小而可用的软件。

通过对用户的需求,建立一个满足用户核心功能的产品,并投入使用,在使用的过程中,用户

根据实际需求,提出新的需求(增量)

。开发人员再将新的需求逐步增加到现有的系统中。

  • 增量模型结合了

    原型模型的基本要素和迭代的特征

    ,采用了

    基于时间的线性序列

    ,每个线性序列都会输出该软件的一个“增量”
  • 每个增量的开发可用瀑布或快速原型模型

优点:

1、用户可以很快的体验到软件产品,并且投入使用创造价值。

2、可以针对实际的使用情况增加新的比较明确的需求,也减少了用户学习使用的时间

3、减少软件项目的开发风险。

缺点:

1、每个增量必须提供一些系统功能,这使得开发者很难根据客户需求给出大小适合的增量

2、软件必须具备开放式体系结构(困难)

3、 易退化成边做边改的方式,使软件过程控制失去整体性



3、 快速原型模型:


原型:一个部分开发的产品,使客户和开发人员能够对计划开发系统的相关方面进行检查


原型化的目的:

  • 明确并完善需求,如演示原型
  • 研究技术选择方案,如技术验证原型

1、根据用户的需求快速建立一个原型系统,该原型能够满足用户的部分需求,用户根据原型,提出新的需求或者原需求的修改,一旦需求建立,原型系统将被丢弃。

优点:

1、通过快速 原型的建立,让用户试用,使用户的需求更加明确,降低了用户需求确定的难度。

2、通过原型,可以很快的让用户体验到产品的功能,并激发用户产生新的需求。


减少需求不明带来的风险

缺点:

1、注重需求的确定和功能的实现,而容易忽略产品的质量

2、一旦用户对原需求发生较大改变,需要产生新的模型

3、要求技术人员在短时间内制造原型模型,技术要求比较高


适用于目标客户不懂计算机


4 螺旋模型

把开发活动和风险管理结合起来控制风险

1、是快速原型模型和瀑布模型的结合,并且加入了风险分析;

在这里插入图片描述

适用于需求不明确或者需求可能发生变化的大型复杂的软件系统。

支持面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。


喷泉模型

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述



基于构件的开发模型

考虑的焦点是集成,而非实现


构件/组件(Component)

  • 系统中模块化的、可更换的部分
  • 实现特定的功能
  • 对实现进行封装,暴露一组接口

    在这里插入图片描述


统一过程模型

基于面向对象方法学

• 使用统一建模语言UML(Unified Modeling Language)


敏捷开发

在这里插入图片描述

在这里插入图片描述


选择过程模型


在这里插入图片描述



项目管理

项目管理四要素:人员、产品、项目、过程(概念)

软件度量有哪些方法


软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对人员(People)、产品(Product)、过程(Process)和项目(Project)进行分析和管理的活动。


软件项目管理的4P要素

人员、产品、项目、过程

在这里插入图片描述

在这里插入图片描述


过程(Process)


根据项目特征选择合适的过程模型


根据过程模型进行项目分解


项目(Project)

在这里插入图片描述




软件度量概念及面向规模的度量

软件项目管理的成熟化也需要度量与数字化,目的是持续改进软件过程,并用于项目估算、质量控制、生产率评估等。


软件项目度量的内容

▪ 生产率度量

▪ 质量度量


行业及组织的历史数据是软件项目度量的基础




软件项目度量的方法





面向规模的度量



通过对质量和(或)生产率的测量进行规范化而得到的,这些测


量是根据开发过的软件的规模得到的。



千行代码( KLOC )

: 这些代码指的是源代码,通过源代码的

行数来直观度量一个软件程序有多大规模



生产率(PM)

:PM = L / E, L表示代码总量(单位:KLOC),E

表示软件工作量(单位:人月)



每千行代码的平均成本( CKL )

:CKL = S / L,S为软件项目总

开销 , L表示代码总量(单位:KLOC)



代码出错率(EQRl)

:EQRl = Ne / L,Ne表示代码出错的行数,

L表示代码总量(单位:KLOC)



文档与代码比(Dl)

:Dl = Pd / L,Pd表示文档页数, L表示代

码总量(单位:KLOC)

在这里插入图片描述



优点

▪ 简单易行,自然直观



缺点

▪ 依赖于程序设计语言的表达能力和功能

▪ 软件开发初期很难估算出最终软件的代码行数

▪ 对精巧的软件项目不合适




▪ 面向功能点的度量

▪ 用软件的功能表示软件的规模

▪ 应用最广泛的是功能点(Function Point, FP)法

▪ 项目开发初期就可估算出

▪ 功能点计算目前主要基于经验公式

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

▪ 优点

▪ 与程序设计语言无关,

在开发前就可以估算出软件项目的规模

▪ 不足



没有直接涉及算法的复杂度,不适合算法比较复杂的软件系统;

▪ 功能点计算主要靠

经验公式,主观因素比较多





面向对象的度量





面向用例的度量



软件项目估算


概念

项目启动之前,软件团队应该估算将要做的工作、所需要的资源、成

本、从开始到完成的时间,也即是对这些内容进行预测


策略

项目度量方法为项目估算提供了依据与有效输入

尽量把估算推迟到项目的后期进行

根据已经完成的项目进行估算

在这里插入图片描述




基于经验的软件估算


COCOMO经验估算模型——概述




项目进度计划

定义:对项目进行任务划分,定义任务之间的依赖关系,并进行时间

估算和资源分配,确保以最佳的时间与成本输出满足质量要求的产品

在这里插入图片描述




关键路径

关键路径(critical path) :

在任务网络图中,从项目开始到项目完成有许多条路径,

路径上所有


弧权重之和最大的路径(路径最长)叫关键路径。

非关键路径(noncritical path):

在整个任务网络图中非最长的路径都叫非关键路径。

在这里插入图片描述



版权声明:本文为Trae1ounG原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。