软件详细设计目的 软件详细设计编写目的
摘要:什么是软件设计,其目的是什么软件设计出现的较早。由于早期程序变得越来越大,那么模块化程序,让不同的开发人员相互配合就形成了一个主题。多个程序员之间要遵从一定的规范进行编程,然后相互调用,最终使用各个模...
发布日期:2020-09-04什么是软件设计,其目的是什么
软件设计出现的较早。
由于早期程序变得越来越大,那么模块化程序,让不同的开发人员相互配合就形成了一个主题。
多个程序员之间要遵从一定的规范进行编程,然后相互调用,最终使用各个模块进行组合。
这种最早的形式也伴随着新的面向过程语言的出现。
软件设计的原始目的是非常简单的,就是我们要去理解一个完成的功能(软件的雏形),然后把不同的功能分化成细节的模块,然后使用一个团队进行协同开发。
在这个设计活动中又找出了诸多的开发方法论(如面向过程,面向对象及现在的面向切片等等),同时也发现了诸多开发的模型(如瀑布模型,原型模型,极限编程及敏捷开发等等)。
进而形成一个涉及到管理、设计等方面的细化工作,形成统一的软件工程学。
同时对于软件设计也相当细化和规范(如算法、时空代价——占用空间及占用运算时间的代价)。
所以现在基本上软件设计就是根据系统分师所指派的横块内进行细分(更小的模块),不同的方法论下,不同的开发模型下将功能块分为更细致的小模块(如面向对象的类,结构等)完成更细致的功能。
基本上来说,软件设计与程序设计被混为一谈,狭义的软件设计指就是程序设计,重点在于算法上的设计;广义上的软件设计其实就是对系统进行的设计,要考虑到将来软件的部署及要部署的硬件(包括软件方面与硬件方面)。
也就是说,程序员不管是在算法设计上还是程序设计上都是称自己软件设计,而系统分师也在设计整个系统也称为软件设计。
这是由于习惯的问题而出现的两种理解——系统设计师与分析师设计的是整个软件系统,涉及内容巨大,从部署到软件性能功能移植性等各个方面的考虑,其目的就是构造一个当前适用并具有一定前瞻性、扩展性的软件系统来支撑整个或大部分公司运行的系统。
他们再把系统细分为子系统以对应公司或系统中某个相对独立的系统功能。
软件设计师把自身分派到的子系统任务再进行细分,实现不同的层与模块的调用(子系统可以理解为可以相互配合的一个完整的某个方面的功能),其目的就是将理解系统进而设计为可以开发的或进行开发准备的工作;而高程与程序员则对模块功能进行分析,然后进入到开发,开发出相应的功能模块。
他们所谓的软件设计设计模块内调用层次(如分层开发等),设计算法与程序以达到指定的功能要求或非功能要求。
所以软件设计在不同的范围内有不同的理解,出现这种混淆的原因也是由于软件规模的差别——让你构造一个系统时考虑的内容与构造一个工具软件所考虑的内容显然是不同的。
而有些需求是一个公司的整个系统或子系统,而有些只是让你开发一个工具或一个简单的网站而已。
所以各层次对于软件设计的理解也不尽相同。
基于上来说软件设计从大角度出发,其目的就是把理解变为可编程的文档。
或者可以认为包括在需求分析之内的。
也正是因为如此,虽然我们把软件设计挂在嘴上,但软件工程的流程中其实并不包括名词的严格定义。
软件工程中,我们按需求分析阶段、设计阶段、开发编程阶段与部署维护四个大的阶段。
需求分析阶段包含可行性分析,需求采集,需求分析(包含功能需求与非功能需求)几个过程,设计阶段包含概要设计、详细设计几个过程,而编码开发阶段就编码、测试(包含单元测试,集成测试等),而部署方面包含部署、验证、维护、迁移等各个过程,事实上对于软件设计的这个不太好的定义规避掉了。
所以软件设计方面的广义已逐渐被软件程所取代。
软件项目设计和开发的目的是什么呢?
设计和开发评审的目的是由一组有资格的人员对软件设计和开发的输出进行评价,以判断确定设计和开发的输出能否实现软件产品预先定义的规格,同时通过评审标识出与规格和标准的偏差。
它向管理部门提供充足的证据以证明 1)设计和开发的输出符合了其规格要求; 2)设计和开发的输出是否满足相关法律、法规以及企业标准的要求; 3)软件产品的更改得到了恰当地实施; 4)软件产品的更改只对那些规格发生了更改的系统区域有影响,没有引入新的问题。
概要设计和详细设计怎么写 知乎
撰写的设计文档主要分为:总体概要设计文档 + 详细设计文档,后简称为“概设”+“详设”。
总设和详设都应该包含的部分:(1) 需求:一般以产品的语言描述,这一块可以拷贝产品需求文档中的story list部分;(2) 名词解释(可选):非相关领域内的同学需要看到文档需要提前了解的一些概念性质的东西;(3) 设计目标:又分为功能目标和性能目标,功能目标一般是对产品需求的技术描述,性能目标是根据产品给出的数据对性能进行的评估。
一般来说,新服务必须要有性能目标一项,性能目标可能会影响设计方案。
除了都应该包含的部分,总体概要设计一般还包含:(1) 系统架构:一般来说会有个简单的架构图,并配以文字对架构进行简要说明;(2) 模块简介:架构图中如果有很多模块,需要对各个模块的功能进行简要介绍;(3) 设计与折衷:设计与折衷是总体概要设计中最重要的部分;(4) 潜在风险(可选);输出总体概要设计的时候,很多方案还是不确定的,需要在设计评审会议上确认。
总体概要设计重点在“方案折衷”,总体概要设计评审完毕之后,此时应该是所有方案都确认了,需要输出各模块的详细设计,详细设计重点在“详细”:(1)总体概要设计结论汇总(可选):达成一致的结论有个简要概述,说明详设是对这些结论的实现;(2)交互流程:简要的交互可用文字说明,复杂的交互建议使用流程图,交互图或其他图形进行说明;(3)数据库设计:这个是应该放在总设还是详设呢?(4)接口形式:有了数据库+接口+流程,别的同学拿到详设文档,基本也能够搞定了;(5)其他细节:例如公式等;理论上输出了详细设计之后,无论谁拿到了这个详设文档,都是能够完成该项目的。
个人实践分享:一、 大图(1) 大系统或复杂流程,其架构图或者流程图会非常大,经常比A4纸或word的一页大很多,此时不宜在word中直接贴图形,贴了也看不清,建议将图放在wiki上,文档中直接贴链接;(2) 一定要保存viso或者其他图形的源文件,否则今后改动起来要重画,代价可想而知;二、 设计与折衷(1) 设计与折衷是总设中最重要的内容,总设评审中,主要就是讨论这些折衷的优劣;(2) 评审过后,不但要邮件周知结论,还要在总设中进行更新,说明最终决定使用了哪种方案,为什么使用这种方案;根据自己的经验,接手别人的模块、项目,拿到代码和文档,设计方案对我来说完全是个谜!!!(3) 有时候因为排期或者其他原因,不一定采用了最优的设计方案,此时更应该在总设中记录决策的过程与原因;(4) 最后,设计折衷是一个很好的自我辩解的机会:因为项目进度,或者历史遗留问题,我不得不采取了一个这样的设计,不要再骂我了。
三、 性能目标性能目标是新模块文档必不可少的一部分,很多项目对性能影响较大的话,也必须撰写性能目标,性能一般来说可能包含以下部分:(1) 日平均请求:一般来自产品人员的评估;(2) 平均QPS:日平均请求 除以 4w秒得出,为什么是4w秒呢,24小时化为86400秒,取用户活跃时间为白天算,除2得4w秒;(3) 峰值QPS:一般可以以QPS的2~4倍计算;互联网公司,产品迭代块,项目周期长,基本没有“文档”一说,但其实写好文档,对系统和项目未来的维护是非常有帮助的。
软件详细设计包含哪些内容??
目录1基本内容基本内容详细设计 详细设计的主要任务是设计每个模块的实现算法、所需的局部数据结构。
详细设计的目标有两个:实现模块功能的算法要逻辑上正确和算法描述要简明易懂。
主要任务:1.为每个模块确定采用的算法,选择某种适当的工具表达算法的过程,写出模块的详细过程性描述;2.确定每一模块使用的数据结构;3.确定模块接口的细节,包括对系统外部的接口和用户界面,对系统内部模块的接口,以及模块输入数据、输出数据及局部数据的全部细节。
在详细设计结束时,应该把上述结果写入详细设计说明书,并且通过复审形成正式文档。
交付给下一阶段(编码阶段)的工作依据。
4.要为每一个模块设计出一组测试用例,以便在编码阶段对模块代码(即程序)进行预定的测试,模块的测试用例是软件测试计划的重要组成部分,通常应包括输入数据,期望输出等内容。
详细设计的工具:1.图形工具利用图形工具可以把过程的细节用图形描述出来。
2.表格工具可以用一张表来描述过程的细节,在这张表中列出了各种可能的操作和相应的条件。
用某种高级语言(称之为伪码)来描述过程的细节。
简述系统化设计的目的和特征
系统设计是新系统的物理设计阶段。
根据系统分析阶段所确定的新系统的逻辑模型、功能要求,在用户提供的环境条件下,设计出一个能在计算机网络环境上实施的方案,即建立新系统的物理模型。
中文名系统设计外文名System design设 计软件系统设 计层次结构系统设计原则可扩展性原则系统设计原则易用性原则系统设计原则阶段开发原则这个阶段的任务是设计软件系统的模块层次结构,设计数据库的结构以及设计模块的控制流程,其目的是明确软件系统"如何做"。
这个阶段又分两个步骤:概要设计和详细设计。
概要设计解决软件系统的模块划分和模块的层次机构以及数据库设计;详细设计解决每个模块的控制流程,内部算法和数据结构的设计。
这个阶段结束,要交付概要设计说明书和设计说明,也可以合并在一起,称为设计说明书。
在系统分析的基础上,设计出能满足预定目标的系统的过程。
系统设计内容主要包括:确定设计方针和方法,将系统分解为若干子系统,确定各子系统的目标、功能及其相互关系,决定对子系统的管理体制和控制方式,对各子系统进行技术设计和评价,对全系统进行技术设计和评价等。
图中表示系统设计的各个步骤。
系统设计通常应用两种方法:一种是归纳法,另一种是演绎法。
应用归纳法进行系统设计的程序是:首先尽可能地收集现有的和过去的同类系统的系统设计资料;在对这些系统的设计、制造和运行状况进行分析研究的基础上,根据所设计的系统的功能要求进行多次选择,然后对少数几个同类系统作出相应修正,最后得出一个理想的系统。
演绎法是一种公理化方法,即先从普遍的规则和原理出发,根据设计人员的知识和经验,从具有一定功能的元素集合中选择能符合系统功能要求的多种元素,然后将这些元素按照一定形式进行组合(见系统结构),从而创造出具有所需功能的新系统。
在系统设计的实践中,这两种方法往往是并用的。
阶段开发原则 系统框架和数据结构全面设计,具体功能实现分阶段进行。
网站的建设过程可以采取以下三期:第一期工程搭建网站的基本构架,实现电子商务网的大部分功能,初步实现网上交易;第二期工程实现网上竞价系统的全部功能;第三期工程实现网站在线的B to B 交易。
易用性原则 方便上网客户浏览和操作,最大限度地减轻后台管理人员的负担,做到部分业务的自动化处理。
业务完整性原则 对于业务进行中的特殊情况能够做出及时、正确的响应,保证业务数据的完整性。
业务规范化原则 在系统设计的同时,也为将来的业务流程制定了较为完善的规范,具有较强的实际操作性。
可扩展性原则 系统设计要考虑到业务未来发展的需要,要尽可能设计得简明,各个功能模块间的耦合度小,便于系统的扩展。
如果存在旧有的数据库系统,则需要充分考虑兼容性。
详细设计的设计工具是怎样的呢?
系统设计是新系统的物理设计阶段。
根据系统分析阶段所确定的新系统的逻辑模型、功能要求,在用户提供的环境条件下,设计出一个能在计算机网络环境上实施的方案,即建立新系统的物理模型。
中文名系统设计外文名System design设 计软件系统设 计层次结构系统设计原则可扩展性原则系统设计原则易用性原则系统设计原则阶段开发原则这个阶段的任务是设计软件系统的模块层次结构,设计数据库的结构以及设计模块的控制流程,其目的是明确软件系统"如何做"。
这个阶段又分两个步骤:概要设计和详细设计。
概要设计解决软件系统的模块划分和模块的层次机构以及数据库设计;详细设计解决每个模块的控制流程,内部算法和数据结构的设计。
这个阶段结束,要交付概要设计说明书和设计说明,也可以合并在一起,称为设计说明书。
在系统分析的基础上,设计出能满足预定目标的系统的过程。
系统设计内容主要包括:确定设计方针和方法,将系统分解为若干子系统,确定各子系统的目标、功能及其相互关系,决定对子系统的管理体制和控制方式,对各子系统进行技术设计和评价,对全系统进行技术设计和评价等。
图中表示系统设计的各个步骤。
系统设计通常应用两种方法:一种是归纳法,另一种是演绎法。
应用归纳法进行系统设计的程序是:首先尽可能地收集现有的和过去的同类系统的系统设计资料;在对这些系统的设计、制造和运行状况进行分析研究的基础上,根据所设计的系统的功能要求进行多次选择,然后对少数几个同类系统作出相应修正,最后得出一个理想的系统。
演绎法是一种公理化方法,即先从普遍的规则和原理出发,根据设计人员的知识和经验,从具有一定功能的元素集合中选择能符合系统功能要求的多种元素,然后将这些元素按照一定形式进行组合(见系统结构),从而创造出具有所需功能的新系统。
在系统设计的实践中,这两种方法往往是并用的。
阶段开发原则系统框架和数据结构全面设计,具体功能实现分阶段进行。
网站的建设过程可以采取以下三期:第一期工程搭建网站的基本构架,实现电子商务网的大部分功能,初步实现网上交易;第二期工程实现网上竞价系统的全部功能;第三期工程实现网站在线的B to B 交易。
易用性原则方便上网客户浏览和操作,最大限度地减轻后台管理人员的负担,做到部分业务的自动化处理。
业务完整性原则对于业务进行中的特殊情况能够做出及时、正确的响应,保证业务数据的完整性。
业务规范化原则在系统设计的同时,也为将来的业务流程制定了较为完善的规范,具有较强的实际操作性。
可扩展性原则系统设计要考虑到业务未来发展的需要,要尽可能设计得简明,各个功能模块间的耦合度小,便于系统的扩展。
如果存在旧有的数据库系统,则需要充分考虑兼容性。
软件工程的意义和作用
软件工程是计算机专业的一门重要的专业基础课,它对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义.1995年,Standish Group针对系统开发成功的研究表明,所有的开发项目中有32%的项目在它们结束之前被中止.此外多于一半的软件项目花费的成本相当于原来预算的2倍.软件工程只有42%的软件项目完成时达到了预期的范围和功能,事实上,许多系统只完成了部分预期的需求.因此,软件的开发是一个很困难的活动,要求很仔细的计划和执行.软件工程就是在这样的背景下,由许多计算机科学家经过多方面的探索和总结而成形的.目前发展十分迅速 近二十年来计算机软件已经成为现代科学研究和解决工程问题的基础,以及管理部门,生产部门,和服务行业中的关键因素,渗透到了各个领域,成为当今世界不可缺少的一部分.展望二十一世纪,软件仍将成为驱动任何事情从基础教育到遗传工程取得新进展的动力.学习研究工程化的软件开发方法,使开发过程更加规范.软件工程(SoftWare Engineering)的框架可概括为:目标、过程和原则。
(1)软件工程目标:生产具有正确性、可用性以及开销合宜的产品。
正确性指软件产品达到预期功能的程度。
可用性指软件基本结构、实现及文档为用户可用的程度。
开销合宜是指软件开发、运行的整个开销满足用户要求的程度。
这些目标的实现不论在理论上还是在实践中均存在很多待解决的问题,它们形成了对过程、过程模型及工程方法选取的约束。
(2)软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
软件工程过程主要包括开发过程、运作过程、维护过程。
它们覆盖了需求、设计、实现、确认以及维护等活动。
需求活动包括问题分析和需求分析。
问题分析获取需求定义,又称软件需求规约。
需求分析生成功能规约。
设计活动一般包括概要设计和详细设计。
概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。
详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。
实现活动把设计结果转换为可执行的程序代码。
确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。
维护活动包括使用过程中的扩充、修改与完善。
伴随以上过程,还有管理过程、支持过程、培训过程等。
(3)软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
开发一个软件什么是开发目标,什么是项目目标,什么是应用目标?
我的理解: 应用目标是指使用的层面要达到什么效果,这个是属于比较用户层面的,它与什么技术,什么配置无关。
就是说站在用户的角度,这软件要达到什么使用的效果。
项目目标是指为了完成上边这个应用目标,有哪些要做的,每项要做的事要达到什么目标,以及整体上的工作目标。
开发目标是在项目目标之下的具体某个模块,或整体若干个模块的开发任务要达到什么效果,以及时间要求,这个就更具体了,也更细节了。
开发,是指以荒地、矿山、森林、水力等自然资源为对象进行劳动,以达到利用的目的;开拓;发现或发掘人才、技术等供利用。
发掘、收集、整理、选择文化资源等。
...