3.计算机软件开发[补充知识]

考点分析:

  1. 本章只考上午题,考试一般2-3分;
  2. 最常考点:关键路径法、软件工程基础

1、软件工程与开发模型

1.1软件工程基础

软件危机:人随着软件复杂度提升,开发成本、软件质量、生产效率等问题。

软件工程:为了消除软件危机,以工程学思路进行软件开发,即软件工程。

软件工程三个要素

  • 方法:完成软件工程项目的技术手段
  • 工具:支持软件的开发、管理、文档生成。
  • 过程:支持软件开发的各个环节控制、管理。

1.2 软件生命周期

软件生命周期:软件产品从考虑其概念到产品交付使用,直至最终退役为止的整个过程:

  1. 计划阶段:确定待开发系统的总体目标和范围,可行性研究和预算、进度估算
  2. 分析阶段:分析、整理和提炼用户需求,编写需求规格说明书和初步用户手册
  3. 设计阶段:根据需求规格说明书,确定软件体系结构,确定每个模块的实现算法数据结构和接口,编写设计说明书,并组织评审。
  4. 实现阶段:将设计的各个模块编写成计算机可接受的程序代码和相关文档
  5. 测试阶段:测试各个功能模块,然后将各个模块集成起来,进行功能需求测试
  6. 运行维护阶段:后期运维,增删改

1.3 软件开发模型(重点)

1、瀑布模型(重点)

3.计算机软件开发[补充知识]_第1张图片

  • 将软件生命周期分为:制定计划、需求分析、软件设计、程序编写、软件测试和运行维护6个阶段,并规定他们是自上而下、相互衔接固定次序
  • 优点:可以规范过程,有利于评审
  • 缺点:过于理想,缺乏灵活性,容易产生需求偏差。
  • 适用性:用户需求明确、软件开发单位有充足经验和案例的项目

2、快原型模型抛弃原型法)

  • 第一步是建造一个快速原型,让用户评价,之后抛弃原型,确定需求转入正式开发。

  • 可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险

3、演化模型(演化原型法)

  • 与快速原型模型不同的是,该模型快速开发一个原型,逐步演化成最终软件

4、增量模型

  • 软件被作为一系列的增量构件来设计、实现、集成和测试

  • 整个产品被分解成若干构件,开发人员可以逐个开发交付,客户可以不断看到开发的软件,从而降低开发风险,有利于快速开发软件

5、螺旋模型

综合了瀑布模型和演化模型的优点,还增加了风险分析,特别适合大型复杂系统

3.计算机软件开发[补充知识]_第2张图片

2、软件工程与开发模型

2.1软件开发方法

1、结构化软件开发方法SASD:也称为面向功能的软件开发方法或面向数据流的软件开发方法,与瀑布模型结合度很高。

数据流图(Data Flow Diagram,DFD)用来描述数据流从输入到输出的变换流程

2、面向数据结构的软件开发方法:从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节。

3、面向对象的软件开发方法:一种自底向上和自顶向下结合的方法,并且以对象建模为基础。

4、基于构件化的开发方法: 用预先建立的构件和模版,像搭积木一样

2.2软件设计的基本原理

模块化:将软件分解成若干个小的简单的部分-模块,每个模块可独立开发、测试最后组装成完整的程序。

抽象化:抽象出事物本质,共同特性而不考虑它的细节

信息隐藏:每个模块尽可能少显露内部的处理

模块独立:每个模块完成一个独立的特定子功能,并且与其模块的联系简单

衡量标准有两个:模块间的耦合和模块的内聚度,模块独立性强:高内聚低耦合

2.3面向对象分析和设计

1、对象:一组属性以及这组属性上的专用操作封装体,通常由对象名、属性和操作三个部分组成。

2、类:一组具有相同属性和相同操作的对象集合。 人类

3、继承:子类可以继承父类的属性,也可以定义和被继承相同方法名称的方法构成方法的重载或覆盖

4、消息:对象间的通信手段。

5、多态:同一个操作作用于不同对象有不同的解释,产生不同的执行效果。

2.4程序设计语言

标记语言:一种将文本以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。常用于格式化和链接,如HTML、XML。

脚本语言:又称为动态语言,是一种编程语言,用来控制软件应用程序,只在调用时进行解释,可以定义函数和变量,与编程语言的区别时候编程语言的语法和规则更严格和复杂,典型的脚步语言: JavaScript、VBScript、PHP。

编译型语言:程序在执行之前需要一个专门的编译过程,把程序编译成机器语言,比如exe文件。运行时不需要重新翻译,直接使用编译结果就行。程序执行效率高,依赖编译器,如: C、C++、Java。

2.5 软件测试

根据测试目的和阶段不同,分为:单元测试、集成测试、系统测试、验收测试。

3.计算机软件开发[补充知识]_第3张图片

软件测试方法:

  • α测试:在用户组织模拟软件系统的运行环境下测试, 由用户或第三方测试公司进行测试,模拟各类用户行为,试图发现并修改错误。 (内测)
  • β测试:用户公司组织各方面的典型终端用户在日常工作中实际使用beta版本,并要求用户报告异常情况,提出修改意见。 (公测,内部试运行)
  • 黑盒测试:也称功能测试,通过检测每个功能是否正常。主要针对软件界面和软件功能性测试
  • 白盒测试:检查代码或逻辑结构是否合理

3、项目管理与关键路径

3.1 项目管理基础

项目管理的核心是在成本、质量和进度的平衡。

项目管理有两种方法:甘特图(Gantt)和计划评审图片(PERT)

1、甘特图

3.计算机软件开发[补充知识]_第4张图片

  • 甘特图优点:清晰描述每个任务何时开始,到何时结束,及各个任务的并行性。
  • 甘特图缺点:不能清晰反应各个任务之间的依赖关系,难以确定整个项目的关键所在。

2、计划评审技术图(PERT)

不仅给出了每个任务的开始时间、结束时间和完成该任务所需的时间,还给出了任务之间的关系,但PERT不能反应任务间的并行关系

3.计算机软件开发[补充知识]_第5张图片

3.2 关键路径

关键路径法(Critical Path Method,CPM)

一个项目中,只有项目网络最长的或耗时最多的活动完成之后,项目才能结束,这条最长的活动路径叫做关键路径

关键路径上的活动不能松弛。

某条活动松弛时间=关键路径所用的时间-经过该活动的路径的最长时间

4、章节总结

软件工程:

  • 模型、模块化、开发方法
  • 测试方法:α测试、β测试、黑盒测试、白盒测试。

项目管理:甘特图、PERT优缺点、关键路径法

做题:

  1. 数据流图(DFD)对系统的功能和功能之间的数据流进行建模,其中顶层数据流图描述了系统的输入和输出。
  2. 软件设计阶段划分模块的原则是,一个模块的作用范围应在控制范围之内。
  3. 在结构化分析中,用数据流图描述数据在系统如何被传送或变换,以及如何对数据流进行变换的功能或子功能,用于对功能建模。当采用数据流对一个图书馆管理系统进行分析时,读者是一个外部实体。
  4. 确定软件模块划分及模块之间的调用关系是概要建设阶段的任务。
  5. 软件设计时需要遵循抽象、模块化、信息隐蔽和模块独立原则。在划分软件系统模块时,应尽量做到高内聚低耦合。

你可能感兴趣的:(软考网络工程师(中级),笔记)