版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1
软件工程
SoftwareEngineering
1.1软件的分类(1)系统软件:系统软件是一组为其他程序服务的程序。一些系统软件(如编译器、编辑器和文件管理程序)处理复杂的但也是确定的信息结构。其他的系统应用(如操作系统、驱动程序和通讯进程等)则处理大量的非确定的数据。不管哪种情况,系统软件均具有以下特点:与计算机硬件频繁交互;多用户支持;需要精细调度、资源共享及灵活的进程管理的并发操作;复杂的数据结构;及多外部接口。21.1软件的分类(2)应用软件:应用软件是一些可以满足特定业务需要的独立应用程序。应用软件处理商务或者技术数据,以协助业务操作和管理或技术决策。除了传统数据处理的应用程序,应用软件业被用于业务领域的实时控制(如:销售点的交易处理,实时制造过程控制)31.1软件的分类(3)工程和科学计算软件:工程和科学计算软件的特征是“数值分析”算法。此类应用含盖面很广,从天文学到火山学;从汽车压力分析到航天飞机的轨道动力学;从分子生物学到自动化制造。不过,目前工程和科学计算软件已不仅限于传统的数值算法。计算机辅助设计、系统仿真和其他交互应用已经开始具有实时软件和系统软件的特征。41.1软件的分类(4)嵌入式软件:智能产品在几乎每一个消费或工业市场上都是必不可少的,嵌入式软件驻留在只读内存中,用于控制这些智能产品。嵌入式软件能够执行很有限但专职的功能(如微波炉的按钮控制),或是提供比较强大的功能及控制能力(如汽车中的数字控制,包括燃料控制、仪表板显示,刹车系统等)。51.1软件的分类(5)产品线软件:产品的设计方向为多个不同用户的使用提供特定功能,关注有限的特定市场(例如库存管理系统)或大众消费品市场。(文字处理、电子表格、计算机图形、多媒体、娱乐、数据库管理、个人及商业金融应用等)。61.1软件的分类(6)Web应用软件:“web应用”涵盖广泛的应用程序产品,如电子商务和B2B应用,各类网络应用,如BBS,blog等。71.1软件的分类(7)人工智能软件:人工智能(AI)软件利用非数值算法去解决复杂的问题,这些问题不能通过计算或直接分析得到答案。一个活跃的AI领域是专家系统,也称为基于知识的系统。AI软件的其他应用领域还包括模式识别(图象或声音)、定理证明和游戏。最近,AI软件的一个新分支,称为人工神经网络,得到了很大进展。神经网络仿真人脑的处理结构(生物神经系统的功能),这有可能导致一个全新类型的软件登场,它不仅能够识别复杂的模式,而且还能从过去的经验中自行学习进步。81.2软件的定义、发展和危机1.2.1软件的定义软件==程序+数据+文档。数据==初始化数据+测试数据文档==开发文档+管理文档。今天仍然有人认为:软件等于程序。这些人一上来就写程序。RogerS.Pressman说:“越早开始写代码的人,就是越迟完成代码的人”。
91.2.1软件的定义软件的最新定义:软件==知识+程序+数据+文档对这一定义的讨论:正方:因为软件是知识在网络上的体现,所以这个定义非常好。反方:程序、数据、文档本身就是知识的表现,所以这个定义是画蛇添足。10软件文档具有严格的层次关系(1)“目标程序”覆盖“源程序”;(2)“源程序”覆盖“详细设计说明书”;(3)“详细设计说明书”覆盖“概要设计说明书”;(4)“概要设计说明书”覆盖“需求规格说明书”;11(5)“需求规格说明书”覆盖“用户需求报告”;(6)“用户需求报告”覆盖“软件合同”。管理文档具有严格的时序关系:因为管理是一个过程。12程序的定义(1).面向过程的程序==算法+数据结构。(2).面向对象的程序==对象+消息。(3).面向数据的程序==数据库表+在表上的操作(如存贮过程、触发器或视图)。(4).面向构件的程序==构件+构架。13优秀的程序(或模块),必须满足“高内聚、低耦合”的性质。所谓高内聚,就是程序(或模块)内部结构紧凑,凝聚力和向心力强。所谓低耦合,就是程序(或模块)之间彼此依赖关系很低。有人说:“人生就是一段程序,这段程序是用特殊代码写成的,只是算法极其复杂而已。”142024/3/3广东工业大学计算机学院15软件开发的发展过程计算机应用发展软件数量多规模大软件成本高质量低个体化软件开发方法软件维护困难软件危机软件工程2024/3/3广东工业大学计算机学院161.2.2软件的发展和危机自第一台计算机诞生以来,软件的生产就开始了。随着计算机技术的飞快发展和应用领域迅速拓宽,自20世纪60年代中期以后,软件需求迅速增长,软件数量急剧膨胀。这种增长导致了软件的发展,可以将软件生产的发展划分为三个时代。2024/3/3广东工业大学计算机学院171.程序设计时代(1946~1956年)在这一时期,软件的生产主要是个体手工劳动的生产方式。程序设计者使用机器语言、汇编语言作为工具;开发程序的方法上主要是追求编程技巧和程序运行效率。在程序设计中还没有注意其他辅助作用,因此所设计的程序难读、难懂、难修改。这个时期软件特征是只有程序、程序设计概念,不重视程序设计方法。2024/3/3广东工业大学计算机学院182.程序系统时代(1956~1968年)由于计算机的应用领域不断扩大,软件的需求也不断增长,软件由于处理的问题域扩大而使程序变得复杂,设计者不得不由个体手工劳动组成小集团合作,形成作坊式生产方式小集团合作生产的程序系统时代。生产工具是高级语言。开发方法仍旧靠个人技巧。开发方法仍旧靠个人技巧。由于大的程序需要合作,在程序设计中开始提出结构化方法。2024/3/3广东工业大学计算机学院193.软件工程时代(1968年至今)1968年在联邦德国召开的国际会议上讨论软件危机的问题,在这次会议上正式提出并使用了“软件工程”术语,新的工程科学就此诞生。软件工程时代的生产方式是采用工程的概念原理技术和方法。使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。2024/3/3广东工业大学计算机学院201.2.3软件危机所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。这种“严重问题”不仅仅是“不能正常运行”。实际上几乎所有的软件都不同程度地存在问题。软件危机主要是指如何开发软件,怎样满足对软件日益增长的需求,如何维护数量不断膨胀的现有软件。2024/3/3广东工业大学计算机学院211.软件危机的表现(1)对于软件开发的成本和进度的估计很不准确。由于缺乏软件开发的经验和软件开发数据的积累,使得开发工作的计划很难制定。主观盲目制定的计划,执行起来和实际情况有很大差距,使得开发经费一再突破。由于对工作量和开发难度估计不足,进度计划无法按时完成,开发时间一再拖延。2024/3/3广东工业大学计算机学院22(2)开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。一般情况下软件开发人员在开发初期对用户的要求了解不够明确,未能得到明确表达,就开始着手编程。开发工作开始后,软件人员和用户又未能及时交换意见,使得一些问题不能及时解决,导致开发的软件产品不能完全满足用户要求。2024/3/3广东工业大学计算机学院23(3)开发的软件可靠性差。由于在开发过程中,没有确保软件质量的体系和措施,在软件测试时,又没有严格的、充分的、完全的测试,提交给用户的软件质量差,在运行中暴露出大量的问题。这种不可靠的软件,轻则会影响系统正常工作,重则会发生事故,造成生命财产的重大损失。2024/3/3广东工业大学计算机学院24(4)软件通常没有适当的文档。开发过程无完整、规范的文档,发现问题后进行杂乱无章的修改。程序结构不好,运行时发现错误也很难修改,导致可维护性差。2024/3/3广东工业大学计算机学院25(5)软件的可维护性差。由于开发过程没有统一的、公认的规范,软件开发人员按各自的风格工作,各行其是。很多程序中的错误非常难改,实际上不可能使这些程序适应新的硬件环境,也不可能根据用户要求在程序中增加新功能。2024/3/3广东工业大学计算机学院26(6)软件开发生产率提高的速度,远远跟不上计算机应用普及深入的趋势。软件产品“供不应求”的现象使人类不能充分利用计算机硬件资源提供的巨大潜力。2024/3/3广东工业大学计算机学院272.软件危机的产生软件发展第二阶段的末期,由于计算机硬件技术的进步,计算机运行速度、容量和可靠性有显著的提高,生产成本有显著下降,为计算机的广泛应用创造了条件。一些复杂的、大型的软件开发项目提了出来。但是,软件开发技术一直未能满足发展的要求。软件开发中遇到的问题因找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,导致了软件危机。2024/3/3广东工业大学计算机学院283.软件危机的原因 在软件的开发和维护过程中存在着这么多的问题,一方面与软件本身的特点有关,另一方面也与软件的开发和维护的方法有关。造成上述软件危机的原因概括起来有以下几方面:2024/3/3广东工业大学计算机学院29(1)软件的规模愈发庞大。随着计算机应用的日益广泛,需要开发的软件规模日益庞大,软件结构也日益复杂。有人曾估计,软件设计与硬件设计相比,其逻辑量要多达10~100倍。对于这种庞大规模的软件,其调用关系、接口信息复杂,数据结构也复杂,这种复杂程度超过了人所能接受的程度。2024/3/3广东工业大学计算机学院30(2)软件开发的管理困难。软件不同于硬件,它是计算机系统中的逻辑部件。在写出代码并在计算机上试运行前,由于软件规模大,结构复杂,又具有无形性,软件开发过程的进展情况较难度量,质量也难评价。因此导致管理困难,进度控制困难,质量控制困难,可靠性无法保证。2024/3/3广东工业大学计算机学院31(3)软件本身的独有特点确实给开发和维护造成一些客观困难,但是人们在长期的实践中也积累了不少成功的经验。如果坚持使用成功的经验和正确的方法,许多困难是可以克服的。但是相当多的软件开发人员对于软件的开发和维护存在不少糊涂的观念,实践中或多或少地采用错误的方法和技术。这可能是软件危机的主要原因。2024/3/3广东工业大学计算机学院32(4)软件开发和维护中许多错误认识和方法的形成可以归结与计算机发展早期软件开发的个体化特点。其主要表现在对软件需求分析的重要性认识不够,错误地认为软件开发就是写程序并使之运行,不重视软件需求分析与维护等工作。2024/3/3广东工业大学计算机学院33(5)软件开发技术落后。在20世纪60年代,人们注重一些计算机理论问题的研究,如编译原理、操作系统原理、数据库原理、人工智能原理、形式语言理论等,不注重软件开发技术的研究,用户要求的软件复杂性与软件技术解决复杂性的能力不相适应,它们之间的差距越来越大。2024/3/3广东工业大学计算机学院34(6)生产方式落后。软件仍然采用个体手工方式开发,根据个人习惯爱好工作,无章可循,无规范可依据,靠言传身教方式工作。2024/3/3广东工业大学计算机学院35(7)开发工具落后,生产率提高缓慢。软件开发工具过于原始,没有出现高效率的开发工具,因而软件生产率低下。在1960~1980年期间,计算机硬件的生产由于采用计算机辅助设计、自动生产线等先进工具,使硬件生产率提高了100万倍,而软件生产率只提高了2倍,相差十分悬殊。1.3软件工程--定义IEEE[IEE93]的综合定义(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中(2)软件工程的性质软件工程要用工程科学中的观点来进行费用估算、制定进度、制定计划和方案;要用管理科学中的方法和原理进行软件生产的管理;要用数学的方法建立软件开发中各种模型和各种算法,如可靠性模型,说明用户需求的形式化模型等。
361.3软件工程—学科、层次质量关注点过程方法工具37程序设计方法学和软件工程方法学是为了解决软件危机问题而逐渐形成的学科。“软件工程”(SoftwareEngineering)作为一个术语,是在1968年北大西洋公约组织的一次计算机学术会议上,正式提出来的。这个会议专门讨论了软件危机问题。这次会议是软件发展史上一个重要的里程碑1.3软件工程—过程模型(1)沟通--与客户以及与团队成员的沟通(2)策划--任务、需求、风险、计划、产品规格(3)建模--软件建模和设计(4)构建--编码和测试(5)部署--软件交付和意见反馈381.4软件工程研究的内容(1).软件开发模型,如:瀑布模型、增量模型、原型模型、螺旋模型、迭代模型等。(2).软件开发方法,如:面向过程的方法、面向数据的方法、面向对象的方法(包括面向业务基础平台的方法、面向工作流方法、面向主体的方法、面向方面的方法、面向代理的方法等等),以及形式化方法。39(3).软件支持过程,如:CASE工具Rose、北大青鸟系统、PowerDesigner、ERWin,以及配置管理工具等。(4).软件管理过程,如:ISO9000、CMM/CMMI、软件企业文化(微软企业文件、敏捷文化现象、IBM企业文化)。40
【例】请开发一个“图书馆信息系统”,即图书馆MIS。这是一项软件工程,为了完成这项任务,读者首先要选择软件开发模型,确定开发方法,准备开发工具,设计开发环境和运行环境,然后进行需求分析、概要设计、详细设计、编程、测试、试运行、正式运行、验收和交付,最后是系统维护或系统升级换代。这一系列的软件开发过程和管理过程,就是软件工程。411.5软件工程的基本原理(1).用分阶段的生命周期计划,严格管理软件开发。这一条是吸取前人的教训而提出来的。统计表明,50%以上的失败项目是由于计划不周而造成的。在软件开发与维护的漫长生命周期中,需要完成许多性质各异的工作。这条原理意味着,应该把软件生命周期分成若干阶段,并相应制定出切实可行的计划,然后严格按照计划对软件的开发和维护进行管理。421.5软件工程的基本原理(2).坚持进行阶段评审。统计结果显示:大部分错误是在编码之前造成的,大约占63%;错误发现得越晚,改正它要付出的代价就越大,要差2到3个数量级。因此,软件的质量保证工作不能等到编码结束之后再进行,应坚持进行严格的阶段评审,以便尽早发现错误。431.5软件工程的基本原理(3).实行严格的产品版本控制。在软件开发的过程中不应随意改变需求,因为改变一项需求需要付出较高的代价。但是实践告诉我们,需求的改动往往是不可避免的。由于各种客观的需要,不能禁止用户提出改变需求的要求,而只能依靠科学的产品控制技术来适应这种要求。也就是要采用变动控制,又叫基准配置管理。当需求变动时,其他各个阶段的文档或代码随之相应变动,以保证软件的一致性。441.5软件工程的基本原理(4).采用现代程序设计技术。从提出软件工程的概念开始,人们主要的精力都用于研究各种新的程序设计技术,20世纪60年代的结构化软件开发技术,随后又发展的结构化分析和结构化设计技术,已成为大多数人认为的先进程序设计技术。后来又提出的面向对象技术,从第一、第二代语言,到第四代语言,人们已经充分认识到:方法大于气力。采用先进的技术即可以提高软件开发的效率,又可以减少软件维护的成本。45(5).结果应能清楚地审查。文档要有严格要求。软件产品不同于一般的物理产品,软件是一种看不见、摸不着的逻辑产品。软件开发小组的工作进展情况可见性差,难于评价和管理。为更好地进行管理,应根据软件开发的总目标及完成期限,尽量明确地规定开发小组的责任和产品标准,从而使所得到的标准能清楚地审查。46
(6).开发小组的成员要少而精。开发人员的素质和数量是影响软件质量和开发效率的重要因素,应该少而精。这一条基于两点原因:高素质开发人员的效率比低素质开发人员的效率要高几倍到几十倍,开发工作中犯的错误也要少得多。当开发小组为N人时,可能的通讯信道为N(N-1)/2,可见随着人数N的增大,通讯开销将急剧增大。
47(7).要不断地改进软件工程实践的经验和技术。遵从上述前六条基本原理,就能够较好地实现软件的工程化生产。但是,它们只是对现有经验的总结和归纳,并不能保证赶上技术不断前进发展的步伐
(8).二八定律,这条原理特别重要,项目经理与高层经理,要特别牢记。在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。481.6软件工程的作用(1)【例】20世纪90年代初,有两个软件团队,一个较大(10多人),一个较小(6人),都在开发财务系统。较大的那个团队,工作不规范,没有文档,没有评审,没有团队精神,结果开发出来的产品可维护性差,没有打开市场,致使产品与团队最后同归于尽。49
较小的那个团队,分工明确:一人负责原始凭证和输出报表的收集、归类和整理,这实际上是做需求分;一人负责科目和数据字典(代码),这实际上是做信息的标准化与规范化;一人负责记账凭证的录入和修改,这实际上是做数据库的设计和加载工;50
一人负责日记账、明细账和总账之间的平衡与对账,这实际上是做数据处理;一人负责统计、报表和查询,这实际上是做数据输出工作;一人负责总体设计和项目管理,这就是项目经理的工作。他们最后发展成为一个大型IT企业。511.6软件工程的作用(2)
从软件项目团队来讲,解决在规定的时间内,按照规定的成本,完成预期质量目标(软件的功能、性能和接口达到需求报告标准)的软件。从软件企业本身来讲,解决持续地规范软件开发过程和软件管理过程,不断地优化软件组织的个人素质和集体素质,从而逐渐增强软件企业的市场竞争实力。52
从软件发展进程来讲,克服软件危机,控制软件进度,节约开发成本,提高软件质量。从院校来讲,以前它只是作为一门课或一本书。现在它成为一个学科,一个体系,一个计算机学位,即软件工程硕士学位和软件工程博士学位。53软件工程作用的具体表现
在选择开发工具上,软件工程的基本观点是:工具不是越新越好,而是你越熟悉越好;在风险评估上,软件工程的基本观点是:任何项目组都存在技术风险和技能风险;在项目策划上,软件工程的基本观点是:需求分析在前,项目策划在后;54
在开发进度上,软件工程的观点是:宁愿慢些,也要保证软件的质量;在开发质量上,软件工程的观点是:质量蕴涵于开发过程之中,而不是过程之后;在开发人员上,软件工程的观点是:项目组在中途靠增加开发人员来提高开发速度是无效的;在项目经理的职责上,软件工程的观点是:80%的时间是写文档,20%的时间是内部勾通.551.7软件的开发方法
1.7.1三种开发方法
到目前为止,共有4种软件开发方法:(1).面向过程的方法
(2).面向数据的方法
(3).面向对象的方法(包括面向业务基础平台的方法、面向工作流方法、面向方面的方法、面向服务的方法)。
(4).此外还有形式化方法。56开发方法来自于程序设计语言(1).面向过程的程序==算法+数据结构。
(由顺序、分支、循环三种结构组成)
由它产生了面向过程的方法。(2).面向数据的程序==表+表上的操作。由它产生了面向数据的方法。(3).面向对象的程序==对象+消息。由它产生了面向对象的方法。571.7.2面向过程的方法
内容:面向过程需求分析、面向过程设计、面向过程编程、面向过程测试、面向过程维护、面向过程管理。面向过程的方法,又称为面向功能的方法,或称为结构化方法。58面向过程的方法
特点:程序的执行过程,不由用户控制,完全由程序员控制。优点:简单实用。缺点:企图用有穷的方法(枚举法)来描述无穷的(随机的)信息世界,所以不能完全描述信息世界;维护困难。59
【例】面向过程的方法,在军事上的实时跟踪监控系统中有很好的应用。如我方侦察卫星发射后其飞行轨迹的捕获、测量、跟踪和预报,导弹防御系统中敌方导弹发射后飞行轨迹的捕获、测量、跟踪和预报,其软件系统都是采用面向过程的方法设计和实现的。使用面向过程的方法,系统的执行路径可由系统自动控制,也就是程序自动控制,这是一切自动控制与跟踪系统所必须的。601.7.2面向对象的方法
内容:面向对象需求分析、面向对象设计、面向对象编程、面向对象测试、面向对象维护、面向对象管理。在分析、设计、实现中用到“对象、类、继承、消息通信”这四个基本概,就是面向对象的方法。今天用UML来开发软件,就是面向对象的方法。
61面向对象的方法
特点:
(1).程序的执行过程,不由程序员控制,完全由用户控制。
(2).分析设计时面向类,编程时面向对象。
优点:用无穷的方法来描述无穷的(随机的)信息世界,所以能完全描述信息世界;易于维护。
缺点:较难掌握
。62
【例】面向对象的方法在电子商务中的应用有:网站前台界面的制作,信息的发布和处理,用户在网上浏览和录入信息等应用软件都是利用面向对象的方法设计与实现的。个人网页的制作也是面向对象方法的应用例子。窗口操作系统与互联网的出现,为面向对象方法开辟了无限的前景。63面向对象方法的特例1:
面向业务基础平台的方法
内容:业务基础平台屏蔽了操作系统平台、数据库平台的诸多技术细节,采用面向业务的建模方法进行开发,有效弥合了技术人员和业务人员之间的沟通鸿沟,可以使开发人员更多地关注业务部分,而不是技术细节。
64面向业务基础平台的方法
特点:面向业务领域的、而与技术无关的开发模式。本质上仍然是面向对象的方法。
优点:提升了构件的复用性。缺点:业务基础平台是面向业务行业的,不同行业之间的通用平台标准尚出产生。651.7.3面向数据的方法
这里讲的面向数据的方法,既不是传统软件工程中所讲的“面向数据流”的方法,也不是传统意义上的面向数据结构的Jackson方法。事实上,这两种方法早已过时,但是许多书上还在讲,真是有点误人子弟。66面向数据的方法
我们讲的面向数据的方法,是面向元数据(Metadata)的方法,它是建设信息系统数据库和数据仓库的基本方法。该方法将与关系数据库同生死、共患难。
67面向数据的方法内容:
(1)数据位于信息系统的中心。
(2)由元数据构成的数据模型是稳定的。
(3)对元数据的处理方法是可变的。
(4)企业信息系统的核心是数据模型。
(5)系统的实现方法主要是面向对象。
(6)用户始终参与信息系统的开发。68面向数据的方法
特点:程序的执行过程,有时由程序员控制,有时由用户控制。优点:适合数据层(数据库服务器)设计与实现。缺点:实现窗口界面较困难。69
【例】面向数据的方法在电子商务中也有应用。网站后台数据库服务器上的数据处理和数据传输,其软件都是利用面向数据的方法设计与实现的。实际上,不管网络应用系统结构是两层结构或三层结构,在数据库服务器上对数据的分析、设计和实现,都自觉或不自觉地使用了面向数据的方法。70*1.7.4软件工程的形式化方法
不讲,考研的人可以自学。因为在IT企业用不上。711.7.5四种开发方法总结对比方法名称优点缺点适合的场合面向过程的方法
简单好学
不适应窗口界面,维护困难
大型工程计算,实时数据跟踪处理,各种自动化控制系统,以及系统软件实现等领域面向对象的方法
功能强大,易于维护
不易掌握
互联网络时代,完全由用户交互控制程序执行过程的应用软件和系统软件的开发面向数据的方法
通俗易懂
不适应窗口界面
以关系数据库管理系统为支撑环境的信息系统建设形式化方法准确、严谨难于上手和应用对安全性要求极高,不容许出错的软件系统,如军事、医药、交通等领域721.8软件工程的五个面向理论
面向过程的方法、面向对象的方法、面向数据的方法,这三种开发方法哪个最好呢?当然是面向对象。但是,任何好与坏,都是相对的,有条件的,不是绝对的。这三种开发方法各有千秋,面向对象方法稍强,它们分别适合于不同的环境和不同的场合。73五个面向理论
综合这三种开发方法的优势,特别提出“五个面向”的实施理论:
1.面向流程分析
2.面向数据设计
3.面向对象实现
4.面向功能测试
5.面向过程管理74面向流程分析
面向流程分析,就是面向流程需求分析。在需求分析时,系统分析员要面向业务流、资金流、信息流进行分析。只有将这“三个流”分析透了,才建立好系统的业务模型和功能模型。因为计算机网络在本质上只认识数据及数据流(二进制数据的流动),而且这“三个流”,可以用“数据流”这一个流程来代替,或者说“三个流”是“数据流”在三个不同方向的投影。75面向数据设计
面向数据设计,就是面向元数据进行概要设计。在系统设计时,系统设计师要采用面向数据的方法进行概要设计。面向数据就是面向“元数据”(Metadata)。76面向数据设计
概要设计的主要任务是建立系统的概念数据模型CDM和物理数据模型PDM,以及体现业务规则的存储过程和触发器,然后以数据模型为支撑,去实现系统的业务模型和功能模型。为此,要对元数据进行分析,只有将元数据分析透了,才能建立好由元数据所构成的数据模型。这里讲的面向数据设计,主要表现在数据库服务器上的关系数据库设计。77面向对象实现
面向对象实现,就是面向对象进行详细设计和编程实现。在两层结构(C/S)的客户层上,在三层结构(B/A/S)的表示层和业务逻辑层上,进行详细设计和编程实现时,要采用面向对象的方法。当然,在数据服务层上的设计和编程实现,仍然要采用面向数据的方法,因为主要是设计和编写存储过程,它们是面向数据的,不是面向对象的。78面向对象实现
详细设计和编程实现,实质上是用构件加上程序来实现系统的业务模型和功能模型。只有对三个模型思想(业务模型、功能模型、数据模型)吃透了,才能设计和编写出合格的程序。面向对象实现,实质上是面向类实现,因为实例化的类称为对象。79面向功能测试
面向功能测试,就是面向功能进行单元测试、集成测试、Alpha测试和Beta测试。在进行测试时,测试人员要采用面向功能的方法。这里讲的功能,包括系统的功能、性能和接口三部分内容。面向功能测试的方法就是黑盒子测试方法,今后采用白盒子测试方法(面向程序执行路径测试)的人,只有从事软件构件生产和核心代码编程的极少数人员。80面向过程管理
面向过程管理,就是面向过程对软件生命周期各个阶段进行管理和控制。因为软件产品质量的提高与改进,完全取决于软件企业生产过程的改善。无论是CMM/CMMI、ISO9000、微软企业文化,都是站在软件生命周期过程的观念上去提高软件企业的素质。811.9软件的支持过程
软件工程中的过程,是指软件生命周期(LifeCycle)中的时间序列。过程作为一个时间序列,它自然有起始点和终止点。例如,可以将一个软件的生命周期划分为市场调研、立项、需求分析、策划、概要设计、详细设计、编程、单体测试、集成测试、运行、维护这几个过程。过程与阶段(Phase)相对应,阶段与里程碑(Milestone)相对应。某些重要的里程碑上的文档,又对应基线(baseline)。82软件的支持过程软件工程的支持过程,由支持软件生存周期各个阶段的生产工具所组成。生产工具如需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具,开发环境。软件开发环境又称CASE工具,如北大青鸟系统,SanFrancisco,Rose,面向行业领域开发的业务基础平台(包括软件企业内部使用的各种J2EE平台和.Net平台)。831.10软件的管理过程
“外行关注结果,内行关注过程”。
管理过程和支持过程又称为“软件过程工程”。
1974年,美国人始认识到“软件需要管理”。
1984年,美国人认识到“软件管理是过程管理”。84软件的管理过程
软件中的过程,分为“基本过程、支持过程、组织过程”三种.
基本过程是需求、设计、实现、测试、验收过程;
支持过程是支持过程开发和过程管理的各种CASE工具;
组织过程是建立的有关小组,如软件工程组、质量保证组、测试组、文档组。85软件的管理过程
软件工程中主要存在3类过程管理模型:
(1).ISO9000质量管理和质量保证体系
(2).CMMI过程能力成熟度模型集成
(3).企业文化
(微软企业文化、敏捷文化现象等
)86序号名称来源特点1ISO9000质量管理和质量保证体系
国际标准化组织
ISO
按20多个质量要素管理2CMMI软件能力成熟度模型
美国卡内基-梅隆大学软件工程研究所(CMU/SEI)
按24个过程域PA,分阶段模型和连续模型两种方式管理,属于重载过程管理3
软件企业文化Microsoft公司、IBM公司、敏捷方法
属于轻载过程管理871.10.1ISO9000体系1.“质量手册”内容:质量方针和目标、公司简介、组织机构、质量体系要求、质量手册管理细则等2.“程序文件”内容:规定每个质量要素在何时、在何地、由何人、按照什么标准、规范或规程去做。做完后书写质量记录的模板格式(如:用户需求报告模板或指南、设计说明书模板或指南、测试报告模板或指南、用户手册模板、评审报告模板)88ISO9000体系3.“质量记录”内容:对每个质量要素,在执行活动中,按照书写质量记录的模板格式书写的文档(如:用户需求报告、设计说明书、测试报告、用户手册、各种评审与审计报告)891.10.2微软企业文化
“平等、自由、亲和、融洽、创新、激情、沟通和主人翁精神”的企业文化,是“以人为本”企业文化的具体表现,是微软的精神管理模式。企业文化实质上是一种企业环境,而环境就是一种生产力。微软的用人之道是“人品、智慧、团队精神”三要素,以及“宁缺勿滥”和“不拘一格”的原则,它是微软招聘、培养、考察、提升员工的标准。90软件招聘人才例子
上世纪末,国内软件公司人才跳槽现象普遍,软件版权观念淡薄,有这样一个人到微软公司去应聘,你们认为能成功吗?这个人自称,在原公司掌握了某软件产品的核心技术,而且将原代码也偷出来了,因此可为你公司创造很大经济效益。911.10.3CMM/CMMI
CMM/CMMI的作用概括地讲,软件企业的过程能力成熟度模型CMM的作用,是软件组织的能力评估和过程改进,它的应用领域具体表现在三个方面:
(1)软件组织:用它来不断改进自身的软件过程管理能力;
(2)评估机构:用它来评估某软件组织当前软件能力成熟度的级别;
(3)客户:用它来评价某承包商(软件外包商)的软件能力。92CMM/CMMI的实质
(1)以“过程”为核心抓软件组织的管理,即软件“组织”的过程改进。
(2)以“项目”为手段抓团队开发过程的“活动”,即落实过程改进的措施。
(3)以“活动”记录为基础抓软件过程的“度量”,即“度量”软件组织改进的情况。通过以上三项措施,使软件过程逐渐变为可视、可控,从而实现CMMI精神:质量源于过程、过程需要改进、改进需要模型、改进永无止境。93CMM/CMMI的实质“过程”,既包括软件开发过程,又包括软件管理过程。“组织”,是指软件企业自己,或自己内部的一个软件研发部门。“项目”,是指软件企业的项目开发团队。“活动”,包括项目的开发活动和项目的管理活动两个方面。“度量”,是指对软件测量数据库中的项目管理记录数据进行统计和分析。94CMM的级别CMM1级:初始级,无序管理。
CMM2级:可重复级,项目级管理。
CMM3级:已定义级,组织级管理。
CMM4级:已管理级,数据级管理。
CMM5级:优化级,优化级管理。95CMM/CMMI的内容(1)CMM的内容:五个级别、18个关键过程域(KPA)(2)CMMI的内容:阶段式模型:五个级别、24个过程域(PA)
连续式模型:六个级别、24个过程域(PA)961.11软件工程与信息系统工程
利用计算机网络技术、数字通信技术与数据库技术实现信息采集和处理的系统,称为当代信息系统。信息系统由社会环境、网络环境、数据环境和程序环境这四个部分组成。97软件工程与信息系统工程
信息标准化,就是信息代码化和规范化。
代码化就是用数字或字符代码来表示信息,这种表示方式便于在信息系统中交流。规范化就是代码要遵守一套规定和标准,不能自行其事。981.12本章小结
本章介绍了软件工程的定义、内容、作用,以及三种开发方法、五个面向理论。这些都是软件工程的精华;本章既是研究软件工程的出发点,又是研究软件工程的归宿。既是绪论,又是总结。由于软件工程是一门实践性很强的科学,所以要真正弄懂它,吃透它,一定要理论联系实际,学以致用。99信息系统建设案例分析
港口综合MIS系统包括如下子系统:(1)货物运输子系统(2)船舶调度子系统(3)设备管理子系统(4)物资管理子系统(5)客运管理子系统(6)外轮代理子系统(7)集装箱子系统(8)人事劳资子系统港口信息系统建设案例分析
成功的秘密归纳起来,有4点:(1)自始至终坚持采用“面向数据的方法”不动摇。即坚持面向数据分析、面向数据设计、面向数据实现、面向数据测试、面向数据维护。(2)自始至终坚持采用Oracle关系数据库管理系统不动摇。客观地说,建设大型信息系统,Oracle数据库具有稳定可靠的强大功能和优秀性能。港口信息系统建设案例分析
(3)自始至终坚持采用CASE工具不动摇。这些工具包括设计工具PowerDesigner和实现工具Developer2000,它们都是面向数据的开发工具。(4)自始至终坚持港口信息系统建设不动摇。要做行业ERP,就必须熟悉并精通该行业的业务流程和规则,长期坚持某一行业的方向不动摇,才能做该行业领域的业务专家,才能与时俱进地把握该行业领域的客户需求。2024/3/31033.1可行性研究任务与步骤可行性研究与其他的研究不同,这个阶段不是去开发一个软件项目,也不是解决问题。而是研究这个软件项目是否值得去开发,其中的关键和技术难点是什么,问题能否得到解决,怎样达到目的等。可行性研究的主要内容是对问题的定义,要初步确定问题的规模和目标,问题定义后,要导出系统的逻辑模型。然后从系统的逻辑模型出发,选择若干供选择的主要系统方案。2024/3/3104(1)技术可行性研究。根据客户提出的系统功能、性能及实现系统的各项约束条件,从技术的角度研究实现系统的可行性。(2)经济可行性研究。进行成本效益分析,评估项目的开发成本,估算开发成本是否会超过项目预期的全部利润。分析系统开发对其他产品或利润的影响。2024/3/3105(3)法律可行性研究。研究在系统开发过程中可能涉及的各种合同、侵权、责任以及各种与法律相抵触的问题。(4)开发方案的选择性研究。提出并评价实现系统的各种开发方案,从中选出一种用于软件项目开发。2024/3/31063.1.1研究任务在进行项目可行性研究中,首先需要进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,把它们清楚地列举出来。要研究目前正在使用的系统。如果目前有一个系统正在使用,那么这个系统一定能完成某些有用的工作。所以新系统的目标也必须能完成这些基本功能。如果现有的系统是完美的,那么用户就不会提出开发新系统。2024/3/3107一般来说,应该从以下四方面分析研究每种解决方法的可行性。1.技术可行性要确定使用现有的技术是否能够实现系统,那么就要对开发项目的功能、性能和限制条件进行分析,确定在现有的资源条件下,技术风险有多大,项目是否能实现,这些是技术可行性研究的内容。2024/3/3108数学建模、原型建造和模拟是基于计算机系统技术分析活动的有效工具,描述了技术分析建模过程的信息流图。系统分析员通过对现实世界的观察和分析建立技术分析模型,评估模型的行为并将它们与现实世界对比,论证系统开发在技术上的可行性和优越性。2024/3/3109基于计算机系统模型必须具备下列特性:(1)能够反映系统配置的动态特性,容易理解和操作,能够提供系统真实的结果并有利于评审。(2)能够综合与系统有关的全部因素,能够再现系统运行的结果。(3)能够突出与系统有关的重要因素,能够忽略与系统无关的或次要的因素。(4)结构简单,容易实现,容易修改。2024/3/3110技术可行性一般要考虑的情况如下:(1)技术。 通过调查了解当前最先进的技术,分析相关技术的发展是否支持这个系统。(2)资源的有效性。 用于建立系统的硬件设备、软件、开发环境等资源是否具备。特别是用于开发项目的人员在技术和时间上是否存在问题。2024/3/31112.经济可行性计算机技术发展异常迅速的根本原因在于计算机的应用促进了社会经济的发展,给社会带来了巨大的经济效益。因此,基于计算机系统的成本-效益分析是可行性研究的重要内容,它用于评估基于计算机系统的经济合理性,给出系统开发的成本论证,并将估算的成本与预期的利润进行对比。2024/3/3112经济可行性问题包含两方面:一方面是经济实力;另一方面是经济效益。分析经济可行性研究的内容是要进行开发成本的估算,了解项目成功取得效益的评估,确定要开发的项目是否值得投资开发。2024/3/3113一般说来,基于计算机系统的成本由如下四部分组成:(1)购置并安装软硬件及有关设备的费用;(2)系统开发费用;(3)系统安装、运行和维护费用;(4)人员培训费用。2024/3/3114在系统分析和设计阶段只能得到上述费用的预算,即估算成本。在系统一切完毕并交付用户运行后,上述费用的统计结果就是实际成本。系统效益包括经济效益和社会效益两部分。经济效益指应用系统为用户增加的收入,它可以通过直接的或统计的方法估算;社会效益只能用定性的方法估算。2024/3/31153.社会可行性 社会可行性研究的内容包括:研究开发的项目是否存在任何侵犯、妨碍等责任问题。4.操作的可行性 要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质和操作方式是否可行。2024/3/31163.1.2研究步骤1.系统定义系统定义是一个系统的关键,如果系统没有定义好,也就是没有确定系统的边界。就谈不上确定项目规模和目标。为了定义好一个系统,分析员对有关人员进行调查访问,仔细阅读和分析有关的材料,对项目的规模和目标进行定义和确认,描述项目的一切限制和约束,确保分析员正在解决的问题确实是要解决的问题。2024/3/31172.对于现行系统进行分析研究要认识到现行系统是信息的重要来源。需要研究它的基本功能、性能、环境,存在的问题,运行现行系统需要多少费用,对新系统有什么新的功能要求,新系统运行时能否减少使用费用等。具体方法可以实地考察现行系统,收集、研究和分析现行系统的文档资料。2024/3/31183.导出新系统的逻辑模型根据对现行系统的分析研究,搞清了新旧系统的特征,逐渐明确新系统的功能、处理流程以及所受的约束。有了这些理解后,就可以用建立逻辑模型的工具——数据流图和数据字典来描述数据在系统中的流动和处理情况。2024/3/31194.设计方案分析员根据新系统的高层逻辑模型,从技术角度出发,根据用户的要求和开发的技术力量,提出实现高层逻辑模型的不同方案。5.推荐可行的方案根据上述可行性研究的结果,同时要根据用户的具体情况,应该决定该项目是否值得去开发。2024/3/31206.编写可行性研究报告将上述可行性研究过程的结果按照:说明要求、目的、条件与限制、可行性研究方法及评价尺度;处理流程、工作负荷、费用开销和局限性;说明处理流程、运行环境和局限性;技术条件的可行性;经济方面的可行性;社会条件的可行性;其他可供选择的系统;结论的顺序写成可行性研究报告,提请用户和使用部门仔细审查,从而决定该项目是否进行开发,是否接受可行的实现方案。2024/3/31213.2系统分析如果确认开发一个新的软件系统是必要而且可能的,那么就要进入系统分析阶段。这个时期的首要任务是认识和对问题的评价、建立模型和对规格的分析。系统分析员要研究系统规格说明(systemspecification)和软件项目计划(softwareprojectplan)。其次,为了确保对问题的识别,必须为分析建立通信关系。系统分析员的目标是弄清用户已经理解的基本问题元素。2024/3/3122第二项任务是分析,是主要工作问题评价与解的综合。系统分析员必须定义和详细描述全部软件功能,熟悉影响系统事件前后关系的软件行为,建立系统界面的特征,评价信息流和信息的内容,以及揭示设计限制。最后一项任务是需求分析文档(规格说明和用户手册)。它是作为用户和开发人员进行评审的基础。2024/3/31233.2.1系统分析员系统分析员必须具备下列能力:(1)能掌握抽象概念(abstractconcepts),并能把其整理为逻辑划分(logicaldivisions),以及根据每一个逻辑划分综合为解(solutions)的能力。(2)有弄清用户环境的能力。(3)有从冲突(conflict)或混淆(confusions)中吸取恰当事实的能力。2024/3/3124(4)有用较好的书面和口头形式进行通信(communication)的能力。(5)有把硬件和软件系统用于用户环境(user/customerenvironments)的能力。(6)“从树木见森林”的能力。2024/3/3125系统分析员在软件需求分析阶段有五个方面的工作:(1)问题识别(problemrecognition)。(2)评价和综合(evaluationandsynthesis)。(3)建模(modeling)。(4)规格说明(specification)。(5)评审(review)。2024/3/31263.2.2面临的问题域在系统分析的过程中,都会遇到许多问题。问题识别与问题评价和解综合,在很大程度上决定于能否获得恰当的信息。应当收集什么信息?应当怎样对它们进行表示?谁能提供各种信息的初始模型?以及采用什么技术和工具才能方便地进行信息收集?所有这些都是要解决的问题。2024/3/31273.2.3通信技术一个软件开发的开始往往是用户提出一个问题,并认为这个问题可能适合用计算机来解决,于是寻找开发者,这时开发者对用户的请求回答是可以帮助的。这样,开发者与用户间的通信就开始了。2024/3/31281.过程的开始当用户与开发者有了合作意向后,经常使用的分析技术是会议或访问,将它作为用户和开发人员之间的通信桥梁。系统分析员可以就此切入,了解用户的现行运作,希望在那些地方用计算机来解决问题,提出用户、总目标和效益方面问题,如:2024/3/3129(1)这项工作主要在哪些部门应用?(2)项目的结构主要是谁使用?(3)项目成功的应用带来什么样的经济效益?(4)为了达到目的,还需要其他什么资源?2024/3/3130为了利于系统分析员对问题更好地理解,而用户又能够表达关于目标的理解。可以进一步了解:(1)如何表示一个成功的目标能产生一个好的输出形式?(2)这样的理解可以解决一些什么样的问题?(3)显示或描述一下这样的目标要使用的环境。(4)这种方式的解对特殊的性能问题或限制将有哪些影响?2024/3/3131通过初步了解后,系统分析员会发现一些更具体和技术上的问题。为了通信的有效性,要考虑的称为元问题(meta-questions)。建议如下:(1)谁是能回答这些问题的人?(2)谁能贴切解决这些问题?(3)问题是否提得太多?(4)这里还有其他人可以提供其他方面的信息吗?(5)还有什么事情是我应该问的?2024/3/3132上述所有这些问题将有助于打开僵局和初步的通信,这种通信是成功分析的基础。在交流的过程中最好不要用一问一答的会议形式。事实上,问答式会议应当只用于第一次会面,然后采用交换式会议的形式,综合问题的各个元素协商和说明。2024/3/31332.深入了解向用户索取有关业务源头与结果的资料,通过对资料的分析,对于一些复杂的业务,要到现场去跟随业务流程“跟单”,然后把理解的过程用合适的技术表示出来。2024/3/31343.方便的应用规范技术由于在思想上存在“你我”的问题,一些研究机构开发出一种面向组的方法,应用于分析和规格说明早期的需求收集,这种方法叫做方便的应用规范技术(FacilitatedApplicationSpecificationTechnique,简称FAST)。FAST促使用户和开发人员组成一个联合组一起去确定问题,提出解的各个元素,协商不同方法,并定义一个初步解的需求集。2024/3/3135FAST已广泛地应用于信息系统界。这种技术对于促进通信在所有类型的应用中具有潜力。现在,FAST有许多不同的方式,每种方式的使用都有不同的背景,但所有应用都必须遵循以下原则:(1)会议由上一级部门或请中立部门主持,开发人员和用户双方参加。(2)一位主持人(可以是用户、开发商或局外人),是被指定控制会议的人。(3)确定准备和参加的原则。2024/3/3136(4)提出一个议事日程,这个议事日程是正规的,并包括所有重要观点。但是要不拘礼节地鼓励大家自由发表意见。(5)一张确定的日程(可以是工作单、可转动的图表、墙上张贴物或墙上印刷牌)。(6)目标就是确定问题,提出解的各种元素,协商不同方法,以及定义一个初步解的需求集,而且能在一个有助于目标完成的气氛中进行。2024/3/31373.3分析原理所有的分析方法都与下述一组基本原理相联系:(1)问题的信息域必须能被表示和被理解。(2)应当开发描述系统信息、功能和行为的模型。(3)问题必须能按一定形式进行分割,就是用一种层次(或分层)形式来揭示它们的细节。(4)分析过程应当从基本信息开始,直到实现细节。2024/3/31383.3.1信息域在计算机的应用领域中,所有的软件应用都可以被统称为数据处理(dataprocessing)。信息处理也指处理代表信息的数据并确定被处理数据的意义的过程,所以可以用信息处理代替数据处理。信息处理的对象是信息,而信息的定义是:一方面是物质状态发生改变的一种表征,通常指数据消息中所包含的意义;另一方面它是知识的一种元素,以任何形式聚合,能产生一完整的概念、条件或情况的数据。2024/3/3139信息域是一信息字或一组信息中的特定部分,信息域中的内容通常被作为一个整体来处理。它包括三种不同方面的数据和控制:信息内容、信息结构和信息流。每个方面都由计算机程序处理。在需求分析的过程中,搜集与分析的主要对象是信息域,为了完全地了解信息域,对信息的每一个方面都应该进行研究。2024/3/31401.信息内容 知识的一种元素,描述了单个数据和控制项,这些项可以组成更大的信息项。2.信息结构 信息结构描述了各种数据和控制项的内部组织。2024/3/31413.信息流 信息流描述了数据和控制沿系统流动变化的方式。2024/3/31423.3.2建立模型在软件需求分析过程中,要完成将建立的系统的模型。模型主要说明系统必须做什么,而不是表达怎样做。在一般情况下,用图形符号表示的方法来描述信息、处理、系统行为,而其他特性则使用性质不同的和公认的图符(icons)表示。2024/3/3143在需求分析中,模型的建立可以反映人们对事物的认识,起到很重要的作用:首先,这种模型可以辅助分析人员更好地了解系统的信息、功能和行为,从而使分析更容易和更系统化。其次,模型是评审的焦点,是确定系统完整性(completeness)、一致性(consistence)和规格说明准确性(accuracy)的关键。最后,模型也是设计的基础。模型能给设计人员提供一种软件的基本表达式,这种表达式可以映射成为实现的正文。2024/3/31443.3.3分解在相关领域中,通常都会有涉及到多技术的复杂问题分析。把一个很大和复杂的问题作为一个整体很难被完全理解。因此,为了能够较容易地理解这个问题,人们力图把这样的问题分解为若干部分。从本质上讲,分解就是把一个问题划分为几个组成部分。在概念上,可以建立一种分层的功能或信息表达式,然后按下述两条分解出最主要的元素:(1)在分层中,按垂直方向逐层细化。(2)在分层中,按水平方向对功能进行分解。2024/3/3145对于文字处理软件的需求,可以根据产品划分的信息、功能、行为等几部分来分析。下图给出了文字处理软件功能部分的水平分解和垂直分解。2024/3/31463.4系统模型与模拟3.4.1系统模型系统分析员将系统功能和性能分解,定义若干个子系统及其界面之后,开始建立系统模型,为需求分析和设计阶段的工作奠定基础。输入—处理—输出(IPO)结构是系统建模的基础,它将基于计算机的系统转换成一个信息变换模型。2024/3/31471.结构图系统分析员用结构模板开发系统模型。它由用户界面处理、输入处理、处理和控制功能、输出处理、维护和自测试五部分组成。结构模板能帮助分析人员按照系统工程和软件工程的建模技术自顶向下、由粗到细地建立基于计算机系统的系统模型。2024/3/3148结构模板2024/3/3149结构流程的层次结构2024/3/3150其中,系统总体结构关系图(ACD)位于系统模型图的最顶层。ACD定义了系统的组成,定义了各子系统引用和生成的信息,建立了系统与系统运行环境之间的信息界面。系统分析员借助ACD的帮助定义各子系统的结构流图(AFD)。2024/3/31512.系统结构规格说明为满足后续工作的需要,系统分析员必须准确、详细地说明系统结构、组成系统的各个子系统以及各子系统之间的信息流和控制流。结构图规格说明(ADS)描述子系统信息以及子系统之间的控制流和信息流信息。系统模板说明书描述各子系统的功能、信息处理的对象和结果以及与其他子系统的连接关系。系统结构字典定义系统结构图中的每个信息项。2024/3/31523.4.2系统建模和模拟一个系统一般采用交互方式实现系统与现实世界的信息交流。系统通过硬件、软件对现实世界的对象、事件和过程进行管理和控制。为了减少在真实环境中试验的风险和代价,人们在系统分析和设计阶段普遍采用系统建模和模拟技术。模型是现实系统的一种描述,是现实系统的抽象和简化。模型必须反映现实系统的本质和实际;模型必须由现实系统的有关元素组成;模型必须反映这些元素之间的关系。2024/3/3153现实系统模型可分为物理模型和数学模型两大类。物理模型由物理元素构成,故称形象模型。数学模型由数学符号、逻辑符号、数字、图表、图形等组成,故称抽象模型。2024/3/3154用于现实系统模拟的模型必须遵循科学的社会规律,必须反映现实系统的本质,必须具有一定的精度。在此基础上,还应力求简单,尽量删除某些不必要的细节,如有可能尽量采用已有的模型,在实验过程中不断修改和完善模型,使之更能反映现实系统的本质和特征。2024/3/3155系统建模与模拟的主要步骤是:(1)分析问题、确定模拟的目标。(2)建立模型。(3)运行模型并分析模型结果。(4)修改模型(如有必要)。(5)撰写模拟文档。2024/3/31563.5成本-效益分析成本-效益分析的目的是从经济角度评价开发一个新的软件项目是否可行。成本-效益分析首先是估算将要开发的系统的开发成本,然后与可能取得的效益进行比较和权衡。2024/3/31571.成本估计一个软件开发的成本主要表现在人力消耗。由于这种消耗估计不是精确的科学计算,因此可以用几种方法计算后相互验证。首先可以用代码行定量估算方法,把开发软件中实现每一个功能所需要的源代码行数与成本联系起来。其次可以用任务分解技术估算成本。2024/3/31582.货币的时间价值系统的经济效益是使用新系统增加的收入和节约的运行费用。而经济效益和运行费用在软件生命周期中都存在,这就是说经济效益与软件的生命周期的长度有关。所以应该合理地估计软件的寿命。2024/3/31593.投资回收期用投资回收期是衡量一个开发项目价值的常用方法。投资回收期就是累计收回的经济效益等同于最初投资费用所需的时间。收回投资以后的经济效益就是利润。很明显,投资回收期越短,获得利润就越快,则该项目就越值得开发。4.纯收入纯收入就是在整个生命周期之内的累计经济效益与投资之差。2024/3/31603.6可行性研究的文档规格说明书要按照如下原则进行:(1)从实现中抽出功能度。(2)用面向过程的系统规格说明语言。(3)规格说明要围绕整个系统,软件是其组成部分。(4)规格说明书是一个可以认知的模型。2024/3/3161(5)必须是局部化的和松散耦合的。(6)必须围绕系统的操作环境。(7)必须是可以操作的。(8)允许系统的规格说明书的不完整和可扩充。2024/3/3162一个可行性研究报告的主要内容如下:(1)引言:说明编写本文档的目的,项目的名称、背景,本文档用到的专门术语和参考资料。(2)可行性研究前提:说明开发项目的功能、性能和基本要求,达到的目标,各种限制条件,可行性研究方法和决定可行性的主要因素。2024/3/3163(3)对现行系统的分析:说明现行系统的处理流程和数据流程、工作负荷、各项费用支出、所需各类专业技术人员和数量、所需各种设备,现行系统存在什么问题。(4)所建议系统的技术可行性分析:对所建议系统的简要说明,处理流程和数据流程,与现行系统比较的优越性,采用所建议系统对用户的影响,对各种设备、现有软件、开发环境和运行环境的影响,对经费支出的影响,对技术可行性的评价。2024/3/3164(5)所建议系统的经济可行性分析:说明所建议系统的各种支出,各种效益,收益/投资比、投资回收周期。(6)社会因素可行性分析:说明法律因素对合同责任、侵犯专利权和侵犯版权等问题的分析,说明用户使用可行性是否满足用户行政管理、工作制度和人员素质的要求。2024/3/3165(7)其他可供选择方案:逐一说明其他可供选择的方案,并说明未被推荐的理由。(8)结论意见:说明项目是否能开发,还需什么条件才能开发,对项目目标有何变动等。2024/3/31663.7项目开发计划3.7.1方案选择系统分析任务完成后,系统分析员开始研究问题求解方案。由于系统开发成本又可划分为研究成本、设计成本、设备成本、程序编码成本、测试和评审成本、系统运行和维护成本、系统退役成本等,因此在开发系统所用总成本不变的情况下,由于系统开发各阶段所用成本分配方案的不同,也会对系统的功能和性能产生相当大的影响。2024/3/31673.7.2制定项目开发计划经过可行性研究后,就得到一个项目是否值得开发的结论。如果可行,则接下来应制定项目开发计划。分析员应当进一步为推荐的系统编写一份开发计划。软件项目开发计划是软件工程中的一种管理性文档。主要是对开发的软件项目的费用、时间、进度、人员组织、硬件设备的配置、软件开发环境和运行环境的配置等进行说明和规划,是项目管理人员对项目进行管理的依据,据此对项目的费用、进度和资源进行控制和管理。2024/3/3168项目开发计划是一个管理性文档,它的主要内容如下:(1)项目概述:说明项目的各项主要工作;说明软件的功能、性能;为完成项目应具备的条件;用户及合同承包者承担的工作、完成期限及其他条件限制;应交付的程序名称,所使用的语言及存储形式;应依附的文档。3.1立项方法
立项的具体表现形式,就是在市场调查研究的基础上,分析立项的必要性(是否有市场前景)和可能性(是否有能力实现),并具体列出系统的功能、性能、接口和运行环境等方面的需求,当前客户群和潜在客户群的情况,以及投入产出分析,然后再按照编写参考指南书写立项建议书,并对它进行评审,评审通过后才算正式立项。169立项案例分析【例3-1】2003年初冬,烟台市某软件公司的老总在西安出差,发现西安市的大中型餐厅基本上都有电子点菜系统,客人一点菜,信息马上出现在厨房大师傅眼前,大师傅马上炒菜,小姐很快上菜。以后一打听,这个点菜系统叫“餐饮系统”,是北京某软件公司开发的。于是这位老总又飞到北京,不但拜访“餐饮系统”的开发公司,而且到几家餐饮大店去吃饭,亲身体验“餐饮系统”的使用情况。返回烟台后,老总拍着脑袋决定马上立项,快速开发本公司的“餐饮系统”。170立项案例分析
不到三个月,“餐饮系统”开发完毕,但是在后来的两年中,该系统在烟台市总共也只卖出两套,投入与产出比是五比一。这是为什么?就是因为烟台是中等城市,不像北京、西安是大城市,“餐饮系统”的客户群少得可怜。171立项方法
立项就是决策,IT企业的决策必须按照决策程序进行。没有决策程序就要先制定决策程序,不能一个人拍脑袋定决策。
立项建议书的目的,就是在某种程度上代替开发合同或用户需求报告,作为软件策划的基础。172立项方法
立项建议书的编制者一般不是软件开发人员,而是软件公司的市场销售人员,因为他们对市场行情及客户需求熟悉,所以在此给出它的编写参考指南,对市场销售人员和软件策划人员都会有帮助。1733.2立项文档
立项文档就是《立项建议书》,文档汇编中给出它的编写参考指南。不要认为它太死板、太复杂,需要仔细阅读其格式和内容,并不断地问“为什么?”。只有这样,才能增长学问,使自己早日融入IT企业的软件文化之中,使高校的软件工程教育与IT企业的软件文化平滑接轨。1743.3签订合同的方法与文档【例3-2】公元2005年2月,珠海一家软件公司(乙方)与珠海一家中药网站公司(甲方),签订了一个“中药网站开发合同”。该合同中的有关条款规定:“软件开发费用共计9万元人民币,开发工期总共为一个月,即2月至3月”。并且还规定:“乙方若不按期交付项目,每拖延一天,甲方扣除乙方的软件开发总费用的1%”。请读者分析一下,该合同有什么问题?后来的事实证明,该合同至少造成了如下几个问题:175签订合同的方法与文档
开发工期太短,乙方肯定不能按时交付项目。开发费用太低,乙方肯定不能获利。至于“每拖延一天,甲方扣除乙方的软件开发总费用的1%”的约定,更是甲方悬在乙方头上的一把历箭。由此可见,正确而合理地签订软件项目开发合同,对软件企业是何等地重要!176签订合同的方法与文档
任何有营业执照的软件企业,都有自己的合同文本格式。合同的文档有两份,一份是主文件,即合同正文。另一份是合同附件,即技术性的文件,它的格式和内容,与立项建议书的主体部分基本相同。附件的内容应覆盖系统的功能点列表、性能点列表、接口列表、资源需求列表、开发进度列表等。177合同正文的主要内容
(1)合同名称
(2)甲方单位名称
(3)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 防火教育观后感范文(10篇)
- 文明校园演讲稿13篇
- 教育警示教育心得体会模板5篇
- 小学生安全伴我同行演讲稿(30篇)
- 新员工试用期转正总结(31篇)
- 我与地坛读后感
- 合伙便利店协议书
- DB12-T 1069-2021 规模化油用牡丹栽培技术规程
- 内蒙古呼伦贝尔市(2024年-2025年小学五年级语文)统编版课后作业((上下)学期)试卷及答案
- 高中体育与健康教案集
- 江苏省中等职业学校学业水平考试语文卷含答案
- 售后服务保障方案3篇
- 2025届江苏省南通市海安市海安高级中学物理高三上期中联考试题含解析
- 2024-2030年全球辣椒市场投资潜力与未来运营模式分析研究报告
- 保洁员安全保证书
- 2024-2025学年二年级上学期数学期中模拟试卷(苏教版)(含答案解析)
- 2024年天津市专业技术人员继续教育网公需课答案
- 期中测试卷-2024-2025学年统编版语文四年级上册
- 劳务派遣 投标方案(技术方案)
- 辽宁抗日战争的起始地
- 小学六年级数学100道题解分数方程
评论
0/150
提交评论