推荐阅读:软件工程的应用与实践 一、前言 回顾20世纪的技术进展,大家一致认为信息技术是发展最快的技术之一,特别是信息技术应用的渗透性,几乎在各个领域中都可以看到它的身影。软件作为信息技术的灵魂,更是扮演了极其重要的角色。软件产业在全球经济中所占的地位
软件工程的应用与实践
一、前言
回顾20世纪的技术进展,大家一致认为信息技术是发展最快的技术之一,特别是信息技术应用的渗透性,几乎在各个领域中都可以看到它的身影。软件作为信息技术的灵魂,更是扮演了极其重要的角色。软件产业在全球经济中所占的地位越来越重要,为了加速软件的工程化生产,自20世纪中期以来,大家对软件工程学的研究越来越深入和广泛,新的学科、新的技术、方法和工具不断涌现。
二、软件的分类
软件的分类有许多方法,不同的人员由于不同的目的可能有不同的划分原则。通常的划分方法是按软件的功能划分和按软件规模划分。此外,软件还可以按重要性划分为关键软件和非关键性软件。按处理方式可划分为实时软件、交互软件、批处理软件。按销售市场可划分为项目软件、产品软件。按使用频率可划分为高使用频率和低使用频率软件等。不同类型的软件的开发要求不同,所遵循的开发标准也不同。例如,关键软件是指关系到人的生命安全、国家财产、国家机密的软件,这类软件必须具有高可靠性。
1、按软件功能划分
按照软件的功能可以将软件划分为系统软件、支撑软件、应用软件。
系统软件通常是与计算机硬件密切相关的那些比较底层的支持软件。这些软件的规模通常比较大,并且与 硬件的结构和性能密切相关。例如,操作系统、设备驱动软件、网络通信软件等。它们的作用是保障计算机各个部件能够正常运行,使相关的软件和数据协调、高效地工作。这部分软件在任何应用中都是必不可少的,也是首先要确定的软件。只有确定了系统软件的类型和版本后,才能够考虑支撑软件和应用软件。支撑软件是支持软件开发和运行的工具性软件。其中包括数据库管理系统、软件开发环境、软件辅助设计工具、软件辅助测试工具、中间件、程序库等。这类软件非常多,分类也更加细致。应用软件是为特定应用目的而开发、提供某些特定服务的软件。应用软件可谓是规模各异,种类繁多。不同的领域有不同的应用软件,有大规模的应用软件,例如字处理软件、计算机辅助设计与制造软件、军事指挥系统、导弹防御系统,也有微型软件,例如,只有几条指令的微型控制软件。
2、按软件规模划分
根据软件开发所投入的人力和时间等资源,以及软件交付的文档和源程序的数量。软件可划分为微型软件、小型软件、中型软件、大型软件、超大型软件和巨型软件
软件是一种逻辑实体,具有抽象性。这个特点使它与其他工程对象有着明显的差异。人们可以把它记录在纸上、内存、磁盘、光盘上,但却无法看到软件本身的形态,必须通过观察、思考、分析、判断,才能了解它的功能和性能。因为软件是一种逻辑实体,所以软件在使用过程中,没有磨损、老化的问题。软件在使用过程中不会因为磨损而老化,但为了适应硬件、系统环境以及需求的变化可能要不断修改,这些修改不可避免地会引入错误,导致软件失效率升高,从而使得软件可靠性下降。当修改的成本变得难以接受时,软件就被抛弃。
第1 级 没有定义输入和输出,按每一过程中款项进行工作
第2 级 以确定的顺序按步骤进行工作
第3 级 按特定领域细化步骤,包括问题解决的技术及支持不同技术的工具
图2关系图
四、一体化软件过程 RUP的主要特点
1、UP是以架构为中心
软件架构(architecture)概念体现了系统中最重要的静态与动态概念。架构来自于企业的需求,但还受到许多其它因素的影响,例如:软件运行的平台,可用的可重用基本块(如图形用户界面的框架),部署考虑,遗留系统,及其它非功能需求(如性能、可靠性等),架构为系统总体设计的视图,它撇开具体细节,使系统重要特征更明确、直观。
架构是由总设计师或总设计师班子来开发的,其开发过程大致如下:
从非特定的用例的部分构架开始(例如,平台),创建架构的粗的轮廓。总设计师在创建架构轮廓之前,必须对用例有一个总的了解;
其次,总设计师从已识别的用例的一个子集开始工作,这部分用例代表了正在开发的系统中关键功能。每个所选的用例要细化,并用子系统、类及构件来实现它们;
2、一体化过程的生存期
一体化过程经过一系列开发周期,形成了系统的生存期,每个生存期以产品的一次发行而告终。每个开发周期由4个阶段组成:初始阶段、规划阶段、构造阶段及移交阶段,每个阶段又可再分成一些迭代。每个阶段结束处设立里程碑( mliestone),决定是否继续下一阶段工作。
3.核心工作流程(Core Workflows)
需求。此工作流程的任务是描述系统的需求,定义系统的开发范围,工作角色有系统分析员,用例说明人员和用户意见接口设计人员。
分析、设计分析。设计工作流程的任务是将需求转换为对系统实现的规格说明的描述,主要的工作角色是体系结构师和设计人员,体系结构师完成体系结构的分析设计,设计人员主要从实现角度进行类的设计,还可能进行子系统设计,此流程的可选择的工作角色有:数据库设计人员、体系结构评审员和设计评审员。
实现。此工作流程的任务是以构件的形式实现类和对象,用实现子系统定义构件的组织结构,对构件进行单元测试,集成后形成可执行系统。
测试。此工作流程的任务主要是检验实现的结果,通过对每一个可执行版本的测试,包括内部版本和中间版本的测试,以及向外部发行的系统最后版本。
五、结束语
综上所述,随着时代的发展,社会的进步,新技术的不断出现,软件的开发和使用不再是个别专业人员“小作坊”式的生产,而进入到软件生产工业化时代。