软件的定义:
计算机软件是计算机系统中与硬件相互依存的另一部分,软件包括程序、数据及相关文档的完整集合。
软件的分类:
系统软件:windows7/10/linux/IOS/android/数据库管理系统
工具软件:C语言/汇编语言/Java/c++
应用软件:教务管理系统,收费系统/浏览器/QQ游戏/office/WPS
注:数据库管理系统是由数据库开发出来的系统软件
软件危机:
所谓软件危机:是计算机软件开发和维护过程中遇到一系列严重的问题(经费太贵,没有市场等)
软件危机具体的表现:
1、软件需求的增长得不到满足(用户对系统不满意)
2、软件开发成本和进度无法控制
3、软件质量难以保证
4、软件不可维护或维护程度低
5、软件的成本不断提高
6、软件开发发生产率赶不上硬件的发展和应用需求
总结:将软件危机可以归结为成本、质量、生产率等问题。
软件工程的概念:
为了消除软件危机,软件工程是解决问题的途径,软件工程:用工程、科学和数学的原理与方法研制,维护计算机软件的有关技术及管理方法。(我想开发一款软件,该怎么去做)
软件工程三要素:
1、方法:方法是完成软件工程的技术手段
2、工具:工具是支持软件的开发、管理、文档生成
3、过程:过程是支持软件开发的各个环节的控制、管理等
软件的生命周期:
通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件声明周期可划分三个阶段:定义阶段、开发阶段、维护阶段
对于发明一个软件,我如果要投资这个软件,首先是进行可行性研究,预算这个能否带来利润,在进行需求分析,了解有没有这个软件的市场。以便达到利润的预算,在开发阶段,我需要总体设计,来实现我软件最主要的功能,接着详细设计,来实现一些细节的功能,然后我就用代码去实现,但是实践还是有很多偏差,在用户使用的过程中会发现错误,从而设计者去改正错误。
需求分析与需求分析方法:
需求分析就是用户对目标软件在功能、行为、性能、设计等方面的期望及要求
需求分析的工作:
1、需求获取
2、需求分析
3、撰写需求规格说明书
软件需求规格说明书是描述需求中的重要文档,是软件需求分析的主要成果。
作用:
1、便于用户、开发人员进行理解和交流
2、反映用户的问题结构
3、作为确认测试和验收的依据
4、为成本估算提供基础
5、软件不断改进
4、需求评审
对于软件的开发,以及为什么要开发这个软件,是从用户方获取需求,然后通过用户的这个需求进行分析,专项需求规格说明书,通过评审,才可以进行投资开发。
结构化分析的常用工具(需求分析时常用的工具)
1、数据流图(DFD)
2、数据字典
3、判断树
4、判定表
经过了需求分析后,软件系统确定了要做声明软件,进入软件设计,因此就要解决如果去做这个软件:结构化设计的方法。
软件设计基础:
软件设计是软件工程重要阶段,是把一个软件需求转换为软件的表述工程。
软件设计的基本原理:
1、抽象
2、初步求精和模块化
3、信息隐蔽和局部化
4、模块独立性
模块独立程度的标准度量:模块间的耦合性和模块内的内聚性
耦合性:模块与模块之间相互连接的紧密程度
内聚性:模块内部各个元素彼此结合的紧密程度
第二阶段:
总体设计(概要设计)的任务:
1、设计软件系统结构
2、数据结构及数据设计
3、编写概要设计文档
4、概要设计文档评审
详细设计:
详细设计的任务:为软件结构体中的每一个模块确定实现算法和局部数据结构,用某种选定表达工具表示算法和数据结构的细节。
详细设计的工具:
1、图形工具:程度流程图、N-S图、PAD图、HIPO图
2、表格工具:判定表
3、语言工具:PDL(伪码)
软件测试的目的:是为了发现错误而执行的过程
软件测试的放大与技术综述:
按照功能划分:
1、白盒测试:
a、逻辑覆盖
b、基本路劲测试
2、黑盒测试:
a、等价类划分法
b、边界值分析法
c、错误推测法
d、因果法
总结:只要带覆盖、路径两字的都是白盒,其他都是黑盒。
软件测试过程的四个步骤:
1、单元测试:依据详细设计说明书和源程序
2、集成测试:依据概要设计说明书
3、验收测试(确认测试)
4、系统测试
程序的调试:
是诊断和改正程序中的错误。(Debug)