前言
漫长软工视频已经到达尾声了,通过看软工视频感觉到了里边有好多知识是要成为一名程序员所掌握的,里边好多基础性的东西需要理解并且熟悉,视频中的内容挺多,但看视频过程中做了笔记,这个笔记平时可以翻着看,学习是一个不断重复的过程。
正文
什么是软件工程?软件工程是指利用工程的思想指导软件开发,运用现代科学技术知识来设计并构造计算程序及开发、运行和维护程序所必需的相关文件资料。
·程序设计阶段:50-60年代——调试少、编程的人数少、没有文档、无统一规范、编写得程序出错多
·程序系统阶段:60-70年代——作坊式开发、程序说明阶段、开发完总是出现问题、1968年提出软件工程、
·软件工程阶段:70年代以后——系列化、规范化、用科学管理的方法
软件的特点:
1.是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
2.软件的生产与硬件不同,在它的开发过程中没有明显的制造过程
3.在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
4.软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。
5.软件的开发至今尚未完全摆脱手工艺的开发方式
6。软件本身是复杂的:
·实际问题的复杂性
·程序逻辑结构的复杂性
7.软件成本相当昂贵
8.相当多的软件工作涉及到社会因素。
按照软件规模进行划分为:
软件测试分为:
1.单元测试:查找各模块在功能和结构上存在的问题并加以纠正
2.组装测试:将已测试过的模块按一定顺序组装起来。
软件开发模型:
1.瀑布模型
2.螺旋模型
3.第四代技术模型
4.原型模型
5.构件组模型
6.混合模型
瀑布模型:
1.思想:功能实现与制作分开方便分工协作
2.优点:1.奠定了软件工程方法的基础、
2.流水依赖便于分工协作、
3.易于修改文档
演化模型
1.第一次完成检验需求分析是否正确,在第一次开发基础上,在进行开发。
螺旋模型
1.分四个象限:指定计划、风险分析、实施工程、客户评估、适应于大型软件开发
喷泉模型
1.迭代:重复、演进
软件工程项目的基本目标:
·较低的开发成本、
·达到要求的软件功能、
·较好的软件性能、
·软件易于移植、
·需要较低的维护费用、
·按时完成开发工作,及时交付使用、
* 1968年软件危机产生,软件工程思想解决软件危机。
软件危机表现为:
1.不符合用户的实际需要。
2.软件开发生产效率不能满足客观需要
3.软件产品的质量差、
4.开发成本和进度的估计常常不准确。
5.软件的可维护性差
6.文档资料通常既不完整也不合格。
7.价格昂贵,软件成本逐渐上升。
软件工程的七条原理:
1.分阶段的生存周期计划严格管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚地审查
6.合理安排软件开发小组的人。
7.承认软件工程实现的必要性。
软件工程学的最终目标:
是以较少投资获得易于维护、易于理解、可靠、高效的软件产品。
基本原则:
低沉本高质量的软件产品,应遵守基本原则。
1. 分解、
2.独立性、
3.一致性、
4.确定性、
可行性研究:
1.经济可行性、
2.技术可行性、
3.操作可行性、
4.法律可行性、
5.时间可行性、
软件需求分析:
1.软件需求包括以下几个方面:
功能、性能、环境、可靠性、安全保密、用户界面、资源使用、成本消耗、开发进度、预先估计以后系统可能达到的目标等需求、
2.常用的分析方法:
面向数据流的结构化分析方法(SA)、
面向数据结构的JacKson方法(JSD)、
结构化数据系统开发方法(DSSD)、
面向对象的分析方法(OOA)等。
3.编制需求分析阶段的文档:
1.软件需求说明书、
2.数据要求说明书、
3.初步的用户手册、
4.修改、完善与确定软件开发实施计划
数据流程图:
简称DFD图、基本逻辑流程
数据字典与数据流图配合使用,清楚地表达数据处理的要求。
加工逻辑说明的工具: 结构化英语、判定表、判定树、
数据流图的作用:
1.系统分析员用这种工具可以自顶向下分析系统信息流程。
2.可在图上画出需要计算机处理的部分。
3.根据数据存储,进一步作数据分析向数据库设计过渡。
4.根据数据流向,定出存取方式
5.对应一个处理过程,用相应的语言、判定表等工具表达处理方法。
数据流图的优缺点:
1.总体概念强,每一层都明确强调“干什么”,“需要什么”,“给出什么”。
2.可以反映出数据的流向和处理过程。
3.由于自定向下分析,容易及早发现系统各部分的逻辑错误,也容易修正。
4.容易与计算机处理相对照。
5.不直观,一般都要在作业流程分析的基础上加一概括、抽象、修正来得到。
6.如果没有计算机系统帮助的话, 人工绘制太麻烦,工作量较大。
数据字典:
是关于数据的信息集合,对数据流程图中的各个元素做完整的定义与说明,是数据流程图的补充工具。数据流程图和数据字典共同构成系统的逻辑模型。
数据字典由六类元素定义组成:
1.数据流、2.数据项、3.数据结构、
4.数据存储、5.处理逻辑、6.外部实体