,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,*,软件开发流程,软件开发流程概述,项目:,需求来自某个别用户,定制性能,政府、企业、基金项目,金土资源、,myPKI,产品:,需求来自某类用户,不单独定制,Windows,1,、可行性分析,做不做?,目的:为决策提供依据,要求:真实、全面与重点兼顾,内容:,市场可行性:,成熟?对手?用户?,政策可行性:盗版软件?,技术可行性:,核心技术?时间?,成本收益分析:,办公、工资、培训、维护,SWOT,分析,:,Strengths,Weaknesses,Opportunities,Threats,SWOT,分析,Strengths,技术技能优势:,资产优势:有形(先进设施)、无形(品牌),人力资源优势:,组织体系优势,竞争能力:开发周期,营销网络,Weaknesses,缺乏核心技能技术?,缺乏有竞争力的资产资源(包括人力),Opportunities,确认评价每个重要机会,客户群的扩展,市场壁垒,并购竞争对手?,向其他地理区域扩张?,Threats,市场内的竞争对手,市场增值率,汇率和外贸政策,市场需求减少,经济危机,国家调控政策,2,、需求分析,有所为有所不为,重要性:,难点,:,用户需求不断改变、交流理解有误差,内容:,功能需求,性能指标,环境需求:软、硬件环境,界面需求:人机交互方式,使用工具:,Rational Rose,、,Visio,3,、系统设计,架构师,软件体系结构属于系统设计,可分两个阶段:总体设计和详细设计,总体设计:,需求分析的结果,软件体系构架、结构,复杂系统模块进行功能划分、建立层次结构,详细设计:,各个模块的功能设计,3,、系统设计,流程,3,、系统设计,内容,系统设计,用户界面设计,用户界面类型,对话框:计算器,文档:,office,浏览器:,outlook,其他,如游戏界面,界面设计,人机界面就是系统本身,3,、系统设计,界面设计原则,实用、直观、简洁、生动,对用户友好:符合习惯、及时反馈信息,风格一致:,Word Powerpoint,错误处理:提示、撤销等,帮助:,尽量减少非必要信息,3,、系统设计,数据库设计,目的:设计表结构存储、操作数据,步骤,分两步:,抽象:客观对象抽象出 实体和联系 模型,Entity-Relationship,将(概念)模型转化为实际数据库系统支持的数据模型(物理模型),数据库设计范式,1NF,、,2NF,、,3NF,、,BCNF,使得添加、更新、删除时少发生错误,工具:,PowerDesigner,4,、模块设计,模块指系统的各功能部件,模块化降低开发、测试、维护的代价,如何划分模块:没有标准答案,模块设计的原则,接口公开、内部实现隐藏,高内聚:模块内部关联度高。如果不高?,低耦合:模块之间依赖程度应该低。高?,模块设计内容,接口,(,外,),、数据结构,+,算法,(,内,),4,、模块设计,OOP,设计,类的抽象,类的结构层次:继承、依赖,类的属性、定义,类的实现,5,、模块设计,数据结构和算法,设计理念,为那种应用服务?,时间优先还是空间优先?,熟悉哪些算法或数据结构,一般过程,先设计全局数据结构、再局部数据结构,优先使用已有、成熟、合适的,再考虑自行设计,满足性能即可,不满足,再优化,6,、编码,语言,Java,:面向对象、分布式、解释型、可移植、多线程,,J2SE,J2EE,J2ME,.Net:,健壮、安全、统一、开发简单,CLR(Common Language Runtime):,核心,类似虚拟机,负责代码执行、内存管理、安全等,Framework,:平台基础,C#,C+,Unix/Linux,6,、编码,编码规范,目标:,易读、风格统一、安全,可维护移植,内容:,命名,代码书写格式,其他如函数、变量等的设置要求,6,、编码,开发方法,一种软件开发方法:极限编程,XP(eXtreme Programming),Kent Beck,:,1996,理念:交流、朴素、反馈、勇气、尊重,将复杂的开发过程分解为 许多相对简单的小周期。积极交流反馈,让涉众清楚开发进度、问题、困难,并及时调整。相互尊重!,极限:把所有强调的思想、方法做到最好,其他忽略;,RUP,Agile,Scrum,6,、编码,源代码控制,版本管理,人员离开变动?如何记录重要更新?多个版本出现,管理版本的变化?对各个小组的子模块管理?保留修改轨迹,便于撤销错误的改动?,常用工具:,VSS,Microsoft Visual SouceSafe,CVS,Concurrent Versions System,Open source,7,、软件测试,定义(,Myers,软件测试艺术):,为了发现错误而执行程序的过程,目的:保证软件质量,时机:在软件交付用户或投入运行之前,经验:错误越迟被发现,调试难度越大。,阶段:,单元测试、集成测试、系统测试、用户测试,7,、软件测试,单元测试,由开发者编写一段代码,检验程序基本功能是否正确。,测试的单元:类、函数。,例如装配电脑,先测试显卡、硬盘、光驱等,7,、软件测试,集成测试:,自顶向下,桩模块:模拟真模块,提供数据,建立测试驱动模块:以程序真正的主模块为驱动模块,替换某桩模块,输入数据,检测输出是否正确,回归测试:做一定修改后,再次由测试部门进行测试,7,、软件测试,集成测试:,自底向上,组织模块群:将部分底层模块组装成实现某个功能的模块群,建立测试驱动模块:对上一步组装的模块群开发一个测试程序,输入数据,测试输出是否正确,7,、软件测试,系统测试,概念:将完整的软件及其所依赖的软硬件环境整合,进行测试,内容:,性能、负载,黑盒测试:不关心内部,只看结果是否正确,白盒测试:结构或逻辑测试,检验内部功能是否按规定正确工作。,单元测试通常是白盒测试,而集成测试和系统测试往往是黑盒测试,7,、软件测试,测试工具,单元测试:,xUnit,(,CppUnit,Junit,Nunit,),黑盒:,功能测试:,Rational SQA Robot,性能测试:,Rational SQA Load,白盒测试:,内存泄露:,Rational Purify,代码覆盖率:,Rational Purecoverage,代码性能:,Rational Quantify,测试管理:,Rational Test Manager,8,、结项,安装盘的制作,InstallShield,Acresso,公司,事实标准,VisioStudio.Net,发布程序,版权保护,加密:序列号,说明书帮助文档制作,HLP,,早期,,Microsoft Help Workshop,CHM,1998,年推出,,Microsoft Html Help Workshop,8,、软件维护,未发现的,Bug,需求改变,版本升级兼容,售后培训,Dimensions of software complexity,Higher technical complexity,-Embedded,real-time,distributed,fault-tolerant,-Custom,unprecedented,architecture reengineering,-High performance,Lower technical complexity,-Mostly 4GL,or component-based,-Application reengineering,-Interactive performance,Higher management,complexity,-Large scale,-Contractual,-Many stake holders,-“Projects”,Lower management,complexity,-Small scale,-Informal,-Single stakeholder,-“Products”,Defense,MIS System,Defense Weapon System,Telecom,Switch,CASE Tool,National Air Traffic,Control System,Enterprise IS,(Family of IS,Applications),Commercial,Compiler,Business,Spreadsheet,IS Application,Distributed Objects,(Order Entry),Small Scientific,Simulation,Large-Scale,Organization/Entity,Simulation,An average software project,:,-5-10 people,-10-15 month duration,-3-5 external interfaces,-Some unknowns&risks,Embedded,Automotive,Software,IS Application,GUI/RDB,(Order Entry),CASE:,computer aided software engineering,Forces in Software,Technology churn,Our enemy is complexity,and its our goal to kill it.,Jan Baan,Performance,Throughput,Capacity,Availability,Fail safe,Fault tolerance,Functionality,Cost,Compatibility,Resilience,The challenge over the next 20 years will not be speed or cost or performance;,it will be a question of complexity.,Bill Raduchel,Chief Strategy Officer,Sun Microsystems,