《第1章初识软件工程.ppt》由会员分享,可在线阅读,更多相关《第1章初识软件工程.ppt(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第1章章 初识初识软件工程软件工程/内容介绍内容介绍n1.1 软件与软件危机n1.2 软件工程的由来n1.3 软件的开发方法n1.4 软件生存周期n1.5 了解软件开发模型n1.6 习题/1.1 软件与软件危机n1.1.1 怎样理解软件n1.1.2 软件的特点n1.1.3 产生软件危机的原因/1.1.1 怎样理解软件怎样理解软件随着计算机技术的发展,对软件在不同阶段有不同的认识。n 计算机发展的初期,硬件的设计和生产是主要问题,那时的所谓软件就是程序,甚至是机器指令程序,它们处于从属的地位。n随后社会对计算机提出了更高的要求,软件在计算机系统中的比重越来越大,这时软件的含义就成了文档加程序。
2、n现在对软件的正确理解应该是,软件是计算机系统中与硬件相互依存的部分,它包括程序及其相关文档。程序是计算机程序所需的阐述性资料。/1.1.2 软件的特点软件的特点 软件包括三个方面:一个或多个计算机程序,这些程序执行时能够提供期望的功能性能;一个或多个数据结构,这些数据结构使得程序能够完全操纵信息;一个或多个文档,这些文档描述了程序的分析、设计、实现和维护的细节及使用说明。/1.1.2 软件的特点软件的特点 软件不同于硬件的特征:1软件的质量是“开发”出来的,不是“制造”出来的 2软件可能会被“废弃”,但不会被“用坏”3过去的软件大多是“定制”的,而不是“装配”的 /1.1.3 产生软件危机的
3、原因产生软件危机的原因 出现软件危机的原因:1软件维护费用急剧上升,直接威胁计算机应用的扩大。2 2软件生产技术进步缓慢,是加剧这一软件危机的重要原因。/1.2 软件工程的由来软件工程的由来n1.2.1 1.2.1 软件工程的产生和发展软件工程的产生和发展n1.2.2 1.2.2 软件工程的定义浅谈软件工程的定义浅谈n1.2.3 1.2.3 理解软件工程的作用理解软件工程的作用n1.2.4 1.2.4 软件工程研究的内容软件工程研究的内容/1.2.1 软件工程的产生和发展软件工程的产生和发展 为了摆脱软件危机造成的困境,北大西洋公约组织(NATO)的科学委员会于1968年在联邦德国召开的有关研
4、讨会上,首先提出了“软件工程”(Software Engineering)的概念,其主要思路是把人类长期以来从事各种工程项目所积累起来的行之有效的原理、概念、技术和方法,特别是人类从事计算机硬件研究和开发的经验教训,应用到软件的开发和维护中。/1.2.1 软件工程的产生和发展软件工程的产生和发展 软件工程是随着计算机系统的发展而逐步形成的计算机科学领域中的一门学科。软件工程的发展可分为4个时期。120世纪40年代中期到60年代中期这个时期计算机硬件从电子管电子计算机发展到晶体管电子计算机,价格昂贵,运算速度低,存储量小。软件通常是规模较小的程序,软件的设计开发者和使用者往往是同一个人。软件设计
5、通常只注意如何节省存储单元、提高运算速度,除了程序清单之外,没有其他任何文档资料。/1.2.1 软件工程的产生和发展软件工程的产生和发展这个时期计算机硬件发展到集成电路计算机,运算速度和内存容量都相应提高了。出现了“软件作坊”,许多用户不再自己开发软件,而是去“软件作坊”购买软件。1968年北大西洋公约组织(NATO)的计算机科学家在联邦德国召开国际会议,正式提出了“软件工程”(Software Engineering)的术语。从此一门新兴的工程学科诞生了。当时“软件工程还处于学术研究阶段,但已对软件开发产生了巨大影响。220世纪60年代中期到70年代中期/1.2.1 软件工程的产生和发展软件
6、工程的产生和发展这个时期硬件发展到大规模集成电路计算机,计算机硬件的功能和质量都不断提高。计算机应用不断地扩大,软件开发生产率提高的速度远远跟不上计算机应用迅速普及深入的趋势,软件产品供不应求,软件危机日益严重,为了对付不断增长的“软件危机”,软件工程学把软件作为一种产品批量生产。320世纪70年代中期到80年代/1.2.1 软件工程的产生和发展软件工程的产生和发展计算机系统发展的第四代不再是单台的计算机和计算机系统,而是计算机软件和硬件的综合效果。由复杂操作系统控制的强大桌面机、广域网和局域网,与先进的应用软件相互配合,计算机体系结构从集中的主机环境转变为分布式的客户机服务器环境。软件开发的
7、技术如下:面向对象技术;专家系统和人工智能软件;人工神经网络软件;并行计算、网络计算机、虚拟现实技术、多媒体技术和现代通信技术。420世纪80年代以后/1.2.2 软件工程的定义软件工程的定义 关于软件工程的定义,目前尚无统一、一致的定义,下面给出几个有代表性的定义。1Fritz Bauer在NATO会议上给出的定义 软件工程是建立和使用一套合理的工程原则,以便获得经济的软件,这种软件是可靠的,可以在实际机器上高效地运行。2IEEE在软件工程术语汇编中的定义 软件工程是:将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;在中所述方法的研究。/1.2.2 软
8、件工程的定义软件工程的定义3计算机科学技术百科全书中的定义 软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。/1.2.3 理解软件工程的作用理解软件工程的作用n从历史上讲,软件工程的作用,是为了克服上个世纪60年代出现的软件危机(Software Crisis),这种危机表现为软件开发的成本大、进度慢、维护难和质量得不到保障。n从当前来讲,软件工程的作用,就是告诉
9、人们怎样去开发软件和管理软件。具体地讲,它表现在与软件开发和管理有关的人员和过程上。/1.2.3 理解软件工程的作用理解软件工程的作用n从软件项目团队来讲,软件工程的作用在于:在规定的时间内,按照规定的成本,完成预期质量目标(软件的功能、性能和接口达到需求报告标准)的软件。n从软件发展进程来讲,软件工程的作用在于:克服软件危机,控制软件进度,节约开发成本,提高软件质量。n从软件企业本身来讲,软件工程的作用在于:持续地规范软件开发过程和软件管理过程,不断地优化软件组织的个人素质和集体素质,从而逐渐增强软件企业的市场竞争实力。/1.2.4 软件工程研究的内容软件工程研究的内容n软件工程研究的主要内
10、容是软件开发技术和软件管理两方面。n在软件开发技术中,主要研究软件开发方法、软件开发过程、软件开发工具和环境。n在软件开发管理中,主要是研究软件管理学、软件经济学、软件心理学等。/1.3 软件的开发方法软件的开发方法n1.3.1 面向过程的方法n1.3.2 面向数据的方法n1.3.3 面向对象的方法/1.3.1 面向过程的方法面向过程的方法n面向过程的方法包括面向过程需求分析、面向过程设计、面向过程编程、面向过程测试、面向过程维护、面向过程管理。面向过程的方法又称结构化方法,习惯上叫做结构化分析、结构化设计、结构化编程、结构化测试、结构化维护。n 面向过程的方法的特点是:程序的执行过程不由用户
11、控制,完全由程序控制。面向过程的方法的优点是简单实用,缺点是维护困难。n 面向过程的方法,在军事上的实时跟踪监控系统中有很好的应用。/1.3.2 面向数据的方法面向数据的方法n面向数据的方法,也称为面向元数据(Metadata)的方法。元数据是关于数据的数据,组织数据的数据。n面向数据方法的要点是:1数据(Data)位于企业信息系统的中心。信息系统就是对数据的输入、处理、传输、查询和输出。2只要企业的业务方向和内容不变,企业的元数据就是稳定的,由元数据构成的数据模型(Data Model)也是稳定的。/1.3.2 面向数据的方法面向数据的方法 3对元数据的处理方法是可变的。用不变的元数据支持可
12、变的处理方法,即以不变应万变,这就是企业信息系统工程的基本原理。4企业信息系统的核心是数据模型。数据模型包括概念数据模型CDM(Conceptual Data Model)和物理数据模型PDM(Physics Data Model)。数据模型的表示形式是E-R图,E-R图要用CASE工具设计。例如,Power Designer,Oracle Designer或ERwin,它们不但具有正向设计功能,而且具有逆向分析功能,这样才能实现快速原型法。5信息系统的实现(编码)方法主要是面向对象,其次才是面向数据和面向过程。6用户自始至终参与信息系统的分析、设计、实现与维护。/1.3.2 面向数据的方法面
13、向数据的方法n面向数据方法的优点是通俗易懂,特别适合信息系统中数据层(数据库服务器)上的设计与实现,缺点是实现窗口界面较困难。n面向数据的方法,与关系数据库管理系统紧密地捆绑在一起,只要面向对象数据库不能完全替代关系数据库,这种方法就不会终结。n面向数据的方法在电子商务中应用有:网站后台数据库服务器上的数据处理和数据传输,其软件都是利用面向数据的方法设计与实现的。/1.3.3 面向对象的方法面向对象的方法n面向对象方法起源于面向对象编程语言。面向对象方法起源于面向对象编程语言。n面向对象方法包括分析、设计和实现活动。它是一种把面向对象的思想运用于软件开发过程,指导开发活动的系统方法,建立在“对
14、象”概念(对象、类和继承)基础上的方法学基于对象概念,以对象为中心,以类和继承为构造机制来认识、理解、刻画客观世界和设计、构建相应的软件系统。/1.3.3 面向对象的方法面向对象的方法n面向对象方法的应用,目前有两种方式:(1)在分析、设计、实现活动中完全采用面向对象的技术;(2)传统的功能分解方法与面向对象方法结合使用。即功能分析、面向对象的设计和实现,以及面向对象分析和设计、实现用过程式语言。n面向对象分析的任务就是通过分析问题域建立系统的概念模型,并用相应的符号系统表示。/1.3.3 面向对象的方法面向对象的方法n 面向对象设计是在面向对象分析的基础上进行系统设计,包括交互过程和用户接口
15、、任务管理、全局资源协调并确定边界、各个类的存储和数据格式。n面向对象实现就是用面向对象程序设计语言来实现面向对象设计,因为该类语言支持对象、运行多态性和继承,因此比较容易,如果使用非面向对象程序设计语言,则需要特别注意和规定保留程序的面向对象式的程序结构。/1.4 软件生存周期软件生存周期n软件生存周期是指软件产品或软件系统从产生、投入使用到被淘汰的全过程。软件生存周期大致可以分为6个阶段:计算机系统工程、需求分析、设计、编码、测试、运行和维护。/1.4 软件生存周期软件生存周期n软件生存周期是指软件产品或软件系统从产生、投入使用到被淘汰的全过程。软件生存周期大致可以分为6个阶段。1计算机系
16、统工程2需求分析3设计4编码5测试6运行和维护/1.5 软件开发模型软件开发模型n1.5.1 瀑布模型n1.5.2 快速原型模型n1.5.3 渐增模型n1.5.4 螺旋模型n1.5.5 快速应用开发模型/1.5 软件开发模型软件开发模型n根据软件生产工程化的需要,生存周期的划分也有所不同,从而形成了不同软件生存周期模型(SW life cycle model),或称软件开发模型。n软件开发模型可定义为:它是软件开发全部过程、活动和任务的结构框架。n需要注意的是:开发模型仅对开发、运作、维护过程有意义/1.5.1 瀑布模型瀑布模型n瀑布模型遵循软件生存期的划分,明确规定每个阶段的任务,各个阶段的
17、工作顺序展开恰如奔流不息拾级而下的瀑布。瀑布模型把软件生存周期分为计划、开发、运行3个时期。这3个时期又可细分为若干个阶段:计划时期可分为问题定义、可行性研究两个阶段,开发时期分为需求分析、概要设计、详细设计、程序设计、软件测试等阶段,运行时期则边运行边维护。/1.5.1 瀑布模型瀑布模型n瀑布模型软件开发有以下几个特点。1软件生存周期的顺序性2尽可能推迟软件的编码3保证质量/1.5.2 快速原型模型快速原型模型n所谓快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集(展示了目标系统的关键功能)。快速原型模型的第一步是建造一个快速原型,实现客
18、户或未来的用户与系统的交互,用户或客户对原型进行评价,进一步细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。/1.5.2 快速原型模型快速原型模型n快速原型模型的主要优点:不带反馈环的,这正是这种过程模型软件产品的开发基本上是线性顺序进行的。n 能做到基本上线性顺序开发的主要原因如下。1原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求,因此,在开发过程的后续阶段不会因为发现了规格说明文档的错误而进行较大的返工。2开发人员通过建立原型系统已经学到了许多东西,因此,在设计
19、和编码阶段发生错误的可能性也比较小,这自然减少了在后续阶段需要改正前面阶段所犯错误的可能性。/1.5.3 渐增模型渐增模型n在渐增模型中,软件被作为一系列的增量构件来设计、实现、集成和测试,每一个构件是由多种相互作用的模块所形成的提供特定功能的代码片段构成,如图1-6所示。n在使用渐增模型时,第一个增量往往是实现基本需求的核心产品。核心产品交付用户使用后,经过评价形成下一个增量的开发计划,它包括对核心产品的修改和一些新功能的发布。这个过程在每个增量发布后不断重复,直到产生最终的完善产品。/1.5.3 渐增模型渐增模型n渐增模型的优点:渐增模型在各个阶段并不交付一个可运行的完整产品,而是交付满足
20、客户需求的一个子集的可运行产品。整个产品被分解成若干个构件,开发人员逐个构件地交付产品,这样做的好处是软件开发可以较好地适应变化,客户可以不断地看到所开发的软件,从而降低开发风险。n渐增模型的缺点:1由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。2在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。/1.5.4螺旋模型螺旋模型n螺旋模型通常用来指导大型软件项目的开发,它将开发划分为制订计划、风险分析、
21、实施开发和客户评估四类活动。沿着螺旋线每转一圈,表示开发出一个更完善的新的软件版本。/1.5.4螺旋模型螺旋模型n图1-7显示了螺旋模型的原理,沿着螺旋线旋转,在笛卡儿坐标的四个象限上分别表达了四类活动。n 1制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;n 2风险分析:分析所选方案,考虑如何识别和消除风险;n 3实施开发:实施软件开发;n 4客户评估:评价软件功能和性能,提出修正建议。/1.5.5快速应用开发模型快速应用开发模型n快速应用开发(rap application development)是一个线性顺序的软件开发模型,强调极短的开发周期。RAD 模型是线性顺序模型的
22、一个“高速”变种,通过使用基于构件的建造方法获得了快速开发。如果需求理解得很好,且约束了项目范围,RAD过程使得一个开发组能够在很短时间内(如60 到90 天)创建出“功能完善的系统”。/1.5.5快速应用开发模型快速应用开发模型u数据建模:业务建模阶段定义的一部分信息流被精化,形成一组支持该业务所需的数据对象。标识出每个对象的特征(称为属性),并定义这些对象间的关系。u处理建模:数据建模阶段定义的数据对象变换成为要完成一个业务功能所需的信息流。创建处理描述以便增加、修改、删除或获取某个数据对象。n RAD 方法包含如下几个开发阶段:u业务建模:业务活动中的信息流被模型化,以回答如下问题:什么
23、信息驱动业务流程?生成什么信息?谁生成该信息?该信息流往何处?谁处理它?/1.5.5快速应用开发模型快速应用开发模型u测试及反复:因为RAD 过程强调复用,许多程序构件已经是测试过的,这减少了测试时间。但新构件必须测试,所有接口也必须测到。u应用生成:RAD 假设使用第四代技术。RAD 过程不是采用传统的第三代程序设计语言来创建软件,而是复用已有的程序构件(如果可能的话)或是创建可复用的构件(如果需要的话)。在所有情况下,均使用自动化工具辅助软件建造。/1.6 小结小结n软件已经成了基于计算机的系统和产品的一个关键元素。在过去的几十年中,软件已经由早期的求解专门问题的程序和信息分析的工具发展成为现今的一个产业(即软件产业)。但是,早期“编程”的缺点和历史导致了延续至今的一系列问题,软件变成了基于计算机系统和产品进一步发展的限制因素。软件工程的目的就是要提供一个构造高质量软件的框架,以解决这些问题。n软件工程是一门集过程和模型、方法和技术、工具和环境、标准和规范于一体来进行计算机软件开发的工程学科。人们已经提出了许多不同的软件开发模型,每一种都有它的优点和缺点,实际应用时应该引起重视。方法和技术、工具和环境是软件工程师的必备知识。标准和规范对于确保软件质量是至关重要的。/谢谢!返回目录 结束放映