软件工程有哪些主要阶段?每个阶段的主要工作是什么
1问题定义 问题定义阶段必须回答的关键问题:“要解决的问题是什么?”如果不知道问题是什么就试图解决这个问题,显然是盲目的,只会白白浪费时间和金钱,最终得出的结果很可能是毫无意义的。
尽管确切地定义问题的必要性是十分明显的,但是在实践中它却可能是最容易被忽视的一个步骤。
通过问题定义阶段的工作,系统分析员应该提出关于问题性质、工程目标和规模的书面报告。
通过对系统的实际用户和使用部门负责人的访问调查,分析员扼要地写出他对问题的理解,并在用户和使用部门负责人的会议上认真讨论这份书面报告,澄清含糊不精的地方,改正理解不正确的地方,最后得出一份双方都满意的文档。
问题定义阶段是软件生存周期中最简短的阶段,一般只需要一天甚至更少的时间。
2可行性研究 这个阶段要回答的关键问题:“对于上一个阶段所确定的问题有行得通的解决办法吗?”为了回答这个问题,系统分析员需要进行一次大大压缩和简化了的系统分析和设计的过程,也就是在较抽象的高层次上进行的分析和设计的过程。
可行性研究应该比较简短,这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。
在问题定义阶段提出的对工程目标和规模的报告通常比较含糊。
可行性研究阶段应该导出系统的高层逻辑模型(通常用数据流图表示),并且在此基础上更准确、更具体地确定工程规模和目标。
然后分析员更准确地估计系统的成本和效益,对建议的系统进行仔细的成本/效益分析是这个阶段的主要任务之一。
可行性研究的结果是使用部门负责人做出是否继续进行这项工程的决定的重要依据,一般说来,只有投资可能取得较大效益的那些工程项目才值得继续进行下去。
可行性研究以后的那些阶段将需要投入要多的人力物力。
及时中止不值得投资的工程项目,可以避免更大的浪费。
3需求分析 这个阶段的任务仍然不是具体地解决问题,而是准确地确定“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。
用户了解他们所面对的问题,知道必须做什么,但是通常不能完整准确地表达出他们的要求,更不知道怎样利用计算机解决他们的问题;软件开发人员知道怎样使用软件实现人们的要求,但是对特定用户的具体要求并不完全清楚。
因此系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。
通常用数据流图、数据字典和简要的算法描述表示系统的逻辑模型。
在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。
系统分析员通常都是计算机软件专家,技术专家一般都喜欢很快着手进行具体设计,然而,一旦分析员开始谈论程序设计的细节,就会脱离用户,使他们不能继续提出他们的要求和建议。
较件工程使用的结构分析设计的方法为每个阶段都规定了特定的结束标准,需求分析阶段必须提供完整准确的系统逻辑模型,经过用户确认之后才能进入下一个阶段,这就可以有效地防止和克服急于着手进行具体设计的倾向。
4总体设计 这个阶段必须回答的关键问题是:“概括地说,应该如何解决这个问题?” 首先,应该考虑几种可能的解决方案。
列如,目标系统的一些主要功能是用计算机自动完成还是用人工完成;如果使用计算机,那么是使用批处理方式还是人机交互方式;信息存储使用传统的文件系统还是数据库……。
通常至少应该考虑下述几类可能的方案: 低成本的解决方案。
系统只能完成最必要的工作,不能多做一点额处的工作。
中等成本的解决方案。
这样的系统不仅能够很好地完成预定的任务,使用起来很方便,而且可能还具有用户没有具体指定的某些功能和特点。
虽然用户没有提出这些具体要求,但是系统分析员根据自己的知识和经验断定,这些附加的能力在实践中将证明是很有价值的。
高成本的“十全十美”的系统。
这样的系统具有用户可能希望有的所有功能和特点。
系统分析员应该使用系统流程图或其他工具描述每种可能的系统,估计每种方案的成本和效益,还应该在充分权衡各种方案的利弊的基础上,推荐一个较好的系统 (最佳方案),并且制定实现所推荐的系统的详细计划。
如果用户接受分析员推荐的系统,则可以着手完成本阶段的另一项主要工作。
上面的工作确定了解决问题的策略以及目标系统需要哪些程序,但是,怎样设计这些程序呢?结构设计的一条基本原理就是程序应该模块化,也就是一个大程序应该由许多规模适中的模块按合理的层次结构组织而成。
总体设计阶段的第二项主要任务就是设计软件的结构,也就是确定程序由哪些模块组成以及模块间的关系。
通常用层次图或结构图描绘软件的结构。
5详细设计 总体设计阶段以比较抽象概括的方式提出了解决问题的办法。
详细设计阶段的任务就是把解法具体化,也就是回答下面这个关键问题:“应该怎样具体地实现这个系统呢?” 这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。
这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝...
软件开发中,需求分析阶段产生的主要文档是
第一个步骤是市场调研(可行性分析“做还是不做”)第二个步骤是需求分析(软件需求规格说明书“做什么,不做什么”。
)第三个步骤是概要设计(概要设计说明书)第四个步骤是详细设计(详细设计说明书)第五个步骤是编码第六个步骤是测试(集成测试计划)选B
什么是"软件设计"
什么是"软件设计" 面向对象技术,特别是C++,似乎给软件界带来了不小的震动。
出现了大量的论文和书籍去描述如何应用这项新技术。
总的来说,那些关于面向对象技术是否只是一个骗局的问题已经被那些关于如何付出最小的努力即可获得收益的问题所替代。
面向对象技术出现已经有一段时间了,但是这种爆炸式的流行却似乎有点不寻常。
人们为何会突然关注它呢?对于这个问题,人们给出了各种各样的解释。
事实上,很可能就没有单一的原因。
也许,把多种因素的结合起来才能最终取得突破,并且这项工作正在进展之中。
尽管如此,在软件革命的这个最新阶段中,C++本身看起来似乎成为了一个主要因素。
同样,对于这个问题,很可能也存在很多种理由,不过我想从一个稍微不同的视角给出一个答案:C++之所以变得流行,是因为它使软件设计变得更容易的同时,也使编程变得更容易。
虽然这个解释好像有点奇特,但是它却是深思熟虑的结果。
在这篇论文中,我就是想要关注一下编程和程序设计之间的关系。
近10年来,我一直觉得整个软件行业都没有觉察到做出一个软件设计和什么是真正的软件设计之间的一个微妙的不同点。
只要看到了这一点,我认为我们就可以从C++增长的流行趋势中,学到关于如何才能成为更好的软件工程师的意义深远的知识。
这个知识就是,编程不是构建软件,而是设计软件。
几年前,我参见了一个讨论会,其中讨论到软件开发是否是一门工程学科的问题。
虽然我不记得了讨论结果,但是我却记得它是如何促使我认识到:软件业已经做出了一些错误的和硬件工程的比较,而忽视了一些绝对正确的对比。
其实,我认为我们不是软件工程师,因为我们没有认识到什么才是真正的软件设计。
现在,我对这一点更是确信无疑。
任何工程活动的最终目标都是某些类型的文档。
当设计工作完成时,设计文档就被转交给制造团队。
该团队是一个和设计团队完全不同的群体,并且其技能也和设计团队完全不同。
如果设计文档正确地描绘了一个完整的设计,那么制造团队就可以着手构建产品。
事实上,他们可以着手构建该产品的许多实物,完全无需设计者的任何进一步的介入。
在按照我的理解方式审查了软件开发的生命周期后,我得出一个结论:实际上满足工程设计标准的惟一软件文档,就是源代码清单。
对于这个观点,人们进行了很多的争论,无论是赞成的还是反对的都足以写成无数的论文。
本文假定最终的源代码就是真正的软件设计,然后仔细研究了该假定带来的一些结果。
我可能无法证明这个观点是正确的,但是我希望证明:它确实解释了软件行业中一些已经观察到的事实,包括C++的流行。
在把代码看作是软件设计所带来的结果中,有一个结果完全盖过了所有其他的结果。
它非常重要并且非常明显,也正因为如此,对于大多数软件机构来说,它完全是一个盲点。
这个结果就是:软件的构建是廉价的。
它根本就不具有昂贵的资格;它非常的廉价,几乎就是免费的。
如果源代码是软件设计,那么实际的软件构建就是由编译器和连接器完成的。
我们常常把编译和连接一个完整的软件系统的过程称为“进行一次构建”。
在软件构建设备上所进行的主要投资是很少的——实际需要的只有一台计算机、一个编辑器、一个编译器以及一个连接器。
一旦具有了一个构建环境,那么实际的软件构建只需花费少许的时间。
编译50 000行的C++程序也许会花费很长的时间,但是构建一个具有和50 000行C++程序同样设计复杂性的硬件系统要花费多长的时间呢? 把源代码看作是软件设计的另外一个结果是,软件设计相对易于创作,至少在机械意义上如此。
通常,编写(也就是设计)一个具有代表性的软件模块(50至100行代码)只需花费几天的时间(对它进行完全的调试是另外一个议题,稍后会对它进行更多的讨论)。
我很想问一下,是否还有任何其他的学科可以在如此短的时间内,产生出和软件具有同样复杂性的设计来,不过,首先我们必须要弄清出如何来度量和比较复杂性。
然而,有一点是明显的,那就是软件设计可以 极为迅速地变得非常庞大。
假设软件设计相对易于创作,并且在本质上构建起来也没有什么代价,一个不令人吃惊的发现是,软件设计往往是难以置信的庞大和复杂。
这看起来似乎很明显,但是问题的重要性却常常被忽视。
学校中的项目通常具有数千行的代码。
具有10 000行代码(设计)的软件产品被它们的设计者丢弃的情况也是有的。
我们早就不再关注于简单的软件。
典型的商业软件的设计都是由数十万行代码组成的。
许多软件设计达到了上百万行代码。
另外,软件设计几乎总是在不断地演化。
虽然当前的设计可能只有几千行代码,但是在产品的生命期中,实际上可能要编写许多倍的代码。
尽管确实存在一些硬件设计,它们看起来似乎和软件设计一样复杂,但是请注意两个有关现代硬件的事实。
第一,复杂的硬件工程成果未必总是没有错误的,在这一点上,它不存在像软件那样让我们相信的评判标准。
多数的微处理器在发售时都具有一些逻辑错误:桥梁坍塌,大坝破裂,飞机失事以及数以千计的汽车和其他消费品被召回——所有的...
软件开发有哪几个阶段,每个阶段的任务是什么
软件开发一般分为五个阶段:1.问题的定义及规划此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
2.需求分析在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。
需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。
“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。
3.软件设计此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。
软件设计一般分为总体设计和详细设计。
还的软件设计将为软件程序编写打下良好的基础。
4.程序编码此阶段是将软件设计的结果转化为计算机可运行的程序代码。
在程序编码中必定要制定统一、符合标准的编写规范。
以保证程序的可读性、易维护性。
提高程序的运行效率。
5.软件测试在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。
整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。
测试方法主要有白盒测试和黑盒测试。
以上就是软件开发过程的五个阶段,但是有的时候在软件爱你开发过程中并不是必须按照这个过程进行的。
在软件开发中,需求分析阶段产生的主要文档是什么?
这个时期产生的主要文档是《XX软件需求规格说明书》。
需求规格说明书一般包含以下内容,但具体内容需要根据实际情况来书写,以下仅供参考:1.引言1.1编写目的【阐明编写需求说明书的目的,指明读者对象.】为明确软件需求、安排项目规划与进度、组织软件开发与测试,撰写本文档.本文档供项目经理、设计人员、开发人员参考.1.2项目背景a.项目的委托单位、开发单位和主管部门b.该软件系统与其他1.3定义【列出文当中所用到的专门术语的定义和缩写词的原文.】1.4参考资料a.项目经核准的计划任务书、合同或上级机关的批文b.项目开发计划c.文档所引用的资料、标准和规范.列出这些资料的作者、标题、编号、发表日期、出版单位或资料来源2.任务概述2.1目标2.2运行环境操作系统:Microsoft Windows 2000 Advanced Server支持环境:IIS 5.0数 据 库:Microsoft SQL Server 20002.3条件与限制3.数据描述3.1静态数据3.2动态数据【包括输入数据和输出数据.】3.3数据库介绍【给出使用数据库的名称和类型.】3.4数据词典3.5数据采集4.功能需求4.1功能划分4.2功能描述5.性能需求5.1数据精确度5.2时间特性【如响应时间、更新处理时间、数据转换与传输时间、运行时间等.】5.3适应性【在操作方式、运行环境、与其它软件的接口以及开发计划等发生变化时,应具有的适应能力.】6.运行需求6.1用户界面【如屏幕格式、报表格式、菜单格式、输入输出时间等.】6.2硬件接口6.3软件接口6.4故障处理7.其它需求【如可使用性、安全保密、可维护性、可移植性等.】
文档的软件设计是怎样的?
展开全部 流 程 一: 开发需求者与开发者的沟通。
前期的沟通和评估是为了更好的将项目的整体情况细化,面对面双方进行深入彻底的需求沟通,确保app项目能能够在规定期限完成。
这是奠定项目基础的重要阶段。
前期的沟通就需把所有细节都最好能确定,这样的有助于后期开发所出现的问题会减少,后期开发就会节省时间与成本。
流 程 二: 在开发需求者与产品经理的沟通之后,产品经理根据需求者的需要分析,并提供专业的策划服务,如果APP需要一个吸引用户眼球的创意,这就需要开发者在创意策划上有着独到的见解,APP开发的策划是对于整个APP开发一个方针。
流 程 三: 签订合同,并且支付开发前期的预款。
余款一般为整个APP开发的30%左右。
在签订合同之前开发需求者需要认真审核策划服务。
注意:如果发现存在不符合自己产品需求的服务,应该立刻提出并且让开发的产品经理进行沟通改正。
流 程 四: UE设计,User Experience 用户体验。
根据需求分析进行原型图的设计。
用户体验所指的是用户在使用产品过程中的个人主观感受。
关注用户使用前、使用过程中、使用后的整体感受,包括行为、情 感、成就等各个方面。
用户体验是整体感受,所以不仅仅来自于用户界面,那只是其中的一部分。
通俗的讲这是个整体的使用感受,包括受品牌影响,用户个人使用经验的影响,让用户在使用这款APP的时候或刺激或享受,总得来说就是要让客户得到满足感。
流 程 五: UI:User Interface 用户界面,根据UE原型进行精美的UI界面设计。
用户界面其实是一个比较广泛的概念,指人和机器互动过程中的界面,以车为例子,方向盘、仪表盘、换档器等都属于用户界面。
现在一般把屏幕上显示的图形用户界面(GUI:Graphic User Interface)都简单称为UI。
可能是UI这个概念比较难以被一般人理解,所以现在一般所说的UI设计师,也即是指GUI设计师。
也就是图形界面设计师。
主要是负责产品或是网站的图形图标色彩搭配,总之是负责网站看起来是一个什么风格什么气质。
注意:在设计完之后开发需求者都需要对所设计的界面进行细心查看,在这里平常正规的开发公司都会给予所设计好的界面给需求者审核。
流 程 六: 对APP后台和前台开发。
App开发人员拿到UI设计图后,会根据各个UI界面效果图进行功能和界面的开发。
数据库架构师、服务端工程师、iOS客户端工程师、Android客户端工程师具体开发需求的人员不同,总结就是不断编写代码实现程序、修bug。
然而APP软件需要针对不同智能手机的操作系统来选择不同的App开发语言:iOS平台开发语言为Objective-C安卓 Android开发语言为java微软Windows phone7开发语言是C#;塞班symbian系统版本开发语言是C++流 程 七: 测试,开发出来后的APP都需要通过专业的APP软件测试流程。
平常基本的测试分为以下几点:UI测试、功能测试、兼容测试/性能测试、后台订单统计测试、回归测试等。
测试人员能从各种场景中发现问题,它们可能来自对话、设计、文档、用户反馈或者是泛娱产品本身。
正所谓一个好的APP不是在测试的时候不出问题,是在测试中修改最多问题的那个。
流 程 八: 在测试通过后APP需求开发者签订验收单,为上线做准备工作。
流 程 九: 上线知名的APP市场。
上线时候需要明确是自己申请账户去上线还是使用开发公司的账号上线。
软件开发阶段有哪些
软件开发阶段包括软件设计、编码、调试、测试和验收几个阶段。
一、软件设计,软件设计分为概要设计(总体设计)和详细设计(模块设计)两阶段。
详细设计对概要设计中产生的功能模块,设计其内部细节。
二、软件编码,由详细设计容易得到软件的代码文件,但这阶段也有两个问题要引起重视,一是编程语言的选择,二是程序设计风格。
程序质量主要取决于软件设计的质量,但编程风格对程序质量的影响也很大。
三、软件测试,软件测试至今乃是保证软件质量的最重要的手段,因此它在软件工程中占有十分突出的地位。
它表现为4-2-4规则,即需求分析、软件设计占40%的工作量,编码为20%,而测试则为40%。
对可能会产生重大后果的软件,如核反应堆控制,飞行器控制,水库阀门控制等软件,甚至花费比软件开发其他阶段多三至五倍的资金进行软件测试,希望最终的软件能万无一失。
四、软件维护,软件维护费用的急剧增长使软件成本失去控制。
这要求软件爱你开发时就要十分重视软件爱你的可维护性。
另外,维护中作的修改往往考虑得不够周密,带来很多新的问题。
所以必须对软件的维护进行严格的管理。
五、软件工程管理,包括软件项目管理、软件工程标准、软件文档管理和软件质量管理。
文档的软件设计说明
软件设计阶段结束后要交付软件设计说明书。
它的前半部分在概要设计后完成,后半部分在详细设计后写出。
设计说明书用于双重目的:对于编程和测试,它提供指南;软件交付使用后,为维护人员提供帮助。
软件设计说明书的框架和内容如下:(1)概述。
描述设计工作总的范围,包括系统目标、功能、接口等。
(2)系统结构。
用软件结构图说明本系统的模块划分,扼要说明每个模块的功能,按层次给出各模块之间的控制关系。
(3)数据结构及数据库设计。
对整个系统使用的数据结构及数据库进行设计,包括概念结构设计、逻辑结构设计和物理设计。
用相应的图形和表格把设计结果描述出来。
(4)接口设计。
设计人机界面,说明向用户提供的命令以及系统的返回信息;设计外部接口,说明本系统与外界的所有接口信息,包括软件与硬件之间的接口、本系统与支持软件之间的接口关系。
(5)模块设计。
按模块功能详细描述每个模块的流程及数据结构。
转载请注明出处51数据库 » 软件 设计阶段文档是
有文化的文盲_