1、2023-1-27高级软件工程(1)高级软件工程高级软件工程(1)高级软件工程(1)计算机系统NoImage高级软件工程(1)硬件与硬件工程 n基于计算机的应用系统离不开计算机硬件的支撑。计算机系统工程师根据系统需求为硬件系统指派任务,产生硬件需求。硬件工程师根据硬件需求设计、制造或选择硬部件或设备。n硬件工程过程分为三个阶段,即计划和定义阶段;设计和样机实现阶段;生产、销售和售后服务阶段,具体如图1.2的(a)、(b)和(c)所示。高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)软件与软件工程 n计算机软件是软件工程师设计和建造的产品,包括:一个在任意规模和体系结构的
2、计算机中执行的程序,以及软件开发过程中涉及的各种文档和各种形式的数据。n软件工程是研究软件生产和软件管理的工程科学,其内容包括市场调研、正式立项、需求分析、项目策划、概要设计、详细设计、编程、测试、试运行、产品发布、用户培训、产品复制、销售、实施、系统维护和版本升级等。高级软件工程(1)n软件工程师借助于软件工程的过程、方法和工具开发基于计算机的软件系统。软件工程模型虽然种类很多,但它们都有一个共同的特点,即都包括软件项目的定义阶段、软件开发阶段、软件的检验、交付与维护阶段,如图1.3的(a)、(b)和(c)所示。高级软件工程(1)高级软件工程(1)软件定义阶段n软件定义阶段的任务是,确定软件
3、开发必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。高级软件工程(1)n这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义阶段通常进一步划分成三个子阶段,即问题定义阶段、可行性研究阶段和需求分析阶段。n需求分析阶段的一项重要任务是用正式文档准确地记录对目标系统的需求,这份文档通常称为需求规格说明。高级软件工程(1)高级软件工程(1)软件开发阶段 n这个阶段的基本任务是回答“怎样实现目标系统?”这个问题。n软件开发阶段具体设计和实现在前一个时期定义的软件,它通常由下述四个子阶段组成:概要设
4、计、详细设计、编码和单元测试、综合测试。其中前两个阶段又称为系统设计阶段,后两个阶段又称为系统实现阶段 高级软件工程(1)高级软件工程(1)软件的检验、交付与维护阶段 n这一阶段的主要任务是使软件持久地满足用户的需要。n当软件在使用过程中发现错误时,应该加以改正;当环境改变时,应该修改软件以适应新的环境;当用户有新要求时,应该及时改进软件以满足用户的新需要。高级软件工程(1)人机工程 n人与计算机硬件和软件的直接交互可以启动并控制系统运行,在系统开发与维护活动中,人的因素起着十分关键的作用。高级软件工程(1)数据库工程 n数据库系统是基于计算机系统的重要组成部分,它将有关的硬件、软件、数据和数
5、据库管理人员结合起来,为用户提供信息服务。开发一个数据库系统是一项复杂的工程项目,人们也常称之为数据库工程。n数据库工程应完成下列任务,1)确定系统的各项指标并进行评估和计划制定;2)论证、选择和配置数据库系统;3)数据库设计与实现;4)数据库的管理与维护。高级软件工程(1)网络工程 n随着网络技术的发展,很多基于计算机的系统使用网络进行通信,网络工程也成为了基于计算机系统的重要组成部分。网络工程是研究网络系统的规划、设计与管理的工程科学,要求工程技术人员根据既定的目标,严格依照行业规范,制定网络建设的方案,协助工程招投标、设计、实施、管理与维护等活动。n网络工程的实施需要经过如下几个阶段:1
6、)需求分析;2)总体设计分析;3)实施;4)验收与维护。高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)软件发展过程中存在的问题软件发展过程中存在的问题软件开发能力不能满足人们的需要;社会对软件的依赖程度加大,人们普遍关注软件的安全和可靠性;若干年前开发的应用软件经过几十次修改已无人认识它的内部结构,己经不可维护;由于经济原因,嵌入式系统存在许多怪现象,企业不愿意投入资源再生产,而采取打补丁+时髦界面的方法。高级软件工程(1)软件危机软件危机n软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。n典型表现:n 开发成本和进度的估计常常很不
7、准确;n 用户对“已完成的”软件系统不满意;“闭门造车”;n 软件质量不可靠;n 软件常常是不可维护的;n 软件成本的比例逐年上升;n 软件产品“供不应求”;高级软件工程(1)高级软件工程(1)软件危机产生的原因n客观原因:软件的特点n主观原因:软件开发和维护过程中使用不正确的方法。高级软件工程(1)消除软件危机的途径消除软件危机的途径n消除“软件就是程序”的错误观念。n一个软件必须由一个完整的配置组成,事实上,软件是程序、数据及相关文档的完整集合。n 软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。n 成功的软件开发技术和方法。n 软
8、件工具和软件工程支撑环境。高级软件工程(1)软件工程的定义软件工程的定义n1968年 NATO 计算机科学会议n软件危机根源解决途径软件工程n“概括地说,软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。”高级软件工程(1)软件工程的目标软件工程的目标n软件工程的目标是明确的,就是研制、开发与生产出具有良好软件质量和费用合算的产品。n 采用工程化方法和途径来开发与维护软件。n应该开发和使用更好的软件工具。1)采取必要的管理措施。高
9、级软件工程(1)软件工程的基本原理(软件工程的基本原理(B.W.BoehmB.W.Boehm)n用分阶段的生命周期计划严格管理n坚持进行阶段评审n错误出现的时间:在编代码之前(63%:37%)n改正错误的代价:发现得月晚,开发代价越高n实行严格的产品控制n基线配置、变动控制n采用现代程序设计技术n结果应能清楚地审查n开发小组的人员应该少而精n承认不断改进软件工程实践的必要性高级软件工程(1)软件工程研究的基本内容软件工程研究的基本内容n软件工程学分为:理论与结构、方法、工具与环境、管理和规范等。n理论与结构包括:程序正确性证明理论、软件可靠性理论、软件成本估算模型、软件开发模型、模块划分原理等
10、。n软件开发技术包括:软件开发方法学、软件工具和软件开发环境。n软件工程管理包括:软件开发管理和软件经济管理。高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)n阶段间具有顺序性和依赖性n各个阶段如同瀑布流水,逐级下落,自上而下、相互衔接的固定次序。n推迟实现的观点n清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现。n质量保证的观点(文档驱动)n每个阶段都必须完成规定的文档n每个阶段结束前都要对所完成的文档进行评审高级软件工程(1)瀑布模型的
11、缺点瀑布模型的缺点模型缺乏灵活性。开发过程一般不能逆转,否则代价太大规格说明很难理解:“我知道这是按我的要求做的,但不是我想要的样子。”软件的实际情况必须到项目开发的后期客户才能看到。(文档驱动的两面性)高级软件工程(1)高级软件工程(1)需求需求设计设计编码编码测试测试集成集成需求需求设计设计编码编码测试测试集成集成开开发发反反馈馈开开发发反反馈馈.核核 心心 系系 统统 开开 发发第第 二二 次次 迭迭 代代针对事先不能完整地定义需求针对事先不能完整地定义需求 针对用户的核心需求针对用户的核心需求,开发核心系统开发核心系统 根据用户的反馈根据用户的反馈,实施活动的迭代实施活动的迭代高级软件
12、工程(1)也称:渐增模型把软件产品作为一系列增量构件来设计、编码、集成和测试。高级软件工程(1)增量模型的优点增量模型的优点每个阶段交付一个可用的产品减少一个全新产品给客户带来的心理上的影响分阶段地交付产品不需要大的资金支出需求经常变化,增量模型的灵活性使其具有更加优越的适用性增量模型的困难增量模型的困难需要一个开放的结构,方便构件的加入增量模型本身就是一个矛盾的名词高级软件工程(1)高级软件工程(1)高级软件工程(1)螺旋模型的优点容易确定什么时候已经对某一阶段的产品充分测试完毕维护和开发之间没有什么本质上的差别 螺旋模型的缺点仅适合于大型软件 风险驱动既是优点也是缺点高级软件工程(1)高级
13、软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)高级软件工程(1)软件开发方法 n结构化方法n结构是指系统内各组成要素之间的相互联系、相互作用的框架。n结构化方法强调结构的合理性,以及所开发软件的结构合理性,由此提出了一组提高软件结构合理性的准则,如分解和抽象、模块的独立性、信息隐蔽等。n针对不同的开发活动,有结构化分析、结构化设计、结构化编程和结构化测试等。高级软件工程(1)面向数据结构方法面向数据结构方法n面向数据结构方法是结构化方法的变形,它着重数据结构而不是数据流。n结构化方法结构化方法:以分析信息流为主,用数据流图来表示信息流;n面向数据结构方法面向数据结构方法:
14、从分析数据结构入手,即分析信息结构,并用数据结构图来表示,再在此基础上进行需求分析,导出软件的结构。nWarmer法、Jackson法以及DSSD(数据结构系统开发)方法等。高级软件工程(1)面向对象方法面向对象方法n起源:面向对象编程语言 nOOP(面向对象编程)-OOD(面向对象设计)+OOA(面向对象分析)-OOM(面向对象的软件开发方法)n面向对象方法的开发步骤:面向对象方法的开发步骤:1)从问题陈述入手,构造系统模型(对象模型)。2)逐层分解成各级子系统。高级软件工程(1)原型法原型法n原型法首先构造一个功能简单的原型系统,然后通过对原型系统逐步求精,不断扩充完善得到最终的软件系统。n原型法的主要优点:1)一种支持用户的方法,使得用户在系统生存周期的设计阶段起到积极的作用;2)它能减少系统开发的风险,特别是在大型项目的开发中,由于对项目需求的分析难以一次完成,应用原型法效果更为明显。高级软件工程(1)软件工程环境软件工程环境n软件工程环境的定义软件工程环境的定义 美国国防部在STARS计划中,对软件工程环境定义如下:“软件工程环境是一组方法、过程及计算机程序的整体化构建,支持从需求定义、程序生成直到维护的整个软件生存期”。n软件工程环境是相关的一组软件工具的集合,支持一定的软件开发方法或按照一定的软件开发模型组织而成。2023-1-27高级软件工程(1)
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。