大型软件系统的开发介绍(AnIntroductiontotheDevelopmentofLargeSoftwareSystems,ver.02)于忠德2003年3月中国成都ZhongdeYuMarch2003Chengdu,China大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第2页大型软件系统的开发介绍•1.软件工程方面的考虑•2.软件系统开发实例介绍大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第3页1.软件工程方面的考虑•1.1软件开发的生命周期•SoftwareLifeCycle•1.2软件质量保证•SoftwareQualityAssurance,SQA•1.3软件开发的方法•SoftwareDevMethodology大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第4页1.1软件开发的生命周期•市场调查(MarketingInvestigation)•需求分析(RequirementSpecification)•概要设计(High-LevelDesign)•接口设计(InterfaceDesign)•详细设计(Low-LevelDesign)•编码(Coding/Implementation)•单元测试(UnitTesting)•集成测试(IntegrationTesting)•系统测试(SystemTesting)•售后服务(After-SaleService)/系统升级(SystemUpgrade)/技术支持(TechnicalSupport)大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第5页1.1软件开发的生命周期(cont’d)市场调查需求分析概要设计接口设计详细设计编码单元测试集成测试系统测试系统升级技术支持售后服务AfterSaleDesignTestingCodingRequirementSQA大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第6页市场调查•市场调查(MarketingInvestigation)•由市场部(MarketingDept.)来完成,产品经理PM(ProductManager)负责•了解用户需求,确立研发方向•形成MRD(MarketingRequirementDocument)•举例:在路由器上实现IP电话功能•企业局域网,租用电信专线,连接位于不同城市的总部与分部•提供附加业务,在局域网内打电话,零话费!•向局域网外打电话,只花本市话费!大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第7页需求分析•需求分析(RequirementSpecification)•引言•目的,范围•系统概述•系统体系结构,功能简单描述,数据流描述•运行需求•对硬件环境的需求,对软件环境的要求•需求分解•功能体划分,功能体1,功能体2,…,功能体n•功能体描述,需求条目大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第8页需求分析(cont’d)•举例:IP电话系统的语音处理模块下图描述了语音处理模块与其它主要模块之间的关系:语音处理模块接口卡驱动模块网络接口模块呼叫控制模块123配置管理模块跟踪监视模块45大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第9页需求分析(cont’d)•需求条目:•RTP/RTCP基本需求条目•RTP/RTCP包的字节顺序和对齐方式•RTP数据包格式•RTCP包结构与发送时间间隔•……•RTP使用UDP偶数端口号,RTCP使用下一个连续的奇数端口号•RTP的端口号从5000以上开始选择•RTP包没有长度域,RTP包依靠UDP提供长度指示•RTP包的处理•RTCP包的处理大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第10页需求分析(cont’d)OctetType765432101MV=2PXCC2MMPT3Msequencenumber4M5Mtimestamp6M7M8M9Msynchronizationsourceidentifier(SSRC)10M11M12M13Ocontributingsourceidentifiers(CSRC)14O15O16O17-nOCSRC……(一个RTP包头中最多可包含15个CSRC)可变长度MRTP包静荷(语音数据)大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第11页概要设计•概要设计(High-LevelDesign)•VERYIMPORTANTbutVERYHARD!•引言•目的,范围•子系统概述•功能区域分割•功能区域1,…,功能区域n•功能区域描述,数据结构描述,需求条目•逻辑接口•功能区域X到功能区域Y的接口•接口1,…,接口n大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第12页概要设计(cont’d)•举例:VoIP功能模块的划分•接口卡驱动(POTS卡驱动)PDRV•语音模块VOICE•呼叫控制CC•呼叫控制(FXS)CCFXS•呼叫控制(FXO)CCFXO•呼叫控制(H323)CCH323•网络接口NET•H.245ControlSignallingH245•H.225.0CallSignalling(Q.931)Q931•H.225.0RASRAS•跟踪告警信息处理INFO•ASN.1编解码ASN1•配置数据CFG•动态存储管理DMM•其他:虚拟操作系统,命令行接口VOS,OAM/CLI大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第13页概要设计(cont’d)•语音模块的功能区域划分:•模块控制功能区域•RTP会话管理功能区•RTP包转发功能区•RTCP包收发功能区和统计信息表•Note1:VoIP实时操作系统任务(Tasks)或进程(Processes)•控制任务(VOIPC)•语音任务(VOIPV)•网络任务(VOIPN)大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第14页概要设计(cont’d)驱动模块(PDRV)网络接口模块(NET)配置模块(CFG)INFO模块呼叫控制模块(CC)RTP包转发RTP会话管理内部语音端口交换表RTCP包收发RTCP统计信息表语音模块(VOICE)模块控制(配置/统计查询/跟踪监视)OAM子系统语音端口-会话关系表VOS子系统(消息转发/定时器)VOIP子系统其它模块VOIP子系统语音模块其它子系统大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第15页概要设计(cont’d)•功能区域1:模块控制功能区域•功能区域描述•语音模块类classVOIP_CVoice的定义•语音任务主进程函数task_VOIPVMain()•语音模块的初始化•消息的分发•语音模块的配置、统计查询、跟踪监视、出错信息报告大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第16页概要设计(cont’d)•需求条目•语音任务与消息队列的创建•语音模块对象(object)的建立•语音任务主进程函数完成如下的功能•语音模块的初始化•进入一个永久循环,进行消息分拣•接收消息的处理概述•消息分拣的原则•RTP会话管理•RTP包的转发•RTCP包的接收与发送•配置、跟踪监视、出错报告•VOS时钟超时大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第17页接口设计•接口设计(InterfaceDesign)•引言•目的,范围•系统概述•系统体系结构,子系统说明,子系统间接口机制•公共定义描述•消息结构,消息头,通用规则,公共参数定义•消息定义•消息名,方向,消息鉴别号,消息体大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第18页接口设计(cont’d)•公共单元编码•单元名,单元描述,单元值•共享数据区•数据名,数据描述,数据值域,使用机制,保护机制•函数接口•函数名1,…,函数名n•功能描述,输入量,输出量•信号量•信号量1,…,信号量n•信号量描述,使用机制,保护机制大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第19页接口设计(cont’d)•举例:VoIP•子系统间接口机制•VoIP子系统与其它子系统:•与TCP/UDP采用socket接口•与VOS采用函数接口•VoIP子系统内部各模块之间•与ASN1,CFG,DMM采用函数接口•其它子模块之间采用消息接口(通过VOS消息传递机制,以及VoIP内部消息分发机制)大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第20页详细设计•详细设计(Low-LevelDesign)•引言•目的,范围•功能区域分割•任务划分•任务设置,任务间调度策略•任务1名称,…,任务n名称•功能描述,优先级,输入项,输出项,处理过程描述大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第21页详细设计(cont’d)•功能区域设计•功能区域1,…,功能区域n•功能区域描述•模块1名称,…,模块n名称•模块描述,函数构成•函数1名称,…,函数n名称•函数原型,功能描述,输入参数,输出参数•调用者,全局数据,算法描述,伪码描述•数据字典•内存的需求,结构•消息,表格•其他数据结构大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第22页详细设计(cont’d)•举例:VoIP语音模块•给出数据结构(datastructures)•给出具体算法(algorithms)•写出函数原型(prototypes)•写出伪码描述(pseudo-code)•。。。。。。•系统详尽的详细设计能够使编码工作易于进行,软件蓝领可以据此进行“代码填写”大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第23页编码•编码(Coding/Implementation)•建立开发环境:•操作系统(OperatingSystem)•编程语言(ProgrammingLanguage)•编译器/连接器/调试器(Compiler/Linker/Debugger)•目标机/工控机(Target)•掌握编程规范•编写代码大型软件系统的开发介绍(DevelopmentofLargeSoftwareSystems)于忠德2002年11月于中国第24页编码(cont’d)•举例:VoIP软件开发•实时嵌入式软件(Real-Time,Embeddeds/w)•跨平台开发(Cross-PlatformDev)•Host