大型软件系统的开发介绍v.ppt

上传人:牧羊曲112 文档编号:6266287 上传时间:2023-10-11 格式:PPT 页数:60 大小:318.50KB
返回 下载 相关 举报
大型软件系统的开发介绍v.ppt_第1页
第1页 / 共60页
大型软件系统的开发介绍v.ppt_第2页
第2页 / 共60页
大型软件系统的开发介绍v.ppt_第3页
第3页 / 共60页
大型软件系统的开发介绍v.ppt_第4页
第4页 / 共60页
大型软件系统的开发介绍v.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《大型软件系统的开发介绍v.ppt》由会员分享,可在线阅读,更多相关《大型软件系统的开发介绍v.ppt(60页珍藏版)》请在三一办公上搜索。

1、大型软件系统的开发介绍(An Introduction to the Development of Large Software Systems,ver.02),于忠德 2003年3月中国成都Zhongde YuMarch 2003Chengdu,China,于忠德 2002年11月 于中国,第2页,大型软件系统的开发介绍,1.软件工程方面的考虑2.软件系统开发实例介绍,于忠德 2002年11月 于中国,第3页,1.软件工程方面的考虑,1.1 软件开发的生命周期Software Life Cycle 1.2 软件质量保证Software Quality Assurance,SQA1.3 软件开

2、发的方法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 Servi

3、ce)系统升级(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)负

4、责了解用户需求,确立研发方向形成 MRD(Marketing Requirement Document)举例:在路由器上实现IP电话功能企业局域网,租用电信专线,连接位于不同城市的总部与分部提供附加业务,在局域网内打电话,零话费!向局域网外打电话,只花本市话费!,于忠德 2002年11月 于中国,第7页,需求分析,需求分析(Requirement Specification)引言目的,范围 系统概述 系统体系结构,功能简单描述,数据流描述 运行需求 对硬件环境的需求,对软件环境的要求 需求分解 功能体划分,功能体1,功能体2,功能体n功能体描述,需求条目,于忠德 2002年11月 于中国,第8

5、页,需求分析(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页,概要

6、设计,概要设计(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网络接口NETH.245 Control SignallingH245H.22

7、5.0 Call Signalling(Q.931)Q931H.225.0 RASRAS跟踪告警信息处理INFOASN.1编解码ASN1配置数据CFG动态存储管理DMM其他:虚拟操作系统,命令行接口VOS,OAM/CLI,于忠德 2002年11月 于中国,第13页,概要设计(contd),语音模块的功能区域划分:模块控制功能区域 RTP会话管理功能区RTP包转发功能区RTCP包收发功能区和统计信息表Note1:VoIP 实时操作系统任务(Tasks)或进程(Processes)控制任务(VOIPC)语音任务(VOIPV)网络任务(VOIPN),于忠德 2002年11月 于中国,第14页,概要设

8、计(contd),于忠德 2002年11月 于中国,第15页,概要设计(contd),功能区域1:模块控制功能区域功能区域描述语音模块类 class VOIP_CVoice的定义语音任务主进程函数 task_VOIPVMain()语音模块的初始化消息的分发语音模块的配置、统计查询、跟踪监视、出错信息报告,于忠德 2002年11月 于中国,第16页,概要设计(contd),需求条目 语音任务与消息队列的创建语音模块对象(object)的建立语音任务主进程函数完成如下的功能语音模块的初始化 进入一个永久循环,进行消息分拣 接收消息的处理概述 消息分拣的原则 RTP会话管理 RTP包的转发 RTCP

9、包的接收与发送 配置、跟踪监视、出错报告 VOS时钟超时,于忠德 2002年11月 于中国,第17页,接口设计,接口设计(Interface Design)引言 目的,范围 系统概述 系统体系结构,子系统说明,子系统间接口机制 公共定义描述 消息结构,消息头,通用规则,公共参数定义消息定义消息名,方向,消息鉴别号,消息体,于忠德 2002年11月 于中国,第18页,接口设计(contd),公共单元编码单元名,单元描述,单元值共享数据区数据名,数据描述,数据值域,使用机制,保护机制函数接口函数名1,函数名n 功能描述,输入量,输出量信号量信号量1,信号量n信号量描述,使用机制,保护机制,于忠德

10、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页,详细设计

11、(contd),功能区域设计功能区域1,功能区域n功能区域描述模块1名称,模块n名称模块描述,函数构成函数1名称,函数n名称函数原型,功能描述,输入参数,输出参数调用者,全局数据,算法描述,伪码描述数据字典内存的需求,结构消息,表格其他数据结构,于忠德 2002年11月 于中国,第22页,详细设计(contd),举例:VoIP语音模块给出数据结构(data structures)给出具体算法(algorithms)写出函数原型(prototypes)写出伪码描述(pseudo-code)。系统详尽的详细设计能够使编码工作易于进行,软件蓝领可以据此进行“代码填写”,于忠德 2002年11月 于中

12、国,第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/2000Target:Intel Pentium x86 pro

13、cessorConnection:Ethernet 实时操作系统(RTOS)VxWorks集成开发环境(IDE)Tornado编程语言ANSI C&C+,于忠德 2002年11月 于中国,第25页,编码(contd),Cross-Platform Development,Host(Tornado Win NT),Target(x86),LAN(Ethernet),Download&Debug,于忠德 2002年11月 于中国,第26页,编码(contd),软件编程规范 1(for VoIP only)目的:为增加软件编码的一致性,减少程序员的理解误差适用范围:适用于标准CC+语言模块命名:RT

14、P(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;

15、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 VOI

16、P_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_”,然后是由两个以上单词形成的字符串,每个单词首字

17、母大写,其他字母小写,例如:pIppkt、pAccessList如果是全局指针变量,则添加小写的“g_”,例如:g_pIppkt函数和过程名:前缀为全小写的模块名称,中间为下划线,然后为由两个以上单词形成的字符串,每个单词首字母大写,其他字母小写。例如:vos_MsgCreate()、icmp_PktRecv()调试用的编译开关:首尾均为下划线的全大写字符串,具体格式是:下划线+子系统名称+下划线+模块名称+下划线+调试内容名称+DEBUG+下划线,例如:_IPF_IP_PACKET_DEBUG_SUPP_TCPUDP_UDP_DEBUG_,于忠德 2002年11月 于中国,第31页,编码(c

18、ontd),可理解性注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。源程序中关系较为紧密的代码应尽可能相邻,以形成一个相对独立的语意群。除非很有必要,不要使用难懂的技巧性很高的语句。,于忠德 2002年11月 于中国,第32页,编码(contd),语音模块代码voip_voice.cppvoip_voice_main.cppvoip_voice_rtp_session.cppvoip_voice_rtp_endpoint.cppvoip_voice_rtcp_packet.cppvoip_voice.hvoip_voice_defs.hvoip_voice_rtp_ses

19、sion.hvoip_voice_rtp_endpoint.hvoip_voice_rtcp_packet.hvoip_message_voice.h,于忠德 2002年11月 于中国,第33页,单元测试,单元测试(Unit Testing)编码完成后,测量每个程序单元(函数、算法等)侧重于程序单元的功能(function)与结构(structure)的正确性由每个developer亲自进行种类:白盒测试(White-Box Testing):保证代码结构编写无误黑白盒测试(Black-Box Testing):保证代码功能正确回归测试(Regression Testing):保证后续修改不影

20、响以前的代码需要驱动函数(Drivers)和桩函数(Stubs)有利于系统的逐步完成,于忠德 2002年11月 于中国,第34页,集成测试,集成测试(Integration Testing)完成单元测试之后,将各个功能模块连在一起进行测试侧重于程序模块之间接口(interface)的正确性,保证各个模块能够在一起正常工作由开发组内的所有developer来配合进行,于忠德 2002年11月 于中国,第35页,系统测试,系统测试(System Testing)对开发出的整个软件产品(或一定的功能部分)从使用者的角度进行测试侧重系统总体功能上的测试,一般不关注内部细节(也无从关注)一般由专门的测试

21、部门进行,软件开发人员不直接参与发现问题后,测试部门反馈给软件开发部门,后者针对问题进行分析,找到相应的责任人员进行改进,完成后再次提交测试部门进行测试,直到解决问题,于忠德 2002年11月 于中国,第36页,售后服务系统升级技术支持,售后服务(After-Sale Service)配合销售部门对用户进行服务,入使用培训、问题解答等系统升级(System Upgrade)软件版本升级、功能改进等技术支持(Technical Support)用户报告软件产品问题,组织开发人员修改软件,解决问题,提高性能等一般地,软件工程师使用其25工作时间,于忠德 2002年11月 于中国,第37页,1.2

22、软件质量保证,软件质量保证(Software Quality Assurance,SQA)定义:为保证软件产品和服务充分满足消费者要求的质量而进行的有计划、有组织的活动;目的:向用户及社会提供满意的高质量的软件产品;活动:含盖软件产品从产生到消亡的所有阶段;软件能力成熟度模型第二级(可重复级)的内容之一(SQA in SE CMM Level-2),于忠德 2002年11月 于中国,第38页,1.2 软件质量保证(contd),实行SQA的原因与软件的维护代价越来越高开发规程中应特别注重代码的质量严格遵循开发流程中的各项规章制度良好的职业素养 认真负责、方法得当每个developer都应树立良

23、好的质量意识,并掌握一定的质保方法明确的需求分析 详尽准确的设计 Design for Change细致的编码 注意编程规范!全面的单元测试与集成测试使用SQA工具,帮助提高代码质量,于忠德 2002年11月 于中国,第39页,1.2 软件质量保证(contd),SQA方法编程规范SQA工具静态工具:在程序运行之前检查代码PC-LINT 动态工具:在程序运行之中检查代码BoundsChecker,C-CoverSQA发现BUG的后续处理MR:Modification Request记录,分配,解决,跟踪,于忠德 2002年11月 于中国,第40页,PC-Lint,SQA工具简介之一PC-Lin

24、tPC-LINT是一种软件质量保证工具,即一种更加严格的编译器;可以查出普通compiler无法查出的错误,即那些虽然完全合乎语法要求,但很可能是潜在的、不易发现的错误;许多国内外大型专业软件公司(微软、华为)都把PC-LINT作为程序检查工具;在程序合入正试版本或交付测试之前一定要保证通过了PC-LINT检查。,于忠德 2002年11月 于中国,第41页,PC-Lint(contd),PC-LINT除了能指出简单语法错误,还能指出以下的错误:无法达到的语句没有进入循环没有被使用的变量函数参数从未使用没有赋值之前自动使用参数函数在有些地方有返回值,但在其他地方不返回函数调用在不同地方使得参数个

25、数不同错误使用结构指针模糊使用操作符优先级,于忠德 2002年11月 于中国,第42页,BoundsChecker,SQA工具简介之二BoundsChecker,于忠德 2002年11月 于中国,第43页,BoundsChecker(contd),BoundsChecker可以发现很多隐藏的、危害性极大的错误。如:无效的参数可疑的线程应用动态的内存越界操作内存分配冲突指向非法内存的指针静态的内存越界操作堆栈内存越界操作释放引起的内存泄漏重赋值引起的内存泄漏资源泄漏未赋值的指针数组下标越界指针越界函数指针指向非函数返回指向局部变量的指针,于忠德 2002年11月 于中国,第44页,BoundsC

26、hecker(contd),结合C-COVER一起使用 BoundsChecker是动态检查程序,即是在执行过程中发现错误。所以使用BoundsChecker检查程序时,应该保证能够覆盖所有代码,否则BoundsChecker不会发现未覆盖的代码中的错误。因此可以与C-Cover工具结合起来执行。,于忠德 2002年11月 于中国,第45页,C-Cover,SQA工具简介之三C-CoverWhat is C-Cover?A code coverage analyzer for programs written in the C and C+languages;C-Cover是一种进行软件覆盖测

27、试的辅助工具,可以帮助软件人员分析程序中函数和各种条件判断语句的执行情况。,于忠德 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通过它可以很快地发现未进行测试的代码,并且指出未进行测试的代码在源程序中的位置,因此可以

28、提高单元测试的效率。,于忠德 2002年11月 于中国,第47页,1.3 软件开发的方法,面向对象的方法(Object-Oriented Methodology)OOA:Object-Oriented AnalysisOOD:Object-Oriented DesignUML/Rational RoseDesign PatternOOP:Object-Oriented ProgrammingC+,JAVA,于忠德 2002年11月 于中国,第48页,1.3 软件开发的方法(contd),结构化的方法(Structural Approach)Modular Analysis/Design,于忠德

29、 2002年11月 于中国,第49页,2.软件系统开发实例介绍,2.1 实时嵌入式软件(路由器协议实现)Real-Time,Embedded SoftwareNetwork Routers/Protocols2.2 互联网应用软件(电子商务平台)Internet Application SoftwareE-Commerce Platform,于忠德 2002年11月 于中国,第50页,2.1 实时嵌入式软件(路由器协议实现),路由器是互联网络的核心组成设备之一主要功用是转发信息包(packet)功能强大,协议丰富,配置灵活两大部分:硬件 软件最具特色的部分是其软件:Cisco:IOS(Inte

30、rnetworking 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 传输层(

31、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),网卡等物理

32、层,数据链路层开发特点:跨平台(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应用因而被定义为基于I

33、nternet标准,使用Web浏览器(Browser)作为客户端的多层应用符合MVC Design Pattern:separate presentation and business logicModel:DatabaseView:Web BrowserController:Web Server,Web Browser,Web Server,Database,于忠德 2002年11月 于中国,第56页,2.2 互联网应用软件(contd),美国eHI在线健康保险公司,于忠德 2002年11月 于中国,第57页,2.2 互联网应用软件(contd),提供Web平台,保险公司上网对保险公司:便于

34、被客户了解、使用对用户:便于比较各个公司、不同险种,选择购买最适当的健康保险覆盖美国50个州,几十家保险公司产品线:个人险种(Individual,IFP)小团体险种(Small Group,SBG)补充险种(Medical Suplement,MS)牙医险种(Dental,DT)旅行险种(Travel,TRV)学生险种(Student,ST),于忠德 2002年11月 于中国,第58页,2.2 互联网应用软件(contd),WEB平台所涉及的计算机领域操作系统:Windows,UNIX WEB技术:J2EE(Java 2 Enterprise Edition)Java 2 企业版J2SE(J

35、ava 2 Standard Edition)-Java 2 标准版JSP(Java Server Page)for dynamic web pageServlet(running on server)Applet runs on browserXML(Extensible Markup Language)more powerful than HTML,用户专用内容定义HTML(Hyper-Text Markup Language)网页定义JavaScript(Java脚本语言)No JavaBean/EJBWeb Server:WebLogic(commercial),Tomcat(free),于忠德 2002年11月 于中国,第59页,2.2 互联网应用软件(contd),数据库:Oracle 8网络协议:超文本传输协议HTTP(Hyper Text Transfer Protocol)请求响应模式(Request/Response)RFC2616/RFC1945(Request For Comments),于忠德 2002年11月 于中国,第60页,The End,谢谢!(Thank You!),

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号