资源描述
软件/系统设计总体思路
一、概念
软件设计本质就是针对软件需求,建立模型,通过将模型映射为软件,来解决实际问题。因而软件设计需要解决核心问题是建立适当模型,使得可以开发出满足顾客需求软件产品,并具备如下特性:
· 灵活性(Flexibility)
· 有效性(Efficiency)
· 可靠性(Reliability)
· 可理解性(Understandability)
· 维护性(Maintainability)
· 重用性(Reuse-ability)
· 适应性(Adaptability)
· 可移植性(Portability)
· 可追踪性(Traceability)
· 互操作性(Interoperability)
因而,软件设计并没有一套放之四海而皆准办法和模板,需要咱们设计开发人员在软件设计开发过程中针对软件项目特点进行沟通和协调,整顿出对软件项目团队行之有效方式,进行软件设计。并保障软件设计文档一致性,完整性和可理解性。
咱们经常听到这样话:
· “设计文档没有用,是用来糊弄客户和管理层文档”;
· “用来写设计文档时间,我开发早就做完了”;
· “项目紧张,没有时间做设计”;
这些言论,并不是对的观念,依照软件项目实际状况,软件开发设计团队可以商定设计文档详细限度。项目团队需要保障设计文档完整性和一致性,在项目进度紧张状况下,软件设计文档可以更初略某些;在项目时间充裕状况下,有关文档可以更为详尽。但是在项目开发过程中,需要软件设计开发团队对于设计文档有共同理解。
二、设计文档分类与使用
普通来说,作为软件项目,咱们需要有这几类文档
· 需求阐明文档
· 功能设计文档
· 系统架构阐明书
· 模块概要设计文档
· 模块详细设计文档
就像我之前说到,在某个软件团队,对于以上文档规定是可以完全不同,在简朴项目中,也许所有类型文档放在一种文档中进行阐明;在复杂项目中,每一类文档也许都要写几种文档;而在最极端状况下,也许每一类文档都能装订成几册。因而,在咱们软件设计和开发人员心目中需要明确是:文档并不是咱们进行设计目的,也不是咱们设计过程中额外工作。
软件设计文档是咱们在软件设计开发过程中形成,用来在软件设计开发团队内部以及与各干系人之间进行沟通文档,这些文档记录了软件项目中各种知识,方案思路、以及各种决策意见。
三、软件设计开发过程
下面咱们就软件设计开发过程中必要要完毕工作进行梳理,而咱们需要注意到,这些需要完毕工作,在不同开发流程模型指引下也许有不同步间规定,而咱们需要关注是在这个阶段内需要完毕工作,以及这个阶段内咱们需要沟通人员。
1. 需求分析
需求分析是咱们进行任何一种软件项目设计开发过程中都必要要完毕工作。
这个工作普通与客户一起完毕。在不同项目中,这个“客户”也许来自真正购买产品顾客,使用系统顾客,也有也许来自团队某个人员,如产品经理等。软件设计开发团队参加成员依照项目不同规模,则参加人员也有所不同。原则上,设计开发人员参加时间点越早,对于需求理解和把握会更好。这个阶段,普通需要软件架构师参加其中。从资源优化角度来说,开发人员不必参加需求分析,但需要理解需求。
需求分析成果普通咱们需要使用需求阐明文档来描述,当前主流需求描述办法涉及:顾客例图、顾客故事等方式。这些方式有所不同侧重,其核心思想就是描述清晰顾客使用场景。但无论采用何种方式,进行需求描述,需求阐明需要明确如下几点:
· 所需要开发软件系统边界
· 系统所有有关及使用人员角色
· 系统核心使用场景
· 系统规模、性能规定以及布置方式等非功能性需求
2. 功能设计
功能设计与需求分析差不多同步在开展,在诸多软件项目中,对于功能设计不是特别注重。但对于某些软件项目而言,这是一种相称重要工作。对于重要是顾客界面软件项目来说,功能设计可以看作是画出原型界面,描述使用场景,获得顾客承认过程。而对于没有界面软件项目来说,则功能设计与需求分析区别更为模糊。
参加人员与需求分析参加人员类似,架构师更侧重于参加此类工作,并给与某些实现层面判断和取舍。
功能设计需要明确核心是:
· 系统行为
3. 系统架构设计
系统架构设计是一种非常依赖于经验设计过程。需要依照软件项目特定功能需求和非功能性需求进行取舍,最后获得一种满足各方规定系统架构。系统架构不同,将很大限度上决定系统开发和维护与否可以较为容易适应需求变化,以及适应业务规模扩张。
架构设计工作中,顾客参加限度很低。软件开发团队中需求人员参加限度很低,但团队中所有核心设计和开发人员都应当参加其中,并达到一致意见。
架构设计重要成果,是将系统不同视图予以呈现,并使之贯彻到开发中:
· 系统开发视图及技术路线选取
· 系统逻辑视图
· 系统布置视图
· 系统模块视图
· 系统领域模型
在软件开发过程中,系统架构不是一成不变,随着设计人员和开发人员对于系统理解不断进一步,系统架构也会发生演化。在软件项目中,架构设计是开发团队沟通统一语言,设计文档必要要随着系统变化进行更新,保障开发团队对于系统理解和沟通一致性。
4. 模块/子系统概要设计
模块/子系统概要设计,由架构师参加,核心设计和开发人员负责方式进行。
在概要设计工作中,咱们需要在架构拟定开发路线指引下,完毕模块功能实现核心设计工作。在概要设计阶段,需要关注于模块核心功能和难点进行设计。这个过程中更多推荐采用UML来进行概要设计,需要进行:
· 模块实现机制设计
· 模块接口设计
· 核心类设计
· 画出时序图
· 交互图等。
5. 模块详细设计
在瀑布式开发模型中,模块详细设计会规定比较严格,将所有类进行详细设计。据我所知,除了某些对于系统健壮性规定非常严格软件项目,如国防项目,金融项目还规定有详细设计文档之外。其她项目大多采用其她方式来解决这样工作,如自动化测试等。
综上所述,软件设计文档作为软件开发团队沟通、理解、知识共享手段,具备非常重要意义。而依照软件团队规模,对于文档上承载信息详细限度可以有不同限度规定。咱们软件团队对于*如何使用设计文档有一种统一理解,并坚持更新设计文档*,这就是软件设计最佳实践!
软件设计所需要知识与技能
· UML 统一建模语言
· 软件工程
· 面向对象编程 OOP
· 操作系统
· 数据库原理
· 设计模式
· 沟通能力
展开阅读全文