1、软件开发,软件由程序、数据和相关的文档组成。 程序 = 算法 + 数据结构(N.Wirth ) 算法是一个高效率的正确表达的解题方法与步骤。 数据结构主要有数据的逻辑结构、数据的存储结构以及对数据元素的操作。,简单地说,程序设计就是为计算机编制程序的过程,它涉及:程序设计方法程序设计语言等。出现了许多程序设计方法。,程序设计范型,以不同的计算模型来对计算进行描述就形成了不同的程序设计范型(Programming Paradigms)。 典型的程序设计范型有: 过程式 对象式(面向对象) 函数式 逻辑式等,过程式程序设计,一种以功能为中心、基于功能分解的程序设计范型。一个过程式程序由一些子程序构
2、成,子程序描述了一系列的操作,每个子程序对应一个子功能,它实现了功能抽象。过程式程序的执行过程体现为一系列的子程序调用。数据处于附属地位,它独立于子程序,在子程序调用时作为参数传给子程序使用。程序 = 算法 + 数据结构,对象式(面向对象) 程序设计,一种以数据为中心、基于数据抽象的程序设计范型,通常称为面向对象程序设计。一个面向对象程序由一些对象构成,对象是由一些数据及可施于这些数据上的操作所组成的封装体。对数据的操作是通过向包含数据的对象发送消息(调用对象提供的操作)来实现。对象的特征由相应的类来描述,一个类可以从其它的类继承。面向对象程序的执行过程体现为各个对象之间相互发送和处理消息。程
3、序 = 对象/类 + 对象/类 + 对象/类 = 数据 + 操作,函数式与逻辑式,函数式程序设计是围绕函数及函数应用(Function Application)来进行,它基于了递归函数理论和lambda演算,其中,函数也被作为值来看待。逻辑程序设计是把程序组织成一组事实和一组推理规则,它基于的是谓词演算(Predicate Calculus)。上述两种程序设计范型常用于人工智能领域的程序开发。,良好的程序设计风格,程序中加入注释,便于理解程序 变量名、函数名等程序实体易于识别和理解(匈牙利符号命名法) 代码应有缩进,有层次感 较大的程序应分成模块及子模块,软件危机,早期的软件开发工作主要花费在
4、编程实现阶段,采用的是个体的小作坊开发模式。随着计算机应用领域的不断扩大和应用层次的不断加深,使得: 软件的规模不断扩大 软件的复杂度不断提高早期的软件开发模式难以驾驭软件开发过程,使得: 软件生产率急剧下降,供不应求 程序的正确性难以保证 开发出的软件难以维护出现了“软件危机”。(IBM360操作系统),软件工程,为了解决软件危机,“软件工程”概念应运而生,其主要思想是采用工程方法来开发软件。1968年在软件工程中,软件开发工作的中心从实现阶段转移到软件需求分析、设计和维护阶段,并且强调对软件开发过程的管理和加强各个阶段的文档制作。方法和工具构成了软件工程的两大支柱。,软件生存期的瀑布模型,
5、软件生存周期 一个软件从无到有、直到消亡所经历的整个过程称为软件的生存周期。,软件需求分析明确待实现的软件要解决什么问题,即做什么,给出软件的需求说明。(系统定义、可行性分析、软件需求分析) 软件设计根据软件的需求说明给出抽象的解决方案(设计说明),它包括概要设计和详细设计。 编码编码是指根据软件设计说明,采用某种程序设计语言书写程序。(仅占10%-20%的工作量),测试测试是对书写好的程序进行测试,确认其是否满足所规定的需求。(模块测试、集成测试、验收测试) 运行与维护运行与维护是指使用软件并在使用过程中发现和改正程序中的错误。(占60%左右的工作量) 文档编制用户文档、开发文档、管理文档 项目管理制定计划、建立组织、配备人员、技术指导、检验,