前言

时不可以苟遇,道不可以虚行。


一、软件工程的概念

  • 软件是计算机系统运行的 指令数据相关文档 的集合,即软件等于程序、数据、加上文档。
  • 程序:是事先按照预定功能性能等要求设计和编写的指令序列;
  • 数据:是使程序正常处理信息的数据结构及信息表示;
  • 文档:是与程序开发、维护和使用有关的技术数据和图文资料。

  • 软件危机:是指在计算机软件开发、运行、维护和管理的过程中所遇到的一系列严重问题。

在软件开发和维护过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发和维护的方法不正确有关。


软件工程的定义

  • 采用工程的概念、原理、技术和方法,在计划、开发、运行、维护和管理软件的过程中,将科学的管理和最佳的技术方法紧密结合,并采用适当工具,以比较经济的手段获得满足用户需求的可靠软件的一系列方法。

软件工程的特点:

  • 软件工程是在软件开发中采用工程化的原理和方法,采用一系列科学的、现代化的方法技术来开发软件,这种工程化的思想贯穿软件开发和维护的全过程。

目标是: 实现软件研发与维护的优质高效与自动化。


软件生存周期的概念(软件策划、软件开发和运行维护)

  • 软件生存周期是指从开始研发软件到软件停止使用的整个过程,即软件产品从用户提出开发需求开始,经过开发、使用和维护,直到最后淘汰的整个周期,因此也称为软件生命周期或软件生存周期,是软件工程的一个重要概念。

软件生存周期几个概念:

  1. 软件策划
  2. 需求分析
  3. 概要设计
  4. 详细设计
  5. 编写程序
  6. 测试
  7. 运行和维护

瀑布模型

  • 瀑布模型将生存期的计划时期、开发时期和运行时期又细分为若干个阶段。

二、可行性分析

  • 可行性研究的目的是用最小的代价在尽可能短的时间内确定问题是否能够解决。

  • 必须记住,可行性研究的目的不是解决问题,而是确定问题是否值得去解决。

可行性分析也称为可行性研究,其目的是围绕影响软件项目研发的各种因素的可行性进行全面、系统的分析论证,是以尽可能小的成本在较短时间内和特定条件下确定软件项目是否值得研发、是否可行。

三个方面的可行性:

  • 技术可行性;
  • 经济可行性;
  • 操作可行性。

三、需求分析

  • 需求分析也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。

需求分析是软件项目决定开发后的首要工作,在软件的整个研发过程中最关键,也是软件工程的一个重要环节。


数据流图(DFD:Data Flow Diagram)

  • 描述符号主要有四种:外部实体、数据流、加工、数据存储文件。

模块化

  • 模块是构成程序的基本构件,一般软件都由其模块和子模块构成。
  • 模块设计时兼顾内聚性和耦合性并保持模块相对的功能独立性。

  • 内聚: 标志一个模块内各个元素彼此结合的紧密程度,是信息隐蔽和局部化概念的自然扩展。

设计时,应该力求做到功能高内聚。


功能内聚:如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。


功能内聚是最高程度的内聚。

  • 耦合: 耦合是对软件结构内不同模块之间互连程度的度量,是影响软件复杂程度的一个重要因素。

控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一个模块的功能。

  • 对模块的设计应最大程度地追求:高内聚、低耦合。

描述软件结构的工具

  • 层次图
  • HIPO 图:“层次 - 输入 - 处理 - 输出”

概念数据模型设计

  • E-R 图;
  • 实体 - 联系模型采用简单的 E - R 图表达对现实的理解。
  • 优点: 图形元素少,接近人的思维方式、不用考虑存储结构、存取方式和具体的数据库软件,易分析、易设计等。不熟悉计算机技术的用户也能理解并使用,适合作为数据建模起始工具。
  1. 矩形:表示实体集
  2. 椭圆:表示属性
  3. 用带有下划线的主键或码名的椭圆:表示主键
  4. 菱形:表示联系,联系类型用菱形与实体间的连线表示,外键用带有下划虚线的外键名的椭圆表示,多值属性用双线椭圆表示,派生属性用虚椭圆表示。

实体关系图的设计步骤是:先确定实体类型、实体属性和联系类型,然后画出 E-R 图。


四、软件详细设计

1、详细设计的任务

  1. 模块的算法设计
  2. 模块内的数据结构设计
  3. 模块接口实现设计
  4. 模块测试用例设计
  5. 编写详细设计说明书
  6. 详细设计评审

2、详细设计的描述工具

图形工具:

  1. 程序流程图
  2. 盒图(N - S)
  3. 问题分析图(PAD:Problem Analysis Diagram)

环形复杂度

  • 用 McCabe 方法度量得出的结果称为程序的环形复杂度。



五、软件实现

程序语言的发展

  1. 第一代语言:是与机器硬件密切相关的机器语言和汇编语言。
  2. 第二代语言:主要应用于各种计算,包括 FORTRAN、COBOL、PascalBASIC 等。
  3. 第三代语言:直接支持结构化构件,并且具有很强的过程能力和数据结构能力,包括结构化语言和面向对象语言,如结构化程序语言有 C 等,面向对象的语言有 C++/Java/Delphi 等,大致分为:通用高级语言、面向对象的语言和专用语言。
  4. 第四代语言:属于超高级程序设计语言,特征:强大的数据管理能力、可对数据库进行有效的存取、查询和其他相关操作……

程序注释

  • 程序注释分为:序言性注释和功能性注释。
  1. 序言性注释通常置于各种程序模块的开始部分;
  2. 功能性注释嵌在源程序体内,常放在具体语句之后,用于描述语句或程序段所要做的工作。

六、软件测试

  • 软件测试的定义:在规定的条件下对软件进行操作以发现软件错误,衡量软件质量并对其是否能满足设计要求进行评估的过程;同时也是利用特定的技术和方法,运行评价和验证软件满足需求或识别运行结果的过程,并且是检测软件的正确性、完整性、安全性和软件品质的手段和过程。

  • 注:软件测试的目的是发现软件中的错误。


软件测试用例设计

  • 白盒测试在测试早期执行,黑盒测试主要用于测试的后期。

1、黑盒测试

  • 目的是:检查程序各个功能是否能够实现,并检查其中的功能错误,则这种测试方法称为 黑盒测试方法。 黑盒测试也称为功能测试或黑箱测试。
  • “黑盒” 则指测试人员只知道被测软件的界面和接口外部情况,不必考虑程序内部的逻辑结构和内部特性,只根据程序的需求分析规格说明来检查其功能是否符合规定的需求。

2、白盒测试

  • 若测试规划基于产品的内部结构进行测试,检查内部操作是否按规定执行,软件各个部分功能是否得到充分使用,则这种测试方法称为白盒测试方法。
  • 白盒测试主要是对程序内部结构执行路径的测试,有时称为 玻璃盒测试

七、软件维护

  • 软件维护就是在软件已经交付使用之后,为了改正错误或者满足新的需要而管理修改软件的过程。

软件维护类型的四种类型:

  1. 完善性维护
  2. 适应性维护
  3. 改正性维护
  4. 预防性维护

八、甘特图

  • 甘特图又称横道图,该图是活动进度与日历表对照图。用水平线段来表示活动的工作阶段;其中 线段的长度表示完成任务所需要的时间起点和终点分别表示任务的开始和结束时间。
  • 在甘特图中,任务的完成标准是交付相应文档和通过评审。
  • 甘特图清楚地表明了项目的计划进度,并能动态反映当前开发进展状况,其不足之处在于不能表达出任务之间复杂的逻辑关系。

【软件工程期末复习内容】相关推荐

  1. 山东大学软件工程期末复习知识点总结

    山大软院软件工程期末复习知识点总结,根据任课老师所给提纲及课件等资料进行整理. 考试范围全覆盖. 文档电子版下载地址 目录 第一章 1.1软件工程(SE)的定义.目的.方法.作用: //1.2开发模式 ...

  2. 四川大学计算机学院软件工程期末,四川大学软件工程期末复习ppt

    PPT内容 这是一个关于四川大学软件工程期末复习ppt,主要介绍Multiple choices (only one is correct) 20*1'.Fillment 25 (8Item).Exp ...

  3. 软件工程期末复习总结

    软件工程期末复习 1.什么是软件危机,为什么会出现软件危机? 2.什么是软件工程? 软件工程是建立和使用一套合理的工程原则,以便经济地获得可靠的.可以在实际机器上高效运行的软件. 软件工程是(1)将系 ...

  4. 四川大学计算机学院软件工程期末,2015四川大学软件工程期末复习.doc

    2015四川大学软件工程期末复习 Multiple choices The rapid application development model is Answer:c Another name f ...

  5. 软件工程期末复习例题 2021

    软件工程期末复习 填空题: 测量是对产品或过程的某个属性的范围. 数量. 维度等提供的定量表示,如某个程序模块所含代码函数.而测度是测量的一个行为,把数字或符号分配给现实世界实体的属性的过程 软件项目 ...

  6. TUT 2020年软件工程期末复习提纲

    软件工程期末复习提月工 目录概览 第一章 软件工程的基础知识 1.软件危机 定义:软件危机是指再计算机软件的开发和维护过程中所遇到的一系列严重问题. 软件危机包含下述两方面的问题: 如何开发软件,以满 ...

  7. 软件工程期末复习汇总(非常详细)

    期末复习 文章目录 期末复习 第1章 概论 软件过程模型 瀑布模型 演化模型 增量模型 原型模型 螺旋模型 喷泉模型 基于构件的开发模型 形式方法模型 第2章 系统工程 可行性分析 经济可行性 技术可 ...

  8. 软件工程期末复习提纲、主要内容

    第一章 软件工程的范畴 软件工程 软件工程是一门学科 目的是生产出没有错误的软件 以工程学的思维去进行软件设计.软件开发.软件软件运维的一种方法论,按时并且在预算范围内交付,满足用户的需求. 软件危机 ...

  9. 软件工程期末复习【速成】

    软件工程复习纲要 第一章 1.软件的定义 软件是程序以及开发.使用和维护程序所需的所有文档 是指能够完成预定功能和性能的可执行的程序,包括使程序正常执行所需要的数据和有关描述程序操作和使用的文档. 2 ...

最新文章

  1. 数据的统计特征量有哪些
  2. java中怎么剪切文件_java中实现文件复制、剪切和删除
  3. IBM公布Kitura 1.0和Bluemix Runtime for Swift 3
  4. Huffman树进行编码和译码
  5. pd17虚拟机 mac 无限使用
  6. PostgreSQL的 create index concurrently
  7. 一篇文章教你如何使用makerfile
  8. Python Flask Web 第一课 —— 基本概念和程序的基本结构
  9. YAF redis
  10. Polybase要求安装orcale jre 7更新 51或更高版本如何解决
  11. wap2app轮播guide.html,wap2app引导页的简单制作
  12. MySQL卸载与安装
  13. 厉害了,竟有程序员在GitHub上建了一个新华词典数据库
  14. java中实现注册时Email邮件激活验证
  15. LIO-SAM: 论文翻译
  16. JavaScript面试问题:事件委托和this
  17. 清除目录下的SVN信息
  18. 佛系计算机二级 第六弹
  19. 计算机网络常见面试题整理
  20. python打印菱形,n可随意定义

热门文章

  1. 在OpenCV里Shi-Tomasi角检测
  2. 600个程序员常用的单词和词汇
  3. 北京信息科技大学计算机学院调剂,2021年北京信息科技大学硕士研究生调剂信息...
  4. CANopen概念总结、心得体会
  5. Microsoft Visual C++ 2015 Redistributable无msi卸载方法
  6. 100%成功率的顶象面积验证码识别方案
  7. Android 动画之Gif动画的用法(适用于Android9.0以上和以下)
  8. Kotlin + Spring Boot: 下一代企业级开发
  9. 抖音支付前端自动化监控
  10. 密码学基础概念(二)