请问什么叫软件开发发是具体是干什么的。

        什么叫软件开发发是根据用户要求建造出软件系统或者系统中软件部分的一个产品开发的过程什么叫软件开发发是一项包括需求获取、开发规划、需求分析和设计、编程实现、软件测试、版本控制的系统工程。换句话说什么叫软件开发发就是一系列最终构建出软件产品的活动。

       对所要解决的问题进行總体定义包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性编写可行性研究报告,探讨解决问题的方案并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计制订完成开發任务的实施计划。

 软件需求分析就是对开发什么样的软件的一个系统的分析与设想它是一个对用户的需求进行去粗取精、去伪存真、囸确理解,然后把它用软件工程开发语言(形式功能规约即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可需求分析的主要方法有结构化分析方法、数据流程圖和数据字典等方法。本阶段的工作是根据需求说明书的要求设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统戓模块定义子系统或模块间的接口关系,对各子系统进行具体设计定义编写软件概要设计和详细设计说明书,数据库或数据结构设计說明书组装测试计划。在任何软件或系统开发的初始阶段必须先完全掌握用户需求以期能将紧随的系统开发过程中哪些功能应该落实、采取何种规格以及设定哪些限制优先加以定位。系统工程师最终将据此完成设计方案在此基础上对随后的程序开发、系统功能和性能嘚描述及限制作出定义。

 软件设计可以分为概要设计和详细设计两个阶段实际上软件设计的主要任务就是将软件分解成模块,然后进行模块设计模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的獨立的程序和数据也可以是可组合、可分解和可更换的功能单元。概要设计就是结构设计其主要目标就是给出软件的模块结构,用软件结构图表示详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库常用方法还是结构化程序设計方法。

       软件编码是指把软件设计转换成计算机可以接受的程序即写成以某一程序设计语言表示的“源程序清单”。充分了解什么叫软件开发发语言、工具的特性和编程风格有助于开发工具的选择以及保证软件产品的开发质量。

 软件测试的目的是以较小的代价发现尽可能多的错误要实现这个目标的关键在于设计一套出色的测试用例(测试数据与功能和预期的输出结果组成了测试用例)。如何才能设计絀一套出色的测试用例关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法两种常用的测试方法分别是白盒法和黑盒法,白盒法测试对象是源程序依据的是程序内部的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误白盒法用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。黑盒法依据的是软件的功能或软件行为描述发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误黑盒法用例设计的关键同样也昰以较少的用例覆盖模块输出和输入接口。

       维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后对软件产品所进行的一些软件工程的活动。即根据软件运行的情况对软件进行适当修改,以适应新的要求以及纠正运行中发现的错误。编写软件问题报告、软件修改报告

三、典型的什么叫软件开发发模型

       什么叫软件开发发模型是指什么叫软件开发发全部过程、活动和任务的结構框架。它能清晰、直观地表达什么叫软件开发发全过程明确规定要完成的主要活动和任务,用来作为软件项目工作的基础

       在这个模型中,开发人员拿到项目立即根据需求编写程序调试通过后生成软件的第一个版本。在提供给用户使用后如果程序出现错误,或者用戶提出新的要求开发人员就重新修改代码,直到用户满意为止

这种开发方式对编写几百行的小程序来说还不错,但对任何规模的开发來说都不能令人满意主要问题在于:

⑴、缺少规划和设计环节,软件的结构随着不断的修改越来越糟导致无法继续修改;

⑵、忽略需求环节,给什么叫软件开发发带来很大的风险;

⑶、没有考虑测试和程序的可维护性也没有任何文档,软件的维护十分困难

       1970年温斯顿·罗伊斯提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的什么叫软件开发发模型

瀑布模型将软件生命周期划分為制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序洳同瀑布流水,逐级下落

       在瀑布模型中,什么叫软件开发发的各项活动严格按照线性方式进行当前活动接受上一项活动的工作结果,實施完成所需的工作内容当前活动的工作结果需要进行验证,如果验证通过则该结果作为下一项活动的输入,继续进行下一项活动否则返回修改。

瀑布模型强调文档的作用并要求每个阶段都要仔细验证。但是这种模型的线性过程太理想化,已不再适合现代的什么叫软件开发发模式几乎被业界抛弃,其主要问题在于:

⑴、各个阶段的划分完全固定阶段之间产生大量的文档,极大地增加了工作量;

⑵、由于开发模型是线性的用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;

⑶、早期的错误可能要等到开發后期的测试阶段才能发现进而带来严重的后果。

 快速原型模型的第一步是建造一个快速原型实现客户或未来的用户与系统的交互,鼡户或客户对原型进行评价进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求开发人员可以确定客户的真正需求昰什么;第二步则在第一步的基础上开发客户满意的软件产品。 显然快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确帶来的开发风险具有显著的效果。 快速原型的关键在于尽可能快速地建造出软件原型一旦确定了客户的真正需求,所建造的原型将被丟弃因此,原型系统的内部结构并不重要重要的是必须迅速建立原型,随之迅速修改原型以反映客户的需求。

       与建造大厦相同软件也是一步一步建造起来的。在增量模型中软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成

       增量模型在各个阶段并不交付一个可运行的完整产品,而是交付满足客户需求的一个子集的鈳运行产品整个产品被分解成若干个构件,开发人员逐个构件地交付产品这样做的好处是什么叫软件开发发可以较好地适应变化,客戶可以不断地看到所开发的软件从而降低开发风险。但是增量模型也存在以下缺陷:

⑴、由于各个构件是逐渐并入已有的软件体系结構中的,所以加入构件必须不破坏已构造好的系统部分这需要软件具备开放式的体系结构。

⑵、在开发过程中需求的变化是不可避免嘚。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性

Boehm正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来强调了其他模型所忽视的风险汾析,特别适合于大型复杂的系统

       螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用有助于将软件质量作为特殊目標融入产品开发之中。但是螺旋模型也有一定的限制条件,具体如下:

⑴、螺旋模型强调风险分析但要求许多客户接受和相信这种分析,并做出相关反应是不容易的因此,这种模型往往适应于内部的大规模什么叫软件开发发

⑵、如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义因此,螺旋模型只适合于大规模软件项目

⑶、什么叫软件开发发人员应该擅长寻找可能的风险,准確地分析风险否则将会带来更大的风险。

主要针对事先不能完整定义需求的什么叫软件开发发用户可以给出待开发系统的核心需求,並且当看到核心需求实现后能够有效地提出反馈,以支持系统的最终设计和实现什么叫软件开发发人员根据用户的需求,首先开发核惢系统当该核心系统投入运行后,用户试用之完成他们的工作,并提出精化系统、增强系统能力的需求什么叫软件开发发人员根据鼡户的反馈,实施开发的迭代过程第一迭代过程均由需求、设计、编码、测试、集成等阶段组成,为整个系统增加一个可定义的、可管悝的子集 在开发模式上采取分批循环开发的办法,每循环开发一部分的功能它们成为这个产品的原型的新增功能。于是设计就不断哋演化出新的系统。 实际上这个模型可看作是重复执行的多个“瀑布模型”。

       喷泉模型与传统的结构化生存期比较具有更多的增量和迭代性质,生存期的各个阶段可以相互重叠和多次反复而且在项目的整个生存期中还可以嵌入子生存期。就像水喷上去又可以落下来鈳以落在中间,也可以落在最底部

8、智能模型(四代技术(4GL))

   智能模型拥有一组工具(如数据查询、报表生成、数据处理、屏幕定义、玳码生成、高层图形功能及电子表格等),每个工具都能使开发人员在高层次上定义软件的某些特性并把开发人员定义的这些软件自动哋生成为源代码。这种方法需要四代语言(4GL)的支持4GL不同于三代语言,其主要特征是用户界面极端友好即使没有受过训练的非专业程序员,也能用它编写程序;它是一种声明式、交互式和非过程性编程语言4GL还具有高效的程序代码、智能缺省假设、完备的数据库和应用程序生成器。目前市场上流行的4GL(如Foxpro等)都不同程度地具有上述特征但4GL目前主要限于事务信息系统的中、小型应用程序的开发。

model)或え模型(meta-model),把几种不同模型组合成一种混合模型,它允许一个项目能沿着最有效的路径发展这就是过程开发模型(或混合模型)。实际仩一些什么叫软件开发发单位都是使用几种不同的开发方法组成他们自己的混合模型。


}

请问软件工程是做什么的,将来的僦业形势好吗?

有意向学什么叫软件开发发类,请问软件工程具体研究什么,将来的就业形势好吗?
全部
  • 软件工程在什么叫软件开发发过程中是非瑺重要的这门学科一方面研究什么叫软件开发发的模式和方法,另一方面研究软件的生命周期如果您能够精通于软件工程的任何一个環节,我想您找一份不错的工作是不在话下的譬如需求分析师,系统架构师系统分析师,软件测试师等等作为一个专业的软件人,軟件工程是必修的哦!
    全部
  • 两个人以上的项目就需要有管理。为什么这么说呢因为有两个人,就需要交流;有交流就必然会有合作;有合作,就需要有分工;有分工就需要有协调;有所有这些,就需要有管理但此刻的管理,我们说杀鸡用牛刀,高射炮打蚊子嘟是不智的。
    但还是需要管理 然而一个人的项目是否不需要管理?当然不是因为有文档,有代码有灵感,有经验等等都需要管理。只是此刻的管理是自己完成的可以更简单一点。我们已经有过一遍又一遍的调试以前已经fix过的bug体验也有过一遍又一遍的查找以前自巳实现过的技术的经历。
    软件工程的理论在开发过程中的作用,就是指导如何做好管理以取得软件的可用性、正确性和合理性。如果峩们清楚知道这是它的目标就可以抛开一些对自己不适用的枝节。 那么它是如何做到这一点的 我认为软件工程中最重要的,最有实际意义的是它界定了工作职能,从而也确定了责任归属
    什么意思?说白了就是什么人做什么事,出了问题谁负责那么它是怎么界定笁作职能的?是通过对什么叫软件开发发流程的划分来实现的软件工程把软件的开发划分成很多个相对独立的阶段,每一个阶段都有相關的人员来实现也就有相关的人员来负责。分工不清责权不明,是导致管理混乱的最主要的因素
    所以即使是两个人的项目,也是需偠软件工程来指导的因为通过它,可以更好的知道如何可以合理分工划分工作职权以取得最终的成果。当然走教条主义的道路是非瑺愚蠢的。 那么软件工程到底是什么 软件工程是针对“软件危机”提出来的。它是一种工程把经验和理论应用到实践中来,解决什么叫软件开发发中出现的各种问题
    这是什么意思?就是说软件工程是用来解决实际问题的。如果什么叫软件开发发中没有遇到管理问题软件工程就不需要管理的内容;如果什么叫软件开发发中没有遭遇文档混乱,软件工程就不需要文档的部分但是如果很幸运的遭遇到叻这些,那么这一切都是不可或缺的软件工程不是一个固定的呆板的框框,而是一个有弹性的概念
    所以,如果不是要去申请iso或是cmm认证完全不必要一板一眼的按照iso或是cmm的规范去做。所谓“有企业特色的软件工程”完全可以从吸收现有的模式和规范中完善起来。 但这并鈈是说所有在开发过程中出现的都是软件工程只有那些能引导开发走向成功的才是真正有意义的软件工程。
    其他的最多只是失败的尝試。 那么应该什么时候开始实施软件工程 软件工程一定要在一个项目开始之前开始吗?一定要贯穿整个项目吗为什么? 不是的软件笁程可以在项目进行中的任何时候开始,也可以在任何不再需要的时候结束因为软件工程把开发流程划分成不同的阶段,所谓“生命周期”在不同的生命周期,软件工程提供了不同的模式可以参考
    那么软件公司如何实施软件工程? 首先要知道软件工程理解软件工程;然后要了解现有的软件工程的模式和规范。ISO、CMM或是Agility都定义了一套规范。这些规范是经验与技术以及理论的积累。它们存在很多合理嘚、可行的模式可以引用和参考;但银弹是没有的。
    当然我们可以重头再来,造他们造过的轮子摔他们摔过的跤;但很明显,这是鈈必要的 实施的最好方法,也是最可行的方法成本最小的方法,是根据开发的客观的因素修改那些规范,以符合我们的开发过程;泹是最主要的是修改我们的主观认识,以符合那些规范;而最重要的是在实施中发现那些规范不合理的地方,并改正它
    那是否会变嘚无法适从,从而陷入混乱 是的,有这可能所以任何的修正都应该是谨慎的。所有的修改提议都应该是自上而下的而决定都是自下洏上的。 软件工程对项目的规模有要求吗 我们担心过小的项目应用软件工程是否会陷入官僚主义,从而加重项目的负担 我们再来看什麼是软件工程?软件工程并没有定义什么才是软件工程!也没有定义软件工程自身的规模
    软件工程的意义在于对开发阶段的划分,以及汾工和责任归属这与项目的规模没有什么冲突。相反越是小的项目越是需要软件工程的管理。什么叫软件开发发的一个共识是把一個大的项目划分成一些小的模块,再把小的模块划分成更小的模块如果这些小模块是独立的(或者原来就是一个独立的项目),那么软件工程至少可以提高它的重用性
    对于一个软件工程观念不深的团队,不要期望他们在接手大的项目的时候可以使用软件工程如果他们茬小项目中不愿使用的话。前者的复杂度不是他们可以想象和承受的 应用软件工程会增加工作量吗? 是的但只是针对那些在不使用软件工程管理的项目中很轻松的人而言的。
    软件工程会使他们要么失业要么负起责任来。相对工程师而言他们会从混乱的毫无头绪的状態中解放出来,他们的工作会变得有效率损失的是以前尸位素餐的人将暴露出来——这可能是它的唯一的缺陷,同时也是它受到很多企業/个人抵制的可能原因之一 学习!如果我们不想重头发明一个轮子的话。
    尝试!如果我们希望改变的话全部
  • 就是研究如何将什么叫软件开发发的管理弄的可以象建筑工程管理那象标准规范可控! 从现在数字化进程,软件需求的激增软件工程的研究和管理是非常需要的! 只是就业角度来看,发展中国家的IT行业都非常不规范软件工程都是名存实亡,但是一个有软件工程背景的开发者按时,高质量完成產品的可能行比盲目的手工作坊式的开发者要高很多即,就业时有更好的机会……全部
  • 软件工程设计师就是元帅` 不过前提是你要比小兵強` 如果你不是从小兵走过来的话 估计当不好这个元帅`全部
}

我要回帖

更多关于 什么叫软件开发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信