软件方案设计范文.doc_第1页
软件方案设计范文.doc_第2页
软件方案设计范文.doc_第3页
软件方案设计范文.doc_第4页
软件方案设计范文.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

软件方案设计范文 自从1968年提出“软件工程”概念以来软件开发领域对于借鉴传统工程的原则、方法以提高质量、降低成本的探索就从未停止过而在这个过程中提出了许多不同的软件开发模型典型的有:瀑布式快速原型法以及迭代式开发等下面是小编整理的软件方案设计欢迎阅读参考! 瀑布式模型 是由W.W.Royce在1970年最初提出的软件开发模型在瀑布模型中开发被认为是按照需求分析设计实现测试(确认)集成和维护顺序的进行 快速原型法 快速原型模型的第一步是建造一个快速原型实现客户或未来的用户与系统的交互用户或客户对原型进行评价进一步细化待开发软件的需求通过逐步调整原型使其满足客户的要求开发人员可以确定客户的真正需求;第二步则在第一步的基础上开发客户满意的软件产品 迭代式开发 在迭代式开发方法中整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目被称为一系列的迭代每一次迭代都包括了需求分析、设计、实现与测试采用这种方法开发工作可以在需求被完整地确定之前启动并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作再通过客户的反馈来细化需求并开始新一轮的迭代 不同的开发模型对于设计阶段的工作要求也不尽相同相对来说瀑布式模型中对于设计文档的粒度要求得最细而快速原型法对于设计的要求一般来说比较弱迭代式开发在每一阶段中的设计文档工作量都相对较少但在软件开发完成后最终的设计文档完善程度要比快速原型法的好 软件设计的总体思路 软件设计的本质就是针对软件的需求建立模型通过将模型映射为软件来解决实际问题因此软件设计需要解决的核心问题是建立合适的模型使得能够开发出满足用户需求的软件产品并具有以下特性: 灵活性(Flexibility) 有效性(Efficiency) 可靠性(Reliability) 可理解性(Understandability) 维护性(Maintainability) 重用性(Reuseability) 适应性(Adaptability) 可移植性(Portability) 可追踪性(Traceability) 互操作性(Interoperability) 因此软件设计并没有一套放之四海而皆准的方法和模板需要我们的设计开发人员在软件的设计开发过程中针对软件项目的特点进行沟通和协调整理出对软件项目团队的行之有效的方式进行软件的设计并保障软件设计文档的一致性完整性和可理解性 谁来进行软件设计 在我们开发人员中有很多人这样理解:“软件设计文档就是软件架构师和设计人员的事情”其实不然设计文档是整个软件开发团队的产出其中有些设计文档由架构师或者设计人员给出有些文档由开发人员给出这并没有一定的区分 最佳实践 我们经常听到这样的话: “设计文档没有用是用来糊弄客户和管理层的文档”; “用来写设计文档的时间我的开发早就做完了”; “项目紧张没有时间做设计”; 这些言论并不是正确的观念根据软件项目的实际情况软件开发设计团队可以约定设计文档的详细程度项目团队需要保障设计文档的完整性和一致性在项目进度紧张的情况下软件设计文档可以更初略一些;在项目时间充裕的情况下相关文档可以更为详尽但是在项目开发过程中需要软件设计开发团队对于设计文档有共同的理解 设计文档分类与使用 通常来说作为软件项目我们需要有这几类文档 需求说明文档 功能设计文档 系统架构说明书 模块概要设计文档 模块详细设计文档 就像我之前说到的在某个软件团队对于以上的文档的要求是可以完全不同的在简单项目中可能所有类型的文档放在一个文档中进行说明;在复杂项目中每一类文档可能都要写几个文档;而在最极端的情况下可能每一类文档都能装订成几册因此在我们软件设计和开发人员心目中需要明确的是:文档并不是我们进行设计的目标也不是我们设计过程中额外的工作 软件设计文档是我们在软件设计开发过程中形成的用来在软件设计开发团队内部以及与各干系人之间进行沟通的文档这些文档记录了软件项目中的各种知识方案的思路、以及各种决策意见 下面我们就软件设计开发过程中必须要完成的工作进行梳理而我们需要注意到这些需要完成的工作在不同的开发流程模型的指导下可能有不同的时间要求而我们需要关注的是在这个阶段内需要完成的工作以及这个阶段内我们需要沟通的人员 需求分析 需求分析是我们进行任何一个软件项目设计开发过程中都必须要完成的工作 这个工作通常与客户一起完成在不同的项目中这个“客户”可能来自真正的购买产品的用户使用系统的用户也有可能来自团队的某个人员如产品经理等软件设计开发团队的参与成员根据项目的不同规模则参与的人员也有所不同原则上设计开发人员参与的时间点越早对于需求的理解和把握会更好这个阶段通常需要软件架构师参与其中从资源优化的角度来说开发人员不必参与需求分析但需要理解需求 需求分析的结果通常我们需要使用需求说明文档来描述目前主流的需求描述方法包括:用户例图、用户故事等方式这些方式有所不同的侧重其核心思想就是描述清楚用户的使用场景但无论采取何种方式进行需求的描述需求说明需要明确以下几点: 所需要开发的软件系统边界 系统所有的相关及使用人员角色 系统关键的使用场景 系统规模、性能要求以及部署方式等非功能性需求 功能设计 功能设计与需求分析差不多同时在开展在很多软件项目中对于功能设计不是特别重视但对于某些软件项目而言这是一个相当重要的工作对于主要是用户界面的软件项目来说功能设计可以看作是画出原型界面描述使用场景获得用户认可的过程而对于没有界面的软件项目来说则功能设计与需求分析的区分更为模糊 参与的人员与需求分析的参与人员类似架构师更侧重于参与此类工作并给与一些实现层面的判断和取舍 功能设计需要明确的核心是: 系统的行为 系统架构设计 系统架构设计是一个非常依赖于经验的设计过程需要根据软件项目的特定功能需求和非功能性需求进行取舍最终获得一个满足各方要求的系统架构系统架构的不同将很大程度上决定系统开发和维护是否能够较为容易的适应需求变化以及适应业务规模扩张 架构设计工作中用户参与程度很低软件开发团队中的需求人员参与程度很低但团队中的所有核心设计和开发人员都应该参与其中并达成一致意见 架构设计的主要成果是将系统的不同视图予以呈现并使之落实到开发中: 系统开发视图及技术路线选择 系统逻辑视图 系统部署视图 系统模块视图 系统的领域模型 在软件开发过程中系统的架构不是一成不变的随着设计人员和开发人员对于系统的理解不断深入系统的架构也会发生演化在软件项目中架构设计是开发团队沟通的统一语言设计文档必须要随着系统的变化进行更新保障开发团队对于系统的理解和沟通的一致性 模块/子系统概要设计 模块/子系统的概要设计由架构师参与核心设计和开发人员负责的方式进行 在概要设计工作中我们需要在架构确定的开发路线的指导下完成模块功能实现的关键设计工作在概要设计阶段需要关注于模块的核心功能和难点进行设计这个过程中更多推荐的采用UML来进行概要设计需要进行: 模块实现机制设计 模块接口设计 关键类设计 画出时序图 交互图等 模块详细设计 在瀑布式开发模型中模块的详细设计会要求比较严格将所有类进行详细设计据我所知除了一些对于系统健壮性要求非常严格的软件项目如国防项目金融项目还要求有详细设计文档之外其他的项目大多采用其他方式来处理这样的工作如自动化测试等 综上所述软件设计文档作为软件开发团队的沟通、理解、知

温馨提示

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

评论

0/150

提交评论