版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机网络课件 制作人:谢希仁王荣存 博士第1章 绪论课件制作人:谢希仁 软件工程是一门工程科学,他告诉我们如何规范化地开发软件。 软件工程的目的是支持专业化的软件开发,而不是个体编程。课件制作人:谢希仁1.1 软件与软件危机1.2 软件工程学的范畴1.3 传统软件工程和面向对象软件工程1.4 软件工程的应用课件制作人:谢希仁1 软件与软件危机1.1 软件的定义指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需求。l数据结构,使得程序可以充分利用信息。l描述程序操作和使用的文档。1.1 软件的定义指令的集合(计算机程序),通过执行这些指令可以满足预期的特征、功能和性能需
2、求。l数据结构,使得程序可以充分利用信息。l描述程序操作和使用的文档。课件制作人:谢希仁1.2 软件的特点l软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。l软件是设计开发的,而不是传统意义上生产制造的。l软件不会磨损。l虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的。课件制作人:谢希仁l软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同程度的依赖性。l软件的开发至今尚未完全摆脱手工的开发方式。l软件本身是复杂的。u实际问题的复杂性。l软件维护困难。u程序逻辑结构的复杂性 。l软件成本相当昂贵。l相当多的软件工作涉及到社会因素。课件制作
3、人:谢希仁软件与硬件故障率的关系课件制作人:谢希仁软件特性的变化l应用软件l工程/科学软件l嵌入式软件l产品线软件lWEB应用软件l人工智能软件软件的分类新的挑战l普适计算l网络资源l开源软件课件制作人:谢希仁遗留系统 在几十年前诞生,他们不断地被修改以满足商业需要和计算平台的变化。这一系统给的繁衍使得大型结构十分头痛,因为他们的维护代价高昂且系统演化风险较高。 l 设计难以扩展l 代码令人费解l 文档混乱甚至没有l 测试用例和结果从未归档l 变更的历史管理混乱l 支撑核心的应用并必不可少课件制作人:谢希仁软件神话 软件神话即关于软件及其开发过程的一些说法被人盲目相信,这可以追溯到信息处理技术
4、发展的初期。 在缺少有意义的规范标准的情况下,像软件这样的新兴产业转而依靠民间传说。 课件制作人:谢希仁管理神话 神话:我们已经有了一本写满软件开发标准和规程的宝典。难道不能提供我们所需要了解的所有信息吗? 事实:这本宝典也许的确已经存在,但它是否已在实际中采用?从业人员是否知道这本书的存在呢?它是否反映了软件工程的现状?是否全面?是否可以适应不同的应用环境?是否在缩短交付时间的同时还关注保证产品的质量?在很多情况下,问题的答案是否定的。 课件制作人:谢希仁 神话:如果我们未能按时完成计划,可以通过增加程序员人数而赶上进度。(即所谓的蒙古游牧概念)。 事实:软件开发并不是像机器制造那样的机械过
5、程。Brooks曾说过:“在软件工程中,为赶进度而增加人手,只能使进度更加延误。”初看起来,这种说法似乎与直觉不符。然而,当新人加入到一个软件项目中后,原有的开发人员必须要牺牲本来的开发时间对后来者进行培训,因此减少了本应用于高效开发的时间。只有有计划、有序的进行,增加人员对项目进度才有意义。 课件制作人:谢希仁 神话:如果决定将软件外包给第三方公司,就可以放手不管,完全交给第三方公司开发。 事实:如果开发团队不了解如何在内部管理和控制软件项目,那无一例外地将在外包项目中遇到困难。课件制作人:谢希仁用户神话 神话:有了对项目目标的大概了解,便足以开始编写程序,可以在之后的项目开发过程中逐步充实
6、细节。 事实:虽然通常很难得到综合全面且稳定不变的需求描述,但是对项目目标模糊不清的描述将为项目实施带来灾难。要得到清晰的需求描述(经常是逐步变得清晰的),只能通过客户和开发人员之间保持持续有效的沟通。 课件制作人:谢希仁 神话:虽然软件需求不断变更,但是因为软件是弹性的,因此可以很容易地适应变更。 事实:软件需求的确在随时变更,但随变更引入的时机不同,变更所造成的影响也不同。如果需求变更提出得较早(比如在设计或者代码开发之前),则费用的影响较小;但是,随着时间的推移,变更的代价也迅速增加因为资源已经分配,设计框架已经建立,而变更可能会引起剧变,需要添加额外的资源或者修改主要设计架构。课件制作
7、人:谢希仁从业者神话 神话:当我们完成程序并将其交付使用之后,我们的任务就完成了。 事实:曾经有人说过,对于编程来说,开始得越早,耗费的时间就越长。业界的一些数据显示,60%80%的工作耗费在软件首次交付顾客使用之后。 神话:直到程序开始运行,才能评估其质量。 事实:最有效的软件质量保证机制之一技术评审,可以从项目启动就开始实行。软件评审作为“质量过滤器”,已经证明可以比软件测试更为有效地发现多种类型的软件缺陷。课件制作人:谢希仁 神话:对于一个成功的软件项目,可执行程序是唯一可交付的工作成果。 事实:软件配置包括很多内容,可执行程序只是其中之一。各样工作产品(如模型、文档、计划)是成功实施软
8、件工程的基础,更重要的是,为软件技术支持提供了指导。 神话:软件工程将导致我们产生大量无用文档,并因此降低工作效率。 事实:软件工程并非以创建文档为目的,而是为了保证软件产品的开发质量。好的质量可以减少返工,从而加快交付时间。课件制作人:谢希仁1.1.3软件危机与软件问题1.1.3.1 软件危机l许多软件项目不能满足客户的要求。l许多软件项目超出预算和时间安排。l软件受其自身特点的影响,生产过程不象硬件那样规范,受人的因素和外界影响很大,在软件生产的各阶段都会引入不同程度的错误,造成不能预期完成任务,致使成本上升,甚至导致软件失败。课件制作人:谢希仁1.1.3.2软件危机的表现l 对软件开发成
9、本和进度的估计常常很不正确。l 用户对“已完成的”软件系统不满意的现象经常发生。l 软件产品的质量往往靠不住。l 软件常常是不可维护的。l 软件通常没有适当的文档资料。l 软件成本在计算机系统总成本中所占的比例逐年上升。l 软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势。课件制作人:谢希仁占总成本的百分比020406080100195519701985硬件软件课件制作人:谢希仁1.1.3.3软件危机的原因l 软件是逻辑产品,开发进度、成本难以估计。l 缺乏或不完整、不一致的文档给维护带来困难。l 用户对软件需求的描述往往不够精确,有遗漏,有二义。l 软件开发人员对需求的理解与用
10、户的本来愿望有差异。l 大型软件项目需多人协同完成,缺乏管理经验。l 开发人员不能有效地、独立自主地处理大型软件的全部关系。l 缺乏有力的方法学和工具的支持。l 软件项目的特殊性和人类智力的局限性。课件制作人:谢希仁1.2 软件工程学的范畴n软件工程学n指导计算机软件开发和维护的工程学科。n工程管理+开发技术。课件制作人:谢希仁l 由于认识到软件的设计、实现、维护和传统的工程规则有相同的基础,于是北大西洋公约组织(NATO)于1967年首次提出了“软件工程(Software Engineering)”的概念。l 关于编制软件与其他工程任务类似的提法,得到了1968年在德国召开的NATO软件工程
11、会议的认可。委员会的结论是,软件工程应使用已有的工程规则的理论和模式,来解决所谓的软件危机。课件制作人:谢希仁l 软件危机至今仍然困绕着我们,这表明软件生产过程在许多方面和传统的工程相似,但却具有独特的属性和问题。l 了解有关软件、软件生存期及软件工程过程等重要的概念,对掌握、学习和应用软件工程的方法、技术等对于计算机科学与技术专业的学生都是非常必要的。课件制作人:谢希仁1983年B.W.Boehm提出了软件工程的七条基本原理:1. 用分阶段的生存周期计划严格管理;2. 坚持进行阶段评审;3. 严格实施的产品控制;4. 采用现代程序技术;5. 结果应能清楚地审查;6. 开发小组的成员应该少而精
12、;7. 承认不断改进软件工程的必要性。课件制作人:谢希仁软件工程概念 基本思想是强调在软件开发过程中应用工程化原则,解决软件的整体质量较低、最后期限和费用没有保证等问题。课件制作人:谢希仁lFritz Bauer(1968,首次题提出SE概念):软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而建立和使用的好的工程原则。lIEEE: 软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;(2)(1)中所述方法的研究。l计算机科学技术百科全书:软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程。课件
13、制作人:谢希仁“工程”的含义l 工程是按照事先制定的计划进行的工作和活动。l 工程是将理论和知识应用于实践的科学。课件制作人:谢希仁软件工程的内容l 软件工程借鉴了传统工程的原则和方法,以求高效地开发高质量软件。其中应用了计算机科学、数学和管理科学。l 计算机科学和数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡。l 管理科学用于计划、资源、质量和成本的管理。课件制作人:谢希仁软件开发技术软件开发技术软件工程管理软件工程管理软件开发方法学软件开发方法学软件工具软件工具软件工程环境软件工程环境软件管理学软件管理学软件经济学软件经济学软件度量学软件度量学课件制作人:谢希仁
14、软件工程三要素l 软件工程是一种层次化的技术。l 软件工具为软件工程方法提供了自动的或半自动的软件支撑环境。l 软件工程方法为软件开发提供了 “如何做” 的技术。课件制作人:谢希仁1.3 软件工程的发展 面向过程的开发方法(传统的)面向过程的开发方法(传统的) 面向对象的开发方法面向对象的开发方法 基于构件的开发方法基于构件的开发方法 面向过程的面向过程的(传统的)(传统的) 面向对象的面向对象的 基于构件的基于构件的课件制作人:谢希仁传统软件工程传统软件工程传统的软件工也称为传统的软件工也称为软件开发方软件开发方法,这类开发方法都典型地包含了分析、设计、法,这类开发方法都典型地包含了分析、设
15、计、实现、确认(测试)、演化(维护)等活动。实现、确认(测试)、演化(维护)等活动。典型的传统软件开发方法有:典型的传统软件开发方法有:Jackson方法、结构化开发方法、方法、结构化开发方法、原型化方法、原型化方法、HIPO法、法、IDEF法等。法等。课件制作人:谢希仁 是一种是一种面向数据流面向数据流的开发方法,是现有的软件的开发方法,是现有的软件开发方法中最成熟,应用最广泛的方法,主要特点开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然和方便。是快速,自然和方便。 结构化方法总的指导思想是自顶向下、逐步求结构化方法总的指导思想是自顶向下、逐步求精,精,以数据流,数据的封闭性准则来
16、逐层分解的,以数据流,数据的封闭性准则来逐层分解的,它的基本原则是功能的分解与抽象。它的基本原则是功能的分解与抽象。结构化方法强调结构的合理性。提出了一组提结构化方法强调结构的合理性。提出了一组提高软件结构质量的准则,如高软件结构质量的准则,如功能的分解与抽象、模功能的分解与抽象、模块独立性、信息屏蔽等。块独立性、信息屏蔽等。课件制作人:谢希仁JACKSON方法是一种方法是一种面向数据结构面向数据结构的设计方的设计方法,工具为法,工具为Jackson图。强调程序结构与问题结构图。强调程序结构与问题结构相对应。相对应。JACKSON方法由两部分构成:方法由两部分构成:1 1、JSP(Jackso
17、n structuredProgramming) (杰克逊结构程序设计(杰克逊结构程序设计 )2、JSD (Jackson System Development)课件制作人:谢希仁JSP 方法一般通过以下五个步骤来完成设计(1)分析并确定输入数据和输出数据的逻辑结构,并用Jackson 结构图来表示这些数据结构。(2)找出输入数据结构和输出数据结构中有对应关系的数据单元。(3)按一定的规则由输入、输出的数据结构导出程序结构。(4)列出基本操作与条件,并把它们分配到程序结构图的适当位置。 (5)用伪码写出程序课件制作人:谢希仁课件制作人:谢希仁四、四、HIPOHIPO法法HIPOHIPO法(法(
18、Hierarchy Plus InputHierarchy Plus InputProcessProcessOutputOutput),按功能层次结构分析法,),按功能层次结构分析法,19741974年由年由IBMIBM公司推公司推出的软件分析及设计方法,又称出的软件分析及设计方法,又称HIPOHIPO图。图。HIPOHIPO图是以功能、功能完备性准则逐层分解的。图是以功能、功能完备性准则逐层分解的。由直观目录表(由直观目录表(H H图)、概要图)、概要HIPOHIPO图、详细图、详细IPOIPO图三图三部分组成。部分组成。课件制作人:谢希仁面向对象软件工程面向对象软件工程 OOSD OOSD
19、(Object-Oriented Software DevelopmentObject-Oriented Software Development)法这是法这是8080年代推出的一种全新的软件开发方法。非常年代推出的一种全新的软件开发方法。非常实用而强有力,被誉为实用而强有力,被誉为9090年代软件的核心技术之一。年代软件的核心技术之一。 其基本思想是:对问题领域进行自然的分割,以更其基本思想是:对问题领域进行自然的分割,以更接近人类通常思维的方式建立问题领域的模型,以便对接近人类通常思维的方式建立问题领域的模型,以便对客观的信息实体进行结构和行为的模拟,从而使设计的客观的信息实体进行结构和行
20、为的模拟,从而使设计的软件更直接地表现问题的求解过程。面向对象的开发方软件更直接地表现问题的求解过程。面向对象的开发方法以对象作为最基本的元素,是分析和解决问题的核心。法以对象作为最基本的元素,是分析和解决问题的核心。课件制作人:谢希仁软件复用技术(基于构件的软件工程)软件复用技术(基于构件的软件工程) “软件重用软件重用”或或“软件复用软件复用”(Software ReuseSoftware Reuse)是)是指将已有的软件成分用于指将已有的软件成分用于。该技术是。该技术是提高软件生产率和质量,降低成本的有效方法。提高软件生产率和质量,降低成本的有效方法。复用程序复用程序:包括目标代码和源代
21、码的复用,可通过连包括目标代码和源代码的复用,可通过连接接(Link)(Link)、绑定、绑定(Binding) (Binding) 、包含、包含(include)(include)等功能等功能支持及对象链接及嵌入支持及对象链接及嵌入(OLE)(OLE)技术实现。技术实现。复用设计复用设计:设计结果比源程序的抽象级别高,因此复设计结果比源程序的抽象级别高,因此复用受环境影响小。可以通过从现有用受环境影响小。可以通过从现有系统系统中提取全部或中提取全部或者不同粒度的设计构件,或者独立于具体应用开发设者不同粒度的设计构件,或者独立于具体应用开发设计构件。计构件。课件制作人:谢希仁复用分析复用分析
22、比设计复用级别更高,实现方式与设计复用比设计复用级别更高,实现方式与设计复用类似。类似。复用结构复用结构 复用模块结构或者数据结构。复用模块结构或者数据结构。课件制作人:谢希仁 构件构件是指可以被明确标识的软件制品,可以是是指可以被明确标识的软件制品,可以是软件开发不同阶段的产品。软件开发不同阶段的产品。 可复用构件可复用构件是指可被其它系统复用,用于构成是指可被其它系统复用,用于构成新系统的构件。新系统的构件。课件制作人:谢希仁可复用构件的特性:可复用构件的特性:1. 独立性独立性 解决相对独立的问题,与外界联系尽量少。解决相对独立的问题,与外界联系尽量少。2. 完整性完整性 既要包括完整的
23、解决方案,还定义相应操既要包括完整的解决方案,还定义相应操作。作。3. 通用性通用性 在同类应用中具有一般性。在同类应用中具有一般性。4. 可标识性可标识性 通过合适的命名,构件所解决的问题是通过合适的命名,构件所解决的问题是可标识的。可标识的。5. 可适应性可适应性 适应环境变化。适应环境变化。6. 可靠性可靠性 对各个使用它的系统都具有高的可靠性。对各个使用它的系统都具有高的可靠性。课件制作人:谢希仁两种程序设计方法n程序设计的两次飞跃程序设计的两次飞跃 程序设计从主要依赖于程序员个人的自由活动变成有章可循的一门学科结构化程序设计l面向过程的程序面向过程的程序= =算法算法+ +数据结构数
24、据结构结构化程序设计到面向对象程序设计,是程序设计方法的又一次飞跃l面向对象的程序面向对象的程序= =对象对象+ +消息消息课件制作人:谢希仁面向过程和面向对象的编码存款取款利息结算帐户余额帐户余额利息结算存 款取 款例例:VB:VB的对象的对象Form1Form1下下课件制作人:谢希仁两类软件工程方法传统软件工程软件分析 总体设计 详细设计 面向过程的编码 测试 系统设计面向对象软件工程软件分析与对象抽取 对象详细设计 面向对象的编码 测试建立模型运行与维护运行与维护课件制作人:谢希仁面向对象的系统分析与设计方法课件制作人:谢希仁1.4 软件工程的应用系统软件系统软件 如操作系统、设备驱动程
25、序等。如操作系统、设备驱动程序等。支撑软件支撑软件(实用软件)(实用软件) 协助用户开发的工具协助用户开发的工具软件,如编辑程序、程序库、图形软件包等。软件,如编辑程序、程序库、图形软件包等。应用软件应用软件 如工程与科学计算软件、如工程与科学计算软件、CAD/CAMCAD/CAM软软件、件、CAICAI软件、信息管理系统等。软件、信息管理系统等。课件制作人:谢希仁类类 别别参加人数参加人数研制期限研制期限产品规模(源代码行)产品规模(源代码行)微微 型型11 4 周周0.5K小小 型型11 6 月月1K 2K中中 型型2 - 51 2 年年5 50 K大大 型型5 - 202 3 年年50
26、500 K甚大型甚大型100 - 10004 5 年年1M极大型极大型2000 -50005 10 年年1M 10 M实时处理软件实时处理软件交互式软件交互式软件批处理软件批处理软件项目软件项目软件 由客户委托开发的软件。由客户委托开发的软件。产品软件产品软件 由软件开发机构开发,提供给市场的。由软件开发机构开发,提供给市场的。 课件制作人:谢希仁n软件工程指导中小型软件n软件工程指导大型软件n软件工程的成就n软件工程的局限课件制作人:谢希仁软件工程的最新发展动向软件工程研究的最新动向软件工程研究的最新动向n软件形式语言的研究软件形式语言的研究n构件技术构件技术n质量管理质量管理提高工作效率计
27、算机辅助软件工程环境工具箱软件工具模型课件制作人:谢希仁1.5 应正确认识和处理好的几个关系 1. 1.传统软件工程与现代软件工程的关系传统软件工程与现代软件工程的关系 虽然两类工程规范存在很大的差异,但他们还虽然两类工程规范存在很大的差异,但他们还有不少共同点,许多在传统软件工程中总结的指导有不少共同点,许多在传统软件工程中总结的指导思想在面向对象软件工程中仍具有指导意义。有些思想在面向对象软件工程中仍具有指导意义。有些在传统软件工程中行之有效的分析和设计方法(如在传统软件工程中行之有效的分析和设计方法(如模块化设计、抽象与细化等)在面向对象中继续适模块化设计、抽象与细化等)在面向对象中继续适用,有些方法(如分析与设计建模)在面向对象中用,有些方法(如分析与设计建模)在面向对象中还有发展。并且,面向对象软件工程还有所发展,还有发展。并且,面向对象软件工程还有所发展,在面向对象软件工程趋于成熟的同时,新一代软件在面向对象软件工程趋于成熟的同时,新一代软件工程工程“构件工程构件工程”正在逐步扩大其应用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 品牌加盟合同管理与风险管理
- 2024年度版权质押合同:影视作品的版权抵押融资
- 古典风格博物馆装修合同
- 地质公园山坡地租赁合同
- 旅游规划市场管理办法
- 商业中心改造硬装施工合同
- 旅游景区民宿租赁合同样本
- 矿山电力系统升级合同
- 假山公交站景观施工合同
- 期货公司内勤服务合同
- 2024年河南省机场集团有限公司招聘笔试参考题库含答案解析
- 2024年人民法院出版社有限公司招聘笔试参考题库含答案解析
- 2023-2024学年深圳市初三中考适应性考试语文试题(含答案)
- 人工智能课程中小学生的创新思维培养
- 血液透析高磷的护理查房课件
- 动物园安全培训:如何确保动物园游客的安全
- 2024年成都交通投资集团招聘笔试参考题库含答案解析
- 白钢隔断施工方案
- Unit 3 Sports and Fitness Reading and Thinking 说课稿-2023-2024学年高中英语人教版(2019)必修第一册
- 《复活》教学课件
- 外研社(一年级起点)小学英语四年级上册单词(带音标、词性)
评论
0/150
提交评论