系统分析与设计概述
信息系统概述
what
信息系统是一种能够完成对业务数据进行采集、转换、加工、计算、分析、传输、维护等信息处理,并能就某个方面问题给用户提供信息服务的计算机应用系统。
组成
- 信息化基础设施(计算机、计算机网络、服务器、系统软件等)
- 应用软件
- 数据库系统
- 业务数据
- 用户
类型
业务处理系统
业务处理系统(Transaction Process System, TPS)是一类运用IT技术对机构业务活动(如订购、销售、支付、出货、核算等)进行信息处理,实现业务处理自动化与提高业务处理效率的信息系统。
- 商业终端销售系统
- 网络银行业务系统(中国建设银行网上银行)
- 航空机票订票系统
- 酒店系统
- 铁路12306客票订票系统
管理信息系统
管理信息系统((Manage Information System,MIS)是一类以机构信息管理为主导,利用计算机软硬件、网络通信、数据库等IT技术,对机构职能进行整体信息化管理,以达到提高机构工作效率和服务价值,并支持机构职能与运营管理的信息系统。
- 人力资源管理信息系统
- 企业CRM系统
- 企业ERP系统
- 学籍管理信息系统
- 企业生产安全管理系统
客户关系管理 (CRM) 是一种企业软件,可将客户与您的企业互动的方式自动化。CRM 通常是更大的客户体验 (CX) 应用套件的一部分,该套件还包括营销、广告、电商和客户服务解决方案。CRM 系统跟踪和存储所收集的所有客户数据,包括客户与销售代表的沟通、建议、购买历史和服务请求。许多 CRM 解决方案通过第三方数据源来补充这些客户记录,以确保联系数据的完整性和及时性。然后,所有这些客户数据可以在整个企业进行共享,让用户可以更好地了解在每个接触点发生了什么事情。优秀的 CRM 解决方案还使用人工智能 (AI) 来分析客户的历史,并为推荐下一步销售行动。
企业资源计划 (ERP) 是一种商业软件,主要用于管理、自动化和连接日常的后台业务流程,如会计、采购、项目管理、供应链管理、风险管理和人力资源。一个 ERP 套件还可能包括企业绩效管理 (EPM) 软件,用于帮助企业针对财务结果制定计划和编制预算,以及预测和报告财务结果。通过在一个单一的技术平台上统一这些业务流程,企业可以简化运营和工作流程。ERP 系统可从多个来源收集企业内部共享的交易数据,促进相关数据在部门之间流动,消除数据重复,并将数据存储在一个中央位置,形成单一可信数据源来确保数据的完整性。
决策支持系统
决策支持系统(decision support system ,简称DSS)是一类通过数据分析、模型评估和知识推理等信息处理,以人机交互方式,为决策者解决特定梦略问题提供服务支持的信息系统。
- 防汛指挥决策支持系统
- 法定传染病疫情预测信息系统
- 电信营销大数据分析系统
- 铁路区域地质灾害预警系统
- 突发公共卫生事件应急预案系统
专家系统
专家系统(Expert System, ES)是一种具有获取、存储与利用专家知识解决某类问题的信息系统。它一般是采用人工智能中的知识表示、知识推理、深度学习等技术来模拟通常由领域专家才能解决的复杂问题。 典型专家系统应用:
- AlphaGo围棋机器人
- 蛋白质鉴定专家系统
- 城市建设规划与设计专家系统
- 蔬菜病虫害诊断专家系统
办公自动化系统
办公自动化系统(Office Automation,OA)是一种实现办公业务流程信息化、自动化处理的信息系统。
- 政务办公系统
- 高校办公系统
- 企业办公系统
知识工作支持系统
知识工作支持系统(Knowledge Work System,KWS)是一种具有强大的数据、图形、图像以及多媒体处理能力,能够在网络化条件下广泛应用多方面信息和技术资源,并为知识工作者提供设计创造、技术创新等服务工具的信息系统。
- 工程制图系统(AutoCAD)
- 影像非线性编辑系统
- CASE(计算机辅助软件工程)工具
- Power Designer软件系统
关系
利益相关者
用户分类
-
系统内部用户
- 业务人员
- 主管、经理和总经理
-
系统外部用户
- 客户
- 供应商
- 合作伙伴
开发人员
-
系统分析人员
- 系统分析师
- 业务领域专家
-
系统设计人员
- 系统架构师
- 软件工程师
- 界面工程师
- 数据库工程师
-
系统构造人员
- 软件程序员
- 硬件工程师
- 网络工程师
- 系统集成工程师
-
系统管理人员
- 客户经理
- 项目经理
- 质量保证人员
- 测试经理
信息系统软件
类型
- 应用软件
- 支撑软件(中间件)
- 系统软件
其他分类
按开发方式分:
- 通用软件产品
- 定制软件系统
按授权许可分类:
- 产品软件
- 自由软件
- 共享软件
- 免费软件
- 公共软件
- 开源软件
特性
- 软件是逻辑代码组成的程序集合,非有形物体。
- 软件不会损耗,但会因失去价值被弃用。
- 软件是开发人员通过脑力劳动开发出来的,还不能做到生产线制造。
- 软件还未完全实现标准化构件组装系统。
软件开发需解决的本质问题
- 复杂性------随应用领域、规模、业务不同,软件复杂性差别较大。
- 一致性------软件都要求与其运行环境的软硬件平台兼容一致。
- 可变性------因业务过程与需求不断变化,应用软件需具有可变性(如软件版本升级)才能保持软件长久的生命力。
质量属性
功能性(Functionality):是指软件所实现的功能可达到它所设计规范和满足用户需求的程度。
可靠性(Reliability):是指在规定的时间和条件下,软件所能维持其正常的功能操作、性能水平的程度。
易用性(Usability):是指用户学习、操作、使用软件所需努力的程度。
效率(Efficiency):是指软件系统的处理效能,如处理时间、资源使用率。
可移植性(Transportability):是指软件从一个计算机系统环境移植到另一计算机环境的容易程度。
可维护性(Maintainability):是指当一个软件投入运行后,若需求发生变化、环境发生改变或软件发生错误时,进行修改所做努力的程度。
可用性(Availability):用来衡量软件在特定场景下,用户使用它有效并且满意地达成特定目标的程度。
可扩展性(Extensibility):是指软件增加新功能、扩充系统能力的难易程度。可伸缩性(Scalability):用来衡量软件在负载变化的情况下,系统处理性能的变化程度。
安全性(Safety):用来衡量软件防止非法访问、数据丢失、病毒危害、非授权入侵等事件出现的能力。
健壮性(Robustness):用来衡量软件在遭遇意外事件情况时,系统能继续正确执行功能的程度。
互操作(Interoperability):用来衡量软件与其他软件系统进行数据交换和服务相互访问的难易程度。
信息系统开发过程
信息系统生命周期是指从提出系统的构想开始,经历系统规划、系统开发、系统运行与维护,到系统终止的时间过程。
- 系统规划阶段
- 系统需求分析阶段
- 系统设计阶段
- 系统构造阶段
- 系统测试阶段
- 系统运行与维护阶段
以工程项目方式来管理系统开发过程、支持过程、组织过程中的大量任务活动,才能确保项目在规定时间内按照质量要求完成信息系统开发任务。
系统开发过程模型
系统开发过程模型是指开发者在长期工程实践中积累的有效解决系统开发工程活动组织的特定模式。
瀑布开发过程模型
在瀑布开发过程模型中,系统开发活动严格按生命周期阶段线性顺序开展,并在每个阶段都会创建和提交大量文档。
模型特点:
- 系统开发过程活动组织简单,项目阶段划分明确,具有完整的开发文档支持,便于项目管理。
- 需要大量的文档工作和审查工作,通常会影响系统项目的进度,分散开发人员精力。
- 用户经过较长周期才能见到信息系统的雏形,对系统项目的反馈迟缓,这会带来项目风险。
- 在系统开发初期,通常难以获得用户的完整需求,这会导致瀑布开发过程难以开展。
应用场景: 瀑布开发过程模型作为一种经典的系统开发过程模型,只适合于需求十分明确、规模较小的系统项目。
原型开发过程模型
在原型开发过程模型中,仅基于初始需求,便可采用快速开发方法与工具,及早给出初始版本的原型系统。用户反馈与新需求进入系统下一版本迭代开发,从而解决瀑布开发过程模型的局限。
模型特点:
- 能够开发出真正满足用户需求的信息系统,能够较快地提交系统的初始功能版本给用户使用。
- 需求变更能够很快在系统开发中得到反馈。
- 系统项目开发难以标记进展的里程碑、项目管理较复杂。
- 若系统体系结构设计不健壮,多次迭代会使系统稳定性受到挑战。
- 原型开发过程模型还需要具有系统快速开发能力的工具支持。
应用场景: 原型开发过程模型适合于有大量人机交互界面的系统项目,也适合那些需求初期不太明确的系统项目。
螺旋式开发过程模型
螺旋式开发模型也是一种进化迭代式的系统开发过程模型,它兼顾了原型开发过程的迭代特征和瀑布开发过程的系统化与严格审核优点。
模型特点:
- 引入了其他模型不具备的风险分析,使项目在无法排除重大风险时有机会停止,以减小项目损失。
- 在系统开发活动由内向外沿着螺线进行迭代开发。每次迭代都将获得系统的一个发布版本,直到获得完全满足用户需求的版本才成为最终系统。
- 每次迭代开发都进行风险分析固然很好,但项目进度会延后,成本会增加,其项目开发的代价较高。
- 相对瀑布开发过程模型和原型开发过程模型,螺旋式开发过程模型的项目管理更复杂,需要更多的开发活动组织管理。
应用场景:
螺旋式开发模型适合于大型复杂的系统开发,特别强调系统开发的风险分析。
统一软件开发过程模型
统一软件开发过程(Rational Unified Process,RUP)是一种用例驱动的、增量迭代的、以体系架构为中心的系统开发过程模型。
模型特点:
- 面向对象、用例驱动、以架构为中心开发系统。
- 增量迭代开发,以质量控制和风险管理为目标。
- 与UML配套、可定制流程框架。
应用场景: 统一软件开发过程模型综合了以前的多种系统开发过程模型的优点,全面考虑了系统开发的技术因素和管理因素,适合于大型复杂系统开发。
敏捷软件开发模型
敏捷软件开发(Agile software development)是一种精简的、快速的、增量迭代的系统开发过程模型。
模型特点:
- 提出一种轻量级开发过程模型方法,强调编程人员与业务专家之间的紧密协作、面对面的沟通、适应需求变化的代码编写。
- 注重系统开发过程中人的作用、最小化文档编写,快速发布系统版本功能,并能够处理不断变化的用户需求。
- 解决传统重量级开发过程模型在中小型系统项目中存在成本高、周期长、难以适应快速需求变更等局限。
应用场景: 敏捷开发模式注重系统快速开发,且适用于解决早期需求模糊或需求变更频繁的系统开发项目。
系统开发方法与工具
系统开发策略
-
自行开发
利用机构自身IT人员开发实现信息系统的开发方法。
优缺点:
- 可以得到满足自身需求的信息系统,并且通过系统开发培养自己的团队。
- 组织专业规范的系统开发和实施严格的质量保证较困难,通常需要外部咨询和技术培训。
- 所开发的系统可能存在通用性、稳定性、完整性的局限。
-
委托开发
委托专业IT公司针对本机构业务需求定制开发信息系统的开发方法。
优缺点:
- 能够利用专业IT公司的技术优势和信息化经验,以较低的成本开发信息系统。
- 机构自身可以节省人力资源,可专心于业务优化改进,将精力集中到具有较高价值回报的活动中。
- 需要配备精通业务的分析人员,与开发团队进行大量的交流、沟通。
- 依赖于专业IT公司的技术支持,后期系统维护较困难。
-
购买商品软件
通过购买商品化软件包,并在此基础上实现信息系统的定制配置。
优缺点:
- 客户省时省力,短时间就可建立信息系统,效果可以立竿见影。
- 购买到完全符合机构自身需求的系统不容易。
- 受限于现有软件局限,难以满足业务需求变化。
-
联合开发
机构与专业IT公司联合开发信息系统的开发方法。
优缺点:
- 充分发挥客户团队和开发团队的优势,有利于自身技术力量的培养。
- 依赖于双方精诚团结,自身需要有一定的系统分析与设计能力。
系统开发方法
-
结构化方法
结构化方法是面向过程的软件开发方法,由结构化分析方法、结构化设计方法和结构化程序设计方法组成。 其基本思想如下:
-
自顶向下
-
逐步求精
-
系统模块分解
-
以过程为中心构建软件系统
结构化方法典型技术:
数据流图、数据字典、层次结构图设计、E-R关系图设计、程序流程图设计、伪代码设计、结构化编程等。
结构化方法优缺点: 简单实用、技术成熟、容易应用。 但对规模较大及处理复杂的软件系统项目不太适合,存在难以适应需求变更,难以解决软件复用,难以进行软件维护,难以提高软件生产效率等问题。
当前软件开发现状: 现在的软件系统项目大多具有功能复杂、规模较大、异构平台、快速交付、可维护性和可靠性要求高等特性。结构化方法不能适应这些要求。需有新的软件开发方法去应对。
-
-
面向对象软件开发方法
面向对象方法是一种将面向对象思想应用于软件开发过程、指导软件开发活动的方法。
-
面向对象分析
-
面向对象设计
-
面向对象编程
面向对象基本思想:
- 客观世界是由各种对象(Object)组成,复杂对象可以由简单对象组成。
- 类(Class)是具有相同特征对象的模板,将对象的属性数据和操作程序封装在一起。
- 对象之间通过消息(Message)传递实现行为交互,以模拟现实世界中不同事物之间的联系。
-
-
基于构件软件开发方法 基于构件软件开发方法是一种基于分布式对象技术、强调通过可复用构件设计与构造软件系统的开发方法。
- 从业务功能视角出发,采用比面向对象方法更高一级的抽象技术设计实现软件,其软件重用度可以得到提高。
- 将软件开发的重点从程序编写转移到了基于已有构件的组装,以更快方式构造系统,减轻支持与升级大型系统所需要的维护负担,从而降低软件开发的费用。
优缺点:
- 构件开发使得软件重用度、开发效率得到提高,确保软件质量。
- 软件构件开发是与编程语言紧密联系,容易导致构件接口标准不统一,不同开发语言实现的构件难以实现互操作。
-
面向服务的系统开发方法 基于面向服务思想,采用松耦合、粗粒度软件功能重用的系统开发方法。
- 面向服务的系统开发方法关注点是业务,它直接映射到业务,强调IT与业务的对齐,以业务服务为核心元素来封装业务功能或已有应用系统。
- 服务比构件的粒度更大,更加匹配机构信息化应用中的业务,可以实现更高级别的软件重用。
优缺点:
- 可以实现跨平台的功能复用,也可复用现有应用系统。
- 开发技术复杂,需要解决较多的分布式应用难点技术问题。
系统开发工具与环境
-
开发工具
按照开发过程分类:
- 项目管理工具(Project)
- 版本控制管理工具(VisualSVN Server)
- 分析与设计工具(PowerDesigner、Enterprise Architect)
- 程序开发工具(Eclipse)
- 系统测试工具(Apache JMeter)
- 系统维护工具
-
开发运行环境
系统开发环境是指在计算机硬件和系统软件平台上,进行信息系统开发及维护所使用的软件工具及集成环境。
系统运行环境是指信息系统运行所依赖的平台环境,包括操作系统软件、数据库软件、运行时软件等软件环境,以及服务器、网络设备、存储设备等硬件支持环境。
课堂练习与课堂作业
1.下面哪个不是信息系统利益相关者?(D)
A.客户B.用户 C.开发人员D.监理人员
2.下面哪项不是用户主要关注的软件质量属性?(B)
A.安全性B.可复用性C.灵活性D.高效性
3.在信息系统生命周期中,下面哪个阶段持续时间最长?(D)
A.系统需求分析B.系统设计 C.系统构造 D.系统运行与维护
4.下面哪种系统开发过程模型不需要迭代?(A)
A.瀑布开发过程模型 B.原型开发过程模型 C. RUP开发过程模型 D.敏捷软件开发过程模型
5.下面哪种系统开发策略可培养机构自身的开发团队?(D)
A.自行开发 B.委托开发 C.购买商品化软件包 D.联合开发
1.项目经理是系统构造人员之一。(×)
2.信息系统是指一类处理信息的系统软件。(×)
3.系统规划是在项目立项之后进行的。(×)
4.敏捷软件开发过程模型是一种轻量级的过程模型。(√)
5.应用软件依赖于系统运行环境。(√)
信息系统通常由信息化基础设施、应用软件、数据库管理系统、数据库、业务数据、(用户)等要素组成。
软件被划分为系统软件、应用软件和(中间件)。
在信息系统生命周期中的(系统规划)、系统需求分析、系统设计阶段进行系统分析与设计活动。
在螺旋式开发过程模型中,系统软件编码是在(实施工程)阶段的开发活动。
复用粒度最大的系统开发方法是(面向服务开发)。