已阅读5页,还剩93页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件工程,信息科学与工程学院,观察与思考,为什么要学软件工程?在软件工程中学什么?应该怎么学软件工程?,【案例1】2003年初冬,某市某软件公司的老总在西安出差,发现西安市的大中型餐厅基本上都有电子点菜系统,客人一点菜,信息马上出现在厨房大师傅眼前,大师傅马上炒菜,小姐很快上菜。以后一打听,这个点菜系统叫“餐饮系统”,是北京某软件公司开发的。于是这位老总又飞到北京,不但拜访“餐饮系统”的开发公司,而且到几家餐饮大店去吃饭,亲身体验“餐饮系统”的使用情况。返回驻地后,老总拍着脑袋决定马上立项,快速开发本公司的“餐饮系统”。,不到三个月,“餐饮系统”开发完毕,但是在后来的两年中,该系统在该市市总共也只卖出两套,投入与产出比是五比一。,这是为什么?就是因为该市是中等城市,不像北京、西安是大城市,“餐饮系统”的客户群十分少。,可行性及需求分析很重要,【案例2】公元2005年2月,珠海一家软件公司(乙方)与珠海一家中药网站公司(甲方),签订了一个“中药网站开发合同”。该合同中的有关条款规定:“软件开发费用共计9万元人民币,开发工期总共为一个月,即2月至3月”。并且还规定:“乙方若不按期交付项目,每拖延一天,甲方扣除乙方的软件开发总费用的1%”。请读者分析一下,该合同有什么问题?后来的事实证明,该合同至少造成了如下几个问题:,开发工期太短,乙方肯定不能按时交付项目。开发费用太低,乙方肯定不能获利。至于“每拖延一天,甲方扣除乙方的软件开发总费用的1%”的约定,更是甲方悬在乙方头上的一把利箭。由此可见,正确而合理地签订软件项目开发合同,对软件企业是何等地重要!,签订合同的方法,【案例3】1963年,美国用于控制火星探测器的计算机软件中的一个“,”号被误写为“”,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失。如果开发的软件隐含错误,可靠性得不到保证,那么在运行过程中很可能对整个系统造成十分严重的后果,轻则影响到系统的正常工作,重则导致整个系统的瘫痪,乃至造成无可挽回的恶性事故。如,银行的存款可能被化为乌有,甚至弄成赤字;工厂的产品全部报废,导致工厂破产。,软件测试的重要性,课程介绍:,课程概括课程名称:软件工程(SoftwareEngineering)课程特点是计算机专业的重要专业课之一,研究软件开发和软件管理的一门工程科学;需要有关“程序设计语言”、“数据结构”、“人机交互”、“数据库原理”等课程的知识作为本课程的基础;理论性较强,涉及的知识面广。,教学目标及要求:通过本课程的学习,掌握软件工程的基本原理、成熟的软件工程方法和一定的项目管理与团队技能。培养知识的综合运用能力和问题的协同解决能力。要求学生充分理解掌握课程中所讲授的各部分知识点的内容,独立并认真完成所布置的作业和实践内容,增强软件开发素质和规范的文档编制能力。,课程介绍:,课程介绍:,教材及参考书:教材:赵池龙等编著,实用软件工程(第三版),电子工业出版社,十一五规划教材,2011。参考书:赵池龙等编著,软件工程实践教程,电子工业出版社,2011;RogerS.Pressman,SoftwareEngineering:APractitionersApproach,清华大学出版社2001,课程内容安排学时考核评分:期末笔试70%,平时成绩30%。作业实验报告课程设计(分组完成),课程介绍:,教学要求及建议:,课堂理论教学平时成绩(考勤、作业、实验报告、课程设计)实践教学上机实践Visio工具的使用软件可行性分析软件需求分析软件系统设计系统测试课程设计3-4人为一项目组,自选项目(项目名称唯一),走完项目需求、设计、编程、测试、运行的全过程,要求文档齐全、程序正确、界面友好、使用方便。,1.1软件的定义1.2软件工程的定义1.3软件工程在软件行业中的作用1.4软件工程方法论(*)1.5软件工程实践论(*)1.6软件支持过程1.7软件管理过程1.8实例分析某港口信息系统建设案例,第1章软件工程的内容与方法,1.1软件定义,软件定义,程序的定义面向过程的程序=算法+数据结构。面向对象的程序=对象+消息。面向数据的程序=数据库表+在表上的操作(如存贮过程、触发器或视图)。面向构件的程序=构件+构架。软件=程序+数据+文档数据=初始化数据+测试数据文档=开发文档+管理文档,文档在软件工程中特别重要,文档是否规范与齐全,是衡量软件企业是否成熟的重要标志之一。软件文档分为开发文档和管理文档两大类。开发文档主要由项目组书写,用于指导软件开发与维护;管理文档主要由软件工程管理部门书写,用于指导软件管理和决策。软件工程规定:文档必须指挥程序,而决不允许程序指挥文档;文档与程序必须保持高度一致,而决不允许程序脱离开文档。,文档的重要性,“越早开始写代码的人,就是越迟完成代码的人”。RogerS.Pressman,开发文档本身具有严格的层次关系和依赖关系,这种关系反映在如下的覆盖关系之中,即有:(1)目标程序覆盖源程序;(2)源程序覆盖详细设计说明书;(3)详细设计说明书覆盖概要设计说明书;(4)概要设计说明书覆盖需求分析规格说明书;(5)需求分析规格说明书覆盖用户需求报告;(6)用户需求报告覆盖软件合同/软件任务书。,3文档的重要性,管理文档本身具有严格的时序关系,这种时序关系反映在如下的软件过程之中,而过程由一系列的时间序列所组成的:(1)需求分析过程管理文档;(2)软件策划过程管理文档;(3)软件设计过程管理文档;(4)软件实现过程管理文档;(5)软件测试过程管理文档;(6)软件维护过程管理文档;(7)软件过程改进管理文档。,3文档的重要性,1.2软件工程定义,1软件危机软件工程来源于软件危机,即先有软件危机,后有软件工程。二十世纪六十年代中期,在美国就出现了软件危机(SoftwareCrisis),这种危机表现在研发大型软件时,软件开发的成本增大、进度延期、维护困难和质量得不到保障。所谓软件危机,就是在软件开发和维护过程中所遇到一系列难以控制的问题。,典型案例:,软件危机的具体表现:,1)软件开发进度难以预测,拖延工期几个月甚至几年的现象并不罕见,这种现象降低了软件开发组织的信誉。以丹佛新国际机场为例。2)软件开发成本难以控制.投资一再追加,令人难于置信。3)用户对产品功能难以满足4)软件产品质量无法保证5)软件缺少适当的文档资料文档资料是软件必不可少的重要组成部分。,2、软件工程的定义,(1)1993年,IEEE对软件工程的定义是:软件工程是将系统化的、严格约束的、可量化的方法,应用于软件开发、运行和维护中去。(2)2001年,RogerS.Pressman对软件工程的定义是:软件工程是一个过程、一组方法和一系列工具。,【定义】软件工程是研究软件开发和软件管理的一门工程学科。这里,一是强调开发,二是强调管理,三是强调工程,四是强调学科。开发和管理是一个问题的相辅相成的两个方面。许多软件项目的失败,不是在开发技术上出了问题,而是在管理过程上出了问题。要将软件的开发当作一项工程,既要按照工程的办法去开发,又要按照工程的办法去管理。时至今日,软件工程不只是一门课程,而是一个学科体系,即软件工程知识体系。,2软件工程定义,软件工程作为一个学科体系,到本世纪初才初步形成。2001年4月18日,美国发布了软件工程知识体系指南SWEBOK(GuidetotheSoftwareEngineeringBodyofKnowledge)0.95版。2004年,软件工程学科体系的内容才基本确立,就在这一年,美国ACM和IEEE-CS联合制订SWEBOK2004年版,它将软件工程学科体系的知识划分为如下10个知识域:,3软件工程学科体系,(1)软件需求(SoftwareRequirements)软件需求是真实世界问题而必须展示的特性。软件需求知识域有七个子域:需求基础、需求过程、需求获取、需求分析、需求规格说明、需求确认和实践考虑。,3软件工程学科体系,(2)软件设计(SoftwareDesign)。软件设计既是定义一个系统的体系结构、组件、接口和其他特征的过程,又是这个过程的结果。软件设计知识域有六个子域:软件设计基础、软件设计关键问题、软件结构与体系结构、软件设计质量的分析与评价、软件设计符号、软件设计的策略与方法。,3软件工程学科体系,(3)软件构造(SoftwareConstruction)。它指通过编码、验证、单元测试、集成测试和排错的组合,具体创建一个可以工作的、有意义的软件。其知识域有三个子域:软件构造基础、管理构造、实际考虑。,3软件工程学科体系,(4)软件测试(SoftwareTesting)。它是由在有限测试用例集合上,根据期望的行为,对程序的行为进行的动态验证组成,测试用例是实际上无限的执行域中适当选择出来的。软件测试域有五个子域:软件测试基础和测试级别、测试技术、需求分析、与测试相关的度量、测试过程。,3软件工程学科体系,(5)软件维护(SoftwareMaintenance)。软件一旦投入运行,就可能出现异常,运行环境可能发生改变,用户会提出新的需求。生命周期软件维护,从软件交付时开始。软件维护的知识域有四个子域:软件维护基础、软件维护的关键问题、维护过程、维护技术。,3软件工程学科体系,(6)软件配置管理(SoftwareConfigurationManagement)。软件配置是为了系统地控制配置的变更和维护在整个系统生命周期中的完整性及可追踪性,而标志软件在时间上不同点的配置的学科。软件配置管理域有六个子域:软件配置管理过程管理、软件配置标志、软件配置控制、软件配置状态统计、软件配置审核、软件发行管理和交付。,3软件工程学科体系,(7)软件工程管理(SoftwareEngineeringManagement)。处理软件工程的管理与度量,虽然度量是所有知识域的一个重要方面,但是这里涉及的是度量程序的专题。软件工程管理域有六个子域:启动和范围定义、软件项目计划、软件项目实施、评审与评价、关闭、软件工程度量。前五个覆盖软件过程工程管理,第六个描述软件度量的程序。,3软件工程学科体系,(8)软件工程过程(SoftwareEngineeringProcess)。涉及软件工程过程本身的定义、实现、评定、度量、管理、变更和改进。软件工程过程域有四个子域:过程实施与改变、过程定义、过程评定、过程和产品度量。(9)软件工程工具和方法(SoftwareEngineeringToolandMethod)。有软件工程工具、软件工程方法两个子域。,3软件工程学科体系,(10)软件质量(SoftwareQuality)。处理跨越软件生命周期过程的软件质量的考虑,由于软件质量在软件工程中无处不在,其他知识域也涉及质量问题。软件质量域有三个子域:软件质量基础、软件质量过程、实践考虑。,3软件工程学科体系,软件工程课程与软件工程学科体系是有区别的:前者是一门课程,或是大学的软件工程教科书,后者是一个知识体系;前者是一个局部,后者是一个整体。作为一门软件工程课程,它的研究的内容至今没有统一的说法。一般应该涵盖以下内容(如表1-4所示):软件生命周期模型软件开发方法软件支持过程软件管理过程,4软件工程课程研究的内容,4软件工程课程研究的内容,软件工程三要素软件工程的方法(开发方法)工具(支持方法的工具)过程(管理过程)美国著名的软件工程专家B.WBoehm于1983年提出的7条原理,作为软件工程的基本原理。,5软件工程基本原理,(1)用分阶段的生命周期计划严格管理软件开发。阶段划分为计划、分析、设计、编程、测试和运行维护。(2)坚持进行阶段评审。上一阶段评审不通过,就不能进入下一阶段开发。(3)实行严格的产品版本控制。(4)采用现代程序设计技术。(5)结果应能清楚地审查。因此,对文档要有严格要求。(6)开发小组的成员要少而精。(7)要不断地改进软件工程实践的经验和技术,要与时俱进。,5软件工程基本原理,根据“与时俱进”的原则,还有一条基本原理在软件的开发和管理中特别重要,需要补充进去,作为软件工程的第八条基本原理。(8)二八定律对软件项目进度和工作量的估计:一般人主观上认为已经完成了80%,但实际上只完成了20%;对程序中存在问题的估计:80%的问题存在于20%的程序之中;对模块功能的估计:20%的模块,实现了80%的功能;对人力资源的估计:20%的人,解决了软件中80%的问题;对投入资金的估计:企业信息系统中80%的问题,可以用20%的资金来解决。,5软件工程基本原理,二八定律(补充):二八定律简介:也叫巴莱多定律,是世纪末世纪初意大利经济学家巴莱多发明的。他认为,在任何一组东西中,最重要的只占其中一小部分,约,其余的尽管是多数,却是次要的,因此又称二八法则。定律的特点,是可证,而且已经被不断证明。管理学范畴有一个著名的80/20定律,它说,通常一个企业80%的利润来自它20%的项目;心理学家说,20%的人身上集中了人类80%的智慧,他们生就鹤立鸡群。20%的人享受了世界上80%的爱情,甚至办掉全世界80%的结离婚手续。这20%的人总是在爱和被爱,而余下80%的人只好寻寻觅觅,苦苦追求。,5软件工程基本原理,研究二八定律的现实意义,在于指导软件开发计划的制订与执行。如果事先掌握了二八定律,就能自觉地用二八定律去制订、跟踪与执行软件开发计划。也就是说,计划中要用开始的20%时间,去完成80%的开发进度;剩下20%的进度,要留下80%的时间去完成。只有这样,项目的开发计划与项目的开发进度才能吻合。,5软件工程基本原理,1982年,软件工程的创始人、美藉华人叶祖尧博士,带着自己开创的“软件工程学”理论来到中国,成为当时中国政府计算机领导小组的顾问。1984年,国家科委在北京召开“软件工程”大会。会议其间,国防科技大学陈火旺院士与孟庆余教授,宴请了美国软件工程专家叶祖尧博士。席间,时任美国马里兰大学计算机系主任的叶祖尧博士说:“软件工程,只有你们长沙(国防科技大学)并行机的研究搞的最好!”巨型机银河机系列与天河机系列的历史证明:叶祖尧的话是对的。,6软件工程在中国,1.3软件工程作用,软件工程是软件行业的一门管理科学,也是系统分析员和项目经理以上人员必备的一种领导艺术,为了将我国的软件产业搞上去,使软件产业成为国民经济的支柱产业,使中国早日成为一个软件大国与软件强国,对于软件工程的作用,在软件界怎么强调也不过分。为了说明软件工程的作用,先来看一个例子。,【例1-3】20世纪90年代初,有两个软件团队,一个较大(10多人),一个较小(6人),都在开发财务系统。较大的那个团队,工作不规范,没有文档,没有评审,也没有团队协作精神,结果开发出来的产品可维护性差,没有打开市场,没有产生经济效益和社会效益,致使产品与团队最后同归于尽。,1.3软件工程作用,【例1-3】较小的那个团队,同舟共济,工作规范,有正规文档,有阶段评审,分工明确:一人负责原始凭证和输出报表的收集、归类和整理,这实际上是做需求分析;一人负责科目和数据字典(代码表),这实际上是做信息的标准化与规范化;一人负责记账凭证的录入和修改,这实际上是做数据库的设计和加载工作;一人负责日记账、明细账和总账之间的平衡与对账,这实际上是做数据处理;一人负责统计、报表和查询,这实际上是做数据输出工作;一人负责总体设计和项目管理,这就是项目经理的工作。,1.3软件工程作用,因为软件工程来自于软件企业,又服务于软件企业,所以讨论它的作用,主要是讨论它在软件企业中的作用。从历史上讲,软件工程的作用,是为了克服上个世纪60年代出现的软件危机。从当前来讲,软件工程的作用,就是告诉人们怎样去开发软件和管理软件。,1.3软件工程作用,从软件项目团队来讲,软件工程的作用在于:在规定的时间内,按照规定的成本,完成预期质量目标(软件的功能、性能和接口达到需求报告标准)的软件。从软件企业本身来讲,软件工程的作用在于:持续地规范软件开发过程和软件管理过程,不断地优化软件组织的个人素质和集体素质,从而逐渐增强软件企业的市场竞争实力。从软件大国与强国来讲,软件工程的作用在于:它在一个国家的计算机界及软件界的普及与推广,可以使这一个国家变为一个软件大国,进而变为一个软件强国。,1.3软件工程作用,从软件发展进程来讲,软件工程的作用在于:克服软件危机,控制软件进度,节约开发成本,提高软件质量。从软件开发的前景来讲,由于软件开发的前景如同开发大海与开发蓝天,潜力无限无垠,所以软件工程的前景也无限无垠。由于软件工程的作用越来越大,它的地位也越来越高。以前,软件工程只是作为一门课程或一本书。现在,它作为一个学科体系,设立了软件工程专业和软件工程学位,产生了有软件工程硕士和博士学位。,1.3软件工程作用,1.4软件工程方法论1.4.1软件工程方法论的提出,【定义】软件开发方法是指在软件开发路线图中,开发人员对软件需求、设计、实现、维护所采用的开发思想、开发技术、描述方法、支持工具等。在软件工程方法学方面,大体可分为程序设计方法学和软件开发方法学,前者是关于小规模程序的设计方法学,后者是关于大规模软件的开发方法学。,在软件开发方法学中最基本的方法有:面向过程方法面向对象方法面向元数据方法形式化方法.,1.4软件工程方法论1.4.1软件工程方法论的提出,【定义】软件工程中软件开发方法的集合,称为软件工程方法论。现在的问题是:到目前为止,软件工程方法论中,到底包括哪几种最基本的软件开发方法?这几种开发方法,到底存在什么关系?下面将回答这些问题。,1.4.1软件工程方法论的提出,1.4.2面向过程方法,面向过程方法(Procedure-orientedmethod),来自于面向过程的程序设计语言,习惯上称为传统软件工程开发方法,或结构化方法。面向过程方法,有时又称面向功能的方法。包括:面向过程需求分析面向过程设计面向过程编程面向过程测试面向过程维护面向过程管理,曾经出现过的面向过程方法有:(1)面向结构化数据系统的开发方法DSSD(DataStructuredSystemsDevelopment);(2)面向可维护性和可靠性设计的Parnas方法;(3)面向数据结构设计的Jackson方法;(4)面向问题设计的PAM方法;(5)面向数据流方法。,1.4.2面向过程方法,面向过程方法的特点:设计时强调模块化的思想,采用“自顶向下,逐步求精”的技术对系统进行划分,分解和抽象是它的两个基本手段。面向过程方法编程时采用单入口单出口的控制结构,并且只包含顺序、选择和循环三种结构,目标之一是使程序的控制流程线性化,即程序的动态执行顺序符合静态书写结构。在面向过程的五种具体方法中,面向数据流方法最具有代表性。,1.4.2面向过程方法,面向过程方法的优点是:以处理流程为基础,简单实用。面向过程方法的缺点是:只注重过程化信息,因而忽略信息的层面关系以及相互联系。企图使用简单的时序过程方法(顺序、分支、循环三种结构),来描述关系复杂(随机)的信息世界,因而对于关系复杂的信息系统来说,其描述能力不强,最后可能导致软件设计、开发和维护陷入困难。,1.4.2面向过程方法,【例1-4】面向过程的方法,在军事上的实时跟踪监控系统中有很好的应用。如我方侦察卫星发射后其飞行轨迹的捕获、测量、跟踪和预报,导弹防御系统中敌方导弹发射后飞行轨迹的捕获、测量、跟踪和预报,其软件系统都是采用面向过程的方法设计和实现的。使用面向过程的方法,系统的执行路径可由系统自动控制,也就是程序自动控制,这是一切自动控制与跟踪系统所必须的。,1.4.2面向过程方法,1.4.3面向对象方法,面向对象方法(Object-orientedmethod),是一种运用对象、类、消息传递、继承、封装、聚合、多态性等概念来构造软件系统的软件开发方法。又称为现代软件工程开发方法。该方法包括:面向对象需求分析面向对象设计面向对象编程面向对象测试面向对象维护面向对象管理,面向对象方法的特点:将现实世界的事物(问题域)直接映射到对象。分析设计时由对象抽象出类(Class),程序运行时由类还原到对象(Object)。面向对象(OO,ObjectOriented)技术是软件工程领域中的重要技术,这种软件开发思想比较自然地模拟了人类认识客观世界的方式,成为当前计算机软件工程学中的主流方法。,1.4.3面向对象方法,面向对象方法的优点是:能描述无穷的信息世界,同时易于维护。面向对象方法的缺点是:对于习惯于面向过程方法的人,他们较难掌握。面向对象方法是当前计算机界关心的重点,是软件工程方法论的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到更宽的范围。如交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。,1.4.3面向对象方法,【例1-5】互联网上各种网站的设计、实现和维护,都是面向对象方法的案例。游戏软件的设计、实现和维护,更是面向对象方法的杰作。【例1-6】面向对象的方法在电子商务中的应用有:网站前台界面的制作,信息的发布和处理,用户在网上浏览和录入信息等应用软件都是利用面向对象的方法设计与实现的。个人网页的制作也是面向对象方法的应用例子。窗口操作系统与互联网的出现,为面向对象方法开辟了无限的前景。,1.4.3面向对象方法,1.4.4面向元数据方法,面向元数据方法(Meta-dataorientedmethod)就是面向meta-data的方法,它与面向过程中的“面向数据流”方法断然不同。面向元数据方法来源于面向元数据的程序设计思想,即来源于关系数据库语言的程序设计思想。,【定义】元数据(meta-data)是关于数据的数据,组织数据的数据,管理数据的数据。这里的元数据,是泛指一切组织数据的数据,例如类的名称、属性和方法,实体的名称、属性和关联,数据库中的表名、字段名、主键、外键、索引、视图,数据结构中存储数据的框架等等。【定义】面向元数据方法,就是在软件需求分析、设计、实现、测试、维护过程中,均以元数据为中心的软件工程方法。,1.4.4面向元数据方法,面向元数据方法包括:面向元数据需求分析面向元数据设计面向元数据编程面向元数据测试面向元数据维护面向元数据需求分析,就是在需求分析时,找出信息系统所有的元数据,使其完全满足信息系统对数据的存储、处理、查询、传输、输出的数据要求。,1.4.4面向元数据方法,面向元数据设计,就是利用需求分析获得的元数据,采用面向元数据的CASE工具,设计出信息系统的概念数据模型CDM(ConceptualDataModel)和物理数据模型PDM(PhysicsDataModel),以及从原始数据到输出数据的所有算法与视图。面向元数据编程,就是在物理数据模型PDM的基础上,根据信息系统的功能、性能、接口和业务规则,建立数据库表和视图,再利用数据库编程语言,编写出存储过程和触发器。,1.4.4面向元数据方法,面向元数据测试,就是对数据库表初始化并加载之后,运行相关的存储过程和触发器,测试信息系统的各种功能需求与性能指标。面向元数据维护,就是对数据库表中的记录进行统计、分析、审计、复制、备份、恢复,甚至对表结构及视图结构,也可以进行必要的调整。,1.4.4面向元数据方法,面向元数据方法的优点是:通俗易懂,特别适合信息系统中数据层上的设计与实现。面向元数据方法的缺点是:只能实现二维表格,不能实现窗口界面。面向元数据方法与关系数据库同生死、共患难。只要面向对象数据库不能完全替代关系数据库,这种方法就不会终结。,1.4.4面向元数据方法,【例1-8】面向元数据的方法在电子商务中也有应用。网站后台数据库服务器上的数据处理和数据传输,其软件都是利用面向元数据的方法设计与实现的。实际上,不管网络应用系统结构是两层结构(C/S)或三层结构(B/A/S),在数据库服务器(S)上对数据的分析、设计和实现,都自觉或不自觉地使用了面向元数据的方法。,1.4.4面向元数据方法,*1.4.5软件工程的形式化方法*1.4.6面向业务基础平台的方法,请同学们自学完成。,1.4.7软件工程方法论小结,四种方法各有优缺点,适合于不同的场合,比较如表1-5所示。,1.5软件工程实践论1.5.1软件工程实践论的提出,本章的重点之二,就是详细讨论“五个面向”的软件工程实践论。由于“五个面向”的软件工程实践论来源于大型信息系统的开发实践,所以首先要给信息系统下一个定义。【定义】利用计算机网络技术、数字通信技术与数据库技术实现信息采集和处理的系统,称为当代信息系统。,软件工程方法论中的四种软件开发方法,究竟那一种方法最好呢?,在开发一个大型软件系统时,到底要怎样选取合适的软件开发方法呢?,【定义】“五个面向”实践论是指“面向流程分析、面向元数据设计、面向对象实现、面向功能测试、面向过程管理”。“五个面向”实践论,它综合了软件工程方法论中各种开发方法的优点,去掉了各种开发方法的缺点,它是人们在软件开发实践中经验的结晶,是软件工程方法论在软件工程实践中的具体运用。,1.5.1软件工程实践论的提出,1.5.2面向流程分析,【定义】面向流程分析,就是面向流程进行需求分析。任何软件系统,都是为了满足用户的信息需求,而用户的信息需求,往往表现在用户的工作流程上,无论是系统的功能、性能、接口、界面,通过系统流程这根主线,都会全部暴露出来。在需求分析时,系统分析员要面向业务流、资金流、信息流进行分析。只有将这“三个流”分析透了,才建立好系统的业务模型和功能模型。,流程就是一系列活动的组合,这一组合的每一个环节都接受各种投入要素,包括信息、资金、人员、设施、材料、环境条件和技术等,最后通过组合的作用产生客户所期望的结果,包括产品、服务或某种决策结果。,流程分析举例做米饭目的:要香软可口、够五个人吃。范围:从舀米到蒸熟。资源条件:有米、电饭锅、淘米盆等工具。,1.5.2面向流程分析,流程分析举例,开始分析:必须的活动如下。,舀米,淘米,称米,加水,清洗电饭煲内锅,倒米入锅,插电,蒸熟,无序状态,按开关,拔电源,称水,流程分析举例,开始分析:必须的活动如下。,舀米,淘米,称米,加水,清洗电饭煲内锅,倒米入锅,蒸熟,有序状态,按开关,拔电源,称水,1,1,3,2,9,4,10,插电,7,5,8,6,流程分析举例,开始分析:画流程图,舀米,洗电饭煲内锅,称米,淘米,倒米入锅,加水,插电,蒸熟,1.5.3面向元数据设计,【定义】面向元数据设计,就是面向元数据进行概要设计。这里讲的面向数据设计,主要表现在数据库服务器上的关系数据库设计。,1.5.3面向元数据设计,在信息系统设计时,设计师要采用面向元数据的方法进行概要设计。概要设计的主要任务是:建立系统的数据模型包括概念数据模型CDM和物理数据模型PDM;建立体现业务规则的存储过程和触发器,然后以数据模型为支撑,去实现信息系统的业务模型和功能模型。为此,要对元数据进行分析、识别、提取,只有将元数据分析透了,才能建立由元数据所构成的数据模型。,1.5.4面向对象实现,【定义】面向对象实现,就是面向对象进行详细设计和编程实现。在多层结构(B/S)的表示层和业务层上进行详细设计和编程实现时,要采用面向对象的方法。目前流行的编程语言,大多数是面向对象的语言。详细设计与编程实现的绝大部分工作量,是在表示层与业务层上进行的,是面向对象的,所以叫做面向对象实现。,详细设计和编程实现,实质上是用构件加上程序来实现系统的业务模型和功能模型(包括性能模型和接口模型)。只有对系统的三个模型思想(业务模型、功能模型、数据模型)吃透了,才能设计和编写出规范的程序。因为类的实例化就是对象,所以面向对象实现,实质上是面向类实现。面向对象方法的软件分析师与程序员时刻要牢记:分析设计时由对象抽象出类,程序运行时由类还原到对象。,1.5.4面向对象实现,1.5.5面向功能测试,【定义1-24】面向功能测试,就是面向功能进行模块测试、集成测试、Alpha测试和Beta测试。面向功能测试的方法就是黑盒子测试方法。今后采用白盒子测试方法(面向程序执行路径测试)的人,只是从事软件构件生产的底层人员。,黑盒子测试方法的测试思路是:针对需求分析时建立的系统功能模型,将每一个需求功能点,都分解为多个测试功能点。再将每一个测试功能点,都分解并设计为多个测试用例。然后,对每一个测试用例,都执行测试过程,产生测试记录数据。最后,汇总并分类整理所有的测试记录数据,就可以形成测试报告。一般而言,面向功能的黑盒子测试报告,就是软件系统的内部验收测定报告,即Alpha测试报告。而Beta测试报告,就是用户验收测试报告。,1.5.5面向功能测试,1.5.6面向过程管理,【定义1-25】面向过程管理,就是面向软件生命周期过程,对软件生命周期各个阶段进行过程管理与过程改进。因为软件产品质量及软件服务质量的提高与改进,完全取决于软件企业软件过程的改善。无论是CMMI,还是ISO9001,都是站在软件生命周期过程的层面上,去提高软件企业的过程管理素质。,1.5.7软件工程实践论小结,由上可知,“五个面向”实践论,构成了一个完整的软件工程实践论。该实践论来源于软件企业对软件工程方法论的长期实践,指导了软件企业对信息系统的开发建设,它是软件工程方法论在软件实践活动中的活学活用。思考:“五个面向”实践论是否具有片面性,是否只适合于信息系统建设,不太适合于其它软件系统建设?,1.6软件支持过程,1.软件过程【定义】软件工程中的过程,是指软件生命周期(LifeCycle)中的时间序列。软件过程作为一个时间序列,它自然有起始点和终止点。可以将一个软件的生命周期划分为市场调研、立项、需求分析、策划、概要设计、详细设计、编程、单体测试、集成测试、运行、维护、退役这几个过程,前一过程的终止点就是后一过程的起始点。过程与阶段(Phase)有关,阶段与里程碑(Milestone)有关。某些重要里程碑上的文档(通过评审和审计之后)又称为基线(Baseline)。,1.软件过程软件工程的支持过程,由支持软件生命周期各个阶段的生产工具所组成。这些生产工具有需求分析工具、概要设计工具、详细设计工具、编程工具、测试工具、维护工具,工具,软件开发环境,软件工程环境。,1.6软件支持过程,2.CASE工具CASE是一组工具和方法的集合,一般提供给个人使用,可以辅助软件开发生命周期各阶段进行软件开发,在软件开发和/或维护过程中提供计算机辅助支持。CASE技术有两类,一类是支持软件开发过程本身的技术,另一类是支持软件开发过程管理的技术。,1.6软件支持过程,3.软件开发环境SDE软件开发环境SDE是指在基本硬件和宿主软件的基础上,为支持系统软件和应用软件的工程化开发和维护而使用的一组软件。它由软件工具和环境集成机制构成。前者用以支持软件开发的相关过程、活动和任务;后者为工具集成和软件的开发、维护及管理提供统一的支持。软件配置管理工具,面向行业领域开发的业务基础平台,就是软件开发环境的例子。,1.6软件支持过程,4.软件工程环境SEE软件工程环境SEE一般提供给团队使用,它是以软件工程为依据,支持典型软件生产的系统。SEE具有以下特点:(1)软件工程环境强调支持软件生产的全过程。(2)软件工程环境强调大型软件的工业化生产。(3)软件工程环境以集成和剪裁作为主要技术路径,实现软件工业化生产的目标。(4)标准化。软件生产走向工业化需要建立相应的工业标准。软件工程环境的例子有北大青鸟系统,RationalRose等。,1.6软件支持过程,5CASE、SDE、SEE三者的同与异CASE、SDE、SEE三者的相同点是:都是软件过程的支持工具,其目的都是为了加快软件开发效率、提高软件开发质量。CASE、SDE、SEE三者的不同点是:它们三者的功能强弱、使用范围、使用背景不尽相同,各有差异。如果不去追究CASE、SDE、SEE三者的严格定义与相互区别,人们在工作中有时将它们三者混为一谈,不加区分。,1.6软件支持过程,1.7软件管理过程,软件开发(或生产)要不要管理,怎样管理,人们经过很长时间才认识到其重要性。软件开发开始于20世纪40年代末的美国,但是,直到1974年,美国人才开始认识到“软件需要管理”。以后又经过10年,到了1984年,美国人才开始认识到“软件管理是过程管理”。,如今,软件工程中主要存在三类过程管理,如表1-6所示。,ISO9001质量管理和质量保证体系,其应用范围覆盖了第二产业和第三产业中的所有企业。特别,为了覆盖软件企业,它专门增加了一部分内容,使软件企业能按照它规定的20个过程域进行软件过程改进与软件质量保证。在中国,软件企业内部的软件组织,都是按照CMMI阶级模型的22个过程域,来进行软件过程改进的。实施CMMI的投入成本高,工作量大,属于重载过程管理。,1.7软件管理过程,1.8信息系统建设案例,【定义】利用计算机网络技术、数字通信技术与数据库技术实现信息采集和处理的系统,称为当代信息系统。通过上述定义不难发现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中实验室应急预案
- 成都市 2024-2025 学年小学五年级科学期中培优模拟卷及答案详解
- 2024-2025 学年度成都市小学五年级道德与法治期中全真模拟试卷(含答案)
- 2025年综合护理知识试题及答案
- 2025年湖南省公务员申论冲刺押题卷
- 2025年测绘考试题及答案
- 2025年美术的常识试题及答案
- 2025年辽宁省公务员考试面试模拟试卷
- 风险评估与管理流程
- 车辆行驶记录仪视场调整方法
- 志愿服务条例知识培训课件
- 民族苗族介绍课件
- 血液中心面试题库分析与指导
- 新疆中考物理实验题分析及指导
- 《金属材料及热处理》课件 项目5 金属的结晶过程与控制
- 2025至2030中国入侵检测系统行业项目调研及市场前景预测评估报告
- 乙型肝炎后肝硬化失代偿期的护理查房
- 火力发电厂分散控制系统技术条件DL/T 1083
- 天鹅会SPA中心员工手册
- 协会档案印章管理制度
- 事业单位国有资产无偿划转意向协议书10篇
评论
0/150
提交评论