简答:简述面向对象软件开发方法的基本概念和优点.
展开全部 基本概念:谈到面向对象,这方面的文章非常多。
但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。
起初,“面向对象”是专指在程序设计中采用封装、继承、多态等设计方法。
可是,这个定义显然不能再适合现在情况。
面向对象的思想已经涉及到软件开发的各个方面。
如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。
许多有关面向对象的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法。
看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地对自己有所裨益。
这一点,恐怕对初学者甚至是从事相关工作多年的人员也会对它们的概念模糊不清。
面向对象的分析根据抽象关键的问题域来分解系统。
面向对象的设计是一种提供符号设计系统的面向对象的实现过程,它用非常接近实际领域术语的方法把系统构造成“现实世界”的对象。
优点:1)近代的软件产业发展非常的迅速,但是却出现了让软件开发人员越来越不能忽视的危机,比如,软件的开发成本,尤其是大型软件开发成本、软件维护升级等费用非常的昂贵,针对出现的危机,人们提出了能够提高代码复用等的面向对象技术,面向对象技术的提出可以使客户于软件开发人员、软件开发人员之间的交流更加的顺畅,原因在于:首先,面向对象技术通常对现实世界的对象进行抽象,这种抽象使得即是非专业人员也能明软件要做什么,使得客户于专业的软件开发人员交流起来更加顺畅,节约开发成本;其次,面向对象技术通常会采用封装,继承等技术,这些技术会使得不同的程序模块之间的关联度减小,可以使得开发人员专注于程序的研发,而不是把大量的精力都放到各个模块的协调上。
2)并不是说我们利用了面向对象的语言,比如C++、JAVA,面向对象技术的好处就会出现,实际上在小的程序设计上,可能根本不需要这么复杂。
真正的大型软件开发用到时需要采用相应的技术方法,不断的优化,比如瀑布模型法,快速原型法。
瀑布模型法主要是把软件分为若干阶段,在每一个阶段,都充分的和客户交流;快速模型法主要是首先提出一个总的模型提交给客户,然后在不断的修改,通常这种方法只适用于较小的工程。
无论采用那种方法我们可以遵从一个原则:就是把大的软件项目不断的细化,最后细化到一个个小函数,然后在根据之间的关系封装等。
如何利用面向对象的软件开发方法来开发软件?
首页 > 工作日志 > 如何在SSH中进行真正面向对象的软件开发如何在SSH中进行真正面向对象的软件开发SSH从头到尾都是围绕着一个中心建立的:面向对象。
Hibernate是作为一种对象持久化手段而存在的。
所谓的O/R MAPPING其实就是持久化。
因为对象与关系只不过是一个个体与集合的关系,本质上并不存在冲突。
不需要映射。
事实上,在大多数情况下,内存中的一个对象正好对应关系中的一条或多条记录。
甚至连转化都不需要。
概念是等同的,不存在映射。
另一种看法是直接把关系中的记录直接看成对象。
这样子的话对于理解持久化的概念会更容易与直接一点。
而Struts则在很大程度上是作为一种O/STREAM MAPPING的技术存在于系统前端的。
从这个意义上讲,Hibernate与Struts都更像是一种对I/O的封装。
因为对象只能生存在内存中,所以才需要这两种技术作I/O映射。
否则“对象”怎么跟外界进行交互呢?既然前两者在大多数情况下都只不过是作为某种程度上的MAPPER存在于系统中的,所以其实只有Spring才是这个框架的核心部分。
Spring的IoC与DI功能就是面向对象的系统中其对象系统的骨架。
如果没有这个骨架,众多的对象就很难连接起来一起工作。
自己开发一个这样的框架当然也不是不可能。
只是这样做的话就免不了掉入重复发明轮子的陷阱。
而Spring正是为了防止或免于大家做这样的事情。
实际上,我对Spring从来没有做过任何详细的研究。
IoC与DI的价值也是在我认识到面向对象的价值以后才被我认识到的。
网上有人认为它们因为是应用设计模式的极佳工具所以很好。
我认为这样的观点有点神化设计模式的味道。
我面向对象不一定要使用设计模式好吧!工欲善其事,必先利其器。
但是同样有话:杀鸡焉用宰牛刀。
设计模式为系统增加了很多不必要的类。
使用它很容易掉入过度工程的陷阱。
事实上,大部分设计模式的存在目的是为了解耦。
但解耦本身其实是一种思想,对这种思想的贯彻不一定要通过设计模式来完成吧。
另一方面,面向对象本身其实已经在很大程度上解决了耦合的问题。
与其因为设计模式的使用而引入大量的静态接口,还不如将有些协作要求交给动态的运行时去处理(至于如何做到这一点,目前仍未想清楚。
但是无论如何,大量接口的存在,对于系统肯定不是一件太好的事情。
事实上,面向对象的本来目的就是为了减少接口,把接口降到第二类成员的地位)。
IoC的价值是很基础的:它完成了对象的“安装”工作。
这使得应用开发过程无须考虑对象的连接。
而只要把对象设计好就行了。
无需考虑对象的“安装”。
比如,一个典型的使用Spring的面向对象开发流程将是这样的:1,开发对象;2,安装对象。
这种流程显然更适合于多人或大规模开发工作。
使用它进行工业级开发变得很容易。
一个对象的使用者甚至可以自己定义被使用对象的接口。
然后再在安装阶段进行相关调整。
可以看出,这里最重要的是安装阶段的引入。
因为如果没有这个阶段的话,开发者就必须在开发阶段完成对象的安装。
这样子的话开发者的注意力就会很容易被转移而最终形成以接口为中心的系统。
这样显然不利于整体的面向对象的开发。
因为在面向对象的开发中,如何更好地实现对象本身比对象之间的交互更重要。
交互应该以对象系统副产品的形式出现而不是以主角出现在系统中。
因为在面向对象的系统中,接口是第二类成员而不是第一类成员。
第一类成员是对象。
系统是由对象组成的系统。
理解面向对象最重要的一点就是要认识到:对象系统不是功能型的系统。
而将整个对象的开发阶段分成开发与安装两个阶段正好是这种思想得以彻底贯彻的唯一方法。
因为这种方法使得在第一阶段几乎不用考虑对象之间的合作,而只需要考虑如何尽量贴切地实现对象本身。
实际上,真正的对象开发也只能在这个阶段得以完成。
这样一来,安装阶段的工作逻辑就很清楚了。
它就好象是在说:好了,现在让我们看看它们能不能一起相处。
而对象开发阶段的逻辑也因此变得更清晰。
为了便于以后的长期协作,可能有必要对对象的行为进行更高层次的抽象以便于以后能提供更多的操作可能(组合)。
也就是说,为了更好的与其它对象相处,可能要对对象本身的价值系统进行重整。
也即对对象的行为进行粒度控制。
面向对象在这一点上与其它开发模型是一样的。
只不过向更高层次抽象的目的不同而已。
如在面向过程的模型中,抽象的目的是为了提供更好过程粒度。
在面向服务的模型中则是为了提供更好的服务粒度。
而在面向对象的模型中则是为了提供更合适的对象行为粒度。
这个流程还隐含着另一种软件开发哲学,即:部件比接口重要。
而不是恰好相反的。
如果部件不能共同工作,那么需要修改的不是部件,而是部件之间的接口。
可见,接口在这里是第二类成员。
这与真正的真实世界的语义其实很相近(除了功能紧凑型系统如汽车,机械,电力。
。
。
这样的系统与软件系统存在本质的区别。
它们的复杂度领域在技术而软件的复杂度领域在协作)。
并且它也正好是面向对象相对面向接口编程的优点之一:面向接口的结果是以接口为中心的系统。
一旦接口修改则整个系统都要...
面向对象软件开发过程
展开全部 原型法是在20世纪80年代中期为了快速开发系统而推出的一种开发模式,旨在改进传统的结构化生命周期法的不足,缩短开发周期,减少开发风险。
原型法的理念是:在获取一组基本需求之后,快速地构造出一个能够反映用户需求的初始系统原型,让用户看到未来系统概貌,以便判断哪些功能是符合要求的,哪些方面还需要改进,不断地对这些需求进一步补充、细化和修改,依次类推,反复进行,直到用户满意为止并由此开发出完整的系统。
面向对象是近20年来国内外IT行业最为关注的技术之一,面向对象技术是一种按照人们对现实世界习惯的认识论和思维方式来研究和模拟客观世界的方法学。
它将现实世界中的任何事物都视为“对象”,将客观世界看成是由许多不同种类的对象构成的,每一个对象都有自己的内部状态和运动规律,不同对象之间的相互联系和相互作用就构成了完整的客观世界。
面向对象方法(Object Oriented,简称OO方法)克服了传统的功能分解方法只能单纯反映管理功能的结构状态、数据流程模型只侧重反映事物的信息特征和流程、信息模拟只能被动地迎合实际问题需要等缺点,构成以系统对象为研究中心,为信息管理系统的分析与设计提供了一种全新的方法。
...
结构化程序设计和面向对象程序设计的主要特征各是什么?
“面向过程程序设计”、主要是为拉大型的工程计算或者为拉完成某个任务而求出结果的对界面则要求不高 其优点是运行速度快“面向对象程序设计”主要是对各种事物能形象的描述并且模拟在计算机上运行它兼容以上面向过程的好多功能 优点是界面比较好做 缺点执行速度和容量没有上面的快 结构化程序设计 对于以上二者均适合 这只是说明设计是的思路和方法 按照俺自己的理解:前者是按照人们日常做事的顺序来设计语言,即无论做什么事都是按照顺序来执行的,一个个的功能模块都是联系在一起的。
总之:做事是有一个个的动作完成的。
后者则是把我们客观世界里的事物都封装起来,各个事物之间是相互独立的。
做什么事情都是由一个个的事物共同完成的,而不是顺序执行。
总之:做事是由一个个的事物共同完成的。
软件设计的基本步骤是什么
软件开发是指一个软件项目的开发,如市场调查,需求分析,可行性分析,初步设计,详细设计,形成文档,建立初步模型,编写详细代码,测试修改,发布等。
软件是怎么样开发出来的 第一个步骤是市场调研,技术和市场要结合才能体现最大价值。
第二个步骤是需求分析,这个阶段需要出三样东西,用户视图,数据词典和用户操作手 册。
用户视图 是该软件用户(包括终端用户和管理用户)所能看到的页面样式,这里面包含了 很多操作方面的流程和条件。
数据词典 是指明数据逻辑关系并加以整理的东东,完成了数据词典,数据库的设计就完成了一半多。
用户操作手册是指明了操作流程的说明书。
请注意,用户操作流程和用户视图是由需求决定的,因此应该在软件设计之前完成,完成这些,就为程序研发提供了约束和准绳,很遗憾太多公司都不是这样做的,因果颠倒,顺序不分,开发工作和实际需求往往因此产生隔阂脱节的现象。
需求分析,除了以上工作,笔者以为作为项目设计者应当完整的做出项目的性能需求说明 书,因为往往性能需求只有懂技术的人才可能理解,这就需要技术专家和需求方(客户或公司市场部门)能够有真正的沟通和了解。
第三个步骤是概要设计,将系统功能模块初步划分,并给出合理的研发流程和资源要求。
作为快速原型设计方法,完成概要设计就可以进入编码阶段了,通常采用这种方法是因为涉及的研发任务属于新领域,技术主管人员一上来无法给出明确的详细设计说明书,但是 并不是说详细设计说明书不重要,事实上快速原型法在完成原型代码后,根据评测结果和 经验教训的总结,还要重新进行详细设计的步骤。
第四个步骤是详细设计,这是考验技术专家设计思维的重要关卡,详细设计说明书应当把 具体的模块以最'干净'的方式(黑箱结构)提供给编码者,使得系统整体模块化达到最 大;一份好的详细设计说明书,可以使编码的复杂性减低到最低,实际上,严格的讲详细 设计说明书应当把每个函数的每个参数的定义都精精细细的提供出来,从需求分析到概要 设计到完成详细设计说明书,一个软件项目就应当说完成了一半了。
换言之,一个大型软 件系统在完成了一半的时候,其实还没有开始一行代码工作。
那些把作软件的程序员简单理解为写代码的,就从根子上犯了错误了。
第五个步骤是编码,在规范化的研发流程中,编码工作在整个项目流程里最多不会超过1/ 2,通常在1/3的时间,所谓磨刀不误砍柴功,设计过程完成的好,编码效率就会极大提 高,编码时不同模块之间的进度协调和协作是最需要小心的,也许一个小模块的问题就可能影响了整体进度,让很多程序员因此被迫停下工作等待,这种问题在很多研发过程中都 出现过。
编码时的相互沟通和应急的解决手段都是相当重要的,对于程序员而言,bug永 远存在,你必须永远面对这个问题,大名鼎鼎的微软,可曾有连续三个月不发补丁的时候 吗?从来没有! 第六个步骤是测试 测试有很多种: 按照测试执行方,可以分为内部测试和外部测试 按照测试范围,可以分为模块测试和整体联调 按照测试条件,可以分为正常操作情况测试和异常情况测试 按照测试的输入范围,可以分为全覆盖测试和抽样测试 以上都很好理解,不再解释。
总之,测试同样是项目研发中一个相当重要的步骤,对于一个大型软件,3个月到1年的外部测试都是正常的,因为永远都会又不可预料的问题存在。
完成测试后,完成验收并完成最后的一些帮助文档,整体项目才算告一段落,当然日后少不了升级,修补等等工作,只要不是想通过一锤子买卖骗钱,就要不停的跟踪软件的运营 状况并持续修补升级,直到这个软件被彻底淘汰为止。
什么是软件开发的核心问题 按照软件工程鼻祖,《人月神话》作者 Brooks 在“没有银弹——软件工程中的根本和次要问题”一章中阐述的思想,软件开发的核心问题就是如何从概念上对一个复杂的业务系统进行建模。
这个建模是含义广泛的,不仅仅包括对象建模,还包括数据建模、算法建模等等一系列的内容。
总而言之是要先找到解决复杂问题的突破口(先要搞明白需要做什么,然后再考虑如何做)。
至于采用什么表示方法(简单文本、UML 图、E-R 图)、采用什么高级语言、是否一定要用面向对象、使用什么开发工具都是次要的问题。
软件开发方法 软件开发方法(Software Development Method)是指软件开发过程所遵循的办法和步骤。
软件开发活动的目的是有效地得到一些工作产物,也就是一个运行的系统及其支持文档,并且满足有关的质量要求。
软件开发是一种非常复杂的脑力劳动,所以经常更多讨论的是软件开发方法学,指的是规则、方法和工具的集成,既支持开发,也支持以后的演变过程(交付运行后,系统还会变化,或是为了改错,或是为了功能的增减)。
关于组成软件开发和系统演化的活动有着各种模型(参见软件生存周期,软件开发模型,软件过程),但是典型地都包含了以下的过程或活动:分析、设计、实现、确认(测试验收)、演化(维护)。
有些软件开发方法是专门针对某一开发阶段的,属于局部性的软件开发方法。
特别是软件开发...
开发一款软件,要多少钱?
1、看App本身的复杂度;需要服务器后台支持的复杂度要高,是3D游戏需要3d引擎的复杂度要高很多很多。
。
。
2、看工作范围;如果你已做好设计,并制作好界面素材,准备好数据,并自备帐号自己完成上线申请,仅委托开发就要便宜一些,反之如果委托全新的创意加上功能的策划,费用就会增高不少。
3、看质量要求;一样的App,质量不同价格肯定也受影响,并且App还有一个升级的问题,这个升级是有大量工作要做的,是否承担升级和完善的责任也会影响价格;4、参考价格;A-一个简单的生活应用App,不依赖后台,连设计+开发都委托,直接开发工期=2周,方案+沟通+测试+修改=2周,前前后后约1个月,看团队质量,价格应该在3万~10万;B-一个游戏App,纯单机,不依赖后台,无应用内购买,无Push,2D游戏,合作应该也是4周左右,价格会略高些,5万到10万;C-复杂的前后台App,比如现有系统整合的App或者业务系统复杂的委托开发,这种差不多就要8万起,而且一期很难开发到一个成熟的状态,需要差不多3次升级能达到一个可用度较高的状态,真要做好的话,找靠谱团队,价格应该在10万~几十万,周期约2个月~3个月。
请采纳。
转载请注明出处51数据库 » 面向对象软件开发流程