在机房收费系统验收完成后,我又开始了新的一轮学习——软件工程。
对于“软件”这个词相信很多人都耳熟能详的吧!因为现在我们的日常生活都离不开计算机。而软件就是与计算机硬件相互依存的那部分, 包括程序、数据和文档等,它具有无形性,必须通过计算机来运行的。
软件的发展分为三个阶段:程序设计、程序系统、软件工程 三个时代。
软件的具有的特性:1、抽象性 2、依赖性(受硬件限制) 3 、结构复杂性
4生产方式与硬件不同,主要是研制开发 5、成本昂贵 6、没有机械磨损 7、产权性。
软件的划分方式:一、功能划分:1、系统软件 2、支撑软件 3、应用软件
软件危机:是软件在开发过程中遇到的问题找不到解决的方法,表现在经费预算经常突破,完成时间的拖延,可靠性差,维护性差等方面。其产生的原因是软件结构的日益复杂、开发管理困难、费用的增加、开发技术、开发工具和生产方式落后。
在解决软件危机中由众多学者提出了软件工程这一概念,也是我现在所学的。
软件工程:运用科学知识和技术原理来定义、开发和维护软件的这一门学科。它的内容包括指软件开发技术和开发管理。
软件工程过程包括:获取过程、供应过程、开发过程、操作过程、维护过程、管理过程和支持过程。
软件的生存周期是一个软件从提出开发要求开始到报废的为止,囊括了软件从设计到使用和维护的各个阶段的内容。可分7个阶段,可行性分析和项目开发计划、需求分析、概要分析、详细设计、编码、测试和维护。
软件生存周期模型:瀑布、增量、螺旋、喷泉、变换和统一过程模型等。
瀑布模型: 每个阶段,相互依赖性强,每个阶段都产生文档,比较严谨。但是与用户见面完,成功率低,一般才25%
特点:时间的顺序性和依赖性,推迟时间的观点,质量保证的观点。
增量模型:每开发一部分,就展示一部分。及早的发现问题
特点:用户能很快看见,及早发现问题,逐步完善,最终让客户获得满意产品。
螺旋模型:它是将瀑布与增量相结合是一种风险驱动模型。在开发时可分几个周期每个周期都可以分成四个步骤:制定计划、风险分析、实施工程、客户评价。
特点:多次原型的反复并增加风险评估的开发。
喷泉模型:以用户需求为东西,以对象作为驱动的模型,适合于面向对象开发。它具有迭代性和无间隙性。
特点:1、规定开发过程有4个阶段,即分析、系统设计、软件设计和实现。2、各阶段相互重叠,反映了软件并行性的特点。3、以分析为基础,资源消耗呈塔型,在分析阶段消耗的资源最多。4、反映软件过程的迭代的自然特性,从高层返回低层无资源消耗。5、强调增量开发,它依据分析一点,设计一点的原则,不要求一个阶段的彻底完成,整个过程是一个迭代的逐步提炼过程。6、是对象驱动的过程,对象是所有活动作用的实体,也是项目管理的基本内容。7、由于活动不同,可分为系统实现和对象实现,这即反映了全系统的开发过程,也反映了对象的开发和重用过程。
变换模型:从软件需求规格说明出发,经过一系列的变换最终得到结果,适合于形式化的开发方式。。
特点:有严格的数学理论和形式化的技术支持,但目前在研究额实验阶段,不能实用。
统一过程模型:是基于统一建模语言的软件开发过程,它是用例驱动和风险驱动的、以构建为中心,采用迭代和增量的软件过程。该过程包括若干循环周期,每个循环周期包括四个阶段:初始、细化、构造、移交,每个阶段包含若干迭代每次迭代又要执行五中工作流:需求捕获、分析、设计、实现和测试。
软件的开发方法:结构化方法、jackson方法、维也纳开发方法(VDM)和面向对象开发方法。
结构化方法:由结构化分析(SA)、结构化设计(SD)和结构化程序设计(SP)构成。
SA: 是根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统模型从而完成需求分析。
SD:是根据模块独立性准则、软件结构准则,江苏局流图转换为软件的体系结构,用软件结构图建立系统的物理模型,实现概要设计。
SP:是根据结构程序设计原理,将每个模块的功能用相应的的标准控制结构表示出来,从而实现详细设计。
结构化方法的思想:是自定向下,逐步求精。
Jackson方法:这是一种数据结构的开发方法(Jsp)。以数据为驱动,适合于小规模项目。当数据结构与输出数据结构无法对应时,难用该方法。所以在Jsp上又发展JSD方法,它是一个完整的系统开发方法。但JSD对于系统实现结构过于复杂,不利于软件开发者理解与开发,所以限制了人们对它的热情。
系统开发的生命周期包括:三个阶段和两个附加阶段。
其中三个阶段是:分析、设计、实现。
二个附加阶段是:项目计划、系统支持。
软件工程的三要素:方法、工具、过程。
软件工程的基本目标:低成本、达到要求功能、较好性能、易于移植、低维护费用、按时完成工作,交付使用。