1、1课程介绍1 软件开发方法与工具概述2 基于UML的面向对象系统分析与设计3 Java程序设计语言与工具及开发过程介绍(重点)重点介绍Eclipse和JBuilder等java开发环境,演示如何使用这些工具进行用户界面Swing/Applet、数据库应用程序、Web应用程序/jsp/servlet/EJB/J2EE/web service等方面信息系统的开发技术。4 信息系统开发实例 通过实例演示C/S、B/S模式的管理信息系统分析、设计、开发以及测试全过程。2课程地位.Net&C#SQL ServerXMLSPMASP.NET&WebServiceOracleUMLSPR:Computer
2、BaseHTML&JavaScriptSQL Server BaseOOP&Java BaseCSTBJSP/ServletEJB&WebServiceWinFormsStruts&JSFTesting&SQALinux3参考书目1.信息系统开发信息系统开发方法、案例与实验(方法、案例与实验(21世纪高等学校规划世纪高等学校规划教材教材信息管理与信息系统)信息管理与信息系统)2系统分析与设计(第5版),Kenneth E.Kendall等,清华大学出版社3.J2EE编程技术 郝玉龙 清华大学出版社 2008年4.JavaEE基础教程.史胜辉,王春明,沈学华.清华大学出版社,2010年5.Jav
3、a网络应用编程 殷兆麟 高等教育出版社 2004年6.Java系列教程培训教材4成绩评定课堂提问与交互:10分实验:20分笔试:70分51 管理信息系统开发方法与工具概述问题讨论:1、有的同学认为,只要能编写好程序,就能开发管理信息系统(软件),对不对?2、“软件危机”是怎么回事?3、为什么许多管理信息系统开发和应用失败了,原因是什么?6软件危机的产生背景及表现形式 早期的软件主要指程序。程序的开发采用个体工作方式,开发工作主要依赖于开发人员的个人技能和程序设计技巧。当时的软件通常缺少与程序有关的文档,软件开发的实际成本和进度往往与预计的相差甚远,软件的质量得不到保证,开发出来的软件常常不能使
4、用户满意。随着计算机应用的需求不断增长,软件的规模也越来越大,然而软件开发的生产率远远跟不上计算机应用的迅速增长。此外,由于软件开发时缺少好的方法指导和工具辅助,同时又缺少有关的文档,使得大量已有的软件难以维护。上述这些问题严重地阻碍了软件的发展,20世纪60年代中期,人们把上述软件开发和维护中的各种问题称为“软件危机”。7 管理信息系统在组织中的作用已被广泛认可,一些企业试图利用现代管理理论和技术手段加强自身的竞争能力,提高管理水平和效率。这种主观愿望是好的,但是,管理信息系统的开发与组织是一个系统工程,涉及到软件公司和用户企业两方.从两个角度来看待管理信息系统的开发是两个不同的过程.从用户
5、企业的角度,开发实施MIS包括这几步:明确自身需求,明确实施MIS希望带来的改进选择开发方式:自行开发/委托开发/合作开发/从市场上购买合适的软件MIS的选型:选择合适的合作软件开发商,考虑预算约束选择合适的模块MIS的开发过程MIS的运行维护,根据外界环境进行改变拓展.思考:假设你是用友软件公司的CEO,用友公司参与了哪些步骤?8 本门课程学习的主要是从软件公司的角度来进行的.本章从软件公司的角度,对开发方法的选择进行了概述.但本章的第三节则涉及到了一些从用户角度来考虑的问题,如系统开发的基本条件,开发方式,开发单位的选择,系统开发的组织.这些知识对软件公司来说同样是非常重要的.(需要从客户
6、的角度考虑问题!)本课程主要内容都是从软件开发者的角度来进行的.作为软件开发者首先要了解常见的系统开发的风险(如预算超支,延迟交付,系统不符合用户需求,系统可扩展性差等),风险产生的原因(领导不重视,项目管理混乱等)作业:请上网搜索1个企业实施MIS失败的例子,交代背景,说明失败在哪些地方,(如预算超支等),并分析其原因.91.1 概述一、研究开发方法的原因和目的1、研究开发方法的原因随着管理信息系统应用程度的深入和应用规模的扩大,出现的问题:手工处理信息过程和方法原封不动地“翻译”成软件程序后,常常失败。大型的应用系统应如何合理地组织人力、物力、财力来协调开发。对一个实体组织应如何着手调查分
7、析。一个大型系统应该如何进行系统化的划分。如何才能合理地协调数据和利用信息资源。如何充分发挥现有计算机和通讯设备的处理能力,更好的解决实际管理问题等。101.1 概述2、开发方法的基本目标使管理信息系统正确反映管理需要,满足用户需求,使所开发的管理信息系统为管理决策提供信息支持;有效地管理系统开发过程,加快软件开发速度,提高软件生产效率,降低费用;增强管理信息系统软件产品的功能,提高软件产品的质量;充分利用软件技术,尽快跟上硬件发展速度,从而最大限度地发挥和挖掘硬件的功能;合理组织和充分利用人力、物力和财力等资源。11软件质量:与软件产品满足明确或隐含需求的能力有关的特征和特征的总和。从用户最
8、感兴趣的的角度来说,软件质量可以从三个不同的角度来看待:如何使用软件、使用效果如何、软件性能如何;从软件开发的团队的角度来说,不仅要生产出满足质量要求的软件,也对中间产品的质量感兴趣,也对如何运用最少的的资源、最快的进度生产出质量最优的产品感兴趣;从软件维护者的角度看,对软件维护方面的特性感兴趣,关注文档的规范性完整性;1.对企业的管理层来说,注重的是总体效益和长远利益,就是说质量好的软件一般可以帮助企业扩大市场;反之,质量差的软件一般会造成企业市场萎缩。12软件质量特性:根据GBT16260-1996(idt ISOIEC9126:1991)信息技术 软件产品评价 质量特性及其使用指南软件的
9、质量特性包括功能性、可靠性、易用性、效率、可维护性、可移植性等六个方面,每个方面都包含若干个子特性:功能性(functionality):适合性、准确性、互操作性、依从性、安全性;可靠性(reliability):成熟性、容错性、易恢复性;易用性(usability):易理解性、易学性、易操作性;效率(efficiency):时间特性、资源特性;可维护性(maintainability):易分析性、易改变性、稳定性、易测试性;可移植性(portability):适应性、易安装性、遵循性、易替换性;131.1 概述二、开发方法的结构体系主流的系统开发方法,其侧重点各有所不同:强调开发过程的组织、
10、管理和控制,属于系统开发生命周期的范畴;强调开发方法的驱动对象,属于方法论的范畴;支持某种方法论的技术,属于技术范畴;系统开发需要在一定的开发环境下运用开发工具来完成,属于系统开发环境/工具研究的范畴。这些方法在一定层面上,从不同的角度提出,但彼此相互联系、相互支持、相互制约,之间的关系从上图四个层次中体现。开发环境/工具位于最底层,说明其他三个层面均离不开开发环境/工具的支持;技术是组成方法学的基本成分。141.1 概述系统开发生命周期方法学技术开发环境/工具中央资源库151.1 概述中央资源库计算机开发方法结构化SDLC原型法面向过程方法(结构化方法)面向数据方法(信息工程方法)面向对象方
11、法(OO方法)可视化技术计算机辅助软件工程软件复用技术其它技术计算机辅助软件工程软件开发环境集成化的项目/程序支持环境计算机信息系统开发环境/工具 技 术系统开发生命周期(SDLC)方法学:驱动对象的观点161.2 常用开发方法一、结构化系统开发方法1、基本思想 结构化系统开发方法(Structured System Development Methodologies,SSDM)又称结构化生命周期法,是系统分析员、软件工程师、程序员以及最终用户按照用户至上的原则,自顶向下分析与设计和自底向上逐步实施的建立计算机信息系统的一个过程,是组织、管理和控制信息系统开发过程的一种基本框架。17新系统运行
12、新系统运行小量修改、维护、评价活动小量修改、维护、评价活动原系统(现行系统)运行原系统(现行系统)运行系统开发的各个阶段系统开发的各个阶段小量修改、维护、小量修改、维护、评价活动评价活动新系统生命周期新系统生命周期原系统生命周期原系统生命周期系统开系统开发准备发准备调查调查研究研究系统分析系统分析(逻辑设计逻辑设计)系统设计系统设计(物理设计物理设计)系统系统实施实施维护维护评价评价18什么是任务分解结构WBS?什么是WBS优先级结构?19WBS (Work Breakdown Structure)主要是将一个项目分解成易于管理的几个部分或几个细目,以便确保找出完成项目工作范围所需的所有工作要
13、素。它是一种在项目全范围内分解和定义各层次工作包的方法。1000-110011101111111211131120112111221123-120020WBS分解类型基于工作过程的划分上层按照工作的流程分解下层按照工作的内容划分21WBS分解类型基于可交付成果的划分上层一般为可交付成果为导向下层一般为可交付成果的工作内容1.0 晚宴 1.1生日蛋糕 1.2饮料 1.3清洗 1.3.1食品 1.3.2餐具 1.4菜 1.4.1凉菜 1.4.2熟菜 2.0 娱乐 2.1音响 2.2灯光布置 2.3室内布置 2.4CD/VCD光碟22WBS优先级结构即系统开发所遵循的基本模式瀑布模型迭代模型23WB
14、S优先级结构螺旋模型241.2 常用开发方法2、开发过程系统规划阶段:目的是从整个业务的角度出发确定系统的优先级。系统分析阶段:主要活动包括可行性分析和需求分析。其范围是列入开发计划的单个信息系统开发项目。目的是分析业务上存在的问题,定义业务需求。系统设计阶段:系统设计的目的是设计一个以计算机为基础的技术解决方案以满足用户的业务需求。总体设计的主要任务是构造软件的总体结构;详细设计包括人机界面设计、数据库设计、程序设计。系统实施阶段:系统实施的目的是组装信息系统技术部件,并最终使信息系统投人运行。如用户手册等。包括的活动有编程、测试、用户培训、新旧系统之间的切换等。系统运行与维护阶段:进行系统
15、的日常运行与维护管理、评价、监理审计等工作。251.2 常用开发方法3、开发原理(1)用户的积极参与:用户积极参与信息系统的开发的全过程,是信息系统开发能否成功的一个关键的、绝对必要的因素。(2)严格按划分的阶段和活动进行系统开发:将整个系统的开发过程分为一系列“阶段(Phases)”,然后再将阶段分为一系列的“活动(Activities)”,将活动划分为更小的、更易于管理和控制的“作业(Task)”。(3)设立检查点(Check point):在系统开发的每一个阶段均设立检查点,来评估所开发系统的可行性,避免由于系统开发的失败造成更大的损失。(4)文档的标准化:文档标准化是进行良好通信的基础
16、,是提高软件可重用性的有效的手段。261.2 常用开发方法4、优缺点 优点:阶段的顺序性和依赖性。前一个阶段的完成是后一个阶段工作的前提和依据,而后一阶段的完成往往又使前一阶段的成果在实现过程中具体了一个层次。从抽象到具体,逐步求精。从时间的进程来看,整个系统的开发过程是一个从抽象到具体的逐层实现的过程,每一阶段的工作,都体现出自顶向下、逐步求精的结构化技术特点。逻辑设计与物理设计分开。即首先进行系统分析,然后进行系统设计,从而大大提高了系统的正确性、可靠性和可维护性。质量保证措施完备。每一个阶段的工作任务完成情况进行审查,对于出现的错误或问题,及时加以解决,不允许转入下一工作阶段,也就是对本
17、阶段工作成果进行评定,使错误较难传递到下一阶段。错误纠正得越早,所造成的损失就越少。271.2 常用开发方法 缺点:它是一种预先定义需求的方法,基本前提是必须能够在早期就冻结用户的需求,只适应于可以在早期阶段就完全确定用户需求的项目。然而在实际中要做到这一点往往是不现实的,用户很难准确地陈述其需求。未能很好地解决系统分析到系统设计之间的过渡,即如何使物理模型如实反映出逻辑模型的要求,通俗地说,就是如何从纸上谈兵到真枪实弹地作战的转变过程。该方法文档的编写工作量极大,随着开发工作的进行,这些文档需要及时更新。5、适用范围 该方法适用于一些组织相对稳定、业务处理过程规范、需求明确且在一定时期内不会
18、发生大的变化的大型复杂系统的开发。28查阅有关原型法的内容,用自己的语言概述1/原型法产生的原因是什么?为什么原型法能够克服结构化开发方法的缺点?2/原型法成功的关键因素?291.2 常用开发方法二、原型法 信息系统原型,就是一个可以实际运行、可以反复修改、可以不断完善的信息系统。1、原型法产生的原因 运用结构化系统开发生命周期法的前提条件是要求用户在项目开始初期就非常明确地陈述其需求,需求陈述出现错误,对信息系统开发的影响尤为严重,因此,这种方法不允许失败。事实上这种要求又难以做到。人们设想,有一种方法,能够迅速发现需求错误。当图形用户界面(Graphic User Interface,GU
19、I)出现后,自80年代中期以来,原型法逐步被接受,并成为一种流行的信息系统开发方法。30 1.2 常用开发方法2、基本思想 原型法(Prototyping Method)是在系统开发初期,凭借系统开发人员对用户需求的了解和系统主要功能的要求,在强有力的软件环境支持下,迅速构造出系统的初始原型,然后与用户一起不断对原型进行修改、完善,直到满足用户需求。3、开发过程可行性研究。确定系统的基本要求。建造系统初始原型。用户和开发人员评审。修改系统原型反复地进行修改、评审,直到用户满意 结束311.2 常用开发方法研究表明原型法成功的关键因素有:合适的硬件设备及网络设施功能很强的系统开发工具(5.支撑环
20、境)有可以控制的数据系统开发人员有足够丰富的计算机知识用户的管理知识丰富,同时对开发感兴趣32快速原型法成功的原因快速原型法在实际应用中得到了巨大成功,分析其原因,大致原因如下:开发人员可通过原型系统与用户更好地交流,获取用户的真正需求。虽然管理人员每天都在自己相应的岗位上工作,但我们却很难指望他们能系统、完备且一次性地描述他们的业务流程。原型法正是顺应了人们认识事物的自然规律,通过开发人员与用户共同对系统原型的不断修改而实现最后的系统。在这个过程中用户往往通过对系统原型批评指责的方式对系统原型提出改进意见,这要比空洞的描述自己的设想容易得多,改进工作要比创造工作容易做得多。在快速原型法中,系
21、统原型是对真实系统或目标系统的一种摸拟,这种方式能使系统开发人员和使用人员较早地发现系统实现后潜在的问题,并且对这些问题的解决方案是双方共同讨论确认的。用快速原型法开发企业管理信息系统,加强了用户的参与程度。这使系统实施后系统的切换与运行维护较为容易和自然。331.2 常用开发方法4、优缺点 优点:对系统需求的认识取得突破,确保用户的要求得到较好的满足。改进了用户和系统开发人员的交流方式。开发的系统更加贴近实际,提高了用户的满意程度。降低了系统开发风险,一定程度上减少了开发费用。缺点:开发工具要求高。解决复杂系统和大型系统很困难。对用户的管理水平要求高。341.2 常用开发方法5、支撑环境方便
22、灵活的关系数据库系统(RDBS)。与RDBS相对应的、方便灵活的数据字典,它具有存储所有实体的功能。与RDBS相对应的快速查询系统,能支持任意非过程化的(即交互定义方式)组合条件的查询,高级的软件工具(如4GLS或信息系统开发生成环境等等),用以支持结构化程序,并且允许采用交互的方式迅速地进行书写和维护,产生任意程序语言的模块(即原型),非过程比的报告或屏幕生成器,允许设计人员详细定义报告或屏幕输出样本。351.2 常用开发方法6、适用范围 原型法的适用范围是比较有限的,对于小型、简单、处理过程比较明确、没有大量运算和逻辑处理过程的系统。其他原型法:丢弃式原型法(Throw-It-Away P
23、rototyping Method演化式原型法(Evolutionary Prototyping Method)递增式原型法(Incremental Prototyping Method)在实际的开发过程中,原型法在实际的开发过程中,原型法可以与传统的生可以与传统的生命周期方法相结合使用,这样会扩大用户参与需命周期方法相结合使用,这样会扩大用户参与需求分析、初步设计及详细设计等阶段的活动,加求分析、初步设计及详细设计等阶段的活动,加深对系统的理解。深对系统的理解。1.瀑布模型(Waterfall Model)瀑布模型是一种线性模型。瀑布模型将软件生存周期划分为6个阶段:需求分析设计实现测试运行
24、维护瀑布模型最为突出的缺点是缺乏灵活性。1.瀑布模型(Waterfall Model)2.螺旋模型螺旋模型使用原型作为降低风险的机制。螺旋模型使开发者在产品演化的任意阶段均可使用原型方法。螺旋模型体现了RUP中迭代的思想。一个螺旋的周期一般包括四个阶段:确定目标,选择方案,选定完成目标的策略。风险分析。启动开发阶段。评审前一阶段的工作,计划下一阶段工作。2.螺旋模型 16.3 RUP的二维开发模型传统的瀑布开发模型是一个一维的模型,开发过程被划分为多个连续的阶段。在RUP中,软件开发生命周期根据时间和RUP的核心工作流划分为二维空间。横轴表示项目的时间维,纵轴以内容来组织为自然的逻辑活动。16
25、.3 RUP的二维开发模型16.3 RUP的二维开发模型16.3.1 RUP的核心工作流 16.3.2 RUP的四个阶段16.3.3 RUP的迭代开发模型16.3.1 RUP的核心工作流 RUP中有9个核心工作流,分为6个核心过程工作流(C ore Process Workflows)和3个核心支持工作流(Core Supporting Workflows)。9个核心工作流在项目中轮流被使用,在每一次迭代中以不同的重点和强度重复。16.3.1 RUP的核心工作流1.商业建模(Business Modeling)2.需求分析(Requirements)3.分析与设计(Analysis and D
26、esign)4.实现(Implementation)5.测试(Test)6.配置(Deployment)7.设置和变更管理(Configuration and Change Management)8.项目管理(Project Management)9.环境(Environment)1.商业建模(Business Modeling)理解系统的组织结构及其商业运作,确保所有参与人员对开发系统有共同的认识。2.需求分析(Requirements)定义系统功能及用户界面,明确客户需要的系统的功能,开发人员理解系统的需求,为项目预算及计划提供基础。3.分析与设计(Analysis and Design)
27、把需求分析的结果转化为实现规格。4.实现(Implementation)定义代码的组织结构、实现代码、单元测试、系统集成。5.测试(Test)验证各自子系统的交互与集成。6.配置(Deployment)打包、分发、安装软件,升级旧系统;培训用户及销售人员,并提供技术支持。制定并实施beta测试。7.设置和变更管理(Configuration and Change Management)跟踪并维护系统所有产品的完整性和一致性。8.项目管理(Project Management)为计划、执行和监控软件开发项目提供可行性的指导;为风险管理提供框架。9.环境(Environment)为组织提供过程管理
28、和工具的支持。16.3.2 RUP的四个阶段RUP包括以下几个阶段:起始阶段细化阶段构建阶段交付阶段每个阶段结束于一个主要的里程碑(Major Milestones),每个阶段本质上是两个里程碑之间的时间跨度。16.3.2 RUP的四个阶段1.初始阶段2.细化阶段3.构建阶段4.交付阶段1.初始阶段初始阶段所要进行如下的活动:明确说明项目规模,了解环境以及最重要的需求和约束,以便可以得出最终产品的验收标准。计划和准备商业理由。评估风险管理、人员配备、项目计划以及成本/进度/收益折衷的被选方案。综合考虑被选构架,评估构架。准备项目的环境,评估项目和组织,选择工具,决定流程中要改进的部分。1.初始
29、阶段初始阶段的评估标准如下:出资人同意系统范围定义以及费用和进度评估。主要用例是否符合需求。费用和进度评估、优先级、风险以及开发过程的可信性。任何已开发的原型的深度和广度。实际开销与计划开销。初始阶段的焦点是需求和分析工作流。2.细化阶段细化阶段的评估标准如下:标明用例模型中的用户和参与者,并且建立用例的描述文档。用例模型需完成80。创建软件系统开发过程中的软件结构的描述文档。创建可执行的系统原型。细化商业案例和风险列表。创建整个项目的开发计划。细化阶段的焦点是需求、分析和设计工作流。3.构造阶段构建阶段的主要目标如下:优化资源、避免不必要的报废和返工,使开发成本降到最低。尽快达到质量的要求。
30、快速完成有用的版本,例如Alpha 版、Beta 版和其他测试发布版。完成所有功能的分析、开发和测试。迭代式、递增地开发随时可以发布的产品。确定准备好软件系统的外部环境。构建阶段的焦点是实现工作流。4.交付阶段交付阶段的主要目标如下:进行Beta版测试,按用户的要求验证新系统。替换旧的系统。对用户和维护人员进行培训。开始调整活动,例如调试、性能或可用性的增强。与用户达成共识,配置基线与评估标准一致。交付阶段的焦点是实现和测试工作流。16.3.3 RUP的迭代开发模型RUP中的每个阶段可以进一步分解为迭代。16.3.3 RUP的迭代开发模型与传统的瀑布模型相比较,迭代过程的优点:降低了在一个增量
31、上的开支风险。降低了产品无法按照既定进度进入市场的风险。加快了整个开发工作的进度。16.4 核心工作流介绍16.4.1 需求捕获工作流16.4.2 分析工作流16.4.3 设计工作流16.4.4 实现工作流16.4.5 测试工作流16.4.1 需求捕获工作流需求捕获通过对应问题的理解和分析,确立问题涉及的信息、功能和系统行为,将用户需求精确化、完全化。需求的焦点主要在初始和精化阶段,在精化阶段后期,需求捕获的工作量大幅下降。16.4.1 需求捕获工作流16.4.1 需求捕获工作流1.制品2.工作人员3.工作流1.制品在需求捕获工作流,主要的UML制品:用例模型(Use Case Model)参
32、与者(Actor)用例(Use Case)构架描述术语表(Glossary)用户界面原型2.工作人员参与需求捕获阶段的工作人员:系统分析人员(System Analyst)用例描述人员(Use Case Specifier)用户界面设计人员(User Interface Designer)构架设计师(Architect)3.工作流需求捕获的工作流主要包括五个活动:确定参与者和用例区分用例的优先级详细描述一个用例构造用户界面原型构造用例模型16.4.2 分析工作流分析的主要工作开始于初始阶段的结尾,和需求一样是精化阶段的主要焦点。精化阶段的大部分活动是捕获需求,分析工作与需求捕获在很大程度上重叠
33、。16.4.2 分析工作流16.4.2 分析工作流1.制品2.工作人员3.工作流1.制品在分析工作流期间,主要的UML制品:分析模型分析类用例实现(分析)分析包构架模型 2.工作人员在分析工作流期间,所参与的工作人员:构架设计师用例工程师构件工程师3.工作流分析工作流主要包括四个活动:构架分析分析用例分析类分析包16.4.3 设计工作流设计工作流的主要工作是位于精化阶段的最后部分和构造阶段的开始部分的主要建模活动。系统建模最初的焦点是需求和分析,在分析活动逐步完善后,建模的焦点开始转向设计。16.4.3 设计工作流16.4.3 设计工作流1.制品2.工作人员3.工作流1.制品在分析工作流期间,
34、主要的UML制品:设计模型设计类用例实现-设计设计子系统接口配置图2.工作人员参与设计工作流的工作人员包括:构架设计师用例工程师构件工程师 3.工作流设计工作流中,主要包括四种活动:构架设计设计一个用例设计一个类设计一个子系统 16.4.4 实现工作流实现(实施)是关于把设计模型转换成可执行代码的过程。从系统分析师或系统设计师的角度看,实现工作流的重点就是完成软件系统的可执行代码。实现工作流是构建阶段的焦点。16.4.4 实现工作流841.2 常用开发方法三、面向对象方法1、面向对象方法(Object Oriented)产生的原因 以前的开发方法,只是单纯地反映管理功能的结构状况,或者只是侧重
35、反映事物的信息特征和信息流程,只能被动应和实际问题需要的做法。面向对象的方法把数据和过程包装成为对象,以对象为基础对系统进行分析与设计,为认识事物提供了一种全新的思路和办法,是一种综合性的开发方法。2、基本思想 客观世界是由各种各样的对象组成的,每种对象都有各自的内部状态和运动规律,不同对象之间的相互作用和联系就构成了各种不同的系统。对象(Object)是客观世界中的任何事物或人们头脑中的各种概念在计算机程序世界里的抽象表示。是面向对象程序设计的基本元素。851.2 常用开发方法3、基本概念客观世界由各种“对象”(Object)组成,任何客观事物都是对象,对象是在原事物基础上抽象的结果。任何复
36、杂的事物都可以通过对象的某种组合结构构成。对象可由相对比较简单的对象以某种方式组成;对象由属性和方法组成。属性(Attribute)反映了对象的信息特征,如特点、值、状态等等.而方法(Method)则是用来定义改变属性状态的各种操作;对象之间的联系主要是通过传递消息(Message)来实现的,而传递的方式是通过消息模式(Message pattern)和方法所定义的操作过程来完成的;对象可按其属性进行归类(Class)。类有一定的结构,类上可以由超类(Super class),类下可以有子类(Subclass)。对象或类之间的层次结构是靠继承关系(Inheritance)维系的;对象是一个被严
37、格模块化了的实体,称之为封装(Encapsulation)。这种封装了的对象满足软件工程的一切要求,而且可以直接被面向对象的程序设计语言所接受。861.2 常用开发方法4、开发过程系统调查和需求分析:对系统将要面临的具体管理问题以及用户对系统开发的需求进行调查研究,即先弄清要干什么的问题。分析问题的性质和求解问题:在繁杂的问题域中抽象地识别出对象以及其行为、结构、属性、方法等。一般称之为面向对象的分析,即OOA。整理问题:对分析的结果作进一步的抽象、归类、整理,并最终以范式的形式将他们确定下来。一般称之为面向对象的设计,即OOD。程序实现:用面向对象的程序设计语言将上一步整理的范式直接映射(即
38、直接用程序设计语言来取代)为应用软件。一般称之为面向对象的程序,即OOP。871.2 常用开发方法5、评价OO方法直接反映了人们对客观世界的认知模式。人类认识客观世界有两个基本过程:一个是从特殊到一般的归纳过程,另一个是从一般到特殊的演绎过程。从应用设计到解决问题的方案更加抽象化而且具有极强的对应性。在设计中容易与用户沟通。把数据和操作封装到对象之中。设计中产生各式各样的部件,然后由部件组成框架,以至于整个程序。应用程序具有较好的重用性、易改进、易维护和易扩充。6、适用范围 流行的开发方法,适用面很广。在实际开发过程中,在实际开发过程中,OO 方法也可以与结构化方法也可以与结构化开发方法,或者
39、原型法结合使用开发方法,或者原型法结合使用88现在,我们有了.软件建模标准:UML软件工程工具,如:ROSE89什么是UML?UML:统一建模语言(Unified Modeling Language)UML是用于描绘软件蓝图蓝图的标准语言语言.(蓝图蓝图?这就是一张蓝图这就是一张蓝图-)它可用于对软件密集型系统进行 视化(visualize)说明(specify)建造(construct)和 建档(document)这也是对软件系统进行建模的四个目的90WIndowopen()close()move()diaplay()handleEvent()什么是UML?解释:UML是语言语言:语言意味着
40、有标准的表达规则 UML是蓝图蓝图controlWIndowopen()close()move()diaplay()handleEvent()consoleWindowEventDialogBox关联依赖泛化名称:交互界面逻辑结构编号:逻辑视图7.1设计:周秉锋审核:绘制:日期:2 0 0 1.12.3191UML中其他一些常用的标准模型元素:用例、接口、组件用例、接口、组件发送订单ISpellShell.cpp用例用例 接口接口 组件组件什么是UML?92使用UML进行软件建模的原则 准确的原则:模型必须准确地反映软件系统的真实情况。分层的原则:在建模的过程中,必须有不同的模型,以不同的抽象
41、程度,反映系统的不同侧面。分治的原则:不可能单独用一个模型来反映整个系统的任何侧面。标准的原则:建模方法必须在某种程度上是通用的。什么是UML?93使用UML进行软件建模的原则 准确的原则:模型必须准确地反映软件系统的真实情况。什么是UML?Window-origin:point-size:point+open():void+close():void+display():void+set_position(pos:point):voidclass Window public:void open();void close();void display();void set_position(po
42、int pos);private:point origin;point size;94位图文件显示窗口读文件更新显示用户1.打开图象文件(from UseCases)什么是UML?WIndowopen()close()move()diaplay()handleEvent()consoleWindowEventcontrolDialogBox关联依赖泛化95使用UML进行软件建模的原则 分治的原则:不可能单独用一个模型来反映整个系统的任何侧面。软件系统是复杂的,对于软件模型的任意一个侧面,不可能用一个模型来反映所有内容,需要把问题分解为不同的子模型,分别处理这些模型相对独立,但又互相联系,综合起
43、来构成了此侧面的一个完整的模型。例如:这是一个完整的模型的结构(上图)什么是UML?96用例使用UML进行软件建模的原则 标准的原则:建模方法必须在某种程度上是通用的。建模的基本目的:交流一个开发队伍内部的开发人员之间需要交流同一软件的不同时期的版本的开发队伍,需要参考以前版本的开发队伍的设计原理和实现方案。不同软件的开发队伍之间也需要交流以实现最大程度的软件复用。系统作用者用例系统作用者关联关系Shapeoriginmove()resize()display()Shape.dll什么是UML?l 如果各开发队伍和开发人员在建模的时候采用同样的方法和符号(图.),交流才会高效地进行l 如果各开
44、发队伍和开发人员在建模的时候采用同样的方法和符号(图.),交流才会高效地进行97UML包括以下若干图:1.用例图 用例实际上就是从用户的角度去定义具有交互过程的系统功能。每个功能与一个或多个参与者(actor)相连接。参与者是指处于系统之外,需要使用用例的人或事物。对系统开发人员来说,用例是很有实用价值的,可以帮助其从用户的观察角度收集可靠的系统需求,这对建立人机交互式系统极为重要.我们需求分析阶段的用例模型就是开发者和用户反复讨论的结果,表明了开发者和用户对需求规格达成共识.982.类图 类图描述类和类之间的静态关系.与数据模型不同,类图不仅显示了信息的结构,同时还描述了系统的行为.类图为开
45、发人员提供了模仿现实世界的表达方式,它允许分析员使用客户采用的术语与其交流,促使客户提出所要解决问题的相关细节.993.对象图 对象图可以看作是类图的一个实例,对象之间的链接是类之间的关联的实例.1004.状态图 在任何一个时刻,一个对象总处于某一特定的状态.一个状态图就包括一系列的状态以及状态间的转移.1015.时序图 在一个运行的系统中,对象之间要发生交互,且这些交互要经历一定的时间阶段.时序图所表达的则是这种对象之间的基于时间的动态交互关系,着重体现对象间消息传递的时间顺序.1026.活动图 活动图用于反映一个连续的活动流,相对于描述活动流来说,活动图常用于描述某个操作执行时的活动状况.
46、1037.协作图 协作图表达为完成系统的工作目标,系统中相互合作的对象间的交互关系和链接关系.协作图着重体现交互对象间的静态链接关系.表示一段时间后,计时器对象先向进水管发出停止进水消息,然后再向洗涤缸对象发送旋转洗涤的消息1041.2 常用开发方法四、CASE 介绍(自学)计算机辅助软件工程方法是一种自动化或自动化的系统开发环境,它能够全面支持出系统调查外的给一个开发步骤,使得原来由手工完成的开发过程转变为一自动化工具和支撑环境支持的自动化开发过程。采用CASE工具进行系统开发,还必须结合某种具体的开发方法,如结构化系统开发方法等。计算机辅助软件工程方法的特点:解决了从客观对象到软件系统的映
47、射问题,支持系统开发的全过程。提高了软件质量和软件重用性。加快了软件开发速度。简化了系统开发过程的管理和维护。自动生成开发过程中的各种文档资料。1051.3软件开发工具与环境概述软件工具概述 软件工具的范围 软件工具提高了工作效率 软件工具的特点 软件工具的评价106软件开发工具的功能 认识与描述客观系统 存储及管理开发过程中的信息 代码的编写与生成 文档的编制或生成 软件项目的管理107软件开发工具的特性 功能是指软件能做什么事,而性能则是指事情做到什么样的程度。前者是定性地说明能不能做的问题,告诉我们它能在软件开发工程中提供哪些帮助;后者则尽可能定量的说明软件开发工具能做到什么样的程度,说
48、明这些支持或帮助的程度如何。当然,作为一般的软件来说,效率、响应速度等都是必须考虑的。但是,对于软件开发的工具来说,以下五项应当是特别重要的。108软件开发工具的特性 表达能力或描述能力 保持信息一致性的能力 使用的方便程度 工具的可靠性 对硬件和软件环境的要求109软件开发工具的分类 1、基于工作阶段的工具 基于各个阶段对信息的需求不同,软件开基于各个阶段对信息的需求不同,软件开发工具可分为三类:设计工具、分析工具、计发工具可分为三类:设计工具、分析工具、计划工具。划工具。110 设计工具是最具体的,它是指在实现阶段对人们提供帮助的工具。例如各种代码生成器、一般所说的第四代语言和帮助人们进行
49、测试的工具(包括提供测试环境或测试数据)等,都属于设计工具之列。它是最直接的帮助人们编写与调试软件的工具。分析工具主要是指用于支持需求分析的工具,例如,帮助人们编写数据字典的、专用的数据字典管理系统帮助人们绘制数据流程图的专用工具,帮助画系统结构图或ER图的工具等。它们不是直接帮助开发人员111编写程序,而是帮助人们认识与表述信息需求与信息流程,从逻辑上明确软件的功能与要求。计划工具则是从更宏观的角度去看待软件开发。它不仅从项目管理的角度帮助人们组织与实施项目,把有关进度、资源、质量、验收情况等信息有条不紊地管理起来,而且考虑到了项目的反复循环、版本更新、实现了跨生命周期的信息管理与共享,为信
50、息以及软件的复用创造了条件。112 2、基于集成程度划分的工具 集成化程度是用户接口一致性和信息共享的程度,是一个新的发展阶段。集成化的软件开发工具要求人们对于软件开发过程有更深入的认识和了解。开发与应用集成化的软件开发工具是应当努力研究与探索的课题,集成化的软件开发工具也常称为软件工作环境。113 3、基于硬件、软件的关系划分的工具 按与硬件和软件的关系,软件开发工具可以分为两类:依赖于特定计算机或特定软件(如某种数据库管理系统)和独立于硬件与其它软件的软件开发工具。一般来说,设计工具多是依赖于特定软件的,因为它生成的代码或测试数据不是抽象的,而是具体的某一种语言的代码或该语言所要求的格式的