大型软件系统的开发介绍v.ppt_第1页
大型软件系统的开发介绍v.ppt_第2页
大型软件系统的开发介绍v.ppt_第3页
大型软件系统的开发介绍v.ppt_第4页
大型软件系统的开发介绍v.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

大型软件系统的开发介绍 (An Introduction to the Development of Large Software Systems, ver.02),于忠德 2003年3月 中国成都 Zhongde Yu March 2003 Chengdu, China,于忠德 2002年11月 于中国,第2页,大型软件系统的开发介绍,1. 软件工程方面的考虑 2. 软件系统开发实例介绍,于忠德 2002年11月 于中国,第3页,1.软件工程方面的考虑,1.1 软件开发的生命周期 Software Life Cycle 1.2 软件质量保证 Software Quality Assurance, SQA 1.3 软件开发的方法 Software Dev Methodology,于忠德 2002年11月 于中国,第4页,1.1 软件开发的生命周期,市场调查 (Marketing Investigation) 需求分析 (Requirement Specification) 概要设计 (High-Level Design) 接口设计 (Interface Design) 详细设计 (Low-Level Design) 编码 (Coding / Implementation) 单元测试 (Unit Testing) 集成测试 (Integration Testing) 系统测试 (System Testing) 售后服务 (After-Sale Service)系统升级 (System Upgrade)技术支持 (Technical Support),于忠德 2002年11月 于中国,第5页,1.1 软件开发的生命周期(contd),市场调查,需求分析,概要设计,接口设计,详细设计,编码,单元测试,集成测试,系统测试,系统升级,技术支持,售后服务,After Sale,Design,Testing,Coding,Requirement,SQA,于忠德 2002年11月 于中国,第6页,市场调查,市场调查 (Marketing Investigation) 由市场部(Marketing Dept.)来完成,产品经理PM (Product Manager)负责 了解用户需求,确立研发方向 形成 MRD (Marketing Requirement Document) 举例: 在路由器上实现IP电话功能 企业局域网, 租用电信专线, 连接位于不同城市的总部与分部 提供附加业务, 在局域网内打电话, 零话费! 向局域网外打电话, 只花本市话费!,于忠德 2002年11月 于中国,第7页,需求分析,需求分析 (Requirement Specification) 引言 目的, 范围 系统概述 系统体系结构, 功能简单描述, 数据流描述 运行需求 对硬件环境的需求, 对软件环境的要求 需求分解 功能体划分, 功能体1, 功能体2, ,功能体n 功能体描述, 需求条目,于忠德 2002年11月 于中国,第8页,需求分析 (contd),举例: IP电话系统的语音处理模块,下图描述了语音处理模块与其它主要模块之间的关系:,于忠德 2002年11月 于中国,第9页,需求分析 (contd),需求条目: RTP/RTCP基本需求条目 RTP/RTCP包的字节顺序和对齐方式 RTP数据包格式 RTCP包结构与发送时间间隔 RTP使用UDP偶数端口号,RTCP使用下一个连续的奇数端口号 RTP的端口号从5000以上开始选择 RTP包没有长度域, RTP包依靠UDP提供长度指示 RTP包的处理 RTCP包的处理,于忠德 2002年11月 于中国,第10页,需求分析 (contd),于忠德 2002年11月 于中国,第11页,概要设计,概要设计 (High-Level Design) VERY IMPORTANT but VERY HARD! 引言 目的, 范围 子系统概述 功能区域分割 功能区域1, , 功能区域n 功能区域描述, 数据结构描述,需求条目 逻辑接口 功能区域X到功能区域Y的接口 接口1, , 接口n,于忠德 2002年11月 于中国,第12页,概要设计(contd),举例:VoIP功能模块的划分 接口卡驱动(POTS卡驱动) PDRV 语音模块 VOICE 呼叫控制 CC 呼叫控制(FXS) CCFXS 呼叫控制(FXO) CCFXO 呼叫控制(H323) CCH323 网络接口 NET H.245 Control Signalling H245 H.225.0 Call Signalling (Q.931) Q931 H.225.0 RAS RAS 跟踪告警信息处理 INFO ASN.1编解码 ASN1 配置数据 CFG 动态存储管理 DMM 其他: 虚拟操作系统,命令行接口 VOS, OAM / CLI,于忠德 2002年11月 于中国,第13页,概要设计(contd),语音模块的功能区域划分: 模块控制功能区域 RTP会话管理功能区 RTP包转发功能区 RTCP包收发功能区和统计信息表 Note1:VoIP 实时操作系统任务(Tasks) 或进程(Processes) 控制任务 (VOIPC) 语音任务 (VOIPV) 网络任务 (VOIPN),于忠德 2002年11月 于中国,第14页,概要设计(contd),于忠德 2002年11月 于中国,第15页,概要设计(contd),功能区域1:模块控制功能区域 功能区域描述 语音模块类 class VOIP_CVoice的定义 语音任务主进程函数 task_VOIPVMain() 语音模块的初始化 消息的分发 语音模块的配置、统计查询、跟踪监视、出错信息报告,于忠德 2002年11月 于中国,第16页,概要设计(contd),需求条目 语音任务与消息队列的创建 语音模块对象(object)的建立 语音任务主进程函数完成如下的功能 语音模块的初始化 进入一个永久循环,进行消息分拣 接收消息的处理概述 消息分拣的原则 RTP会话管理 RTP包的转发 RTCP包的接收与发送 配置、跟踪监视、出错报告 VOS时钟超时,于忠德 2002年11月 于中国,第17页,接口设计,接口设计 (Interface Design) 引言 目的, 范围 系统概述 系统体系结构, 子系统说明,子系统间接口机制 公共定义描述 消息结构, 消息头, 通用规则, 公共参数定义 消息定义 消息名, 方向, 消息鉴别号 , 消息体,于忠德 2002年11月 于中国,第18页,接口设计 (contd),公共单元编码 单元名, 单元描述, 单元值 共享数据区 数据名, 数据描述, 数据值域, 使用机制, 保护机制 函数接口 函数名1, , 函数名n 功能描述, 输入量, 输出量 信号量 信号量1, , 信号量n 信号量描述, 使用机制, 保护机制,于忠德 2002年11月 于中国,第19页,接口设计 (contd),举例:VoIP 子系统间接口机制 VoIP子系统与其它子系统: 与TCPUDP采用socket接口 与VOS采用函数接口 VoIP子系统内部各模块之间 与ASN1,CFG,DMM采用函数接口 其它子模块之间采用消息接口(通过VOS消息传递机制,以及VoIP内部消息分发机制),于忠德 2002年11月 于中国,第20页,详细设计,详细设计 (Low-Level Design) 引言 目的, 范围 功能区域分割 任务划分 任务设置, 任务间调度策略 任务1名称, , 任务n名称 功能描述,优先级, 输入项, 输出项,处理过程描述,于忠德 2002年11月 于中国,第21页,详细设计 (contd),功能区域设计 功能区域1, , 功能区域n 功能区域描述 模块1名称, , 模块n名称 模块描述,函数构成 函数1名称, , 函数n名称 函数原型, 功能描述, 输入参数, 输出参数 调用者, 全局数据, 算法描述, 伪码描述 数据字典 内存的需求, 结构 消息, 表格 其他数据结构,于忠德 2002年11月 于中国,第22页,详细设计 (contd),举例:VoIP语音模块 给出数据结构(data structures) 给出具体算法(algorithms) 写出函数原型(prototypes) 写出伪码描述(pseudo-code) 。 系统详尽的详细设计能够使编码工作易于进行,软件蓝领可以据此进行“代码填写”,于忠德 2002年11月 于中国,第23页,编码,编码 (Coding / Implementation) 建立开发环境: 操作系统 (Operating System) 编程语言 (Programming Language) 编译器连接器调试器 (Compiler / Linker / Debugger) 目标机工控机 (Target) 掌握编程规范 编写代码,于忠德 2002年11月 于中国,第24页,编码 (contd),举例:VoIP软件开发 实时嵌入式软件 (Real-Time, Embedded s/w) 跨平台开发 (Cross-Platform Dev) Host: Windows 98/NT/2000 Target: Intel Pentium x86 processor Connection: Ethernet 实时操作系统 (RTOS) VxWorks 集成开发环境 (IDE) Tornado 编程语言 ANSI C & C+,于忠德 2002年11月 于中国,第25页,编码 (contd),Cross-Platform Development,Host (Tornado Win NT),Target (x86),LAN (Ethernet),192.168.122.15,192.168.122.90,Download & Debug,于忠德 2002年11月 于中国,第26页,编码 (contd),软件编程规范 1 (for VoIP only) 目的: 为增加软件编码的一致性,减少程序员的理解误差 适用范围: 适用于标准CC+语言 模块命名: RTP (rtp),RTCP (rtcp),RAS (ras), etc. 文件命名方法和内部格式 一律为小写,格式为 “子系统名_模块名.扩展名 e.g. voip_voice_rtp_session.cpp 头文件的格式, 内容,于忠德 2002年11月 于中国,第27页,编码 (contd),前缀缩写: Hungarian Notation,于忠德 2002年11月 于中国,第28页,编码 (contd),常用类型的统一定义,typedef int INT32; typedef unsigned int UINT32; typedef short INT16; typedef unsigned short UINT16; typedef char INT8; typedef unsigned char UINT8; typedef signed long LONG; typedef unsigned long DWORD; typedef unsigned short WORD; typedef unsigned char BYTE; typedef unsigned int BOOL;,于忠德 2002年11月 于中国,第29页,编码 (contd),标识符 本模块特有的命名风格自始至终保持一致,不要来回变化 普通常量、普通宏: 使用全大写字母加下划线的方式,结构为:模块名称+下划线+变量内容名称,例如: #define VOIP_VOICE_PAYLOAD_TYPE_G711 1 普通局部变量: 建议采用UNIX的全小写加下划线的风格或大小写混排的匈牙利方式,不要使用大小写和下划线混排的方式,例如: ip_packet_recv_tid、arp_frame_count 全局变量: 前缀为小写的“g_”,然后是模块名称加下划线,然后是由两个以上单词形成的字符串,每个单词首字母大写,其他字母小写,例如: g_Icmp_TraceRouteQueue、g_Ospf_InterfList,于忠德 2002年11月 于中国,第30页,编码 (contd),指针变量: 命名前缀为小写的“p_”,然后是由两个以上单词形成的字符串,每个单词首字母大写,其他字母小写,例如:pIppkt、pAccessList 如果是全局指针变量,则添加小写的“g_”,例如:g_pIppkt 函数和过程名: 前缀为全小写的模块名称,中间为下划线,然后为由两个以上单词形成的字符串,每个单词首字母大写,其他字母小写。例如: vos_MsgCreate()、icmp_PktRecv() 调试用的编译开关: 首尾均为下划线的全大写字符串,具体格式是:下划线+子系统名称+下划线+模块名称+下划线+调试内容名称+DEBUG+下划线,例如: _IPF_IP_PACKET_DEBUG_ _SUPP_TCPUDP_UDP_DEBUG_,于忠德 2002年11月 于中国,第31页,编码 (contd),可理解性 注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。 源程序中关系较为紧密的代码应尽可能相邻,以形成一个相对独立的语意群。 除非很有必要,不要使用难懂的技巧性很高的语句。,于忠德 2002年11月 于中国,第32页,编码 (contd),语音模块代码 voip_voice.cpp voip_voice_main.cpp voip_voice_rtp_session.cpp voip_voice_rtp_endpoint.cpp voip_voice_rtcp_packet.cpp voip_voice.h voip_voice_defs.h voip_voice_rtp_session.h voip_voice_rtp_endpoint.h voip_voice_rtcp_packet.h voip_message_voice.h,于忠德 2002年11月 于中国,第33页,单元测试,单元测试 (Unit Testing) 编码完成后,测量每个程序单元(函数、算法等) 侧重于程序单元的功能(function)与结构(structure)的正确性 由每个developer亲自进行 种类: 白盒测试(White-Box Testing):保证代码结构编写无误 黑白盒测试(Black-Box Testing):保证代码功能正确 回归测试(Regression Testing):保证后续修改不影响以前的代码 需要驱动函数(Drivers)和桩函数(Stubs) 有利于系统的逐步完成,于忠德 2002年11月 于中国,第34页,集成测试,集成测试 (Integration Testing) 完成单元测试之后,将各个功能模块连在一起进行测试 侧重于程序模块之间接口(interface) 的正确性,保证各个模块能够在一起正常工作 由开发组内的所有developer来配合进行,于忠德 2002年11月 于中国,第35页,系统测试,系统测试 (System Testing) 对开发出的整个软件产品(或一定的功能部分)从使用者的角度进行测试 侧重系统总体功能上的测试,一般不关注内部细节(也无从关注) 一般由专门的测试部门进行,软件开发人员不直接参与 发现问题后,测试部门反馈给软件开发部门,后者针对问题进行分析,找到相应的责任人员进行改进,完成后再次提交测试部门进行测试,直到解决问题,于忠德 2002年11月 于中国,第36页,售后服务系统升级技术支持,售后服务 (After-Sale Service) 配合销售部门对用户进行服务,入使用培训、问题解答等 系统升级 (System Upgrade) 软件版本升级、功能改进等 技术支持 (Technical Support) 用户报告软件产品问题,组织开发人员修改软件,解决问题,提高性能等 一般地,软件工程师使用其25工作时间,于忠德 2002年11月 于中国,第37页,1.2 软件质量保证,软件质量保证 (Software Quality Assurance, SQA) 定义:为保证软件产品和服务充分满足消费者要求的质量而进行的有计划、有组织的活动; 目的:向用户及社会提供满意的高质量的软件产品; 活动:含盖软件产品从产生到消亡的所有阶段; 软件能力成熟度模型第二级(可重复级)的内容之一 ( SQA in SE CMM Level-2),于忠德 2002年11月 于中国,第38页,1.2 软件质量保证 (contd),实行SQA的原因与 软件的维护代价越来越高 开发规程中应特别注重代码的质量 严格遵循开发流程中的各项规章制度 良好的职业素养 认真负责、方法得当 每个developer都应树立良好的质量意识,并掌握一定的质保方法 明确的需求分析 详尽准确的设计 Design for Change 细致的编码 注意编程规范! 全面的单元测试与集成测试 使用SQA工具,帮助提高代码质量,于忠德 2002年11月 于中国,第39页,1.2 软件质量保证 (contd),SQA方法 编程规范 SQA工具 静态工具:在程序运行之前检查代码 PC-LINT 动态工具:在程序运行之中检查代码 BoundsChecker, C-Cover SQA发现BUG的后续处理 MR:Modification Request 记录,分配,解决,跟踪,于忠德 2002年11月 于中国,第40页,PC-Lint,SQA工具简介之一 PC-Lint PC-LINT是一种软件质量保证工具,即一种更加严格的编译器; 可以查出普通compiler无法查出的错误,即那些虽然完全合乎语法要求,但很可能是潜在的、不易发现的错误; 许多国内外大型专业软件公司(微软、华为)都把PC-LINT作为程序检查工具; 在程序合入正试版本或交付测试之前一定要保证通过了PC-LINT检查。,于忠德 2002年11月 于中国,第41页,PC-Lint (contd),PC-LINT除了能指出简单语法错误, 还能指出以下的错误: 无法达到的语句 没有进入循环 没有被使用的变量 函数参数从未使用 没有赋值之前自动使用参数 函数在有些地方有返回值,但在其他地方不返回 函数调用在不同地方使得参数个数不同 错误使用结构指针 模糊使用操作符优先级,于忠德 2002年11月 于中国,第42页,BoundsChecker,SQA工具简介之二 BoundsChecker,于忠德 2002年11月 于中国,第43页,BoundsChecker (contd),BoundsChecker可以发现很多隐藏的、危害性极大的错误。如: 无效的参数 可疑的线程应用 动态的内存越界操作 内存分配冲突 指向非法内存的指针 静态的内存越界操作 堆栈内存越界操作 释放引起的内存泄漏 重赋值引起的内存泄漏 资源泄漏 未赋值的指针 数组下标越界 指针越界 函数指针指向非函数 返回指向局部变量的指针,于忠德 2002年11月 于中国,第44页,BoundsChecker (contd),结合C-COVER一起使用 BoundsChecker是动态检查程序,即是在执行过程中发现错误。 所以使用BoundsChecker检查程序时,应该保证能够覆盖所有代码,否则BoundsChecker不会发现未覆盖的代码中的错误。 因此可以与C-Cover工具结合起来执行。,于忠德 2002年11月 于中国,第45页,C-Cover,SQA工具简介之三 C-Cover What is C-Cover? A code coverage analyzer for programs written in the C and C+ languages; C-Cover是一种进行软件覆盖测试的辅助工具,可以帮助软件人员分析程序中函数和各种条件判断语句的执行情况。,于忠德 2002年11月 于中国,第46页,C-Cover (contd),功效 - With C-Cover, you can: identify code which was not fully exercised during testing; obtain summary measurements of testing completeness to help you decide when you have tested enough 通过它可以很快地发现未进行测试的代码,并且指出未进行测试的代码在源程序中的位置,因此可以提高单元测试的效率。,于忠德 2002年11月 于中国,第47页,1.3 软件开发的方法,面向对象的方法 (Object-Oriented Methodology) OOA: Object-Oriented Analysis OOD: Object-Oriented Design UML / Rational Rose Design Pattern OOP: Object-Oriented Programming C+, JAVA,于忠德 2002年11月 于中国,第48页,1.3 软件开发的方法 (contd),结构化的方法 (Structural Approach) Modular Analysis / Design,于忠德 2002年11月 于中国,第49页,2. 软件系统开发实例介绍,2.1 实时嵌入式软件(路由器协议实现) Real-Time, Embedded Software Network Routers / Protocols 2.2 互联网应用软件(电子商务平台) Internet Application Software E-Commerce Platform,于忠德 2002年11月 于中国,第50页,2.1 实时嵌入式软件(路由器协议实现),路由器是互联网络的核心组成设备之一 主要功用是转发信息包(packet) 功能强大,协议丰富,配置灵活 两大部分:硬件 软件 最具特色的部分是其软件: Cisco:IOS (Internetworking Operating System),于忠德 2002年11月 于中国,第51页,2.1 实时嵌入式软件 (contd),ISO网络分层模型: 7层结构 底层:1 物理层,2 数据链路层,3 网络层 高层:4 传输层,5 会话层,6 表示层,7 应用层 分层结构的意义 各层处理的对象不同,实现的功能也不同 分层使得复杂问题得以分解,“分而自治”,于忠德 2002年11月 于中国,第52页,2.1 实时嵌入式软件 (contd),网络分层协议模型,7 应用层 (Application),6 表示层 (Presentation Layer),5 会话层 (Session Layer),4 传输层 (Transport Layer),3 网络层 (Network Layer),2 数据链路层 (Data Link Layer),1 物理层 (Physical Layer),于忠德 2002年11月 于中国,第53页,2.1 实时嵌入式软件 (contd),IOS所涉及的计算机领域 操作系统:RTOS, 尤其是如下方面 进程管理,内存管理,系统调用 特殊之处 任务调度,内存受限,时间性 计算机网络:TCP/IP协议族(protocol suite) 几乎要实现所有的协议 编程语言:C/C+,汇编(Assembly) 不同于一般的应用软件,必须考虑实时性、内存受限等 硬件知识:芯片(x86, PowerPC),网卡等 物理层,数据链路层 开发特点:跨平台(cross-platform) Debug更加困难,于忠德 2002年11月 于中国,第54页,2.2 互联网应用软件(电子商务平台),Web应用 在万维网(World Wide Web)上使用的基于公共标准的应用, 对应于应用层 传统的Client/Server应用:两层结构 最初的Web应用:也是两层结构,Client,Web Browser,Web Server,Database,于忠德 2002年11月 于中国,第55页,2.2 互联网应用软件 (contd),现代的Web应用:是三层结构(Three-tier) 需要访问数据库,多个服务器 Web应用因而被定义为基于Internet标准,使用Web浏览器(Browser)作为客户端的多层应用 符合MVC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论