什么是软件
什么是软件? 软件是计算机系统中与硬件相互依存的另一部分。 软件 = 程序 + 数据 + 文档 软件工程方法为软件开发提供了 “如何做” 的技术 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境 软件工程过程定义了: 方法使用的顺序 要求交付的文档资料 为保证质量和适应变化所需的管理 软件开发各个阶段完成的里程碑 软件工程目标 规定软件工程实践的的结果(即软件)应具有的基本性质(可用性、正确性、合算性 ); 软件工程活动 指出为生产具有这些基本性质的软件产品,应进行的基本工作( 需求、设计、实现、确认、支持 ); 软件工程原则 采用适宜的开发范型,使用恰当的开发方法,提供高质量的工程支持,实施有效的工程管理,这些原则从四个方面指导每一项工程的活动,以实现软件工程目标。 软件开发方法的基本成分 概念与表示; 规程与限制; 表示工具; 如结构化分析方法给出的概念有数据流、数据加工、数据存储、数据源点和数据终点。基本建模步骤为(1)建立系统的数据流图;(2)给出系统数据词典;(3)给出每一加工的说明。相应地有描述系统行为(功能)、数据结构和数据加工的工具。 软件开发原理 20世纪50年代 程序设计阶段 无规范化设计的概念 20世纪60年代 程序系统阶段 瀑布方法 软件开发经历一系列规范化阶段 每个阶段的完成需交付一个或多个里程碑文档 20世纪70年代 基于模型的软件工程 首先建立系统的工作模型 再调集资源实现系统 现代软件工程都是采用基于模型的方法开发软件的。 工程中要考虑的问题是: What : 工程所依据的模型做什么? Why : 为什么要建立模型?(背景) How : 模型如何建立? Who : 模型的建立者是谁? 开发模式(Paradigm) 目前流行多种开发模式,它们提供了许多方法,可进行系统分解。 面向过程的; 逻辑的; 面向存取的; 面向进程的; 面向对象的; 函数型的; 说明性的。 面向过程开发模式 面向过程开发模式建立过程层次结构。 这种结构的基础是把软件视为处理流,并定义成由一系列步骤构成的算法。 每一步骤都是带有预定输入和特定输出的一个过程,把这些步骤串联在一起可产生合理的稳定的贯通于整个程序的控制流,最终产生一个简单的具有静态结构的体系结构。 面向过程的系统的体系结构 系统开发从用户要求的功能入手 建立的体系结构是程序模块结构 程序模块之间通过参数表、全局数据、文件传递信息 一旦用户要求发生改变,可能需要修改所有的模块 面向对象的系统的体系结构 系统开发从问题域中的实体与关系出发 体系结构是由对象类及其关系构成 对象之间通过消息传递信息,通过执行服务-消息链完成指定功能 一旦用户要求修改,可以只更改局部 软件开发过程 不管采取什么开发方法,软件开发的基本活动包括: 需求定义(software specification) 设计(design) 实现(implementation) 验证/确认(verification/validation)。 软件需求定义 建立系统模型,并形成需求文档。 需求定义方法 结构化分析方法 面向数据结构分析方法 面向对象分析方法 系统建模技术 数据抽象 功能抽象 结构化的分析方法 结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。 结构化分析方法使用工具: 数据流图(要求会画三层) 数据词典(要求会定义) 加工小说明( 结构化英语 判定表与判定树) 加工逻辑说明 对数据流图的每一个基本加工,必须有一个加工逻辑说明 加工逻辑说明必须描述基本加工如何把输入数据流变换为输出数据流的加工规则 加工逻辑说明必须描述实现加工的策略而不是实现加工的细节 用于写加工逻辑说明的工具 结构化英语 判定表 判定树 面向对象分析方法 面向对象的特点 抽象性:对象的数据抽象和行为抽象; 封装性:信息隐蔽(两个视图); 共享性: 同一类中所有实例共享数据结构和行为特征; 同一应用中所有实例通过继承共享数据结构和行为特征; 不同应用中所有实例通过复用共享数据结构和行为特征; 对象(object) 类(class) 继承 (Inheritance) 如果某几个类之间具有共性的东西 ( 信息结构和行为 ), 抽取出来放在一个一般类中, 而将各个类的特有的东西放在特殊类中分别描述,则可建立起特殊类对一般类的继承。 继承是使用已存在的定义做为基础建立新定义的技术。 消息(Message) 消息是一个实
原创力文档

文档评论(0)