第1页:软件工程第2章系统工程
软件工程第2章系统工程
第2页:什么是系统
什么是系统
- 系统(ISO):一组或一系列相关的元素[人、产品(硬件和软件)及过程(设备、装备、材料和规程)],其行为满足运转需要并且为产品生存周期的维持提供支撑
- 软件密集系统(Software-Intensive System)
- Software + Hardware + Human Activities
- 计算机软件只是其中的一环
- 仅仅软件这一部分也是由密集交互的多种软件组成的
- 多种应用软件、操作系统、中间件等…
第3页:系统的例子
系统的例子
- 国美电器的销售系统
- 在若干城市的若干门店、具有合作关系的家电企业
- 一套行之有效的销售模式:处理上游和下游的关系
- 计算机系统:校园一卡通
- 硬件设备:服务器、刷卡器、一卡通网络、IC卡
- 软件系统:结算软件、银行接口、查询系统…
- 规程/人员:设计与一卡通相关办理、消费、挂失、充值、结算等制度和流程,设置相应的岗位和职责
- 系统分析和规划:合理规划各软硬件部件、规程、人员的目标、需求,使各部分相互配合形成完整的
第4页:系统工程
系统工程
- 系统工程:关注目标系统各种相关要素的分析、设计,并将其组织成有机的系统
- 有机:像生命体一样,各个部分密切配合、有序演化,达到系统的总体目标
- 系统工程与软件工程
- 系统工程更加广泛,软件工程源于系统工程
- 任何软件的开发都处于一个更大的系统之中,因此软件开发必须先从了解软件所处的系统全局视图
第5页:内容摘要
内容摘要
第6页:内容摘要(续)
内容摘要
第7页:所谓基于计算机的系统是指
- 所谓基于计算机的系统是指:通过处理信息来完成某些预定义目标而组织在一起的元素的组合
- 对于用户而言有意义的是可以达到预期目标的系统(完整的软硬件解决方案)而不是单一软件
- 组成基于计算机系统的元素主要有:软件、硬件、人员、数据库(及其它系统软件)、文档和规程(Procedure)基于计算机的系统
第8页:系统元素
系统元素
- 软件
- 指计算机程序、数据结构和相关的工作产品,以实现所需要的逻辑方法、规程或控制
- 硬件
- 指提供计算能力的电子设备、支持数据流的互连设备(如网络交换器、电信设备)和提供外部世界功能的电子机械设备(如传感器、马达等)
- 人员
第9页:数据库
- 数据库
- 文档
- 指描绘系统的使用和/或操作的描述性信息(如模型、规格说明、硬复制手册、联机帮助文件、Web站点)
- 规程(procedures)
- 指定义每个系统元素的特定使用或系统所处的过程性语境的步骤
第10页:计算机软件与系统
计算机软件与系统
- 计算机软件一般位于整个系统的核心位置
- 不同的计算机信息系统具有不同的特点
- 一般应用软件系统只要求标准硬件(PC、服务器等)配置,因此往往只需要关注软件本身
- 嵌入式软件系统中存在复杂的软硬件交互:例如工业控制系统需要直接控制多种硬件设备、手机终端软件需要考虑手机的配置情况等…
- 随着软硬件技术的发展,软硬件的边界不断变化
- 不断增强的硬件指令支持
- USB Key、加密狗等硬件解决了许多软件很难解决的问题
第11页:系统的层次结构
系统的层次结构
- 任何系统都处在一个更大的系统之中,形成系统的层次结构
- 校园一卡通系统包括基础网络、结算系统、银行接口系统、消费终端等子系统
- 一卡通系统处于整个学校系统(教务、财务、学工…)之中
- 学校系统属于整个高等教育系统乃至社会系统的一环……
- 我们在某个项目中关注的具体系统总是有确定的边界,例如对于结算系统项目而言:
- 已知:消费终端可以将基本消费信息通过一卡通网络发送过来、银行接口系统支持银行系统的联机圈存操作…
- 当前系统任务:根据消费及圈存信息记录更新各学生账户信息…
第12页:基于计算机的系统结构
基于计算机的系统结构
- 对于基于计算机的系统而言
- 基于计算机的系统可以成为一个更大的基于计算机系统中的一个元素,称其为那个更大系统的宏元素
- 基于计算机的系统可呈现一个层次结构工厂自动化系统
第13页:为什么强调系统工程
为什么强调系统工程
- 被动选择:现实的信息系统往往是一个复杂的系统工程,其中的软件需要与系统中其它部件合理分配责任、密切配合,从而达到系统的总体目标
- 主动选择:只作自己擅长的事情
- 选择合适的硬件解决方案
- 选择基础软件解决方案,或者第三方软件部件和软件服务,不用自己
第14页:从硬件方面
例:一卡通结算系统中的安全性要求
- 从硬件方面,整个校园消费网络采用专线联接,不与校园网连通,同时要求敏感操作员使用USB Key进行身份认证
- 从应用软件方面,进行日志记录,并与USB Key认证接口进行集成
- 从制度方面:建立机房及核心服务器的日常安全管理制度,设置专人负责可疑交易信息的监控…
第15页:软件项目的客户方基础设施
软件项目的客户方基础设施
- 业务现状、人员现状
- 遗留数据、遗留系统以及重用的可能
- 是否处于一个规划中的更大系统之中,与其他系统的关系如何
第16页:软件项目的第三方基础设施
软件项目的第三方基础设施
- 基础软硬件系统
- 可用软件构件
- 特殊硬件设备:USB Key、加密狗等
- 可能的项目合作伙伴
第17页:内容摘要
内容摘要
第18页:计算机系统工程
计算机系统工程
- 计算机系统工程是一个问题求解的活动,其目的是分析基于计算机的系统的功能、性能等要求,并把它们分配到基于计算机系统的各个系统元素中,确定它们的约束条件和接口
第19页:计算机系统工程的任务
计算机系统工程的任务
- 识别用户的要求(了解问题)标识系统的功能和性能范围,确定系统的功能、性能、约束和接口
第20页:系统建模和模拟
- 系统建模和模拟(提出完整的解决方案)通常可考虑建立如下模型:硬件系统模型:描述基于计算机系统中的硬件(包括计算机、受系统控制的其它硬件设备等)配置、通信协议、拓扑结构、以及确保基于计算机系统的安全性、可靠性、性能等要求的措施。软件系统模型:描述各软件子系统的功能、性能等要求,它们在硬件系统中的部署情况,以及软件子系统之间的交互。人机接口模型:描述人如何与基于计算机的系统进行交互,包括用户环境、用户的活动、人机交互的语法和语义等。数据模型:描述基于计算机的系统使用了哪些数据库管理系统,如果使用多个数据库管理系统,还应描述它们之间的数据转换方式,必要时可给出主要的数据结构。
第21页:系统模型通常可用图形描述
系统模型通常可用图形描述,并加以相应的文字说明。必要时,在系统建模后可构造原型,进行系统模拟,以分析所建的模型能否满足整个基于计算机的系统的要求。
第22页:成本估算及进度安排
- 成本估算及进度安排(给出实施计划)对将开发的基于计算机的系统进行成本估算,并作出进度安排。
- 可行性分析(系统及实施方案的现实可行性)从经济、技术、法律等方面分析所给出的解决方案是否可行,通常只有当解决方案可行并有一定的经济效益和/或社会效益时才开始真正的基于计算机的系统的开发。
- 生成系统规格说明
第23页:内容摘要
内容摘要
第24页:可行性分析开发一个基于计算机的系统
可行性分析开发一个基于计算机的系统(以及其他系统)通常都受到资源(人力、财力、设备等)和时间上的限制,可行性分析主要从经济、技术、法律等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约束下完成
第25页:经济可行性分析
经济可行性分析
- 经济可行性主要进行成本效益分析,从经济角度,确定系统是否值得开发。
- 基于计算机的系统的成本主要包括:购置硬件、软件(如数据库管理系统、第三方开发的构件等)和设备(如传感器等)的费用系统的开发费用系统安装、运行和维护费用人员培训费用
第26页:效益经济效益包括使用基于计算机的系统后可
- 效益经济效益包括使用基于计算机的系统后可增加的收入和可节省的运行费用(如操作人员数、工作时间、消耗的物资等)。在进行成本效益分析时通常只统计五年内的经济效益。社会效益指使用基于计算机的系统后对社会产生的影响(如提高了办事效益,使用户满意等),通常社会效益只能定性地估计。经济效益通常可用货币的时间价值、投资回收期和纯收入来度量。
第27页:货币的时间价值
- 货币的时间价值(以利率计算的机会成本)设:当前金额为P,年利率为i,n年后的金额为F,则计算时,累计经济效益应折合成当前金额例如,一个基于计算机的系统使用后,每年产生的经济效益为10万,如果年利率为5%,那么,五年内该系统的累计经济效益是43.2948万,而不是50万。
第28页:投资回收期
- 投资回收期:累计的经济效益正好等于投资数(成本)所需的时间
- 纯收入:累计经济效益
- 投资数当纯收入大于零时,该工程值得投资开发当纯收入小于零时,该工程不值得投资(除非它有明显的社会效益)当纯收入等于零时,通常也不值得投资显然,纯收入越大越好
第29页:技术可行性分析
技术可行性分析
- 技术可行性主要根据系统的功能、性能、约束条件等,分析在现有资源和技术条件下系统能否实现。
- 技术可行性分析通常包括风险分析、资源分析和技术分析。
第30页:风险分析
- 风险分析:分析在给定的约束条件下设计和实现系统的风险。采用不成熟的技术可能造成技术风险人员流动可能给项目带来风险成本和人员估算不合理造成的预算风险风险分析的目的是找出风险,评价风险的大小,并有效地控制和缓解风险。
第31页:资源分析
- 资源分析:论证是否具备系统开发所需的各类人员、软件、硬件等资源和相应的工作环境。例如,有一支开发过类似项目的开发和管理的团队,或者开发人员比较熟悉系统所处的领域,并有足够的人员保证,所需的硬件和支撑软件能通过合法的手段获取,那么从技术角度看,可以认为具备设计和实现系统的条件。
第32页:技术分析
- 技术分析:分析当前的科学技术是否支持系统开发的各项活动。在技术分析过程中,分析员收集系统的性能、可靠性、可维护性和生产率方面的信息,分析实现系统功能、性能所需的技术、方法、算法或过程,从技术角度分析可能存在的风险,以及这些技术问题对成本的影响。技术可行性分析时通常需进行系统建模,必要时可建造原型和进行系统模拟
第33页:法律可行性分析
法律可行性分析
- 研究系统开发过程中可能涉及到的合同、侵权、责任以及各种与法律相抵触的问题
- 与计算机软件的使用场合相关的其他法律
- 例如:开发一套网络监控系统对员工在个人电脑上的所有行为进行监控?
第34页:方案的选择和折衷
方案的选择和折衷
- 一个基于计算机的系统可以有多个可行的实现方案,每个方案对成本、时间、人员、技术、设备都有不同的要求,不同方案开发出来的系统在功能、性能方面也会有所不同。因此要在多个可行的实现方案中作出选择。
- 方案评估的依据是待开发系统的功能、性能、成本、开发时间、采用的技术、设备、风险以及对开发人员的要求等。
- 由于系统的功能和性能受到多种因素的影响,某些因素之间相互关联和制约。
- 如,为达到高的精度就可能导致长的执行时间,为达到高可靠性就会导致高的成本等等。因此,在必要时应进行折衷。
第35页:可行性分析的结论
可行性分析的结论
- 可以立即开始进行
- 需要推迟到某些条件(例如资金、人力、设备等)落实之后才能开始进行
- 需要对开发目标进行某些修改之后才能开始进行
- 因为某种原因(如,技术不成熟、经济上不合算等)不能进行