首页 软件工程1

软件工程1

举报
开通vip

软件工程1null软件工程教学安排软件工程教学安排讲课学时:40 实验:8 考试:2 实验课时间: 软件工程实验: 教材教材吴洁明 软件工程基础实践教程 清华大学出版社 2007年10月主要内容主要内容第1条线索是从软件的特点入手,引出软件危机的概念,介绍软件危机的解决方法既本书的核心内容软件工程。 第2条线索是从软件的生存期入手,介绍软件生命周期各个阶段软件的存在形式和评价标准,详细介绍软件文档写作及管理。 第3条线索是从软件工程实践出发,引出可行性研究,结构化分析和设计方法、工具和步骤,最后带领大家以...

软件工程1
null软件工程教学安排软件工程教学安排讲课学时:40 实验:8 考试:2 实验课时间: 软件工程实验: 教材教材吴洁明 软件工程基础实践教程 清华大学出版社 2007年10月主要内容主要内容第1条线索是从软件的特点入手,引出软件危机的概念,介绍软件危机的解决方法既本书的核心内容软件工程。 第2条线索是从软件的生存期入手,介绍软件生命周期各个阶段软件的存在形式和评价 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 ,详细介绍软件文档写作及管理。 第3条线索是从软件工程实践出发,引出可行性研究,结构化分析和设计方法、工具和步骤,最后带领大家以一个图书馆信息管理系统为例进行演练。 第4条线索是从面向对象的概念入手,结合UML讲述面向对象分析和设计方法、工具和步骤,最后也是以图书馆信息管理系统为例进行实际演练。 第5条线索是详细讲述软件测试的概念、方法、策略和步骤。 参考书参考书郑人杰,殷人昆,陶永雷。实用软件工程。第2版。北京:清华大学出版社,1997 张海藩,软件工程导论。第4版。北京:清华大学出版社,2003 卡耐基-梅隆大学软件工程研究所编著。能力成熟度模型(CMM):软件过程改进指南。刘孟仁等译。北京:电子工业出版社,2001 Roger S Pressman 著。软件工程:实践者的研究方法。第5版。梅宏译。北京:机械工业出版社,2002 IBM大学站点 http://www.ibm.com/university 微软MSDN http://www.microsoft.com第一章 软件工程的概述第一章 软件工程的概述第1 软件行业怎么了?--软件危机 第2 软件行业的出路?--软件工程 第3 软件工程核心--7条基本原理 第4 软件工程化开发的基本过程模型 第5 软件开发方法简述 1.1 软件和软件危机1.1 软件和软件危机软件是指计算机系统中与硬件相互依存的一部分,包括程序、相关数据和及其说明文档。 程序是按照事先设计的功能和性能要求执行的指令序列; 数据是程序能正常操纵信息的数据结构; 文档是与程序开发维护和使用有关的文字或图形资料。 1.1.1 软件的特点1.1.1 软件的特点(1)软件是一种逻辑产品,是以程序和文档形式存在。 (2)软件使用过程中,不会磨损、老化。 (3)软件一旦研究开发成功,其生产过程就变成复制过程。 (4)软件对硬件和环境有着不同程度的依赖性——软件升级和移植。 (5)手工方式生产,开发人员压力大、 (6)软件是复杂度最高的工业产品,但通用性差。 (7)软件涉及人类社会的各行各业,涉及到领域专门知识,这对软件工程师提出了很高的要求 。软件开发应该有明确的分工。 (8)软件生产过程的不可见性,增加了管理的难道。 (9)软件产品的生产成本主要体现在软件的开发和研制上。软件的成本昂贵。1.1.2 软件危机 1.1.2 软件危机 1、对软件的要求: 用户的需求更高、涉及的领域更广 软件运行环境更加庞大 软件更新换代更加频繁第1节 软件危机第1节 软件危机2、软件生产的现状: 对软件的开发成本和进度的估计常常不正确,开发成本超出预算。 开发进度不能保障,交付时间一再拖延。 “已完成”的软件不满足用户的需求 软件产品的质量没有保证。 软件通常没有适当的文挡 软件的成本不断提高,特别是软件维护成本迅速增加,已经占据软硬件总成本的40%~75%。 null 软件危机定义:计算机软件开发和维护过程中所遇到的一系列严重问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 。需求不满足需求不满足哈药“城门失火” 2000年,哈尔滨医药集团决定上ERP项目,参与软件争夺的两个主要对手是Oracle与利玛。一开始,两家在ERP软件上打得难解难分,一年之后,Oracle击败利玛,哈药决定选择 标致巨额投入搁浅 MRPII项目的设备,目标是实现全公司订单、生产、库存、销售、人事、财务等的统一管理,以提高公司运行效益,增进企业经济效益。返回软件危机软件危机3.产生软件危机的原因: 与软件的特点有关 与软件开发和维护的方法有关 软件生产至今尚未摆脱手工生产方式。 忽视需求分析和设计工作。 没有规范的维护要求和记录。 1.1.3 软件错误导致的失败实例1.1.3 软件错误导致的失败实例美国阿波罗8号太空飞船的一个软件错误,造成了存储器部分信息丢失; 而阿波罗14号在飞行的10天中,出现了18个软件错误。 返回1.2 软件工程发展简史1.2 软件工程发展简史1.问题的引出—先看几个图例简陋的小屋—不用设计简陋的小屋—不用设计null新农村别墅造型图null别墅的平面图、切面图null图书馆信息管理系统需求表图书馆信息管理系统需求表图书馆信息管理系统功能设计图书馆信息管理系统功能设计图书馆信息管理系统物理模型设计图书馆信息管理系统物理模型设计图书馆信息管理系统逻辑模型设计(部分)图书馆信息管理系统逻辑模型设计(部分)图书馆信息管理系统数据设计图书馆信息管理系统数据设计过程设计null图书馆信息管理系统界面设计结论:结论:软件生产同建筑行业一样需要工程化、规模化、自动化、标准化。 软件生产过程中也有中间环节(设计物理模型、逻辑模型、界面、数据、过程等等),也可以随时进行质量检查。 软件生产中也需要有高效的工具。 软件生产人员也可以细分为:分析员、设计员、程序员、测试员、操作员、维护人员等等。 软件生产低水平的手工作坊不能适应当今的大规模软件开发需求……软件行业的出路?--软件工程软件工程发展简史软件工程发展简史1968年Fritz Bauer在NATO(北大西洋公约组织)会议上给出的定义: “软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)” 20世纪70年代形成了软件工程的概念、框架、方法和手段。 80年代到90年代,研究重点是面向对象的分析和设计,称为对象工程。 90年代后期,基于构件的开发方法,即第三代软件工程,也称为构件工程。1.3 软件工程的定义和目标1.3 软件工程的定义和目标 1993IEEE: 软件工程是①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护过程,即将工程化应用于软件开发和管理之中,②对①中所选方法的研究。 注意:软件工程研究所依据的基础理论:数学、计算机科学、经济学、工程学、管理学和心理学等学科。其中数学和计算机科学用于构造模型、分析算法;工程学用于评估成本、制定规范和标准;管理学和心理学用于进度、资源、环境、质量、成本等的分析和管理。软件工程研究的主要内容软件工程研究的主要内容技术方面:研究软件开发方法、软件开发过程、软件开发工具和环境。 管理方面:主要研究软件管理学、软件经济学、软件心理学。 软件工程的层次化 软件工程的层次化 强调规范化和文档化强调规范化和文档化 规范化:使众多的开发者遵守相同的规范,使软件生产摆脱个人生产方式,进入标准化、工程化的生产方式—关注国标、行标。 文档化: 把软件的设计思想、设计过程和实现过程完整地记录下来,便于各类相关人员交流和沟通; 使软件开发过程由不可见变为可见,便于管理者对软件生产进度和开发过程进行管理; 是验收、质量检测的标准和依据。软件工程的目标 软件工程的目标 实现预期的软件功能,满足用户的需求。 提高软件的可维护性,保障软件的质量。 合理预算开发成本,控制软件开发费用。 提高软件开发生产率,及时交付使用。1.4 软件工程7条基本原理1.4 软件工程7条基本原理原理1、用分阶段的生命周期 计划 项目进度计划表范例计划下载计划下载计划下载课程教学计划下载 严格管理 项目概要计划 里程碑计划 项目控制计划 产品控制计划 测试验收计划 运行维护计划 软件工程7条基本原理软件工程7条基本原理原理2、坚持进行阶段评审。 软件的质量保证工作不能等到编码阶段结束之后再进行。经过大量的统计数据表明,大部分错误是在编码之前造成的,其中,设计错误约占软件错误的63%,编码错误仅占37%。 错误发现与改正的越晚,所需付出的代价也越高。 因此,在每个阶段都应该进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,是一条必须遵循的重要原则。软件工程7条基本原理软件工程7条基本原理原理3、实行严格的产品控制 基准配置又称基线配置,它们是经过阶段评审后的软件配置成份。 基准配置管理的思想是:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照严格的规程进行评审和控制,获得批准以后才能实施修改。 目的是当需求变动时,其它各阶段的文档或代码随之相应变动,以保证软件的一致性。软件工程7条基本原理软件工程7条基本原理原理4、采用现代程序设计技术 自从提出软件工程概念后,人们一直把主要精力用于研究各种新的程序设计技术。60年代末提出了结构化程序设计技术,以后又进一步发展出结构化分析与设计技术、面向对象的分析和设计技术。 实践表明,采用先进的技术既可提高软件开发和维护的效率,又可提高软件质量。 软件工程7条基本原理 软件工程7条基本原理原理5、结果应能清楚地审查 软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进展情况难于评价和管理。 为更好地进行管理,应根据软件开发的总目标及完成期限,明确地规定开发小组的责任和产品标准,从而使所得到的产品有明确的标准能清楚地审查。 软件工程7条基本原理软件工程7条基本原理原理6、开发小组的人员应该少而精 软件开发小组成员的素质应该好,人数不宜过多。 素质高的人员开发效率高、质量好、错误少。开发小组人员过多,信息交流造成的通信开销会急剧增加。软件工程7条基本原理软件工程7条基本原理原理7、承认不断改进软件工程实践的必要性 遵循上述六条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产。但是,仅有上述六条原理并不能保证软件开发与维护的过程能赶上时代前进的步伐,因此,应把承认不断改进软件工程实践的必要性作为软件工程的第七条基本原理。1.5 软件生命周期模型1.5 软件生命周期模型软件生存周期是指一个软件从提出开发要求开始到该软件报废为止的整个时期。 通常将软件的生存周期划分为:可行性研究、需求分析、设计、实现、测试、集成、维护7个阶段。 在实践中,整个开发周期经常不是明显地划分,而是分析、设计、实现,再分析、再设计、再实现等迭代执行。1.可行性研究1.可行性研究目标:确定待开发系统的总体目标和范围,研究系统的可行性和可能的解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ,对资源、成本及进度进行合理的估算。 内容 :所采用的软件生命周期模型,开发人员的组织,系统解决方案。管理的目标和级别,所有的技术与工具,以及开发的进度、预算和资源分配。2.需求分析2.需求分析分析、整理和提炼所收集到的用户需求,建立完整的分析模型。将其编写成软件需求规格说明和初步的用户手册。 通过评审需求规格说明书,取保对用户需求达到共同的理解与认识。 需求规格说明书明确描述了软件的功能,列出软件所必须满足的约束条件,并定义软件的输入和输出接口。3.设计3.设计决定软件怎么做,设计人员根据软件需求规格说明书,确定软件的体系结构,用户界面,每个模块的算法、数据结构和接口等,编写设计说明书,并组织进行设计评审。 设计过程将现实世界的问题模型转换成计算机的实现模型,设计同样需要文档化,并应当在编写程序之前评审其质量。4.实现4.实现将所设计的各个模块编写成计算机可接受的程序代码,与实现有关的文档就是源程序及合适的注释。5.测试及集成5.测试及集成在设计测试用例的基础上,测试软件的各个组成模块,然后将各个模块集成起来,测试整个产品的功能和性能是否以满足已有的规格说明。 除此之外,还要进行系统测试和验收测试。6.维护6.维护软件运行过程中需要不断地进行维护,使软件持久满足用户需要。 改正性维护:运行中发现软件中的错误需要修正 适应性维护:为了适应变化了的软件工作环境,需做适当变更 完善性维护:为了增强软件的功能需做变更 预防性维护:修改软件为将来的维护各种预先做准备。软件生存周期模型软件生存周期模型软件生存周期模型反映的是软件开发过程、活动和任务的结构框架。 到目前为止,已经提出了多种模型,主要有瀑布模型、演化模型、喷泉模型、螺旋模型、智能模型。 1.5.1 瀑布模型1.5.1 瀑布模型瀑布模型(waterfall model)是由W. Royce于1970年提出来的。 瀑布模型依据软件生命周期方法学开发软件,各阶段的工作自顶向下、从抽象到具体的顺序进行。特点特点瀑布模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。 它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。 因此,它是一种以文档作为驱动的模型 瀑布模型优缺点瀑布模型优缺点优点: 提供了软件开发的基本框架,有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,因此,在软件工程中占有重要的地位。 缺点:1)在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。 2)在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。 3)作为整体开发的瀑布模型,由于不支持产品的演化,缺乏灵活性,对开发过程中很难发现的错误,只有在最终产品运行时才能暴露出来,从而使软件产品难以维护。瀑布模型适应场合瀑布模型适应场合瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。例如操作系统、编译系统、数据库管理系统等系统软件的开发。 应用有一定的局限性。1.5.2快速原型化模型 1.5.2快速原型化模型 快速原型模型是为克服瀑布模型的缺点于20世纪80年代推出的。 快速原型法基本思想是: 由用户、客户和开发者进行快速需求分析,产生系统规格说明; 根据该规格说明快速产生一个可运行的原型;运行该原型,并评价其规格说明的完整性、准确性和一致性; 根据评价结果,进一步精化和细化规格说明; 该过程可重复多次,直到最终的规格说明演化成与用户和客户一致的、可执行的系统为止。 原型模型优缺点原型模型优缺点优点:与用户见面快;开发成功率高,适合于需求不确定的大系统。 缺点:周期长,开发成本高。 原型模型比瀑布模型更符合人们认识事物的过程和规律,是一种较实用的开发框架。 它适合于那些不能预先确切定义需求的软件系统的开发,更适合于那些项目组成员(包括分析员、设计员、程序员和用户)不能很好交流或通信有困难的情况。1.5.3演化模型 1.5.3演化模型 首先设计一个全局性框架,然后建立一个初始的稳定模型,运行该原型,并反复添加、修改和完善,逐步向目标系统进化。每一次进化,都产生一个逼近目标的新版本。 该模型在进化过程中,始终强调可靠性、可维护性、适应性和效率等软件质量问题。 该模型的最终成果就是投入使用的系统。 开发模式是分批循环开发,每次新增功能,可以看作重复的瀑布模型 特点:通过逐步迭代,建立软件系统。1.5.4螺旋模型 1.5.4螺旋模型 螺旋模型(spiral model)是B. Boehm于1988年提出的。它综合了瀑布模型和原型模型的优点,即将两者结合,并加入了风险分析机制。 螺旋式周期螺旋式周期螺旋模型沿着螺线旋转(一个螺旋式周期 ),在四个象限上分别表达四个方面的活动,即: 制定计划──确定软件目标,选定实施方案,弄清项目开发的限制,选定完成目标的策略 风险分析──分析所选方案,考虑如何识别和消除风险,风险角度分析该策略 实施工程──实施软件开发,启动一个开发阶段 客户评估──评价前一步开发工作,提出修正建议,计划下一轮的工作 。null螺旋模型的优点螺旋模型的优点 1)支持用户需求的动态变化。这就要求构造的原型的总体结构、算法、程序、测试方案应具有良好的可扩充性和可修改性。也支持软件系统的可维护性,每次维护过程只是沿螺旋模型继续多走一两个周期。 2)原型可看作形式的可执行的需求规格说明,易于为用户和开发人员共同理解,还可作为继续开发的基础,并为用户参与所有关键决策提供了方便。 3)螺旋模型特别强调原型的可扩充性和可修改性,原型的进化贯穿整个软件生存周期,这将有助于目标软件的适应能力。 4)螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。 缺点缺点 1)如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间; 2)使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高。 适应场合: 支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法,是一种具有广阔前景的模型。1.5.5 构件组装模型1.5.5 构件组装模型面向对象技术为基于构件的建模提供了技术保证。 构件组装模型有助于软件复用,如果软件产业逐步建立和完善软件构件标准,那么构件组装模型将是实现软件生产规模化、工程化的一个最有前途模型。 据统计,使用构件组装模型可以缩短70%的开发周期,节省84%的项目成本。1.6 软件工程过程1.6 软件工程过程 软件工程过程是为了获得软件产品或是为了完成软件项目而进行的有关软件工程活动,每项活动可以分解成一系列软件工程任务。软件过程成熟度软件过程成熟度SEI(卡内基梅隆大学软件工程研究所)提出了—个综合模型(CMM),定义了当一个组织达到不同的过程成熟度时应该具有的软件工程能力。 为了确定一个组织目前的过程成熟度,SEI使用了一个能力成熟度模型(评估调查表)和五个等级方案。该模型定义了在不同级别上具有的关键活动。 SEI的模型提供了衡量一个组织软件工程实践能力的有效性方法,且建立了过程成熟度的五个级别。第一级:初始级第一级:初始级软件过程的特征是无序的,有时甚至是混乱的。几乎没有过程定义,成功完全取决于个人的能力。 关键活动:无 注意:SEI将关键过程域(KPAs)与每一个成熟度级别联系起来。KPAs描述了要达到某一特定级别必须满足的关键过程。KPAs是叠加的。例如:过程成熟度第三级包含了第二级的所有KPAs加上第三级特有的KPAs 第二级:可重复级第二级:可重复级——建立了基本的项目管理过程,能够追踪费用、进度和功能。有必要的过程规范,可以重现以前类似项目的成功过程。 关键活动:软件配置管理、软件质量保证、软件子 合同 劳动合同范本免费下载装修合同范本免费下载租赁合同免费下载房屋买卖合同下载劳务合同范本下载 管理、软件项目追踪和查错、软件项目计划、需求管理。 注释:软件配置管理:简单而言就是管理软件的变化,它应用于整个软件工程过程,通常由相应的工具,过程和方法学组成。 第三级:定义级第三级:定义级——用于管理和生产活动的软件过程已经文档化、标准化,并与整个组织的软件过程相集成。所有项目都使用文档化的、组织认可的过程来开发和维护软件。本级包含了第二级的所有特征。 关键活动:详细复审、组内协调、软件产品工程、集成的软件管理、培训程序、组织的过程定义、组织的过程焦点。第四级:管理级第四级:管理级——软件过程和产品质量的详细度量数据被收集,通过这些度量数据,软件过程和产品能够被定量地理解和控制。本级包含了第三级的所有特征。 关键活动:软件质量管理、定量的过程管理 第五级:优化级第五级:优化级——通过定量的反馈,进行不断的过程改进,这些反馈来自于过程或通过测试新的想法和技术而得到。本级包含了第四级的所有特征 过程变化管理、技术变化管理、错误预防 。实施CMM的必要性 实施CMM的必要性 实施CMM是改进软件质量的有效方法: 控制软件生产过程、提高软件生产者组织性和软件生产者个人能力的有效合理的方法软件工程和很多研究领域及实际问题有关,主要相关领域和因素有:需求工程(REQUIREMENTS ENGINEERING),软件复用(SOFTWARE REUSE)等 需求工程(REQUIREMENTS ENGINEERING)。理论上,需求工程是应用已被证明的原理、技术和工具,帮助系统分析人员理解问题或描述产品的外在行为。 软件复用(SOFTWARE REUSE),定义为利用工程知识或方法,由一已存在的系统,来建造一新系统。这种技术,可改进软件产品质量和生产率。 还有软件检查、软件计量、软件可靠性、软件可维修性、软件工具评估和选择等。 CMMI的评估方式: 自我评估:用于本企业领导层评价公司自身的软件能力。   主任评估:使本企业领导层评价公司自身的软件能力,向外宣布自己企业的软件能力 CMMI的评估类型:   软件组织的关于具体的软件过程能力的评估。   软件组织整体软件能力的评估(软件能力成熟度等级评估)。 CMMI的基本思想CMMI的基本思想   1、解决软件项目过程改进难度增大问题   2、实现软件工程的并行与多学科组合   3、实现过程改进的最佳效益 1.7 软件开发方法简述1.7 软件开发方法简述为了克服软件危机,软件工程研究人员不断探索新的软件开发方法。1.7.1 Parnas方法1.7.1 Parnas方法D.L Parnas在1972年发明了Parnas方法,这个方法主要有两个闪光点:一个是它提出了信息隐蔽技术,一个是错误预防措施。 信息隐藏技术的主要内容是:在概要设计时列出可能会发生变化的因素,并在模块划分时将这些因素放到个别模块的内部。一旦由于这些因素变化需要修改软件时,只需修改相应的个别模块,其它模块不受影响。 信息隐蔽技术的主要目的是提高软件的可维护性,减少模块之间的相互影响,提高软件的可靠性。信息隐藏技术错误预防错误预防错误预防的主要内容是:在每个可能产生的错误之前,增加一些判断,防止软件出现不可预料的结果。 例如,在分配和使用设备前,应该查看设备状态,检查设备是否可用,如果可用再进行分配。模块之间也要加强错误隔离措施,防止错误蔓延。 null注1:遗憾的是Parnas方法的使用没有明确的工作流程,所以这一方法不能独立使用,只能作为其它方法的补充。 注2:Parnas本人在近40年中发表了大量的技术文章,其中有几篇文章在计算机领域非常有影响,他对软件开发过程的理解非常深刻,读者可以查看相关的资料。 1.7.2Yourdon方法(SA/SD方法)1.7.2Yourdon方法(SA/SD方法) Yourdon方法是80年代使用最广泛的软件开发方法。它首先用结构化分析技术进行需求分析,然后用结构化设计技术进行总体设计和详细设计,然后是结构化编程。这一方法的精髓是自顶向下、逐步求精,也就是将功能逐步分解,直到人们可以理解和控制它为止。 注1:Yourdon方法的主要问题是以功能分解的软件不够稳定,用户的功能经常变化,导致系统的框架结构不稳定。 注2:从数据流程图到软件结构图之间的过渡有明显的断层,导致设计回溯到需求有一定困难。1.7.3面向数据结构的软件开发方法1.7.3面向数据结构的软件开发方法面向数据结构的方法有两种,一种是Warnier方法,于1974年,由J.D.Warnier提出,另一种Jackson方法,由M.A.Jackson于1975年提出,它们都是面向数据结构的软件设计方法。 其基本思想是:从目标系统的输入/输出数据结构入手,导出程序框架结构,再补充其它细节,得到完整的程序结构。面向数据结构的软件开发方法面向数据结构的软件开发方法注1:该方法适合对中小型软件进行详细设计。由于它无法构架软件系统的整体框架结构,所以不适合进行概要设计。 注2:面向数据结构的方法可以看成是结构化方法与面向对象方法之间的一种方法。它是以数据结构为研究的起始点,针对不同的数据结构分配相应的处理,只是处理上没有将数据结构与处理算法封装在一起 。1.7.4 问题分析法PAM1.7.4 问题分析法PAM问题分析法PAM(Problem Analysis Method)是80年代末由日立公司提出的一种软件开发方法。 它的基本思想是:由输入、输出数据结构,指导系统的分解,然后站在整个系统的角度再逐步综合。 这一方法的具体步骤是:从输入、输出数据结构导出基本处理框;分析这些处理框之间的先后关系;按先后关系逐步综合处理框,直到画出整个系统的PAD图。 PAD图是一种二维树形结构图,远远优于N-S图和PDL语言。 PAM是一种详细设计方法,在日本较为流行,软件开发的成功率也很高。 注1:由于在输入、输出数据结构与整个系统之间同样存在着鸿沟,所以,这一方法仍只适用于中小型软件的详细设计。 1.7.5 面向对象方法1.7.5 面向对象方法该方法的研究始于1966年。当时Kisten Nygaard和Ole-Johan Dahl开发了Simula语言,该语言提供了比子程序更高一级的抽象和封装。 70年代初期,Alan Kay吸取了Simula中关于类的概念,开发出Smalltalk语言。1972年发布了Smalltalk的第一个版本,同时,“面向对象”这一术语正式确定。Smalltalk被认为是第一个真正的面向对象语言,在Smalltalk中一切都是对象。 自80年代初到90年代初,面向对象研究从编程语言向着软件生命期的前期阶段发展。人们对面向对象方法的研究与运用,不再局限于编程语言,而是从系统分析和系统设计阶段就开始采用面向对象方法。 这标志着面向对象方法已经发展成一种完整的方法论和系统化的技术体系。 1.7.6 可视化开发方法1.7.6 可视化开发方法可视化开发方法就是在可视化开发工具提供的图形用户界面上,直接使用界面元素,诸如菜单、按钮、对话框、编辑框、单选框、复选框、列表框和滚动条等,这些界面元素都是由可视化开发工具提供的。开发人员引用这些元素,并且在这些元素的某些事件上添加需要处理的代码即可自动生成应用软件。 这类应用软件的工作方式是事件驱动,对每一事件,由系统产生相应的消息,并传递给相应的函数去处理。可视化开发方法可视化开发方法 注1:实际上可视化开发方法目前还不能单独作为一种开发方法,更加贴切的说可以认为它是一种辅助工具。 目前大多数开发人员主要是在编程环节上使用可视化工具,但是随着系统分析和系统设计的可视化工具的逐渐推出,人们会真正享受到可视化开发所带来的软件开发新理念。 软件工程研究的最新方向软件工程研究的最新方向软件形式语言的研究:目前,大部分软件文档都是用自然语言书写的。由于自然语言本身具有模糊性,因此有一部分专家研究“形式化描述语言的应用,以及不同形式化语言之间的转换”。这类研究工作难度较大,也不容易为一般人所接受。但是由于越来越多的大型软件的复杂程度与日俱增,这些软件一旦出错所引起的后果十分严重,所以形式化的研究工作就显得非常重要。 构件技术:软件开发构件化可以说是软件开发技术的一个发展趋势,也是软件工程界的一个热门话题。近年来,软件技术的进步以及CORBA,DCOM,JavaBean等构件标准的出现已经使情况开始改变,这给软件危机的真正缓和带来了希望。质量管理 质量管理 软件开发过程的质量控制将逐步得到重视。软件开发过程中精神活动的“不可见性”大大增加了过程管理的困难。因此软件工程管理的指导思想就是千方百计地使这些过程变为“可见的”,以及事后可以检查的记录。只有从一开始就在软件开发过程中严格贯彻质量管理,软件产品的质量才有保证。否则,开发工作一旦进行到后期,无论怎样测试和补漏洞,都无济于事。 这就是近年来国际上十分重视的“软件生产过程质量管理”思想。 1.8软件工程相关的标准资料网站信息1.8软件工程相关的标准资料网站信息Cmm规范:www.sei.cmu.deu/pub/documents/93.reports/pdf/tr24.93.pdf ISO 9000-3:www.ios.org IEEE软件工程系列标准:www.techstreet.com/cgi-bin/detail? product_id=14030 软件工程相关文章www.pilgrim.umass.edu/pub/misc/bibliographies 计算机科学指导 www.worldwidenews.net/subjects 软件配置管理系列标准 www.12207.com/test.htm 软件工程中的一些观念讨论软件工程中的一些观念讨论1、我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。 2、我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。 3、如果我们落后于计划,可以增加更多的程序员来解决。 4、既然需求分析很困难,不管三七二十一先把软件做了再说,反正软件是灵活的,随时可以修改。 5、如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法? null6、有最好的软件工程方法,最好的编程语言吗? 7、编程时是否应该多使用技巧? 8、软件中的错误是否可按严重程度分等级? 9、确定是否进行一个开发项目时(假如该项目已通过可行性分析),最先考虑的是是否有:时间、掌握了项目需要的开发技术、对项目的应用领域了解程度、合作者情况 10、我可以同时从事多个项目开发吗? 11、我是项目经理,为了保密,必须掌握项目的核心模块源代码 12、开发时,应选择我最熟悉的工具和软件 作业作业软件工程研究的主要问题可以归结为下面的几个为什么: 为什么软件的生产需要那么长的时间? 为什么软件的生产成本如此之高? 为什么不能在软件交付给用户之前就发现所有的错误? 为什么在软件的生产过程中难以度量其进展? 参考一些文献和资料,考虑这些为什么的可能解决途径。null再见!
本文档为【软件工程1】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_662875
暂无简介~
格式:ppt
大小:1MB
软件:PowerPoint
页数:0
分类:互联网
上传时间:2010-11-19
浏览量:46