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

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

再特别提醒!!!考试中的题目来自老师上课讲的,并无出入。如果考试内容不符 ,哥们也不知道说啥了。
在这里插入图片描述
在这里插入图片描述

写在前面:完整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):

在整个任务网络图中非最长的路径都叫非关键路径。
在这里插入图片描述

  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
序   前言   第1篇面向过程的软件工程   第1章软件危机、 软件工程   11软件工程的发展史   111程序设计时代   112程序系统时代   113软件工程时代   12软件危机主要表现形式   13产生软件危机的原因及解决途径   131产生软件危机的原因   132解决软件危机的途径   14软件和软件工程   141软件   142软件工程   15软件质量   16软件的生存周期及开发模型   161软件生存周期   162软件开发模型   17习题   第2章可行性研究   21可行性研究的目的与任务   22可行性研究的步骤   23系统流程图   231系统流程图的符号   232系统流程图示例   24成本-效益分析   241货币的时间价值   242投资回收期   243纯收入   25可行性研究报告的主要内容   26习题   第3章软件需求分析   31需求分析的任务和步骤   311需求分析的任务   312需求分析的步骤   32需求获取的常用方法   321常规的需求获取方法   322快速建立软件原型来获取需求   33需求分析的方法   331功能分解方法   332结构化分析方法   333信息建模方法   334面向对象的分析   34结构化分析方法   341自顶向下逐层分解的分析策略   342结构化分析描述工具   343数据流图   344数据字典   345加工逻辑的描述   35需求分析图形工具   351层次方框图   352Warnier图   353IPO图   36SA 方法的应用   37习题   第4章软件总体设计   41软件总体设计的目标和任务   42软件设计的概念和原理   421模块和模块化   422抽象   423信息隐蔽和局部化   424模块独立性及其度量   43软件结构设计准则   44软件结构设计的图形工具   441软件结构图   442层次图   443HIPO图   45结构化设计方法   451数据流图的类型   452结构化设计方法的步骤   453变换型分析设计   454事务型分析设计   46习题   第5章软件详细设计   51详细设计的目的与任务   52结构化程序设计   53详细设计工具   531程序流程图   532NS图   533PAD图   534过程设计语言   54习题   第6章软件编码   61程序设计语言的分类   611基础语言   612结构化语言   613面向对象的语言   62程序设计语言的选择   63程序设计风格   631程序内部文档   632数据说明   633语句构造   634输入/输出   635效率   64习题   第7章软件测试   71软件测试的目标   72软件测试的原则   73软件测试方法   731静态测试与动态测试   732黑盒测试法与白盒测试法   74软件测试用例的设计   741白盒技术   742黑盒技术   75软件测试过程   751单元测试   752集成测试   753确认测试   754系统测试   76调试   761调试的目的   762调试技术   77习题   第8章软件维护   81软件维护的分类   82软件维护的特点   821结构化维护与非结构化维护   822维护的代价   823软件维护中存在的问题   83软件可维护性   831软件可维护性的定义   832软件可维护性的度量   833提高软件可维护性的方法   84维护的副作用   85软件再工程   851软件再工程与逆向工程的概念   852实施软件再工程的原因   853软件再工程技术   86习题   第2篇UML与面向对象的软件工程   第9章UML简介   91UML概述   911UML的组成   912UML的特点和用途   913UML的模型视图简介   92UML软件开发工具简介   921Rational Rose   922Visio简介   93习题   第10章面向对象的概念   101面向对象的方法学   1011面向对象建模   1012面向对象的方法与传统软件方法的比较   102对象与类及其UML表示   1021对象   1022类与实例   1023对象属性与操作   1024对象类的关联   103聚集、 组合、 继承和多态   1031聚集与组合   1032抽象与继承   1033多态   104习题   第11章对象设计模式   111对象设计模式概念   1111历史景   1112对象设计模式   1113设计模式的分类   112几种典型的对象设计模式及应用   1121行为型模式中的职责键模式及应用   1122结构型模式中的外观模式及应用   1123创建型模式中的抽象工厂模式及应用   113对象类的高级概念   1131抽象类、 参数对象类、型与实现对象类   1132接口   1133版型   114组件、 包和结点   1141组件   1142包和包图   1143结点   115习题   第12章面向对象的软件开发过程   121RUP概述   1211RUP的历史   1212RUP的特色   122RUP软件开发生命周期和建模   1221RUP软件开发的生命周期   1222RUP的动态结构   1223RUP的静态结构   1224RUP的建模   123面向对象软件开发过程的案例分析   1231系统需求   1232系统的静态结构模型   1233顺序图和协作图   1234状态图和活动图   1235组件图和部署图   124习题   第13章软件开发工具Rose   131Rose的用例图与类图   1311用例图   1312类图   132Rose的交互图与状态机图   1321交互图   1322状态机图   133包、 组件图与部署图   1331包   1332组件图   1333部署图   134Rose的代码生成和逆向工程   1341代码生成   1342逆向工程   135Rose应用举例   136习题   第14章Rose及其应用   141Rose的主要功能   142Rose的使用   1421Rose主菜单窗口   1422模型与工作方式的组织   143教学管理系统的分析与设计   1431系统需求分析   1432系统问题领域分析   1433静态结构模型的建立   1434动态行为模型的建立   1435物理模型的建立   144UML类图与VB代码的转换   1441VB代码生成属性   1442Rose模型—VB代码的生成   1443VB代码的逆向工程   145UML类图与Java代码的转换   1451UML类图—Java代码的生成   1452Java代码的逆向工程   146习题   第15章面向对象的软件体系结构   151软件体系结构概述   152流程处理与客户机/服务器体系结构   1521流程处理   1522客户机/服务器体系结构   153三层和多层体系结构   1531三层体系结构   1532浏览器/服务器体系结构风格   1533多层体系结构   1534团聚与串行   154公共对象请求代理体系结构   155基于层次消息总线的体系结构风格   156异构结构风格   157习题   第16章软件工程新技术   161软件复用技术   1611软件复用概念及分类   1612软件复用的关键技术和复用粒度   162中间件技术   1621中间件概念及特点   1622中间件的分类   163组件技术   1631组件与组件化   1632组件模型及描述语言   1633组件的检索与组装   164计算机辅助软件工程技术   1641CASE的基本概念   1642CASE工具与集成CASE环境   165软件产品线技术   1651软件产品线基本概念   1652软件产品线方法   1653北大青鸟工程   166软件过程与标准化   1661软件过程及其改进   1662ISO 9000标准   1663软件能力成熟度模型   167习题   第3篇软件工程实验   第17章软件工程实验大纲   171面向过程的软件工程实验   1711实验1图书馆图书管理系统的可行性分析   1712实验2图书馆图书管理系统的项目开发计划   1713实验3图书馆图书管理系统的需求分析   1714实验4图书馆图书管理系统的总体设计   1715实验5图书馆图书管理系统的详细设计及编码实现   1716实验6图书馆图书管理系统的系统测试   1717实验7图书馆图书管理系统用户手册的撰写   1718实验8图书馆图书管理系统项目开发总结报告的撰写   172面向对象的软件工程实验   1721实验1浏览器系统的可行性分析   1722实验2浏览器系统的项目开发计划   1723实验3浏览器系统的需求分析   1724实验4浏览器系统的体系结构设计   1725实验5采用面向对象方法进行浏览器系统的详细设计   1726实验6利用Rational Rose正向工程功能完成编码的实验   1727实验7利用Rational Rose逆向工程完成修改设计的实验   1728实验8浏览器系统的测试   1729实验9浏览器系统用户手册的撰写   17210实验10浏览器系统项目开发总结报告的撰写   附录   附录AUML图总结   附录BUML中定义的常用版型、 约束和标记   附录CGOF给出的软件设计模式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值