❶ 软件项目取得的阶段性成果怎么写
就说明你的软件在开抄发过袭程中每一步所完成的阶段性成就,例如需求分析过程中你们所掌握的用户需求,在体系结构设计当中你们所设计的体系结构是什么样子的,在详细设计当中,你们的UI设计,数据库设计等相应的完成情况,截个图出来给人展示一下,完成了哪些具体的功能模块也展示出来,总的来说就是展现你们目前完成的项目任务情况。
❷ 软件项目是如何进行技术成果转化的
软件项目得到了应用就实现了技术成果转化,所以你现在的任务就是让别人用你软件。
❸ 项目成果是什么意思
项目成果,顾名思义就是项目所取得的成果,比如成功设计了什么产品,取得了专利或软件专著作权等,突属破了某个技术瓶颈,实现了多少销售收入,增加人员就业等。
项目验收,也称范围核实或移交(Cutover)。它是核查项目计划规定范围内各项工作或活动是否已经全部完成,可交付成果是否令人满意,并将核查结果记录在验收文件中的一系列活动。
(3)软件实施成果扩展阅读:
确定过程:
1、项目情况分析
对项目的整个环境进行有效分析,包括外部环境、上层组织系统、市场情况、相关关系人(客户、承包商、相关供应商等)、社会经济和政治/法律环境等。
2、项目问题界定
对项目情况分析后,发现是否存在影响项目开展和发展的因素和问题,并对问题分类、界定。分析得出项目问题产生的原因、背景和界限。
3、确定项目目标因素
根据项目当前问题的分析和定义,确定可能影响项目发展和成败的明确、具体、可量化的目标因素,如项目风险大小、资金成本、项目涉及领域、通货膨胀、回收期等。具体应该体现在项目论证和可行性分析中。
❹ 软件实施项目主要有哪几个阶段每个阶段的交付成果是什么
一、复软件分析:是一个对用户制的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言表达出来的过程,replica soccer jerseys。基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。
二、软件设计:主要任务就是将软件分解成模块使之能实现某个功能的数据和程序说明、可执行程序的程序单元。
三、软件编码:指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。
四、软件测试:目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)。
五、软件维护:指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。
希望会对你的计算机考试有帮助
❺ 做软件实施工作的,工作总结怎样写团队给自己成长带来的作用
总结是对已经做过的工作进行理性的思考。它要回顾的是过去做了些什么,如何做的,做得怎么样。总结与计划是相辅相成的,要以计划为依据,订计划总是在总结经验的基础上进行的。其间有一条规律,就是:计划——实践——总结——再计划——再实践——再总结。
一、工作总结有如下特点:
1.自我性
总结是对自身社会实践进行回顾的产物,它以自身工作实践为材料,采用的是第一人称写法 ,其中的成绩、做法、经验、教训等,都有自指性的特征。
2.回顾性
这一点总结与计划正好相反。计划是预想未来,对将要开展的工作进行安排。总结是回顾过 去,对前一段的工作进行检验,但目的还是为了做好下一段的工作。所以总结和计划这两种 文体的关系是十分密切的,一方面,计划是总结的标准和依据,另一方面,总结又是制定下 一步工作计划的重要参考。
3.客观性
总结是对前段社会实践活动进行全面回顾、检查的文种,这决定了总结有很强的客观性特征 。它是以自身的实践活动为依据的,所列举的事例和数据都必须完全可靠,确凿无误,任何 夸大、缩小、随意杜撰、歪曲事实的做法都会使总结失去应有的价值。
4.经验性
总结还必须从理论的高度概括经验教训。凡是正确的实践活动,总会产生物质和精神两个方 面的成果。作为精神成果的经验教训,从某种意义上说,比物质成果更宝贵,因为它对今后 的社会实践有着重要的指导作用。这一特性要求总结必须按照实践是检验真理的惟一标准的 原则,去正确地反映客观事物的本来面目,找出正反两方面的经验,得出规律性认识,这样 才能达到总结的目的。
二、工作总结的种类:
1、按总结的时间分,有年度总结、半年总结、季度总结。进行某项重大任务时,还要分期总结或叫阶段总结。
2、按总结的范围分,有单位总结、个人总结、综合性总结、专题总结等。
3、按总结的性质分,有工作、生产、教学、科研总结等。
三、总结撰写前的准备
有人说过:要总结写得好,必须总结作得好;要总结作得好,必须工作做得好,立场观点对头。这应该是写总结的经验之谈。好的总结是在做好总结工作的基础上写出来的,更是人民群众在实际中干出来的。在现实生活中,有的单位干得不怎么样,但总结时却“喷香水”,这对本单位的工作失去实际意义,不应该提倡。也有的单位工作有成绩却形成不了典型经验,这种情况说明总结工作没做好。上述两种情况都是应该避免的。搞好总结,是企业管理的一项重要工作,是增强干部、职工凝聚力的一种重要手段,需要认真对待。
总结究竟应该怎样做呢?从总体上说要发动群众,自下而上做总结。工作是群众做的,总结也应该由他们来做。不应撇开群众凑集政绩,绞尽脑汁制作观点。总结过程中能量化的要量化,把定性分析和定量分析结合起来考察,从客观事实出发,防止感情用事,以免总结流于形式。
此外,搞好总结还要注意以下几点:
1、重视调查研究,熟悉情况
总结的对象是过去做过的工作或完成的某项任务,进行总结时,要通过调查研究,努力掌握全面情况和了解整个工作过程,只有这样,才能进行全面总结,避免以偏概全。
2、热爱本职工作,熟悉业务
热爱本职工作,事业心强,是做好工作的前提,也是搞好总结的基础。写总结涉及本职业务,如果对业务不熟悉,就难免言不及义。
3、坚持实事求是的原则
总结是对以往工作的评价,必须坚持实事求是的原则,就像陈云同志所说的那样,“是成绩就写成绩,是错误就写错误;是大错误就写大错误,是小错误就写小错误”。这样才能有益于现在,有益于将来。夸大成绩,报喜不报忧,违反作总结的目的,是应该摒弃的。
4、重点在出经验,找规律
总结的最终目的是得出经验,吸取教训,找出做好工作的规律。因此,总结不能停留在表面现象的认识和客观事例的罗列上,必须从实践中归纳出规律性的结论来。
四、总结的写法
一、工作总结的结构形式及其内容
年终总结(含综合性总结)或专题总结,其标题通常采用两种写法,一种是发文单位名称+时间+文种,如《铜仁地区烟草专卖局2004年工作总结》;另一种是采用新闻标题的形式,如松桃县大兴访送部的卷烟零售户诚信等级管理专题总结:《客户争等级,诚信稳销量》。
正文一般分为如下三部分表述:
1、情况回顾
这是总结的开头部分,叫前言或小引,用来交代总结的缘由,或对总结的内容、范围、目的作限定,对所做的工作或过程作扼要的概述、评估。这部分文字篇幅不宜过长,只作概括说明,不展开分析、评议。
2、经验体会
这部分是总结的主体,在第一部分概述情况之后展开分述。有的用小标题分别阐明成绩与问题、做法与体会或者成绩与缺点。如果不是这样,就无法让人抓住要领。专题性的总结,也可以提炼出几条经验,以起到醒目、明了。
运用这种方法要注意各部分之间的关系。各部分既有相对的独立性,又有密切的内在联系,使之形成合力,共同说明基本经验。
3、今后打算
这是总结的结尾部分。它是在上一部分总结出经验教训之后,根据已经取得的成绩和新形势、新任务的要求,提出今后的设法、打算,成为新一年制订计划的依据。内容包括应如何发扬成绩,克服存在问题及明确今后的努力方向。也可以展望未来,得出新的奋斗目标。
五、工作总结文字表述的要求
1、要善于抓重点
总结涉及本单位工作的方方面面,但不能不分主次、轻重、面面俱到,而必须抓住重点。什么是重点?是指工作中取得的主要经验,或发现的主要问题,或探索出来的客观规律。不要分散笔墨,兼收并蓄。现在有些总结越写越长,固然有的是执笔人怕挂一漏万,但出有的是领导同志怕自己所抓的工作没写上几笔就没有成绩等等,造成总结内容庞杂,中心不突出。
2、要写得有特色
特色,是区别他事物的属性。单位不同,成绩各异。同一个单位今年的总结与往年也应该不同。现在一些总结读后总觉有雷同感。有些单位的总结几年一贯制,内容差不多,只是换了某些数字。这样的总结,缺少实用价值。陈云同志在50年代就强调:总结经验是提高自己的重要方法。任何单位或个人在开展工作时都有自己一套不同于别人的方法,经验体会也各有不同。写总结时,在充分占有材料基础上,要认真分析、比较,找了重点,不要停留在一般化上。
3、要注意观点与材料统一
总结中的经验体会是从实际工作中,也就是从大量事实材料中提炼出来的。经验体会一旦形成,又要选择必要的材料予以说明,经验体会才能“立”起来,具有实用价值。这就是观点与材料的统一。但常见一些经验总结往往不注意这一点,如同毛泽东同志批评的那样,“把材料和观点割断,讲材料的时候没有观点,讲观点的时候没有材料,材料和观点互不联系”,这就不好。
4、语言要准确、简明
总结的文字要做到判断明确,就必须用词准确,用例确凿,评断不含糊。简明则是要求在阐述观点时,做到概括与具体相结合,要言不烦,切忌笼统、累赘,做到文字朴实,简洁明了。
六、撰写总结应注意的问题
(一)首先要有实事求是的态度。工作总结中,常常出现两种倾向:一种是好大喜功,搞浮夸,只讲成绩,不谈问题;另一种是将总结写成了“检讨书”,把工作说成一无是处。这两种都不是实事求是的态度。总结的特点之一“回顾的理论性”,正是反映在如实地、一分为二地分析、评价自己的工作上,对成绩,不要夸大;对问题,不要轻描淡写。
(二)总结要写得有理论价值。一方面,要抓主要矛盾,无论谈成绩或谈存在问题,都不要面面俱到。另一方面,对主要矛盾要进行深入细致的分析,谈成绩要写清怎么做的,为什么这样做,效果如何,经验是什么;谈存在问题,要写清是什么问题,为什么会出现这种问题,其性质是什么,教训是什么。这样的总结,才能对前一段的工作有所反思,并由感性认识上升到理性认识。
(三)总结要用第一人称。即要从本单位、本部门的角度来撰写。表达方式以叙述、议论为主,说明为辅,可以夹叙夹议说。
六、范文
范文一
在XXXX工作一年时间了,在这一年里,在领导的指导、关心培养下,在同事的支持帮助、密切配合下,我不断加强思想政治学习,对工作精益求精,较为圆满地完成了自己所承担的各项工作任务,个人思想政治素质和业务工作能力都取得了一定的进步,为今后的工作和学习打下了良好的基础,现将工作学习情况总结如下:
一、政治思想方面
认真加强思想政治学习,不断提高自己的政治理论水平。始终坚持以邓小平理论和“三个代表”重要思想为指导,认真贯彻党的十六大和十六届三中、四中全会精神,深入领会执行中央、省和市委、市政府的一系列重大方针、政策、措施。系统地学习了《中共中央关于加强党的执政能力建设的决定》、《中共中央关于加强和改进党的作风建设的决定》、《关于完善社会主义市场经济体制若干问题的决定》等重要文件,牢固树立全心全意为人民服务的宗旨和正确的世界观、人生观和价值观,以开展保持共产党员先进性教育活动为重要契机,加强对马列理论、社会主义市场经济理论及现代经济、科技、法律、办公自动化等与工作领域相关的专业知识的学习,使思想认识和自身素质都有了新的提高。
二、工作方面
本着对工作积极、认真、负责的态度,认真遵守各项规章制度,虚心向领导和同事请教,努力学习各项业务知识,通过不断学习,不断积累,使工作效率和工作质量有了较大提高,较好地完成了各项工作任务。
1、深入开展调查研究。
2、做好中长期规划的研究与编制工作。
3、积极申报国家资金支持的建设项目。
4、做好年度管理计划工作。
三、学习生活方面
在工作过程中,我深深感到加强自身学习、提高自身素质的紧迫性,一是向书本学习,坚持每天挤出一定的时间不断充实自己,端正态度,改进方法,广泛汲取各种“营养”;二是向周围的同志学习,工作中我始终保持谦虚谨慎、虚心求教的态度,主动向领导、同事们请教,学习他们任劳任怨、求真务实的工作作风和处理问题的方法;三是向实践学习,把所学的知识运用于实际工作中,在实践中检验所学知识,查找不足,提高自己,防止和克服浅尝辄止、一知半解的倾向。
作为一名机关工作者,我时刻提醒自己,要不断加强自身思想道德的修养和人格品质的锻炼,增强奉献意识,把清正廉洁作为人格修养的重点。不受社会上一些不良风气的影响,从一点一滴的小事做起,生活中勤俭节朴,宽以待人;工作中严以律己,忠于职守,防微杜渐。牢固树立全心全意为人民服务的宗旨意识,帮助身边需要帮助的人。
一年来,我在组织、领导和同志们的帮助和支持下取得了一定的成绩,但我深知自己还存在一些缺点和不足,政治理论基础还不扎实,业务知识不够全面,工作方式不够成熟。在今后的工作中,我要努力做到戒骄戒躁,坚定政治信念,加强理论学习,积累经验教训,不断调整自己的思维方式和工作方法,在实践中磨练自己,成为人民满意的公务员。
请组织和同志们考验。
范文二
2008年上半年度工作总结
各位同事,大家好
今天,我们在团结奋进、紧罗密彭的热烈气氛中为上半年度总体工作划上了一个完美的句号。这半年怡逢一年一度的风扇旺季,也许大家都在忙于旺季的投入,而忘记了时间的原因,总感觉仅是弹指一瞬间,08年整整过去了一半。总体来讲,这半年,我们百利丰人,是忙碌的同时又是充实的,是团结拼搏的又是成果丰硕的。我们会感受到农民丰收的喜乐,品一品滋味,忙点累点,也是香甜的。
回顾这半年度工作,我依然是在困难与学习中成长而来,学习指专业知识与工作经验,困难是指随公司经济业务的拓展而财务核算工作量的加大,例如商场数量的增加(市场较上一年度增加十余个)加之风扇旺季使得日常工作超出饱和度。不过不管如何,一路上还是蹒跚走过来了。记得年初针对我所涉及的财务工作为自己定下的计划一是细化工作,二是不断进取提升数据分析能力。下面,请允许我围绕这一年之计向大家做段简要的工作总结。
一、 细化工作:
工作的细化是我过去乃至未来永久不变的追求与方向。我总认为,为事者,求细求
真为之首,只有端正自己的思想才会被现实世界所认同。
1. 细化工作先从个人工作范围扩充谈起
百利丰是一个有目标、有思想、的进取性团队。那么要保持前进的步伐,首先要考验团队协作力。当然,各司其职,我们做的都很好。要谈协作力,也许很难轻松做到。其实很多岗位职工作范围不是一个固定值,应该是随经济业务的开展而变化着的。各扫门前雪,不管他人瓦上霜的工作态度,很多时候也能完成基本的协作,维持现状也许足已,追求更高是远远不够的。真正意思的协作是真心真意投入到我们共同的事业中来,做一些表面上看来并不是自己本职工作的事,比如帮助新同仁完成一项新课题,协助一位与你工作性质完全不同的同事做一件他较困惑的事。相互渗透,这才叫真正意义上的协作,看似份外,实为份内,仔细一想,是有道理的。这些事情和自己工作有着千丝万缕的联系,也许同事的困惑追朔根本,因自己昨日的一点小疏忽而起。或者,没有今日的份外协作,也许自己明天的本职工作就不能更顺利或者更完美的开展。
我曾反思过这样一个问题狗不应该去拿老鼠吗?寓言里说,曾有一人亲眼见过狗认真的抓来一只老鼠,拿来与猫分享。它们同为一个园林,虽工作性质完全不同,但却共有一个忠诚的态度,有一个共同的目标,那就是让这个园林明天会更好。动物尚且如此,何况人呢?所以在某种意义上“狗就应该去拿老鼠。” 关于工作范围,我就是这样想的,这是我的长期方向,要真正的做到这一点也需要长期的改进与提升。每逢参加庞大的促销队武例会时,我就会主动通告大家,只要遇到库存有变动的业务,就可以与我及时沟通,在特殊状况下,如果需要我来帮忙或协助,也包括要货,及其他我权力与能力范围之内的事,请拨打6205,我愿为大家服务!在此还是肯求大家,多多配合,多多支持!
2. 细化工作还要谈到狭义上的岗位职责
我本人即为财务部一名员工,并非管理千军万马,只求管出一本账实相符的好账,我想成本会计这一块也需要细中加细。像是绘画,仅是粗枝大叶简单勾勒出来的作品,也许连自己也不会喜欢。如果我们投高价配置的财务系统,最终如果不能提供一个可靠数据给公司,那就失去了意义,针对这一点,我想首先要健全商品收支管理制度,二是引导货物出入仓真正走向现代化管理。
在做旺季功坚战的紧张时刻,从数据中分析,我发现这样一个突出问题-------也许是有时出于不知情或是没办法,没时间的考虑而做出无手续性交接。我们都是百利丰的主人,在货物收出发生的当时,可否反思以下两种被喻为颗粒归仓的方案,A种方案,现有一堆不知名,记不清具体数量及详细名称的货物,由不确地点,已捆好,平移至你处。算是颗粒归仓。B种方案,今有具体时间,具体经手人确认签字并与实物相符的单据连同货物一并交于专项负责人处,请负责人确认签字。也算是颗粒归仓。
我们常会看到小孩子间相互拉勾的情形,这并非在教师与家长的督促下,自发的一种交接,表面上是情感交接,但在童年来说,这比签字还重要,还有力度。看来连孩子尚且能做到拒绝情感交接。再比如,我们在自己小家庭里,借给他人财或物时,很少会这样去说:“我现在借给你几张人民币,但具体多少我不知道,反正你到时候你还我就行,具体还几张你看着办吧,无所谓。”这样看来,显然选择B方案会是事半功倍的事。A方案日后所带来的负面影响是很深的,可能要经过大规模审查,核实,即劳民伤财,又加大工作难度,降低工作效率,近尔影响经济开发运行速度的恶性循环,还很有可能为公司造成严惩的经济损失。在当前,单凭觉悟的提升也并不会解决问题,而细化管理工作,不断健全管理规定,从而运用科学管理方案,去引导全方面工作走向正轨,是一切管理问题之首。
总之,工作的细到程度是无止境的,是每个人无休止的追求。而这一点做为财务工作者更为重审核的细致程度,管理的细致程度,无尽无休。还是那句话,财务管理绝对可以代表公司的形象,我们对此者有责任去为之做些什么。
二、 不断进取提升数据分析能力以全面提升自己。
数据分析是财务工作从单一记账工作而分支出的一项学问,是继财务监督与管理之前的初级升华,也是合格财务工作者的基本前提。数据分析能力是我的欠缺项目,这一点我很有紧迫感。我常常拿来管理会计学上的案例来分析自己工作上的实例,或多或少对我的工作有些提示吧。但研究并不透彻。所以说实话,这一计划我完成的不好,客观理由是旺季分身无术,无睱故及,本质是,自己努力不够。
我提出自我批评。我喜欢来自于自己的指责,从而多从自身找差距,才能以平和的心态去面对百利丰这进取性的团队。
时间的关系,在此仅谈这些。最终还是一句谢谢,一句肯求。
谢谢大家的是过去的默契,肯求大家的是,请继续做我的朋友,帮助我,支持我,也在多多赐教的同时理解我的不足,我们携手同行!
总结完毕,谢谢大家。
❻ 软件开发所取得的成就有哪些
面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
谈到面向对象,这方面的文章非常多。但是,明确地给出对象的定义或说明对象的定义的非常少——至少我现在还没有发现。其初,“面向对象”是专指在程序设计中采用封装、继承、抽象等设计方法。可是,这个定义显然不能再适合现在情况。面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的分析(OOA,Object Oriented Analysis),面向对象的设计(OOD,Object Oriented Design)、以及我们经常说的面向对象的编程实现(OOP,Object Oriented Programming)。许多有关面向对象的文章都只是讲述在面向对象的开发中所需要注意的问题或所采用的比较好的设计方法。看这些文章只有真正懂得什么是对象,什么是面向对象,才能最大程度地对自己有所裨益。这一点,恐怕对初学者甚至是从事相关工作多年的人员也会对它们的概念模糊不清。
面向对象是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。
一、传统开发方法存在问题
1.软件重用性差
重用性是指同一事物不经修改或稍加修改就可多次重复使用的性质。软件重用性是软件工程追求的目标之一。
2.软件可维护性差
软件工程强调软件的可维护性,强调文档资料的重要性,规定最终的软件产品应该由完整、一致的配置成分组成。在软件开发过程中,始终强调软件的可读性、可修改性和可测试性是软件的重要的质量指标。实践证明,用传统方法开发出来的软件,维护时其费用和成本仍然很高,其原因是可修改性差,维护困难,导致可维护性差。
3.开发出的软件不能满足用户需要
用传统的结构化方法开发大型软件系统涉及各种不同领域的知识,在开发需求模糊或需求动态变化的系统时,所开发出的软件系统往往不能真正满足用户的需要。
用结构化方法开发的软件,其稳定性、可修改性和可重用性都比较差,这是因为结构化方法的本质是功能分解,从代表目标系统整体功能的单个处理着手,自顶向下不断把复杂的处理分解为子处理,这样一层一层的分解下去,直到仅剩下若干个容易实现的子处理功能为止,然后用相应的工具来描述各个最低层的处理。因此,结构化方法是围绕实现处理功能的“过程”来构造系统的。然而,用户需求的变化大部分是针对功能的,因此,这种变化对于基于过程的设计来说是灾难性的。用这种方法设计出来的系统结构常常是不稳定的 ,用户需求的变化往往造成系统结构的较大变化,从而需要花费很大代价才能实现这种变化。
二、面向对象的基本概念
(1)对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。
(2)对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中
(3)类。
具有相同或相似性质的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。
(4)类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般——具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体——部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“has a”关系。
(5)消息和方法。
对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。
类中操作的实现过程叫做方法,一个方法有方法名、参数、方法体。消息传递如图10-1所示。
二、面向对象的特征
(1)对象唯一性。
每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变,不同的对象不能有相同的标识。
(2)分类性。
分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。
(3)继承性。
继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。
继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。
在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承。
在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。
在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。
采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。
(4)多态性(多形性)
多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。
多态性允许每个对象以适合自身的方式去响应共同的消息。
多态性增强了软件的灵活性和重用性。
三、面向对象的要素
(1)抽象。
抽象是指强调实体的本质、内在的属性。在系统开发中,抽象指的是在决定如何实现对象之前的对象的意义和行为。使用抽象可以尽可能避免过早考虑一些细节。
类实现了对象的数据(即状态)和行为的抽象。
(2)封装性(信息隐藏)。
封装性是保证软件部件具有优良的模块性的基础。
面向对象的类是封装良好的模块,类定义将其说明(用户可见的外部接口)与实现(用户不可见的内部实现)显式地分开,其内部实现按其具体定义的作用域提供保护。
对象是封装的最基本单位。封装防止了程序相互依赖性而带来的变动影响。面向对象的封装比传统语言的封装更为清晰、更为有力。
(3)共享性
面向对象技术在不同级别上促进了共享
同一类中的共享。同一类中的对象有着相同数据结构。这些对象之间是结构、行为特征的共享关系。
在同一应用中共享。在同一应用的类层次结构中,存在继承关系的各相似子类中,存在数据结构和行为的继承,使各相似子类共享共同的结构和行为。使用继承来实现代码的共享,这也是面向对象的主要优点之一。
在不同应用中共享。面向对象不仅允许在同一应用中共享信息,而且为未来目标的可重用设计准备了条件。通过类库这种机制和结构来实现不同应用中的信息共享。
4.强调对象结构而不是程序结构
四、面向对象的开发方法
目前,面向对象开发方法的研究已日趋成熟,国际上已有不少面向对象产品出现。面向对象开发方法有Coad方法、Booch方法和OMT方法等。
1.Booch方法
Booch最先描述了面向对象的软件开发方法的基础问题,指出面向对象开发是一种根本不同于传统的功能分解的设计方法。面向对象的软件分解更接近人对客观事务的理解,而功能分解只通过问题空间的转换来获得。
2.Coad方法
Coad方法是1989年Coad和Yourdon提出的面向对象开发方法。该方法的主要优点是通过多年来大系统开发的经验与面向对象概念的有机结合,在对象、结构、属性和操作的认定方面,提出了一套系统的原则。该方法完成了从需求角度进一步进行类和类层次结构的认定。尽管Coad方法没有引入类和类层次结构的术语,但事实上已经在分类结构、属性、操作、消息关联等概念中体现了类和类层次结构的特征。
3.OMT方法
OMT方法是1991年由James Rumbaugh等5人提出来的,其经典著作为“面向对象的建模与设计”。
该方法是一种新兴的面向对象的开发方法,开发工作的基础是对真实世界的对象建模,然后围绕这些对象使用分析模型来进行独立于语言的设计,面向对象的建模和设计促进了对需求的理解,有利于开发得更清晰、更容易维护的软件系统。该方法为大多数应用领域的软件开发提供了一种实际的、高效的保证,努力寻求一种问题求解的实际方法。
4.UML(Unified Modeling Language)语言
软件工程领域在1995年~1997年取得了前所未有的进展,其成果超过软件工程领域过去15年的成就总和,其中最重要的成果之一就是统一建模语言(UML)的出现。UML将是面向对象技术领域内占主导地位的标准建模语言。
UML不仅统一了Booch方法、OMT方法、OOSE方法的表示方法,而且对其作了进一步的发展,最终统一为大众接受的标准建模语言。UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发全过程。
五、面向对象的模型
·对象模型
对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述,表现了对象的相互关系。该模型主要关心系统中对象的结构、属性和操作,它是分析阶段三个模型的核心,是其他两个模型的框架。
1.对象和类
(1) 对象。
对象建模的目的就是描述对象。
(2) 类。
通过将对象抽象成类,我们可以使问题抽象化,抽象增强了模型的归纳能力。
(3) 属性。
属性指的是类中对象所具有的性质(数据值)。
(4) 操作和方法。
操作是类中对象所使用的一种功能或变换。类中的各对象可以共享操作,每个操作都有一个目标对象作为其隐含参数。
方法是类的操作的实现步骤。
2.关联和链
关联是建立类之间关系的一种手段,而链则是建立对象之间关系的一种手段。
(1) 关联和链的含义。
链表示对象间的物理与概念联结,关联表示类之间的一种关系,链是关联的实例,关联是链的抽象。
(2) 角色。
角色说明类在关联中的作用,它位于关联的端点。
(3) 受限关联。
受限关联由两个类及一个限定词组成,限定词是一种特定的属性,用来有效的减少关联的重数,限定词在关联的终端对象集中说明。
限定提高了语义的精确性,增强了查询能力,在现实世界中,常常出现限定词。
(4) 关联的多重性。
关联的多重性是指类中有多少个对象与关联的类的一个对象相关。重数常描述为“一”或“多”。
图10-8表示了各种关联的重数。小实心圆表示“多个”,从零到多。小空心圆表示零或一。没有符号表示的是一对一关联。
3.类的层次结构
(1) 聚集关系。
聚集是一种“整体-部分”关系。在这种关系中,有整体类和部分类之分。聚集最重要的性质是传递性,也具有逆对称性。
聚集可以有不同层次,可以把不同分类聚集起来得到一颗简单的聚集树,聚集树是一种简单表示,比画很多线来将部分类联系起来简单得多,对象模型应该容易地反映各级层次,图10-10表示一个关于微机的多极聚集。
(2)一般化关系。
一般化关系是在保留对象差异的同时共享对象相似性的一种高度抽象方式。它是“一般---具体”的关系。一般化类称为你类,具体类又能称为子类,各子类继承了交类的性质,而各子类的一些共同性质和操作又归纳到你类中。因此,一般化关系和继承是同时存在的。一般化关系的符号表示是在类关联的连线上加一个小三角形,如图10-11
4.对象模型
(1)模板。模板是类、关联、一般化结构的逻辑组成。
(2)对象模型。
对象模型是由一个或若干个模板组成。模板将模型分为若干个便于管理的子块,在整个对象模型和类及关联的构造块之间,模板提供了一种集成的中间单元,模板中的类名及关联名是唯一的。
·动态模型
动态模型是与时间和变化有关的系统性质。该模型描述了系统的控制结构,它表示了瞬间的、行为化的系统控制
性质,它关心的是系统的控制,操作的执行顺序,它表示从对象的事件和状态的角度出发,表现了对象的相互行为。
该模型描述的系统属性是触发事件、事件序列、状态、事件与状态的组织。使用状态图作为描述工具。它涉及到事件、状态、操作等重要概念。
1.事件
事件是指定时刻发生的某件事。
2.状态
状态是对象属性值的抽象。对象的属性值按照影响对象显著行为的性质将其归并到一个状态中去。状态指明了对象
对输入事件的响应。
3.状态图
状态图是一个标准的计算机概念,他是有限自动机的图形表示,这里把状态图作为建立动态模型的图形工具。
状态图反映了状态与事件的关系。当接收一事件时,下一状态就取决于当前状态和所接收的该事件,由该事件引起的状态变化称为转换。
状态图是一种图,用结点表示状态,结点用圆圈表示;圆圈内有状态名,用箭头连线表示状态的转换,上面标记事件名,箭头方向表示转换的方向。
·功能模型
功能模型描述了系统的所有计算。功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。功能模型表明一个计算如何从输入值得到输出值,它不考虑计算的次序。功能模型由多张数据流图组成。数据流图用来表示从源对象到目标对象的数据值的流向,它不包含控制信息,控制信息在动态模型中表示,同时数据流图也不表示对象中值的组织,值的组织在对象模型中表示。图10-15给出了一个窗口系统的图标显示的数据流图。
数据流图中包含有处理、数据流、动作对象和数据存储对象。
1.处理
数据流图中的处理用来改变数据值。最低层处理是纯粹的函数,一张完整的数据流图是一个高层处理。
2.数据流
数据流图中的数据流将对象的输出与处理、处理与对象的输入、处理与处理联系起来。在一个计算机中,用数据流来表示一中间数据值,数据流不能改变数据值。
3.动作对象
动作对象是一种主动对象,它通过生成或者使用数据值来驱动数据流图。
4.数据存储对象
数据流图中的数据存储是被动对象,它用来存储数据。它与动作对象不一样,数据存储本身不产生任何操作,它只响应存储和访问的要求。
六、面向对象的分析
面向对象分析的目的是对客观世界的系统进行建模。本节以上面介绍的模型概念为基础,结合“银行网络系统”的具体实例来构造客观世界问题的准确、严密的分析模型。
分析模型有三种用途:用来明确问题需求;为用户和开发人员提供明确需求;为用户和开发人员提供一个协商的基础,作为后继的设计和实现的框架。
(一) 面向对象的分析
系统分析的第一步是:陈述需求。分析者必须同用户一块工作来提炼需求,因为这样才表示了用户的真实意图,其中涉及对需求的分析及查找丢失的信息。下面以“银行网络系统”为例,用面向对象方法进行开发。
银行网络系统问题陈述: 设计支持银行网络的软件,银行网络包括人工出纳站和分行共享的自动出纳机。每个分理处用分理处计算机来保存各自的帐户,处理各自的事务;各自分理处的出纳站与分理处计算机通信,出纳站录入帐户和事务数据;自动出纳机与分行计算机通信,分行计算机与拨款分理处结帐,自动出纳机与用户接口接受现金卡,与分行计算机通信完成事务,发放现金,打印收据;系统需要记录保管和安全措施;系统必须正确处理同一帐户的并发访问;每个分处理为自己的计算机准备软件,银行网络费用根据顾客和现金卡的数目分摊给各分理处。
图10-18给出银行网络系统的示意图。
(二)建立对象模型
首先标识和关联,因为它们影响了整体结构和解决问题的方法,其次是增加属性,进一步描述类和关联的基本网络,使用继承合并和组织类,最后操作增加到类中去作为构造动态模型和功能模型的副产品。
1.确定类
构造对象模型的第一步是标出来自问题域的相关的对象类,对象包括物理实体和概念。所有类在应用中都必须有意义,在问题陈述中,并非所有类都是明显给出的。有些是隐含在问题域或一般知识中的。
按图10-19所示的过程确定类
查找问题陈述中的所有名词,产生如下的暂定类。
软件 银行网络 出纳员 自动出纳机 分行
分处理 分处理计算机 帐户 事务 出纳站
事务数据 分行计算机 现金卡 用户 现金
收据 系统 顾客 费用 帐户数据
访问 安全措施 记录保管
根据下列标准,去掉不必要的类和不正确的类。
(1) 冗余类:若两个类表述了同一个信息 ,保留最富有描述能力的类。如"用户"和"顾客"就是重复的描述,因为"顾客"最富有描述性,因此保留它。
(2) 不相干的类:除掉与问题没有关系或根本无关的类。例如,摊派费用超出了银行网络的范围。
(3) 模糊类:类必须是确定的,有些暂定类边界定义模糊或范围太广,如"记录保管"就模糊类,它是"事务"中的一部分。
(4) 属性:某些名词描述的是其他对象的属性,则从暂定类中删除。如果某一性质的独立性很重要,就应该把他归属到类,而不把它作为属性。
(5) 操作:如果问题陈述中的名词有动作含义,则描述的操作就不是类。但是具有自身性质而且需要独立存在的操作应该描述成类。如我们只构造电话模型,"拨号"就是动态模型的一部分而不是类,但在电话拨号系统中,"拨号"是一个重要的类,它日期、时间、受话地点等属性。
在银行网络系统中,模糊类是"系统"、"安全措施"、"记录保管"、"银行网络"等。属于属性的有:"帐户数据"、"收据"、"现金"、"事务数据"。属于实现的如:"访问"、"软件"等。这些均应除去。
2.准备数据字典
为所有建模实体准备一个数据字典。准确描述各个类的精确含义,描述当前问题中的类的范围,包括对类的成员、用法方面的假设或限制。
3.确定关联
两个或多个类之间的相互依赖就是关联。一种依赖表示一种关联,可用各种方式来实现关联,但在分析模型中应删除实现的考虑,以便设计时更为灵活。关联常用描述性动词或动词词组来表示,其中有物理位置的表示、传导的动作、通信、所有者关系、条件的满足等。从问题陈述中抽取所有可能的关联表述,把它们记下来,但不要过早去细化这些表述。
下面是银行网络系统中所有可能的关联,大多数是直接抽取问题中的动词词组而得到的。在陈述中,有些动词词组表述的关联是不明显的。最后,还有一些关联与客观世界或人的假设有关,必须同用户一起核实这种关联,因为这种关联在问题陈述中找不到。
银行网络问题陈述中的关联:
·银行网络包括出纳站和自动出纳机;
·分行共享自动出纳机;
·分理处提供分理处计算机;
·分理处计算机保存帐户;
·分理处计算机处理帐户支付事务;
·分理处拥有出纳站;
·出纳站与分理处计算机通信;
·出纳员为帐户录入事务;
·自动出纳机接受现金卡;
·自动出纳机与用户接口;
·自动出纳机发放现金;
·自动出纳机打印收据;
·系统处理并发访问;
·分理处提供软件;
·费用分摊给分理处。
隐含的动词词组:
·分行由分理处组成;
·分理处拥有帐户;
·分行拥有分行计算机;
·系统提供记录保管;
·系统提供安全;
·顾客有现金卡。
基于问题域知识的关联:
·分理处雇佣出纳员;
·现金卡访问帐户。
使用下列标准去掉不必要和不正确的关联:
(1) 若某个类已被删除,那么与它有关的关联也必须删除或者用其它类来重新表述。在例中,我们删除了"银行网络",相关的关联也要删除。
(2) 不相干的关联或实现阶段的关联:删除所有问题域之外的关联或涉及实现结构中的关联。如"系统处理并发访问"就是一种实现的概念。
(3) 动作:关联应该描述应用域的结构性质而不是瞬时事件,因此应删除"自动出纳机接受现金卡","自动出纳机与用户接口"等。
(4) 派生关联:省略那些可以用其他关联来定义的关联。因为这种关联是冗余的。银行网络系统的初步对象图如图10-20所示。其中含有关联。
4.确定属性
属性是个体对象的性质,属性通常用修饰性的名词词组来表示.形容词常常表示具体的可枚举的属性值,属性不可能在问题陈述中完全表述出来,必须借助于应用域的知识及对客观世界的知识才可以找到它们。只考虑与具体应用直接相关的属性,不要考虑那些超出问题范围的属性。首先找出重要属性,避免那些只用于实现的属性,要为各个属性取有意义的名字。按下列标准删除不必要的和不正确的属性:
(1) 对象:若实体的独立存在比它的值重要,那么这个实体不是属性而是对象。如在邮政目录中,"城市"是一个属性,然而在人口普查中,"城市"则被看作是对象。在具体应用中,具有自身性质的实体一定是对象。
(2) 定词:若属性值取决于某种具体上下文,则可考虑把该属性重新表述为一个限定词。
(3) 名称:名称常常作为限定词而不是对象的属性,当名称不依赖于上下文关系时,名称即为一个对象属性,尤其是它不惟一时。
(4) 标识符:在考虑对象模糊性时,引入对象标识符表示,在对象模型中不列出这些对象标识符,它是隐含在对象模型中,只列出存在于应用域的属性。
(5) 内部值:若属性描述了对外不透明的对象的内部状态,则应从对象模型中删除该属性。
(6) 细化:忽略那些不可能对大多数操作有影响的属性。
5.使用继承来细化类
使用继承来共享公共机构,以次来组织类,可以用两种方式来进行。
(1) 自底向上通过把现有类的共同性质一般化为父类,寻找具有相似的属性,关系或操作的类来发现继承。例如"远程事务"和"出纳事务"是类似的,可以一般化为"事务"。有些一般化结构常常是基于客观世界边界的现有分类,只要可能,尽量使用现有概念。对称性常有助于发现某些丢失的类。
(2) 自顶向下将现有的类细化为更具体的子类。具体化常常可以从应用域中明显看出来。应用域中各枚举字情况是最常见的具体化的来源。例如:菜单,可以有固定菜单,顶部菜单,弹出菜单,下拉菜单等,这就可以把菜单类具体细化为各种具体菜单的子类。当同一关联名出现多次且意义也相同时,应尽量具体化为相关联的类,例如"事务"从"出纳站"和"自动出纳机"进入,则"录入站"就是"出纳站"和"自动出纳站"的一般化。在类层次中,可以为具体的类分配属性和关联。各属性和都应分配给最一般的适合的类,有时也加上一些修正。
应用域中各枚举情况是最常见的具体化的来源。
6.完善对象模型
对象建模不可能一次就能保证模型是完全正确的,软件开发的整个过程就是一个不断完善的过程。模型的不同组成部分多半是在不同的阶段完成的,如果发现模型的缺陷,就必须返回到前期阶段去修改,有些细化工作是在动态模型和功能模型完成之后才开始进行的。
(1) 几种可能丢失对象的情况及解决办法:
·同一类中存在毫无关系的属性和操作,则分解这个类,使各部分相互关联;
·一般化体系不清楚,则可能分离扮演两种角色的类
·存在无目标类的操作,则找出并加上失去目标的类;
·存在名称及目的相同的冗余关联,则通过一般化创建丢失的父类,把关联组织在一起。
(2) 查找多余的类。
类中缺少属性,操作和关联,则可删