·低风险引入新技术 (4)不适用范围 ·嵌入式软件 ·实时控制软件 ·科技数值计算软件 (5)步骤
S1:弄清用户/设计者的基本信息需求,本步骤的目标是: ·讨论构造原型的过程
·写出简明的框架式说明性报告,反映用户/设计者的信息需求方面的基本看法和要求。
·列出数据元素和它们之间的关系 ·确定所需数据的可用性
·概括出业务原型的任务并估计其成本 ·考虑业务原型的可能使用
用户/设计者的基本责任是根据系统的输出来清晰地描述自己的基本需要。设计者和构造者共同负责来规定系统的范围,确定数据的可用性。系统/构造者的基本责任是确定现实的设计者期望,估价开发原型的成本。这个步骤的中心是设计者和构造者定义基本的信息需求。讨论的焦点是数据的提取、过程模拟。 S2:开发初始原型系统
目标:建立一个能运行的交互式应用系统来满足用户/设计者的基本信息需求。
在这一步骤中设计者没有责任,由构造者去负责建立一个初始原型,其中包括与设计者的需求及能力相适应的对话,还包括收集设计者对初始原型的反映的设施。
主要工作包括: ·逻辑设计所需的数据库 ·构造数据变换或生成模块
21
·开发和安装原型数据库
·建立合适的菜单或语言对话来提高友好的用户输入/输出接口。 ·装配或编写所需的应用程序模块
·把初始原型交付给用户/设计者,并且演示如何工作、确定是否满足设计者的基本需求、解释接口和特点、确定用户/设计者是否能很舒适地使用系统。 本步骤的原则:
·建立模型的速度是关键因素,而不是运行的效率。 ·初始原型必须满足用户/设计者的基本需求。
·初始原型不求完善,它只响应设计者的基本已知需求。 ·设计者使用原型必须要很舒适
·装配和修改模块,构造者不应编写传统的程序 ·构造者必须利用可用的技术
·用户与系统接口必须尽可能简单,使设计者在用初始原型工作时不致于受
碍。 S3:用原型系统完善用户/设计者的需求 目标:
·让用户/设计者能获得有关系统的亲身经验,必须使之更好地理解实际的信息需求和最能满足这些需要的系统种类。
·掌握设计者做什么,更重要的是掌握设计者对原型系统不满意些什么。 ·确定设计者是否满足于现有的原型 原则:
·对实际系统的亲身经验能产生对系统的真实理解。 ·用户/设计者总会找到系统第一个版本的问题
·让用户/设计者确定什么时候更改是必需的,并控制总开发时间。 ·如果用户/设计者在一定时间里(比如说一个月)没有和构造者联系,那么
22
用户可能是对系统表示满意,也可能是遇到某些麻烦,构造者应该与用户/设计者联系。 责任划分:
系统/构造者在这一步中没有什么责任,除非设计者需要帮助或需要信息,或者设计者在一个相当长的时间里没有和构造者接触。用户/设计者负责把那些不适合的地方,不合要求的特征和他在现有系统中看到所缺少的信息建立文档。 这一步骤的关键是得到用户/设计者关于系统的想法,有几种技术可达到这一目的:
·让用户/设计者键入信息,使用原型本身来得到他们的想法。 ·利用系统特点,来键入信息 ·使用日记来记录信息
当设计者认为进行某些更改是适当的时候,他就与构造者联系,安排一次会议来讨论所需要的更改。 S4:修改和完善原型系统 目的:
修改原型以便纠正那些由用户/设计者指出的不需要的或错误的信息。 原则:
·装配和修改程序模块,而不是编写程序。
·如果模块更改很困难,则把它放弃并重新编写模块。
·不改变系统的作用范围,除非业务原型的成本估计有相应的改变。 ·修改并把系统返回给用户/设计者的速度是关键。
·如果构造者不能进行任何所需要的更改,则必须立即与用户/设计者进行对话。
·设计者必须能很舒适地使用改进的原型。 责任划分同步骤S2 5.构件组装模型
23
构件组装模型导致了软件的复用提高了软件开发的效率,面向对象技术是软件工程的构件组装模型的基础,面向对象技术强调类的创建,类封装了数据和用操纵该数据的算法。面向对象的类可以被复用。构件组装模型如图1-7所示,它融合了螺旋模型的特征、本质上是演化的、并且支持软件开发的迭代方法,它是利用预先包装好的软件构件来构造应用程序。
首先标识候选类,通过检查应用程序操纵的数据及实现的算法,并将相关的算法和数据封装成一个类。把以往软件工程项目中创建的类存于一个类库或仓库中,根据标识的类,就可搜索该类库。如果这类存在,就类库中提取出来复用。如果这类不存在,就采用面向对象的方法开发它,以后就可以使用从库中提取的类及为了满足应用程序的特定要求而建造的新类。进而完成待开发应用程序的第一次迭代。过程流程后又回到螺旋,最后进入构件组装迭代。
图1-7构件组装模型
6.混合模型
近年来已提出瀑布模型、原形模型、螺旋模型、第4代技术模型和构件组件模型等,但是,这些可选开发模式仍被限制在整个项目开发按定义所确定的阶段性的系统开发方向上。混合模型把几种模型组合在一起,它允许一个项目沿着最有效的路径发展。
在瀑布模型、原形模型等模型中,开发模式十分严谨,但实际上被开发的项目几乎不可能按上述过程一步一步的进行,这是由于一个项目的开发取决于众多因素,例如:应用领域、规模、可重用控件的大小和多少、实现环境等。混合模
24
型能够适应不同的项目和不同情况的需要而提出一种灵活多样的动态的方法,混合模型如图1-8所示。
图1-8混合模型
在混合模型中,有多种开发模式。它提供了一种适用各种具体系统、环境和结构的灵活的结构。可以看出,混合模型分为分析、综合、运行和废弃四个阶段,各阶段的重叠为设计员提出了进行路线的选择。
混合模型的优点是:项目管理人员不愿意没有某种构思框架就去进行一个框架的开发,混合模型给管理人员提供了在具体操作中使用结构框架的某种形式。
25
一个项目有了构思,予计划就确定了过程的初始方向。例如,可以决定构造一个原形来完成项目的需求分析,用来开发规格说明然后用于整个系统的设计或另一个原形的设计。混合模型允许管理人员按照当前项目情况,指导一个项目选择其中任一开发模式而不是在不了解问题的情况下,在生存期中事先确定一个方向。由于混合模型的不确定性,管理人员在一开始不必去决定完成开发过程的方向。当一个项目的环境变化时,早决策不如晚决策好。 小结
本章首先介绍了软件的有关概念,包括软件的产生、定义、特点和种类,然后对软件工程的概念进行了介绍,包括软件工程的定义、目标、原则和软件危机。最后介绍了软件生存周期与软件开发模型,主要包括瀑布模型、原型模型、螺旋模型、基于四代技术模型等。
习题
1. 说出软件的特点。 2. 简述软件的种类。
3. 软件危机主要有哪些表现?其产生的原因是什么? 4. 软件工程有哪些原则?
5. 简述软件工程目标和面临的主要问题。 6. 软件生成周期一般可分为哪几个阶段?
7. 软件的质量保证工作不能等到编码阶段结束之后再进行,简述其理由? 8. 简述软件工程研究的基本内容与目标。
9. 在用瀑布模型开发软件时,每项开发活动均应具有哪些特征。 10. 简述第四代技术模型的优点和缺点。简述在软件开发模型中原型模型的优
点和缺点,适用范围和不适用范围。
26