软件开发方法?
常见的软件开发方法有结构化方法、Jackson方法、维也纳开发方法(VDM)和面向对象的开发方法。
1.结构化方法:指导思想:自顶向下,逐步求精;基本原则:功能的分析与抽象。
优点:1、 适用于数据处理领域的问题;2、支持工具较多,发展成熟。
缺点:1、不适应规模大的项目;2、不适应特别复杂的项目;3、难于解决软件重用的问题;4、难于适应需求变化的问题;5、难于彻底解决维护问题。
2.Jackson方法:这是一种面向数据结构的方法过程:JSP—>JSDJSP方法:1、以数据结构为驱动;2、首先描述问题的输入,输出数据结构,分析其对应性,然后退出相应的程序结构,从而给出问题的软件过程描述。
JSD方法:1、以事件作为驱动;2、首先建立现实世界的模型,再确定系统的功能需求,对需求的描述特别强调了操作之间的时序性。
3.维也纳开发方法(VDM):这是一种形式化的开发方法,是一个基于模型的方法。
主要思想:将软件系统当做模型来给予描述,具体说是把软件的输入,输出看做模型对象,而这些对象在计算机中的状态可看做为该模型在对象上的操作。
借助工具:描述工具语言Meta-IV。
4.面向对象的开发方法:定义:以对象作为最基本的元素,是分析问题,解决问题的核心。
对象:具体的事物,事件,概念和规则。
基本点:尽可能按照人类认识世界的方法和思维方法来分析和解决问题。
软件开发方法?
常见的软件开发方法有结构化方法、Jackson方法、维也纳开发方法(VDM)和面向对象的开发方法。
1.结构化方法: 指导思想:自顶向下,逐步求精; 基本原则:功能的分析与抽象。
优点: 1、 适用于数据处理领域的问题; 2、支持工具较多,发展成熟。
缺点: 1、不适应规模大的项目; 2、不适应特别复杂的项目; 3、难于解决软件重用的问题; 4、难于适应需求变化的问题; 5、难于彻底解决维护问题。
2.Jackson方法:这是一种面向数据结构的方法 过程:JSP—>JSD JSP方法: 1、以数据结构为驱动; 2、首先描述问题的输入,输出数据结构,分析其对应性,然后退出相应的程序结构,从而给出问题的软件过程描述。
JSD方法: 1、以事件作为驱动; 2、首先建立现实世界的模型,再确定系统的功能需求,对需求的描述特别强调了操作之间的时序性。
3.维也纳开发方法(VDM):这是一种形式化的开发方法,是一个基于模型的方法。
主要思想:将软件系统当做模型来给予描述,具体说是把软件的输入,输出看做模型对象,而这些对象在计算机中的状态可看做为该模型在对象上的操作。
借助工具:描述工具语言Meta-IV。
4.面向对象的开发方法: 定义:以对象作为最基本的元素,是分析问题,解决问题的核心。
对象:具体的事物,事件,概念和规则。
基本点:尽可能按照人类认识世界的方法和思维方法来分析和解决问题。
...
软件开发步骤包括哪些过程?
软件开发一般分为五个阶段:1.问题的定义及规划此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
2.需求分析在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。
需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。
“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,我们必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。
3.软件设计此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。
软件设计一般分为总体设计和详细设计。
还的软件设计将为软件程序编写打下良好的基础。
4.程序编码此阶段是将软件设计的结果转化为计算机可运行的程序代码。
在程序编码中必定要制定统一、符合标准的编写规范。
以保证程序的可读性、易维护性。
提高程序的运行效率。
5.软件测试在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。
整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。
测试方法主要有白盒测试和黑盒测试。
...
管理信息系统的开发方法主要有哪几种?开发方式有哪几种
信息系统主要的开发方法包括结构化方法、原型法、企业系统规划方法、战略数据规划方法、信息工程方法和面向对象方法等。
1.结构化方法 结构化方法是由结构化系统分析和设计组成的一种信息系统开发方法。
结构化方法是目前最成熟、应用最广泛的信息系统开发方法之一。
结构化方法主要特点介绍如下:开发目标清晰化工作阶段程式化开发文档规范化设计方法结构化2.原型法 原型法是一种根据用户需求,利用系统开发工具,快速地建立一个系统模型并展示给用户,再此基础上与用户交流,最终实现用户需求的信息系统快速开发的方法。
应用原型法开发过程包括系统需求分析、系统初步设计、系统调试、系统检测等阶段。
原型法具有开发周期短、见效快、与业务人员交流方便的优点,特别适用于那些用户需求模糊,结构性比较差的信息系统的开发。
3.企业系统规划方法 企业系统规划方法(BSP,Business System Planning)是企业战略数据规划方法和信息工程方法的基础和。
4.战略数据规划方法 战略数据规划方法的要点主要有:数据环境对于信息系统至关重要4种数据环境建立主题数据库是信息系统开发的中心任务围绕主题数据库搞好应用软件开发5.信息工程方法 信息工程方法与企业规划方法和战略数据规划方法是一种交叉关系,即信息工程方法是其他2种方法的总结和提升,而其他两种方法则是信息工程方法的基础和核心。
6.面向对象方法 面向对象方法是对客观世界的一种看法,它把客观世界从概念上看成是一个由相互配合而协作的对象组成的系统。
信息系统开发的面向对象方法兴起是信息系统发展的必然趋势。
面向对象的分析方法是利用面向对象的信息建模概念,如实体、关系、属性等,同时运用封装、继承、多态等机制来构造模拟现实系统的方法。
...
就如何利用面向对象的软件开发方法来开发软件心得体会
面向对象技术是软件技术的一次革命,在软件开发史上具有里程碑的意义。
随着OOP(面向对象编程)向OOD(面向对象设计)和OOA(面向对象分析)的发展,最终形成面向对象的软件开发方法 OMT(LbjectModellingTechnique)。
这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、 输出数据结构,实际上也包含了所有对象的数据结构。
所以OMT彻底实现了PAM没有完全实现的目标。
不仅如此,OO技术在需求分析、可维护性和可靠性这三 个软件开发的关键环节和质量 指标上有了实质性的突破,彻底地解决了在这些方面存在的严重问题,从而宣告了软件危机末日的来临。
自底向上的归纳 OMT的第一步是从问题的陈述入手,构造系统模型。
从真实系统导出类的体系,即对象模型包括类的属性,与子类、父类的继承关系,以及类之间的关 联。
类是具有相似属性和行为的一组具体实例(客观对象)的抽象,父类是若干子类的归纳。
因此这是一种自底向上的归纳过程。
在自底向上的归纳过程中,为使子 类能更合理地继承父类的属性和行为,可能需要自顶向下的修改,从而使整个类体系更加合理。
由于这种类体系的构造是从具体到抽象,再从抽象到具体,符合人类 的思维规律,因此能更快、更方便地完成任务。
这与自顶向下的Yourdon方法构成鲜明的对照。
在Yourdon方法中构造系统模型是最困难的一步,因为 自顶向下的“顶”是一个空中楼阁,缺乏坚实的基础,而且功能分解有相当大的任意性,因此需要开发人员有丰富的软件开发经验。
而在OMT中这一工作可由一般 开发人员较快地完成。
在对象模型建立后,很容易在这一基础上再导出动态模型和功能模型。
这三个模型一起构成要求解的系统模型。
自顶向下的分解 系统模型建立后的工作就是分解。
与Yourdon方法按功能分解不同,在OMT中通常按服务(Service)来分解。
服务是具有共同目标的相关 功能的集合,如I/O处理、图形处理等。
这一步的分解通常很明确,而这些子系统的进一步分解因有较具体的系统模型为依据,也相对容易。
所以OMT也具有自 顶向下方法的优点,即能有效地控制模块的复杂性,同时避免了Yourdon方法中功能分解的困难和不确定性。
OMT的基础是对象模型 每个对象类由数据结构(属性)和操作(行为)组成,有关的所有数据结构(包括输入、输出数据结构)都成了软件开发的依据。
因此Jackson方法 和PAM中输入、输出数据结构与整个系统之间的鸿沟在OMT中不再存在。
OMT不仅具有Jackson方法和PAM的优点,而且可以应用于大型系统。
更重 要的是,在Jackson方法和PAM方法中,当它们的出发点——输入、输出数据结构(即系统的边界)发生变化时,整个软件必须推倒重来。
但在OMT中系 统边界的改变只是增加或减少一些对象而已,整个系统改动极小。
需求分析彻底 需求分析不彻底是软件失败的主要原因之一。
即使在目前,这一危险依然存在。
传统的软件开发方法不允许在开发过程中用户的需求发生变化,从而导致种种问题。
正是由于这一原 因,人们提出了原型化方法,推出探索原型、实验原型和进化原型,积极鼓励用户改进需求。
在每次改进需求后又形成新的进化原型供用户试用,直到用户基本满意,大大提高了软件的 成功率。
但是它要求软件开发人员能迅速生成这些原型,这就要求有自动生成代码的工具的支持。
OMT彻底解决了这一问题。
因为需求分析过程已与系统模型的形成过程一致,开发人员与用户的讨论是从用户熟悉的具体实例(实体)开始的。
开发人员必须搞清现实系统才能导出系统模型,这就使用户与开发人员之间有了共同的语言,避免了传统需求分析中可能产生的种种问题。
可维护性大大改善 在OMT之前的软件开发方法都是基于功能分解的。
尽管软件工程学在可维护方面作出了极大的努力,使软件的可维护性有较大的改进。
但从本质上讲,基于功能分解的软件是不易 维护的。
因为功能一旦有变化都会使开发的软件系统产生较大的变化,甚至推倒重来。
更严重的是,在这种软件系统中,修改是困难的。
由于种种原因,即使是微小的修改也可能引入 新的错误。
所以传统开发方法很可能会引起软件成本增长失控、软件质量得不到保证等一系列严重问题。
正是OMT才使软件的可维护性有了质的改善。
OMT的基础是目标系统的对象模型,而不是功能的分解。
功能是对象的使用,它依赖于应用的细节,并在开发过程中不断变化。
由于对象是客观存在的,因此当需求变化时对象的性质要比对象的使用更为稳定,从而使建立在对象结构上的软件系统也更为稳定。
更重要的是OMT彻底解决了软件的可维护性。
在OO语言中,子类不仅可以继承父类的属性和行为,而且也可以重载父类的某个行为(虚函数)。
利用这 一特点,我们可以方便地进行功能修改:引入某类的一个子类,对要修改的一些行为(即虚函数或虚方法)进行重载,也就是对它们重新定义。
由于不再在原来的程 序模块中引入修改,所以彻底解决了软件的可修改性,从而也彻底解决了软件的可维护性。
OO技术还提高了软件的可靠性和健壮性。
如何利用面向对象的软件开发方法来开发软件?
可视化开发是90年代软件界最大的两个热点之一。
随着图形用户界面的兴起,用户界面在软件系统中所占的比例也越来越大,有的甚至高达60~70%。
产生这一问题的原因是图形界面元素的生成很不方便。
为此Windows提供了应用程序设计接口API(Application Programming Interface),它包含了600多个函数,极大地方便了图形用户界面的开发。
但是在这批函数中,大量的函数参数和使用数量更多的有关常量,使基于WindowsAPI的开发变得相当困难。
为此Borland C++推出了Object Windows编程。
它将API的各部分用对象类进行封装,提供了大量预定义的类,并为这些定义了许多成员函数。
利用子类对父类的继承性,以及实例对类的函数的引用,应用程序的开发可以省却大量类的定义,省却大量成员函数的定义或只需作少量修改以定义子类。
Object Windows还提供了许多标准的缺省处理,大大减少了应用程序开发的工作量。
但要掌握它们,对非专业人员来说仍是一个沉重的负担。
为此人们利用Windows API或Borland C++的ObjectWindows开发了一批可视开发工具。
可视化开发就是在可视开发工具提供的图形用户界面上,通过操作界面元素,诸如菜单、按钮、对话框、编辑框、单选框、复选框、列表框和滚动条等,由可视开发工具自动生成应用软件。
这类应用软件的工作方式是事件驱动。
对每一事件,由系统产生相应的消息,再传递给相应的消息响应函数。
这些消息响应函数是由可视开发工具在生成软件时自动装入的。
可视开发工具应提供的两大类服务一:生成图形用户界面及相关的消息响应函数。
通常的方法是先生成基本窗口,并在它的外面以图标形式列出所有其它的界面元素,让开发人员挑选后放入窗口指定位置。
在逐一安排界面元素的同时,还可以用鼠标拖动,以使窗口的布局更趋合理。
二:为各种具体的子应用的各个常规执行步骤提供规范窗口,它包括对话框、菜单、列表框、组合框、按钮和编辑框等,以供用户挑选。
开发工具还应为所有的选择(事件)提供消息响应函数。
由于要生成与各种应用相关的消息响应函数,因此,可视化开发只能用于相当成熟的应用领域,如目前流行的可视化开发工具基本上用于关系数据库的开发。
对一般的应用,目前的可视化开发工具只能提供用户界面的可视化开发。
至于消息响应函数(或称脚本),则仍需用通常的高级语言(3GL)编写。
只有在数据库领域才提供4GL,使消息响应函数的开发大大简化。
从原理上讲,与图形有关的所有应用都可采用可视化开发方式,如活塞表面设计中的热应力计算。
用户只需在界面上用鼠标修改活塞表面的曲线,应用软件就自动进行有限元划分、温度场计算、热应力计算,并将热应力的等值曲线图显示在屏幕上。
最后几次生成的结果还可并列显示在各窗口上,供用户比较,其中的一个主窗口还可让用户进一步修改活塞表面曲线。
许多工程科学计算都与图形有关,从而都可以开发相应的可视化计算的应用软件。
常用软件开发模式方法及优劣对比有哪些
快速原型模型:(需要迅速造一个可以运行的软件原型,以便理解和澄清问题)快速原型模型允许在需求分析阶段对软件的需求进行初步的非完全的分析和定义,快速设计开发出软件系统的原型(展示待开发软件的全部或部分功能和性能(过程:用户对该原型进行测试评定,给出具体改善的意见以及丰富的细化软件需求,开发人员进行修改完善)优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险缺点:A、 所选用的开发技术和工具不一定符合主流的发展B、 快速建立起来的系统加上连续的修改可能会造成 产品质量底下增量模型:(采用随着日程时间的进展而交错的线性序列,每一个线性徐磊产生软件的一个可发布的“增量”,第一个增量往往就是核心的产品)与其他模型共同之处:它与原型实现模型和其他演化方法一样,本质都是迭代与原型实现模型不同之处:它强调每一个增量均发布一个可操作产品,(它不需要等到所有需求都出来,只要摸个需求的增量包出来即可进行开发)优点:1、 人员分配灵活,一开始不需要投入大量人力资源2、 当配备人员不能在限定的时间内完成产品时,它可以提供一种先推出核心产品的途径,可现发布部分功能给用户(对用户起镇静作用)3、 增量能够有计划的管理技术风险缺点:1、 如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析注:这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程原型模型:(样品模型,采用逐步求精的方法完善原型)主要思想:先借用已有系统作为原型模型,通过“样品”不断改进,使得最后的产品就是用户所需要的。
原型模型通过向用户提供原型获取用户的反馈,使开发出的软件能够真正反映用户的需求,采用方法:原型模型采用逐步求精的方法完善原型,使得原型能够“快速”开发,避免了像瀑布模型一样在冗长的开发过程中难以对用户的反馈作出快速的响应优点:(1)开发人员和用户在“原型”上达成一致。
这样一来,可以减少设计中的错误和开发中的风险,也减少了对用户培训的时间,而提高了系统的实用、正确性以及用户的满意程度。
(2)缩短了开发周期,加快了工程进度。
(3)降低成本。
缺点:1、当重新生产该产品时,难以让用户接收,给工程继续开展带来不利因素。
2、不宜利用原型系统作为最终产品。
采用原型模型开发系统,用户和开发者必须达成一致:喷泉模型:(以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目)它认为软件开发过程自下而上周期的各阶段是相互迭代和无间隙的特性相互迭代:软件的摸个部分常常被重复工作多次,相关对象在每次迭代中随之加入渐进的软件成分无间隙:它在各项活动之间没有明显边界(如分析和设计活动之间)优点:1、 可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程不便之处:1、由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。
2、这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况螺旋模型:(适合用于需求经常变化的项目)它主要是风险分析与评估,沿着螺线进行若干次迭代,过程:1、 制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件2、 风险分析:分析评估所选方案,考虑如何识别和消除风险3、 实施工程:实施软件开发和验证;4、 客户评估:评价开发工作,提出修正建议,制定下一步计划。
优点:1、 它由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发中缺点:1、 难以让用户确信这种烟花方法的结果是可以控制的2、 建设周期长(而软件技术发展比较快,所以经常会出现软件开发完毕后,和当前的技术水平有很大的差距,无法满足当前用户的需求)3、 除非软件开发人员擅长寻找可能的风险,准确的分析风险,否则将会带来更大的风险瀑布模型:(从本质来讲,瀑布模型是一个软件开发架构,重复应用)(核心思想:按工序将问题化简,将功能的实现与设计分开,便于分工协作,采用结构化的分析与设计方法将逻辑实现与物理实现分开,依照软件生命周期自上而下,相互衔接的次序)缺点:1、 在项目各个阶段之间极少有反馈,各个阶段的划分完全固定,阶段之间产生大量的文档,增加了工作量2、 用户只有在项目生命周期的后期才能看到结果,增加了开发的风险3、 需要过多的强制完成日期和里程碑来跟踪各个项目的阶段4、 在每个阶段都会产生循环反馈(如果有信息未被覆盖或是发现问题了,必须返回到上一个阶段并进行适当的修改,只有当上一阶段都被确认后才进行下一阶段)5、 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果优点:1、 为项目提供了按阶段分的检查点2、 当完成一个阶段后,只需要去关注后续阶段3、 可在迭代模型中应用瀑布模型按照瀑布模型的阶段划分,软件测试可以分为单元测试,集成测试,系统测试
常用的软件开发方法有哪些
软件开发一般分为五个阶段:1、问题的定义及规划此阶段是软件开发与需求放共同讨论,主要确定软件的开发目标及其可行性。
2、需求分析在确定软件开发可行性的情况下,对软件需要实现的各个功能进行详细需求分析。
需求分析阶段是一个很重要的阶段,这一阶段做的好,将为整个软件项目的开发打下良好的基础。
“唯一不变的是变化本身”,同样软件需求也是在软件爱你开发过程中不断变化和深入的,因此,必须定制需求变更计划来应付这种变化,以保护整个项目的正常进行。
3、软件设计此阶段中偶要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计、数据库设计等。
软件设计一般分为总体设计和详细设计。
还的软件设计将为软件程序编写打下良好的基础。
4、程序编码此阶段是将软件设计的结果转化为计算机可运行的程序代码。
在程序编码中必定要制定统一、符合标准的编写规范。
以保证程序的可读性、易维护性。
提高程序的运行效率。
5、软件测试在软件设计完成之后要进行严密的测试,一发现软件在整个软件设计过程中存在的问题并加以纠正。
整个测试阶段分为单元测试、组装测试、系统测试三个阶段进行。
测试方法主要有白盒测试和黑盒测试。