软件工程整理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章
软件工程研究的主要内容:为了在有限的资金、资源和时间条件下开发满足客户要求的高质量软件,需要研究与软件开发和管理相关的模型、方法、技术等。
在《计算机科学技术百科全书》中,对计算机软件作出如下定义:计算机软件指计算机系统中的程序及其文档。程序是计算任务的处理对象和处理规则的描述。任何以计算机为处理工具的任务都是计算任务。处理对象是数据或信息。处理规则一般指处理的动作和步骤。文档是为了便于了解程序所需的阐述性资料。
软件工程的定义:⑴IEEE在软件工程术语汇编中的定义:①软件工程是将系统化的的方法用于软件的开发、运行和维护,即将工程化应用于软件;②在①中所述方法的研究⑵软件工程是应用计算机科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源等管理。
软件工程的框架:目标,过程和原则
软件工程目标是指生产具有正确性、可用性、和开销合宜的产品。正确性指软件产品达到预期功能的程度。可用性指软件基本结构、实现及文档为用户可用的程度。开销合宜指软件开发、运行的整个开销满足用户要求的程度。
软件工程原则包括围绕工程设计、工程支付和工程管理所提出的以下4条基本原则
(1)选取适宜的开发模型(2)采用合适的设计方法(3)提供高质量的工程支撑
(4)重视软件工程的管理
软件生存周期是指软件产品或软件系统从产生、投入使用到被淘汰的全过程。
软件生存周期分为6个阶段:计算机系统工程、需求分析、设计、编码、测试、运行和维护
软件过程是生产一个最终满足需求且达到工程目标的软件产品所需的步骤。
软件过程是软件生存周期中的一系列相关的过程。过程是活动的集合,活动是任务的集合。软件过程有3层含义:一是个体含义,即指软件产品或系统在生存周期中的某一类活动的集合;二是整体含义,即指软件产品或系统在所有上述含义下的软件过程的总体;三是工程含义,即指解决软件过程的工程,应用软件工程的原则、方法来构造软件过程模型、并结合软件产品的具体要求进行实例化,以及在用户环境,并结合软件产品的具体要求进行实例化,以及在用户环境下运作,以此进一步提高软件生产率,降低成本。
软件过程模型也称软件开发模型,是软件开发全部过程、活动和任务的结构框架。典型的软件过程模型有:瀑布模型、演化模型(如增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。
瀑布模型是1970年由W.Royce提出的,它给出了软件生存周期活动的固定顺序,上一阶段的活动完成后向下一阶段的活动过渡,最终得到所开发的软件产品。其特征是:接受上一阶段活动的结果作为本阶段活动的输入
依据上一阶段活动的结果实施本阶段应完成的活动
对本阶段的活动进行评审
将本阶段活动的结果作为输出,传递给下一阶段
瀑布模型也逐渐暴露出它的不足(1)不少软件的需求存在着不确定性,(2)如果发现不满足客户需求的问题,那么修改软件的代价是巨大的
演化模型,是从构造初始的原型出发,逐步将其演化成最终软件产品的过程。演化模型适用于对软件需求缺乏准确认识的情况。典型的演化模型有:增量模型、原型模型、螺旋模型
增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的“增量”版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。
增量模型融合了瀑布模型的基本成分和演化模型的迭代特征,强调每一次增量都发布一个可运行的产品。特征:(1)适用于需求经常发生变化的软件开发(2)在市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品,此时也适宜用增量模型进行开发(3)能有计划的管理技术风险
原型方法的目的是定义软件的总体目标,标识需求,然后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模并构建原型
根据原型使用的目的不同,可以分为:探索型、实验型、演化型
原型使用策略:废弃策略、追加策略
螺旋模型将原型实现的迭代特征与瀑布模型中控制的和系统化的方面结合起来,不仅体现了这两种模型的优点,而且还增加了风险分析
其有四个方面的任务:制定计划、风险分析、工程实施、客户评估
一种基于构件的开发模型包括两个部分:领域工程和应用系统工程
领域工程的目的:构建领域模型、领域基准体系结构和可复用构件库
应用系统工程的目的:使用可复用构件组装应用系统
基于构件的开发模型的作用(优点):提高软件生产率、提高软件质量、降低成本、提早上市时间
敏捷(Agile)开发的4个价值观:
(1)个人和交互高于过程和工具(2)可运行软件高于详尽的文档(3)与客户协作高于合同谈判(4)对变更及时做出反应高于遵循计划
计算机辅助软件工程(computer aided sofrware engineering,CASE)是指使用计算机及相关的软件工具辅助软件开发、维护、管理等过程中各项活动的实施,以确保这些活动能高效率、高质量地进行
CASE研究和实践的重点集中在CASE工具和软件开发两个方面
软件开发环境(software development environment)是支持软件产品开发的软件系统第二章
业务过程工程的目标是:定义一个能有效地利用信息进行业务活动的体系结构。
语境中分析和设计3种体系结构:数据体系结构、应用体系结构和技术基础设施。
产品工程的目标:将客户期望的一组已定义的能力转换成工作产品。
体系结构包含4种不同的系统元素:软件、硬件、数据(和数据库)和人员。
计算机系统工程目的是分析基于计算机的系统的功能、性能等要求,并把它们分配到基于计算机系统的各个系统元素中,确定它们的约束条件和接口。
可行性研究分析主要从经济、技术、法律等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约束下完成。
可行性分析包括:机会选择、初步可研究性分析、详细可研究性分析
第三章
需求工程是应用已证实有效的技术、方法进行需求分析,确定客户需求,帮助分析人员理解问题,评估可行性,协商合理的解决方案、无歧义地规约方案、确认规约以及将规约转换到可运行的系统时的管理要求,需求工程通过合适的工具和符号系统地描述待开发系统及其行为特征和相关约束,形成需求文档,并对用户不断变化的需求演进给予支持可将需求工程分为6个阶段:需求获取、需求分析与协商、系统建模、需求规约、需求验证以及需求管理
在需求获取阶段出现的问题:(1)用户提出的要求超出的要求软件系统可以实现的范围或实现能力(2)不同的用户提出了相互冲突的需求
软件需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望
创建用况模型的主要步骤如下:(1)确定谁会直接使用该系统,即执行者(2)选取其中一个执行者(3)定义该执行者希望系统做什么,执行者希望系统所做的第件事将成为一个用况(4)对每件事来说,何时执行者会使用系统,通常会发生什么,这就是腹部的基本过程(5)描述该用况的基本过程
需求分析原则:
必须能够表示和理解问题的信息域
必须能够定义软件将完成的功能
必须能够表示软件的行为(作为外部事件的结果)
必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节
分析过程应该从要素信息转向细节信息
问题分析的目的是要能心层次化的方式对问题进行分解和不断细化