为什么需要系统工程?
在软件工程中讨论的系统是基于计算机的系统。
例如,开发某政府的电子政务系统,设计多台计算机、网络结构、通信协议、多个软件系统、数据库、使用系统的各类人员、相关的文档及规程等。对某些系统,如嵌入式系统,还涉及其他的硬件设备,软件的运行受到设备的制约。
因此,在软件开发的一开始,就要先进行系统工程,分析该基于计算机系统的系统元素,系统元素间的拓扑结构(即系统建模),确定每个软件的语境。
当工作的语境集合于业务企业时,进行业务过程工程;当关注产品生产的过程时,称为产品工程。
什么是基于计算机的系统?有哪些组成元素?
定义: 基于计算机的系统是指:通过处理信息来完成某些预定义目标而组织在一起的元素的集合或排列。
组成基于计算机系统的元素主要:软件、硬件、人员、数据库、文档和规约。
各元素的简单描述:
- 软件
软件是指计算机程序、数据结构和一些相关的工作产品,用以实现所需的逻辑方法、规程或控制。 - 硬件
硬件是指提供计算能力的电子设备、支持数据流的互连设备(如网络交换器、电信设备和支持外部功能的机电设备(如传感器、马达等)。 - 人员
人员是指硬件和软件的使用者和操作者。 - 数据库
数据库是指通过软件访问并持久存储的大型的由组织的信息集合。 - 文档
文档是指描绘系统的使用和/或操作的描述性信息(如模型、规格说明、使用手册、联机帮助文件、Web站点) - 规程
规程是指定义每个系统元素或其外部相关流程的具体使用步骤。
系统工程的目标和任务是什么?
目的: 分析基于计算机的系统的功能、性能等要求,并把它们分配到基于计算机系统的各个系统元素中,确定它们的约束条件和接口。
任务:
- 识别用户的要求
识别用户对基于计算机的系统的总体要求,标识系统的功能和性能范围,确定系统的功能、性能、约束和接口。 - 系统建模和模拟
1) 硬件系统模型
描述基于计算机系统中的硬件(包括计算机、受系统控制的其他硬件设备等)配置、通信协议、拓扑结构,以及确保基于计算机系统的安全性、可靠性、性能等要求的措施。
2)软件系统模型
描述各软件子系统的功能、性能等要求,各软件子系统在硬件系统中的部署情况,以及软件子系统之间的交互。
3)人机接口模型
描述人如何于基于计算机的系统进行交互,包括用户环境、用户的活动、人机交互的语法和语义等。
4)数据模型
描述计算机的系统使用了哪些数据库管理系统,如果使用多个数据库管理系统,还应描述它们之间的数据转换方式,必要时可给出主要的数据结构。 - 成本估算及进度安排
资金投入和时间约束(交付日期) - 可行性分析
从经济、技术、法律等方面分析所给出的解决方案是否可行,通常只有当解决方案可行并有一定的经济效益和/或社会效益时,才真正开始基于计算机的系统的开发。 - 生成系统规格说明
完成以上各任务后,应该形成一份系统规格说明,作为以后开发基于计算机的系统的依据。系统规格说明描述基于计算机的系统的功能、性能和约束条件,描述系统的输入输出和控制信息,给出各系统元素的模型,进行可行性分析,最后给出成本估算和进度安排计划。
可行性分析
开发一个基于计算机的系统通常都受到资源和时间上的限制,可行性分析主要从经济、技术、法律等方面分析所给出的解决方案是否可行,能否在规定的资源和时间的约束下完成。
经济可行性
- 成本
-购置硬件、软件(如数据库管理系统、第三方开发的构件等)和设备(如传感器等)的费用。
-系统的开发费用。
-系统安装、运行和维护费用。
-人员培训费用。 - 效益
-经济效益:包括使用基于计算机的系统后可增加的收入和可节省的运行费用(如操作人员、工作时间、消耗的物资等)。在进行成本效益分析通常只统计5年内的经济效益。可用地度量:货币的时间价值、投资回收期和纯收入。
-社会效益指使用基于计算机的系统后对社会产生的影响(如提高了办事效益,使用户满意等),通常社会效益只能定性地估计。 - 货币的时间价值
由于货币贬值等因素,若干年后的P元钱不能等价于开发时的P元钱,因此要考虑货币的时间价值。 - 投资回收期
指累计的经济效益正好等于投资数(成本)所需的时间。投资回收期越短越好。 - 纯收入
指出了若干年内扣除成本后的实际收入。
从经济角度看,当纯收入大于零时,该工程值得投资开发;当纯收入小于零时,该工程不值得投资(除非它有明显的社会效益);当纯收入等于零时,通常也不值得投资,因为开发一个项目都存在一定的风险,在承担这些风险后仍不能得到经济的回报。
技术可行性
- 风险分析
目的是找出风险,评价风险的大小,分析能否有效地控制和缓解风险。 - 资源分析
主要论证是否具备系统开发所需地各类人员、软件、硬件等资源和相应地工作环境。 - 技术分析
主要分析当前的科学技术是否支持系统开发的各项活动。
法律可行性
主要研究系统开发过程中可能涉及到的合同、侵权、责任以及各种于法律相抵触的问题。
方案的选择和折衷
方案评估的依据是待开发系统的功能、性能、成本、开发时间、采用的技术、设备、风险以及对开发人员的要求等。有时,为了达到高精度可能导致长的执行时间,为了达到高可靠性就会导致高成本等。因此在必要时应进行折衷。