第七章软件开发与信息处理技术软件工程基础数据库设计基础数据结构与算法程序设计基础多媒体技术简介7.1软件工程基础软件的规模大小决定了软件开发的难度,因此,必须采用科学的软件开发方法,采用抽象、分解等科学方法降低复杂度,以工程的方法管理和控制软件开发的各个阶段,以保证大型软件系统的开发具有正确性、易维护性、可读性和可重用性7.1.1软件工程基本概念软件的发展大致分为四个阶段:(如下图)阶段第一阶段第二阶段第三阶段第四阶段程序设计阶段程序系统阶段软件工程阶段(结构化方法发)软件工程阶段(面向对象方法)典型技术面向批处理有限的分布自定义软件多用户实时数据库软件产品分布式系统嵌入“智能”低成本硬件消费者的影响强大的桌面系统面向对象技术专家系统人工神经网络网络计算机软件危机和软件工程软件危机主要表现在:对软件开发成本和进度的估计常常很不准确,经费预算经常突破,完成时间一再拖延;开发的软件不能满足用户要求,用户软件不满意的现象经常发生;开发的软件可维护性差、可靠性差软件工程:运用系统的、规范的和可定量的方法开发、运行和维护软件。它包含三个要素:方法(Methodologies)工具(Tools)过程(Procedures)软件工程过程和软件生命周期软件工程过程软件生命周期软件生命周期模型软件工程的目标和原则软件开发工具与软件开发环境下图为软件生命周期各阶段的任务:时期阶段任务文档软件计划问题定义理解用户要求,划清工作范围计划说明书可行性研究可行性方案及代价需求分析软件系统的目标及应完成的工作需求规格说明书软件开发概要设计系统的逻辑设计软件概要设计说明书详细设计系统模块设计软件详细设计说明书软件编码编写程序代码程序、数据、详细注释软件测试单元测试、综合测试测试后的软件、测试大纲、测试方案与结果软件维护软件维护运行和维护维护后的软件图为软件生命周期的瀑布模型和快速原形法模型软件计划需求分析软件设计软件编码软件测试软件维护需求分析快速设计建立模型用户评价模型修改原型生产产品软件工程目标和原则目标:在给定成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性并满足用户需求的产品软件工程理论和技术性研究的内容:软件开发技术和软件管理技术原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性软件开发工具与开发环境软件开发工具:是为支持软件人员开发和维护活动而使用的软件。作用:可以帮助开发人员完成一些繁琐的程序编制和调试问题,是软件开发人员将更多的精力和时间投放到最重要的软件需求和设计上,提高软件开发的速度和质量。7.1.2结构化分析方法结构化方法(SructuredMethodology):是计算学科的一种典型的系统开发方法,它采用了系统科学的思想方法,从层次的角度,自顶向下的分析和设计系统。内容:结构化分析(SructuredAnalysis)结构化设计(SructuredDesign)结构化程序设计(SructuredProgramDesign)软件开发过程问题定义可行性研究需求分析与需求分析方法结构化分析方法概述软件需求规格说明书结构化分析方法使用的工具A.数据流图(DataFlowDiagram)从数据传递和加工的角度,以图形方式刻画数据流从输入到输出的移动变换过程B.数据字典(DataDictionary)需对数据流图中的各个元素作完整的定义和说明,是数据流图的补充工具C.加工逻辑描述工具(常用:结构化自然语言、判定树和判定表)7.1.3结构化设计方法软件设计的基本概念:是一个把软件需求转化为软件表示的过程,即把分析结果加工为在程序细节上接近于源程序的软件表示(软件描述)软件设计阶段分为:系统的总体设计或概要设计(确定软件系统结构)系统的详细设计(进行各模块的具体设计)概要设计概要设计又称为总体设计,它的任务是确定软件结构结构化设计方法的基本思想:采用自顶向下的模块化设计方法,按照模块化原则和软件设计策略,将需求分析得到的数据流图,映射成由相对独立、单一功能的模块组成的软件结构概要设计概要设计的图形工具(层次图、HIPO图、软件结构图)软件设计原理软件结构设计原则面向数据流的设计方法(变换流分析设计和事务流分析设计)设计规格说明软件结构设计原则①提高模块独立性②模块规模应该适中③模块的深度、宽度、扇出和扇入适当④模块的作用域应该在控制域之内⑤降低模块接口的复杂程度⑥设计单入口和单出口模块详细设计任务:为软件结构图中的每一个模块确定实现算法和局部数据结构,并用某种工具描述出来结构化程序设计详细设计工具(程序流程图、盒图[N-S图]、PAD图)详细设计规格说明7.1.4软件测试一、软件测试的目的与任务目的:确保软件的质量,尽量找出软件错误并加以纠正,而不是证明软件没有错。任务:测试任务(通过采用一定的测试策略,找出软件中的错误)调试任务或纠错任务(如果测试到错误,则定位软件中的错误,加以纠正)二、软件测试的准则三、软件测试技术与方法综述方法:静态测试法动态测试法技术:白盒测试用例设计黑盒测试用例设计7.1.4软件测试白盒测试用例设计A、逻辑覆盖以程序的内部逻辑结构为基础的测试用例设计技术,它要求测试人员十分清楚程序的逻辑结构,考虑的是测试用例对程序内部逻辑覆盖的程度根据覆盖的目标,可分为:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、路径覆盖B、基本路径测试黑盒测试用例设计分类:等价类划分法边界值分析法错误推测法因果图四、软件测试的实施单元测试集成测试确认测试系统测试五、软件测试计划与测试分析报告测试是软件生存周期中的一个独立的关键的阶段7.1.4软件测试未加入p2437.1.5程序的调试程序调试可以分为:静态调试(主要通过人的思维来分析源程序代码和排错,是主要的调试手段)动态调试(是静态调试的辅助)主要的调试方法有:强行排错法回溯法原因排除法7.2数据库设计基础数据库概念数据模型关系代数数据库设计与管理7.2.1数据库概念数据(Data)数据处理(DataProcessing)数据库(Database,DB)数据库管理系统(DatabaseManagementSystem,DBMS)数据库管理员(DatabaseAdministrator,DBA)数据库系统(DatabaseSystem,DBS)数据库应用系统(DatabaseApplicationSystem,DBAS)数据库系统的发展人工管理阶段文件系统阶段数据库系统阶段(在关于数据库的诸多新技术中,比较重要的三种是:面向对象数据库系统、知识库系统,以及关系数据库系统的扩充)数据库系统的基本功能数据定义功能数据操纵功能数据库运行控制功能数据库的建立和维护功能数据库系统的基本特点数据的结构化数据的高共享性和低冗余性数据的独立性数据的统一管理与控制数据库系统的内部结构体系模式:是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及到型的描述,不涉及到具体的值。模式的一个具体值称为模式的一个实例,同一个模式可以有多个实例。数据库管理系统采用三级模式结构:概念模式、外模式(是概念模式的逻辑子集,也称子模式或用户模式)内模式(也称存储模式)并提供二级映像功能7.2.2数据模型数据模型(datamodel):是表示实体类型及实体之间联系的模型数据模式的三个要素:数据结构数据操作数据的完整性约束条件数据模型的三个级别:概念数据模型逻辑数据模型物理数据模型7.2.2数据模型数据模型的分类E-R模型(实体联系模型)是直接从现实世界中抽象出实体类型及实体间联系,然后用实体联系图(E-R图)表示数据模型层次模型(若用图表示,它是一棵倒立的树)网状模型(若用图表示是一个网络)关系模型(数据的逻辑结构是一张二维表)7.2.3关系代数关系代数:是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是用对关系的运算来表达查询的。包含:运算对象、运算符合运算结果三大要素关系代数的运算对象是关系,运算结果亦为关系,所以说,它是关系模型和关系数据库的理论基础传统的集合运算并(Union)关系R和关系S的并记做R∪S,由属于R或S的元组组成,结果仍为n目关系差(Difference)关系R和关系S的差记做R-S,由属于R不属于S的元组组成,结果仍为n目关系交(Intersection)关系R和关系S的交记做R∩S,由属于R且属于S的元组组成,结果仍为n目关系广义笛卡尔积两个分别为n目和m目的关系R和S的广义笛卡尔积R*S是一个(n+m)列的元组的集合关系R和S及其三种传统的集合运算(如下图)ABCa1a2a3b1b2b3c1c2c3ABCa1a2a3b1b2b3c1c2c3ABCA1A1A2a1B1B2B2b3C1C2C1c2ABCb1c1ABCA1a2B2b2C2c1关系R关系SR∩SR∪SR-S专门的关系运算选择运算:是一个单目运算,是从关系R中选取满足一定条件的元组子集。记做:其中σ是选择运算符;F是限定条件的布尔表达式,由逻辑运算符∧、∨等连接关系表达式组成。关系表达式的基本形式为:XθY,其中θ={、≥、、≤、=、≠},X、Y可以是属性名、常量或简单函数}'')(|{)(truetFRttRF投影(Projection)运算:也是一个单目运算,是从关系R中选取所需要的列组成一个新关系。记做:∏A(R){t[A]︱t∈R}其中∏是投影运算符;A为关系R属性的子集;t[A]为R中元组相应于属性A的分量连接(Jion)运算:是从2个关系的笛卡尔积中选取属性间满足一定连接条件的元组集合专门的关系运算除(Division):给定关系R(X,Y)和S(Y,Z)其中X,Y,Z是属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新关系P(X),P是R中满足下列条件的元组在X属性列上的投影:R在X上分量值为X的诸元素在Y上投影的集合包含S在Y上投影的集合。除操作是同是从行和列的角度进行运算。除操作符用÷表示专门的关系运算7.2.4数据库设计与管理数据库及其应用系统的设计步骤:用户需求分析概念设计逻辑设计物理设计数据库实施数据库的维护数据库设计的需求分析用户的信息要求用户的处理要求对数据的安全性、完整性的要求数据库的概念设计概念结构设计:只讲需求分析得到的用户需求抽象为信息结构即概念模型的过程概念结构独立于数据库逻辑结构,也独立于支持数据库的DBMS。它是现实世界与机器世界的中介,它一方面能够充分反映现实世界,包括实体与实体之间的联系,同时又易于向关系、网状、层次等各种数据模式转换。数据库的逻辑设计逻辑结构设计的步骤:将概念结构向一般关系模型转化将第一步得到的结构向特定的DBMS支持下的数据模型转换依据应用的需求和具体的DBMS特征进行调整与完善数据库的物理设计确定数据的存储安排存取路径的选择和调整确定系统配置数据库管理数据库的管理主要指:数据库的实施和维护分三个步骤:数据的载入和应用程序的调试数据库的试运行数据库的运行和维护数据库的维护在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的。包括:数据库的存储和恢复数据库的安全性、完整性控制数据库性能的监督、分析和改进数据库的重组织与重构造7.3数据结构与算法算法数据结构的基本概念及术语线性表栈队列树与二叉树查找与排序7.3.1算法定义:是对特定问题求解步骤的一种描述。或者说,是为求解某问题而设计的步骤序列特征:有穷性确定性有效性输入输出算法复杂度评价一个算法优劣的主要标准是:算法的执行效率与存储需求算法的效率:指的是时间复杂度(TimeComplexity)存储需求:指的是空间复杂度(SpaceComplexity)一般情况下,算法中的基本操作重复操作执行的次数是问题规模n的某个函数f(n),算法的时间复杂度记做T(n)=O(f(n