Informational School,Guangzhou University Spring 2005 软件工程 Software Engineering 广州大学信息学院 Informational School,Guangzhou University Spring 2005 Software Engineering
软件工程 第二章 计算机系统及可行性研究 Software Engineering 广州大学信息学院
第二章 软件与软件工程 2.1 基于计算机的系统与计算机系统 工程 2.2 可行性研究 2.3 系统分析与系统模型 第二章 软件与软件工程 2.1 基于计算机的系统与计算机系统 工程 2.2 可行性研究 2.3 系统分析与系统模型 Software Engineering
2.1 基于计算机的系统与计算机系统 工程 2.1.1 基于计算机的系统 2.1.2 计算机系统工程 Software Engineering
2.1.1 基于计算机的系统 一、系统 二、基于计算机的系统 Software Engineering
一、系统 一个系统是一组相互关联、能一起工作从而达到某个目标的相关组件的集合。 例:教育系统、银行系统、计算机系统等。 Software Engineering
二、基于计算机的系统 定义为某些元素的一个集合或者排列,这些元素被组织起来,以实现某种方法、过程或者借助处理信息进行控制等。人们通过“系统”完成某个预定的目标,该目标可能是某些业务功能或者开发可被销售的产品等。 系统元素以及相互之间的关系可用IPO模型表示。 Software Engineering
二、基于计算机的系统 Software Engineering
二、基于计算机的系统 软件:计算机程序、数据结构以及相关的文档,它们被用于实现需求的逻辑方法和过程或者控制。 硬件:提供计算能力的电子设备、能使数据流动的互连设备(例如网络交换机和电信设备等)、提供外部功能的电子机械设备(例如传感器、马达等)。 人员:硬件和软件的用户和操作者。 数据库:通过软件访问的、大型的、有组织的信息集合。 文档:描绘系统的使用、操作的描述性信息(例如使用手册、联机帮助文件等)。 过程:定义每一个系统元素特定的使用步骤,或者系统驻留的过程性环境。 Software Engineering
二、基于计算机的系统 基于计算机的系统可能成为某一个更大系统中的一个元素,并称为该系统的宏元素。因此,系统具有复杂的层次结构。见P20图2-2。 系统分析员的主要作用是在系统的整体层次结构的环境中,描述这个系统,定义总的体系结构,然后集成各个组件以完成整个基于计算机的系统。 Software Engineering
2.1 基于计算机的系统与计算机系统 工程 2.1.1 基于计算机的系统 2.1.2 计算机系统工程 Software Engineering
2.1.1 计算机系统工程 一、计算机系统工程的概念 二、计算机系统工程的任务 三、系统工程过程主要活动 四、硬件和硬件工程 五、软件和软件工程 六、人—机工程 七、数据库工程 Software Engineering
一、计算机系统工程的概念 计算机系统工程是指与构造基于计算机系统有关的过程、方法和技术。系统工程是描述、设计、实现、有效性验证、实施和维护等一系列的求解活动,它不仅关心系统的硬件和软件,还要关注系统与周围环境的关系,以及人机交互等问题。 例:P20图2-3 Software Engineering
二、计算机系统工程的任务 组织并指导系统工程师定义全系统各层次中的所有基于计算机系统的元素。 Software Engineering
三、系统工程过程主要活动 需求定义:系统需求定义活动希望获得系统整体需求。 系统设计:将不同的组件整合成一个能完成所需功能的系统。 子系统开发:实现在系统设计时所确定的子系统,如果该子系统本身又是一个很大的系统,则又进入另一个系统工程过程,例如硬件工程过程,软件工程过程等。 系统集成:系统集成就是把一个个独立开发的子系统整合为一个完整的大系统。 系统安装: 系统进入实际的工作环境。要考虑到系统安装环境的问题,以及新系统和已有系统共存的问题。 系统进化:系统在投入运行后,常常需要改进原先系统需求的错误或者满足新的需求,例如设备的更新、系统外部环境的改变等,这就促使系统的变更和进化。 系统退役:系统退役就是它的有效生存期结束后停止了它的服务。 Software Engineering
四、硬件和硬件工程 系统工程师根据系统需求分析,为硬件系统指派的任务即产生硬件需求,硬件工程师通过硬件工程过程实现硬件系统。 硬件工程师一方面要考虑硬件系统的功能和性能,另一方面还要考虑硬件之间的接口、硬件的标准化、硬件成本和维修服务等因素。 Software Engineering
五、软件和软件工程 在系统工程中,把功能和性能分配给软件系统即产生软件需求,软件工程师借助于软件工程的过程、方法和工具开发软件系统。 软件工程师的任务: 软件总体结构的设计 制作或获取一系列的软部件(构件) 需要将系统工程的观点和方法引入软件工程,用于指导软件开发。 Software Engineering
六、人—机工程 任何计算机系统都包含着人的因素,人与计算机硬件和软件的直接交互可以启动并控制系统运行。 “人机友好”已成为基于计算机系统的一项重要技术指标。 Software Engineering
六、人—机工程 人机工程包括下列步骤: 活动分析:分析人机交互过程,评价人机交互过程中人的活动,并根据“活动”设计需要计算机执行的“任务”。 动作定义和设计:根据人机交互活动,精确地定义人机界面每一个动作的精确内容。这些动作是靠计算机去执行的。 人机对话语言设计:设计人机对话语言,精确地定义语言的语法和语义,实现语言中的每一个动作和命令。 Software Engineering
六、人—机工程 人机工程包括下列步骤: 用户环境设计:将支撑人机界面的软件和硬件集成起来,构成一个用户环境。环境应该包括物理设备(例如场地、照明、温度等方面的因素)。 原型设计:软件工程师根据用户要求设计原型,然后请用户一起对原型进行评审。以通过评审的原型为基础设计基于计算机系统的人机界面。不借助原型的帮助,软件工程师很难设计出用户满意的人机界面。 Software Engineering
七、数据库工程 在以信息处理为核心的基于计算机的系统中,数据库系统是基于计算机系统的重要组成部分。 数据库工程应该完成的任务: 调查用户的信息需求和对信息处理的要求;进行可行性论证;提出成本预算和工作计划等。 论证、选择和购置支持数据库系统的硬件和软件,特别是数据库管理系统(DBMS)。此外,还应该考虑支持DBMS运行的操作系统和网络环境。 Software Engineering
七、数据库工程 数据库设计与实现。步骤是:(1)对数据库系统的要求进行需求分析和数据分析,产生需求说明和数据说明;(2)以需求说明和数据说明为基础,进行概念设计,产生依赖用户的数据库概念模型;(3)以概念模型为基础,进行逻辑设计,产生依赖于DBMS的逻辑模型;(4)以逻辑模型为基础进行物理设计产生一个完整的、可实现的数据库。 Software Engineering
七、数据库工程 按照系统确定的范围和用户的需要收集、整理、分类和储存数据库中所需数据; 数据库管理人员负责管理数据库资源,收集和确定用户需求,参与数据库系统的论证、设计与实现,参与数据的收集、整理、分类和储存,负责数据库的管理和维护,并为用户提供培训及有关资料等。 Software Engineering
第二章 软件与软件工程 2.1 基于计算机的系统与计算机系统 工程 2.2 可行性研究 2.3 系统分析与系统模型 第二章 软件与软件工程 2.1 基于计算机的系统与计算机系统 工程 2.2 可行性研究 2.3 系统分析与系统模型 Software Engineering
2.2 可行性研究 2.2.1 可行性研究及其任务 2.2.2 可行性研究报告 Software Engineering
2.2.1 可行性研究及其任务 软件可行性研究的目的:用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。 注意,可行性研究的目的不是去开发一个软件项目,而是研究这个软件项目是否值得去开发,其中的问题能否解决。 可行性研究实质上是要进行一次简化、压缩了的需求分析和设计过程,是要在较高层次上以较抽象的方式进行需求分析和设计过程。 可行性研究的内容包括经济可行性、技术可行性、社会可行性、开发方案的操作性与选择性研究。 Software Engineering
一、经济可行性研究 经济可行性就是通过成本—效益分析,评估系统的经济效益是否超过它的开发成本,也就是给出系统开发的成本论证,并将估算的成本与预期的利润进行对比,分析系统开发对其他产品或利润的影响。 系统成本主要包括: 购置硬件/软件、有关设备的工程安装费用、系统开发费、系统的安装、运行和维护费用、人员培训费用等等。 系统效益包括: 经济效益。系统为用户增加的经济收入,它可以通过直接的或者统计的方法估算; 社会效益。只能用定性的方法估算。例如产品广告宣传,对社会的影响。 Software Engineering
一、经济可行性研究 成本一效益分析: 货币的时间价值 设利率为i,现存入P元, n年后可得钱数为F,若不计复利,则:F= P*(1十 n* i) F就是P元在n年后的价值。反之,若n年后能收入F元,那么这些钱现在的价值为:P= F/(1十n*i) 投资回收期 投资回收期就是使累计的经济效益等于最初的投资费用所需的时间。投资回收期越短,就越快获得利润,则该项目就越值得开发。 项目的纯收入,也就是在整个生存周期之内的累计经济效益(折合成现在值)与投资之差。这相当于投资开发一个项目与把钱存入银行中进行比较,看这两种方案的优劣。 Software Engineering
二、技术可行性 技术可行性是根据客户提出的系统功能、性能以及实现系统的各项约束条件,从技术的角度研究实现系统的可行性。 技术可行性一般要考虑的情况包括: (1)开发的风险:在给出的限制范围内,能否设计出系统并实现必须的功能和性能? (2)资源的有效性:可用于开发的人员是否存在问题?可用于建立系统的其他资源是否具备? (3)技术:相关技术的发展是否支持这个系统? Software Engineering
二、技术可行性 数学建模、原型建造和模拟是基于计算机系统技术分析活动的有效工具。基于计算机系统模型应该具备下列特性: 能够反映系统配置的动态特性,容易理解和操作,能够提供系统真实的结果并有利于评审; 能够综合与系统有关的全部因素,能够再现系统运行的结果; 能够突出与系统有关的重要因素,能够忽略与系统无关的或次要的因素; 结构简单、容易实现、容易修改。 Software Engineering
三、社会可行性 社会可行性是研究在系统开发过程中可能涉及人力资源、各种合同、知识产权纠纷、责任以及各种与法律相抵触的问题。 研究要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组织内是否行得通,现有管理制度、人员素质和操作方式是否可行。 Software Engineering
四、方案的抉择与可操作性 如果存在的话,提出并评价实现系统的各种开发方案,在给出的几个方案中做出抉择。可操作性是指用户对系统的操作是否可行。 开发方案制定和选择过程: 见P26图2-5。 Software Engineering
2.2.2 可行性研究报告 见具体文档 Software Engineering
2.3 系统分析与系统模型 2.3.1 常用的分析方法 2.3.2 系统结构模型 2.3.3 系统规格说明 Software Engineering
一、功能分解方法 功能分解方法=功能+子功能+功能接口 。 基本思想是:将系统看成由若干功能构成的一个集合,每一个功能又可以分成若干子功能(子加工或者过程)等等。在这一过程中,同时定义每一个功能的接口。 功能分解方法的重点是操作,很少考虑到数据结构问题,数据结构是根据功能或者子功能的需要进行设计。对于一个系统而言,结构是相对稳定的,行为却是相对不稳定的,显然,这种方法把重点放在不稳定的行为上,很难适应系统的变化 。 Software Engineering
二、数据流方法 数据流方法=数据流+数据变换+数据存储+终结点+加工说明+数据词典。其中,终结点是通常的数据源和数据池。 基本出发点是数据流,即利用数据流来理解问题和分析问题。它采用了逐层分解,逐步求精的基本原则,分析人员沿着问题空间的数据流进行分析,从而把数据流影射到分析结果的模型上(数据流图)。 Software Engineering
二、数据流方法 数据流方法的难点之一是如何确定数据流之间的变换。人们可以把事件对应的变换分解成若干组,然后进行抽象形成若干变换层次。 在拓扑结构意义上,数据流图属于网状型,系统结构图属于层次型。正是分析和设计两种表示方法的不一致性,导致了由数据流图到系统结构的影射不是唯一的。 “数据字典爆炸”也是这种方法需要解决的问题之一。由于一个复杂系统带来数据流图就很复杂,同时导致数据字典规模也很庞大。数据流方法也很少考虑数据结构问题。 Software Engineering
三、信息造型方法 信息造型=对象+属性+联系+父类型/子类型+关联对象。这里的对象是客观世界中的某种事物的表示,它具有属性,但不包含操作。 信息造型方法的基本出发点立足于数据(数据结构)而不是数据流,由问题空间认识导出数据结构,从而建立分析模型,这种方法的描述工具之一是ER图(实体-联系图),它的基本元素是实体、属性和关联。 Software Engineering
三、信息造型方法 信息造型方法的重要核心概念是实体—关系,实体是问题空间中的一个事物,它带有一组数据的属性,关联描述问题空间中事物之间的联系。实体与关联加上属性形成一个网络结构,软件人员常常使用ER图描述系统的信息状态。 信息造型方法与面向对象方法比较接近,但它不支持服务、继承性、消息、结构(分类结构和组装结构)等概念。 Software Engineering
四、面向对象方法 面向对象方法=对象(类)+结构+继承+消息(通信)。其中,对象是一组属性和服务的封装体,它是问题空间中某一事物的抽象。这个公式仅仅表达了面向对象方法中几个重要的特征。 面向对象方法使得软件人员可以采用3个基本组织模式来定义和传递系统的需求,即对象和属性、分类结构、组装结构。同时,面向对象分析和设计采用相同的一致的表示方法,实现了分析结果到设计的无缝衔接。用面向对象方法所获得的模型是对问题空间的完整的、直接的影射。 Software Engineering
2.3 系统分析与系统模型 2.3.1 常用的分析方法 2.3.2 系统结构模型 2.3.3 系统规格说明 Software Engineering
2.3.2 系统结构模型 系统工程的一个重要活动是系统建模,它是系统需求和设计的组成部分。系统工程师将基于计算机的系统功能和性能分解,定义若干个子系统及其界面之后,开始建立系统模型,为需求分析和设计阶段的工作奠定基础。输入—处理—输出(IPO)结构是系统建模的基础,它将基于计算机的系统转换成一个信息变换模型。 Software Engineering
2.3.2 系统结构模型 结构模板图 用户界面处理 输入 处理 处理与控制功能 输出 维护和自测试 Software Engineering
2.3.2 系统结构模型 结构模板图:是指系统结构图.系统工程师可以采用”结构模板图”来建立基于计算机系统的系统模型,该模型展现一些主要子系统以及它们之间的关联,以便给系统开发人员和客户一个系统组织的总体概念. 系统总体结构关系图:定义了各子系统引用和生成的信息,建立了系统与系统运行环境之间的信息界面.通过界面对系统进行测试和维护,完成系统与外部实体间各种数据和控制信息的通信.见P31图2-7 Software Engineering
2.3.3 系统规格说明 一、系统规格说明 结构图规格(Architecture Diagram Specification,ADS)描述了子系统信息以及子系统之间的控制流和信息流信息。每个子系统的结构图规格说明都应包括系统模板描述、系统结构字典、系统结构互连图。 Software Engineering
2.3.3 系统规格说明 系统模板:描述说明了各子系统的功能、信息处理的对象和结果,以及与其它子系统的连接关系。 系统结构字典:定义系统结构图中的每个信息项。信息项的类型、信息源和流向目标可以从结构图中提取。 结构互连图:与对应的规格说明描述系统信息的传送方式。 系统规格说明目录:P32 Software Engineering
2.3.3 系统规格说明 二、系统规格说明评审 客户和开发人员共同判断: P32 Software Engineering
下课了。。。 追求 休息一会儿。。。 Software Engineering