资源描述
软件开发流程 软件开发流程概述n 项目:l 需求来自某个别用户,定制性能l 政府、企业、基金项目l 金土资源、myPKIn 产品: l 需求来自某类用户,不单独定制l Windows 1、可行性分析做不做?n 目的:为决策提供依据n 要求:真实、全面与重点兼顾n 内容:l 市场可行性:成熟?对手?用户? l 政策可行性:盗版软件?l 技术可行性:核心技术?时间?l 成本收益分析:办公、工资、培训、维护l SWOT分析: - Strengths, Weaknesses, Opportunities, Threats SWOT分析n Strengthsl 技术技能优势:l 资产优势:有形(先进设施)、无形(品牌)l 人力资源优势:l 组织体系优势l 竞争能力:开发周期,营销网络n Weaknesses l 缺乏核心技能技术?l 缺乏有竞争力的资产资源(包括人力)l n Opportunities 确认评价每个重要机会l 客户群的扩展l 市场壁垒l 并购竞争对手?l 向其他地理区域扩张?n Threatsl 市场内的竞争对手l 市场增值率l 汇率和外贸政策l 市场需求减少l 经济危机,国家调控政策 2、需求分析有所为有所不为n 重要性:n 难点:l 用户需求不断改变、交流理解有误差n 内容: l 功能需求l 性能指标l 环境需求:软、硬件环境l 界面需求:人机交互方式n 使用工具:Rational Rose、Visio 3、系统设计架构师n 软件体系结构属于系统设计n 可分两个阶段:总体设计和详细设计n 总体设计:l 需求分析的结果软件体系构架、结构l 复杂系统模块进行功能划分、建立层次结构n 详细设计: l 各个模块的功能设计 3、系统设计流程 3、系统设计内容 系统设计用户界面设计n 用户界面类型l 对话框:计算器l 文档:officel 浏览器:outlookl 其他,如游戏界面n 界面设计 l 人机界面就是系统本身 3、系统设计界面设计原则n 实用、直观、简洁、生动n 对用户友好:符合习惯、及时反馈信息n 风格一致:Word Powerpointn 错误处理:提示、撤销等n 帮助:n 尽量减少非必要信息 3、系统设计数据库设计n 目的:设计表结构存储、操作数据n 步骤,分两步:l 抽象:客观对象抽象出 实体和联系 模型- Entity-Relationshipl 将 (概念)模型转化为实际数据库系统支持的数据模型(物理模型)n 数据库设计范式 l 1NF、2NF、3NF、BCNFl 使得添加、更新、删除时少发生错误n 工具:l PowerDesigner 4、模块设计n 模块指系统的各功能部件n 模块化降低开发、测试、维护的代价n 如何划分模块:没有标准答案n 模块设计的原则l 接口公开、内部实现隐藏 l 高内聚:模块内部关联度高。如果不高?l 低耦合:模块之间依赖程度应该低。高?n 模块设计内容l 接口(外)、数据结构+算法(内) 4、模块设计OOP设计n 类的抽象n 类的结构层次:继承、依赖n 类的属性、定义n 类的实现 5、模块设计数据结构和算法n 设计理念l 为那种应用服务?l 时间优先还是空间优先?l 熟悉哪些算法或数据结构n 一般过程 l 先设计全局数据结构、再局部数据结构l 优先使用已有、成熟、合适的,再考虑自行设计l 满足性能即可,不满足,再优化 6、编码n 语言l Java:面向对象、分布式、解释型、可移植、多线程,- J2SE, J2EE,J2MEl .Net: 健壮、安全、统一、开发简单- CLR(Common Language Runtime): 核心,类似虚拟机,负责代码执行、内存管理、安全等- Framework:平台基础 - C#, C+,l Unix/Linux 6、编码编码规范 n 目标:l 易读、风格统一、安全,可维护移植n 内容:l 命名l 代码书写格式 l 其他如函数、变量等的设置要求 6、编码开发方法n 一种软件开发方法:极限编程XP (eXtreme Programming)l Kent Beck:1996l 理念:交流、朴素、反馈、勇气、尊重l 将复杂的开发过程分解为 许多相对简单的小周期。积极交流反馈,让涉众清楚开发进度、问题、困难,并及时调整。相互尊重! l 极限:把所有强调的思想、方法做到最好,其他忽略;n RUPn Agilen Scrum 6、编码源代码控制n 版本管理l 人员离开变动?如何记录重要更新?多个版本出现,管理版本的变化?对各个小组的子模块管理?保留修改轨迹,便于撤销错误的改动?n 常用工具:l VSS, Microsoft Visual SouceSafe l CVS, Concurrent Versions System, - Open source 7、软件测试n 定义(Myers,软件测试艺术):l 为了发现错误而执行程序的过程n 目的:保证软件质量n 时机:在软件交付用户或投入运行之前n 经验:错误越迟被发现,调试难度越大。n 阶段: l 单元测试、集成测试、系统测试、用户测试 7、软件测试n 单元测试l 由开发者编写一段代码,检验程序基本功能是否正确。l 测试的单元:类、函数。- 例如装配电脑,先测试显卡、硬盘、光驱等 7、软件测试n 集成测试:自顶向下l 桩模块:模拟真模块,提供数据l 建立测试驱动模块:以程序真正的主模块为驱动模块,替换某桩模块,输入数据,检测输出是否正确 l 回归测试:做一定修改后,再次由测试部门进行测试 7、软件测试n 集成测试:自底向上l 组织模块群:将部分底层模块组装成实现某个功能的模块群l 建立测试驱动模块:对上一步组装的模块群开发一个测试程序,输入数据,测试输出是否正确 7、软件测试系统测试n 概念:将完整的软件及其所依赖的软硬件环境整合,进行测试n 内容:l 性能、负载l 黑盒测试:不关心内部,只看结果是否正确 l 白盒测试:结构或逻辑测试,检验内部功能是否按规定正确工作。l 单元测试通常是白盒测试,而集成测试和系统测试往往是黑盒测试 7、软件测试测试工具 n 单元测试:xUnit(CppUnit, Junit, Nunit)n 黑盒:l 功能测试:Rational SQA Robotl 性能测试: Rational SQA Loadn 白盒测试: l 内存泄露:Rational Purifyl 代码覆盖率:Rational Purecoveragel 代码性能:Rational Quantifyn 测试管理:Rational Test Manager 8、结项n 安装盘的制作l InstallShield, Acresso公司,事实标准l VisioStudio.Net 发布程序n 版权保护l 加密:序列号n 说明书帮助文档制作 l HLP,早期,Microsoft Help Workshopl CHM, 1998年推出, Microsoft Html Help Workshop 8、软件维护n 未发现的Bugn 需求改变n 版本升级兼容n 售后培训n Dimensions of software complexityHigher 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 SystemDefense Weapon SystemTelecom SwitchCASE Tool National Air TrafficControl SystemEnterprise IS(Family of ISApplications)CommercialCompilerBusinessSpreadsheet IS ApplicationDistributed Objects (Order Entry)Small ScientificSimulation Large-ScaleOrganization/EntitySimulation An average software project: - 5-10 people - 10-15 month duration - 3-5 external interfaces - Some unknowns it will be a question of complexity.Bill Raduchel, Chief Strategy Officer, Sun Microsystems
展开阅读全文