1:什么是软件: 是计算机系统中与硬件相互依存的另一部分,包括(1)程序 (2)数据 (3)相关文档的完整集合
2:什么是程序:是实现设计的功能和性能要求执行的指令序列
3:数据是使程序正常操纵信息的数据结构
4:文档和程序开发,维护和使用有关图文的材料,我个人理解也可以是程序开发的一个规范性指导,更加的规范去开发软件
为什么要学习软件工程:
在此之前我们对代码的学习都是杂乱没有章法,我们靠着自己的方法去学习编程,去做项目,这样既不规范,又不专业,这样做出来的东西像是没有地基,歪歪扭扭的房屋,所以,我们要学习软件工程,要学会规范的去学习代码,规范的去学习代码,前面的视频和后边的文档都是让我们学习规范的开始。
软件特点:
(1)种逻辑实体一,不是物理实体,有抽象性
(2)没有明显的制造过程,开发软件就是软件的产生过程
(3)软件没有老化和机器磨损
(4)软件发展依赖于硬件,受于硬件的限制
(5) 没有自动化和半自动化,未脱离人工
(6)成本昂贵 软件成本逐年上升,硬件则相反
分类:
1:按照功能
- 操作系统
- 数据库管理系统
- 设备驱动程序
- 通信处理程序
2:按照软件工作方式划分
- 实时处理软件
- 分时软件
- 交互是软件
- 批处理软件
3:按照服务对象的范围划分
- 项目软件:由客户的委托,一个或者多个软件开发机构,在合同约束下开发的软件 以客户需要为主 某些领域的需要,不以盈利为目的
- 产品软件:面相市场,软件开发机构开发,推向市场,为众多客户服务
4 :按照频率使用划分
- 一次使用
- 频繁使用:形成一个项目,无时无刻在使用
5:按照失效的影响进行划分
- 高可靠性能的软件:比如航天,军事领域,比较重要的国家部门
- 一般可靠软件
软件工程三要素
(1)方法:为软件开发提供了“如何去做”软件的技术
(2)工具:是为方法提供自动或半自动的软件支撑环境,工具的集合构成了软件开发的环境,好的工具可以促进方法的研制,好的方法能够改进工具 (可以理解成一个相互的过程)
(3)过程:
* 方法使用的顺序
* 要求交付的文档资料
* 为了保证质量和适应变化所需的管理
* 软件开发各个阶段完成的里程碑
软件工程的基本目标
- 低成本(用最小的代价换来最高的利益
- 达到要求功能
- 取得好的软件性能
- 开发软件易于移植
- 需要较低的维护费用
- 能够按时完成开发工作,及时的交付
软件工程的 原则:
- 分解 (把问题分解成子问题,降低问题的复杂性)
- 独立性 (模块的独立性,改变一个模块而不会影响其他模块)
- 一致性 (如:接口必须一致性)
- 确定性(每个模块都要有明确的标准)
软件工程过程:
- 软件规格说明:规定软件的功能及其运行的现实
- 软件开发:产生满足规格说明的软件
- 软件确认:确认软件能够完成客户提出的要求
特点:
(1)易理解性
(2)可见性
(3)可支持性
(4)可接受性
(5)可靠性
(6)健壮性 (也是安全性,抗病毒的能力)
(7)可维护性
(7)速度
软件生存期 (是软件从开发运行,直到不用的时候叫做软件生存期,孕育-诞生-成长-成熟-衰亡的生存过程)
软件设计的阶段:
一.制定计划:
- 确定要开发软件系统的总目标
- 给出功能,性能,可靠性以及接口等方面的要求
- 完成该软件任务的可行性的研究
可能性研究报告(技术可行,经济可行性,操作可行性,法律可行性) 还得估计开发的资源,需要什么设备,什么养的环境,还有成本等等... 软件的成本估计只能是大概,因为软件成飞不稳定
这时候就需要技术人员登场了)。
需求分析阶段少用文字,多用图表
- 对待软件开发所提出的需求进行分析并给出详细的定义
- 编写软件需求说明书
* 需求分析的任务:
- 深入描述软件的功能和性能
- 确定 软件设计的约束和软件同其它系统元素的接口细节
- 定义软件的其他有效性需求
(需求分析就是借助当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的 “做什么” 的问题)
常用的分析方法:
面向数据流的结构化分析方法(SA)
面向数据结构的Jackson方法(JSD)
结构化数据系统开发方法(DSSD)
面向对象的分析方法(OOA)
编制需求分析阶段的文档
* 软件需求说明书
* 数据要求说明说
* 初步的用户手册
* 修改完善与确定软件开发实施计划
(在需求分析的时候开始编写 “用户手册”)
数据分析流程图:
软件需求分析的原则:
* 需要能够表达和理解问题的信息lingyu
* 要能以层次化的方式对问题进行分解和不断细化
分解又分两种,横向分解和纵向分解,分解过程中不能太快,也不能太细
需求分析方法:
大多数是由数据驱动的,数据域有三种属性:
- 数据流
- 数据内容
- 数据结构
四.软件测试:
我们的软件色设计出来后,必须需要软件测试,测试分两种
- 单元测试查找各个模块在功能和结构上存在的问题,并且加以纠正
- 组装测试,也叫集成性测试,将测试好的模块,按照一定的顺序组装起来,形成系统,专门的机构或者测试组
运行和维护
(软件在测试完成后,就开始维护了)
维护阶段所需要的维护费也很多。
(1)改正性维护:
(2)适应性维护: 在不同的环境下运行下需要维护
(3)完善性维护:根据客户提出的新的要求,进行维护