Github知识小结
软件:计算机运行所需要的各种程序和数据的总成,包括操作系统,汇编语言,编译,程序,数据库,文字编辑和维护使用手册等。
软件的特性:(1)软件产品的主要生产是脑力劳动,还没有摆脱手工开发方式(2)软件是一种逻辑产品,他与物质产品不同,他是脑力劳动的结果(3)软件产品不会用坏(4)软件产品的生产主要是研制(5)软件费用不断增加,软件成本相当昂贵。
软件的分类: 系统软件,应用软件
软件的发展:程序设计时代(1946-1956),程序系统时代(1956-1968)软件工程时代(迄今)
软件危机的表现 (1)对于软件开发的成本和进度的估计不太准确(2)开发的软件产品不能完全满足用户的需求(3)开发的软件的可靠性差(4)软件通常没有适当的文档(5)软件的的可维护性差(6)软件开发生产率提高的速度远远更不上计算机应用普及的趋势
软件危机的原因:(1)软件的规模越来越庞大(2)软件开发的管理困难(3)软件本身的独有特点确实给开发和维护造成一些客观困哪(4)软件开发和维护中许多错误认识和方法的形成可以归结与计算机发展早期开发的个体化特点(5)软件开发技术落后(6)成产方式落后(7)开发工具落后,生产率提高缓慢
软件工程:用工程,科学和数学的原则与方法研制,维护计算机软件的有关技术及管理法,因此,定义为:将系统的,规范的,可度量的工程化方法应用与软件开发,运行和维护的全过程及上述方法的研究。
软件工程是有方法,工具和过程三部分构成的。
软件工程学和程序设计方法学的研究对象是软件和程序,(1)提高软件的质量和可靠性(2)提高软件的可维护性(3)提高软件生产率,降低软件开发成本等
软件工程的基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采纳现代程序设计技术(5)结果因能清楚的审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性
软件工程的目标:(1)可修改性(2)有效性(3)可靠性(4)可理解性(5)可维护性(6)可重用性(7)可适应性(8)可移植性(9)可追踪性(10)可互操作性
在软件开发技术方面,主要研究开发方法,开发过程,开发工具和环境。在软件开发管理方面,主要研究:软件管理学,软件经济学,软件心理学
软件是一种逻辑产品
软件工程和计算机科学性质不同,软件工程着重与建造软件系统
软件生命周期:任何一个软件都是从它的提出开始到最终被淘汰为止,有一个存在期,
软件生命周期是指一个软件从提出开发要求开始到该软件报废的整个时期
软件生命周期一种典型的阶段划分:问题定义,可行性研究,需求分析,概要设计,详细设计,编码,测试和维护。
活动时期:软件分析时期:(1)可行性研究可项目开发计划(2)需求分析 软件设计时期:(1)概要设计(2)详细设计 编码与测试时期: 编码 测试 运行和维护时期
软件生命周期模型是指开发软件项目的总体过程思路,软件生命周期模型是描述软件开发过程中各种活动如何执行的模型
瀑布模型:体现在它是一种理性的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
软件工程过程包含了:开发过程,管理过程,供应过程,获取过程,操作过程,维护过程,支持过程。
喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适用于面向对象的开发方法,他克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,喷泉模型使开发过程具有迭代性和无间隙性
可行性研究:(1)技术可行性研究(2)经济可行性研究(3)法律可行性研究(4)开发方案的选择性研就
成本效益分析:(1)成本估计 源程序行数的成本 (2)货币的时间价值
社会可行性所研究的范围包括合同,责任,侵权。
需求分析是指:开发人员要进行细致的调差分析,准确理解用户的要求,将用户非形式的需求陈述转换为完整的需求定义,再有需求定义转换为相应形式功能规约的过程。
需求分析的任务:(1)问题明确定义 a.功能需求,性能需求,环境需求,用户界面需求,系统的可靠性,安全性,可以执行和可维护性 (2)导出软件的逻辑模型(3)编写文档
数据流图:(1)数据流(2)加工(3)数据存储(4)数据原点和终点
数据字典:(1)数据流条目(2)数据项条目(3)数据存储条目(4) 加工条目
数据字典就是用来定义数据流图中的各个成风的具体含义的,他和数据流图共同构成了系统的逻辑模型,是需求说明书的主要组成部分。
进行需求分析可使用多种工具,但PAD图是不合适的。
在数据流图中,有名字及方向的成分是数据流。
在结构化分析方法中,用以表达系统内部数据的运行情况的工具有:数据流图
软件体系结构包含了两个重要特性:(1)过程构件(模块)的层次结构(2)数据结构
深度表示控制的层数,宽度表示同一层次上面控制的最大数,扇出是对一个模块直接控制其他模块树木的度量,扇入则是对一个给定模块被多少个模块直接控制的度量。
耦合:非直接耦合度,数据耦合,标记耦合,外部耦合,控制耦合公共环境耦合,内容耦合
内聚:功能内聚,信息内聚,通信内聚,过程内聚,逻辑内聚,时间内聚,偶然内聚。
模块化是指解决一个复杂问题是自顶向下逐层把2软件系统划分成若干模块的过程,每个模块完成一个特定的子功能,所有的模块按某种方法组装起来,成为一个整体,完成整个系统所要求的功能。
软件结构的设计是以模块为基础的,以需求分析的结果为依据,从实现的脚步进一步划分为模块,并组成模块的层次的结构。
软件设计是一个把软件需求转换为软件表示的过程,包括总体设计和详细设计。
变换型DFD是有输入,变换和输出三部分组成。
软件设计一般分为总体设计和详细设计,他们之间的关系是:全局和局部
将几个逻辑上相似的成分放在一个模块中,该模块的内聚杜维逻辑性的。
在对数据结构的分析中,主要是找到变换中心,这是从数据流图到处结构图的关键。
过程设计语言的重复结构有for结构,while结构,until结构。
结构化程序设计方法的基本要点是也就是细节:(1)采用自顶向下,逐步求精的程序设计方法。(2)使用三种基本控制结构构造程序,(3)主程序组的组织形式。
程序流程图又称为程序框图,应有三种基本控制结构顺序组合和完成嵌套而成,不能有相互交叉的情况,这样的流程图是结构化的流程图。
一个程序如果把它作为一个整体,他也是只有一个入口,一个出口的单个顺序结构,这是组合的过程。
程序控制的三种基本结构中,循环结构可提供程序重复控制。
测试方法:静态测试方法 人工测试,计算机辅助静态分析 动态测试方法 黑盒测试, 白盒测试
黑盒测试:该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,志在软件的界面上面进行测试,用来证实软件功能的可操作性,检查程序是否满足功功能需求,是否能很好的接收数据,并产生正确的输出。
单元测试:(1)测试的内容 模块接口,局部数据结构,重要的执行数据,错误处理,边界条件
测试的方法:由于被测试的模块处于整个软件结构的某一层位置上面,一般是被其他模块调用其他模块,其本身不能进行单独运行,因此在单元测试时,需要为被测模块设计驱动模块和状模块。
集成测试的方法:自底向上测试, 自顶向下测试。