第一章 系统工程与信息系统基础
1 软件开发方法
(1) 结构化开发
特点:用户至上,自顶而下,逐步分解,严格区分工作阶段,每阶段都有任务和结果,强调系统开发过程的整体性和全局性,系统开发过程工程化,资料文档标准化。
优点:理论基础严密,它的指导思想是在用户需求在系统建立之前就能被充分了解和理解。由此可见,结构化开发方法注重开发过程的整体性和全局性。
缺点:开发周期长,文档,设计说明繁琐,工作效率低。要求在开发之初全面认识系统的信息需求,充分预料各种可能的变化,但这并不十分的现实;若用户参与系统开发的积极性没有充分调动,就会造成系统交接过程不平稳,使系统的运行与维护管理难度加大。阶段固化,不删变化,只适用于需求明确的开发场景。
(2) 原型开发方法
适用于需求不明确的开发场景。按功能分为水平原型(界面)、垂直原型(复杂算法);按最终结果,分为抛弃式原型和演化式原型。原型法的特点在于原型法对用户的需求的动态响应、逐步纳入的,系统分析,设计和实现都是随着对一个工作模型的不断修改而同时完成的,相互之间并不明显界限,也没有明确分工。系统开发计划就是一个反复修改的过程。适用于用户需求开始时定义不清、管理决策方法结构化程度不高的系统开发,开发方法更易被用户接受;但如果用户配合不好,盲目修改,就会拖延项目进度。
(3) 面向对象开发方法
最早起源于仿真领域,其特点是系统的描述及信息模型与客观实体相对应,符合人们的思维习惯,有利于开发过程中用户与开发人员的交流和沟通,缩短开发周期,提供系统开发的准确性和效率。具有更好的复用性,关键在于建立一个全面、合理、统一的模型,分析,设计、实现三个阶段界限不明确。
用面向对象方法开发软件,通常需要建立三种形式的模型:对象模型(描述系统的数据结构),动态模型(描述系统的控制结构),功能模型(描述系统功能)
(4) 面向服务开发方法
以粗粒度、松散耦合的系统功能为核心,强调系统的标准化和构件化,加强了系统的灵活性、可复用性和可演化性。
从概念上讲,SO方法有三个主要的抽象级别:操作,服务,业务流程。
操作:代表单个逻辑工作单元(LWU)的事务。
服务:代表操作的逻辑分组。
业务流程:为实现特定业务目标而执行的一组长期运行的动作和活动
2 信息系统分类
信息系统的分类 |
关键点 |
业务处理系统(TPS) |
早期最初级的信息系统[20世纪50-60年代] 功能:数据输入、数据处理[批处理、OLTP]、数据库维护、文件报表产生 |
管理信息系统(MIS) |
高度集成化的人机信息系统。 金宇塔结构:分多个层级 |
决策支持系统(DSS) |
由语言系统、知识系统和问题处理系统组成。 用于辅助决策、支持决策。 |
专家系统(ES) |
知识 + 推理=专家系统。人工智能的一个重要分支。 |
办公自动化系统(OA) |
有计算机设备、办公设备、数据通信、网络设备、软件系统组成。 |
企业资源计划(ERP) |
打通供应链,集成,整合 |
3 政府信息化与电子政务
电子政务有3类角色:政府(Government),企(事)业单位(Business),公民(Citizen)。如有第四类就是公务员(Employee)。
类型 |
应用 |
政府对政府(G2G) |
基础信息的采集、处理和利用,如:人口,地理信息,及政府间的计划管理,财务管理,通信系统,各级政府的决策支持。 |
政府对企(事)业单位(G2B) |
政府给企(事)业单位颁发【营业执照、许可证、合格证、质量认证】 |
企(事)业单位对政府(B2G) |
企业向政府缴税 企业向政府供应商品和服务 企业向政府申诉和建议 |
政府对公民(G2C) |
社区公安与水火,天灾等公共安全有关的信息 户口、各种证件和牌照的管理 |
公民对政府(C2G) |
个人向政府缴纳各种税款和费用 个人向政府反馈民意 报警服务(盗贼,医疗,急救,火警) |
政府对公务员(G2E) |
政府内部管理系统 |
4 企业信息化与电子商务
4.1 信息化概念
信息化指在国家宏观信息政策指导下,通过信息技术开发、信息产业的发展、信息人才的配置,最大限制的利用信息资源满足全社会的信息需求,从而加速社会各个领域的共同发展以推进信息社会的进程。
信息化的主体是全体社会成员(政府、企业,团体和个人),时域是一个长期的过程,空域是经济与社会的一切领域,手段是先进的社会生产工具。
4.2 企业信息化涉及三类创新
【技术创新】在生产工艺设计,产品设计中使用辅助设计系统,并通过互联网及时了解和掌握创新的技术信息,加快从技术到生产的转化。还有,生产与信息技术相结合,能够大幅度提高技术水平和产品竞争力。
【管理创新】按照市场的要求,要对企业现有的管理流程重新整合,从作为管理核心的财务,资金管理,转向技术,物资,人力资源管理,并延展到技术创新,工艺设计,产品设计,生产制造过程的管理,进而扩展到客户关系管理、供应链管理乃至发展到电子商务。
【制度创新】对那些不适合企业信息化的管理体制,管理机制和管理制度必须得到创新。
4.3 信息化需求的三个层次
组织对信息化的需求是【组织信息化的动力】。
一、战略需求
组织信息化的目标是提高组织的竞争能力、为组织的可持续发展提供一个支持环境。从某种意义来说,信息化对组织不仅仅是服务的手段和实现现有策略的辅助工具,信息化可以把组织的战略提升到一个新的水平,为组织带来新的发展契机。特别对于企业,信息化战略是企业竞争力的基础。
二、运作需求
组织信息化的运作需求是组织信息化需求非常重要且关键的一环,它包含三个方面的内容:一、实现信息化战略目标的需要;二、运作策略的需要;三、人才培养的需要。
三、技术需求
由于系统开发时间过长等问题在信息技术等层面上对系统的完善、升级、集成和整合提出了需求。也有的组织,原来基本没有大型的信息系统项目,一般从头开发新的系统。
4.4 信息化方法
业务流程重构方法:“彻底的,根本的”重新设计流程
核心业务应用方法:围绕核心业务推动信息化
信息系统建设方法:建设信息系统作为企业信息化的重点和关键
主题数据库方法:建立面向企业核心业务的数据库,消除“信息孤岛”
资源管理方法:切入点是为企业资源管理提供强大的能力,如:ERP、SCM等。
人力资本投资方法:人力资本理论【注意不是人力资源管理】,把一部分企业的优秀的企业员工看做一种资本,能够取得投资效益。
4.5 信息系统战略规划(ISSP)
信息系统战略规划(Information System Strategic Planning)从企业战略出发,构建企业基本的信息架构,对企业内、外资源进行统一规划、管理和利用、利用信息控制企业行为,辅助企业进行决策,帮助企业实现战略目标。
ISSP方法经历了三个主要阶段,各个阶段所使用的方法也不一样。
4.5.1 第一个阶段
以数据处理为核心,围绕职能部门需求的信息系统规划,主要的方法包括:
(1) 企业系统规划法(BSP)-- CU矩阵:自上而下识别系统目标,自上而下设计信息系统,对组织结构的变化具有适应性。
(2)关键成功因素法(CSF):找出实现目标的关键信息集合,从而确定开发优先顺序。
(3)战略集合转化法(SST):把战略目标看做“信息集合”,把战略目标转化为信息系统的战略目标。
(4)其他方法:投资回收法、征费法、零线预算法、阶石法
4.5.2 第二个阶段
主要以企业内部管理信息系统为核心,围绕企业整体需求进行的信息系统规划,主要的方法包括战略数据规划法(SDP),信息工程法(IE)和战略栅格法(SG)。
4.5.3 第三个阶段
在综合考虑企业内外部环境的情况下,以集成为核心,围绕企业战略需求进行的信息系统规划,主要的方法包括价值链分析法(VCA)和战略一致性模型(SAM)。
4.6 企业资源规划(ERP)
ERP把企业所有资源(企业三大流:物流、资金流、信息流)进行集成整合,全面一体化管理的管理信息系统。
包括三方面:生产控制(计划、制造)、物流管理(分销、采购、物流管理)和财务管理(会计核算、财务管理)。这三个系统本身就是一个集合体,他们相互之间有响应的接口,能够很好的整合在一起。
4.7 客户关系管理(CRM)
客户关系管理(Customer Relationship Manage)理念:把客户看做资产;客户关怀是中心,目的是与客户建立长期和有效的客户关系,最大限度的增加利润。核心是客户价值管理,提高客户忠诚度和留存率。
CRM的主要模块:销售自动化;营销自动化;客户服务与支持;商业智能
CRM的价值:提高工作效率,节省开支,提高客户满意度、提高客户忠诚度。
4.8 商业智能(BI)
(1)过程
需求分析->数据仓库建模 -> 数据抽取 -> 建立BI分析报表 -> 用户培训和数据模拟测试 -> 系统改进和完善
(2)相关技术
数据仓库 + 数据挖掘 + OLAP
(3)用途
决策分析(分析历史预判未来)
(4)数据仓库
数据库 |
数据仓库 |
面向应用:应用组织数据 |
面向主题:主题组织数据 |
零散的:一个应用对应一个数据库 |
集成的:整个企业对应一个数据库 |
CRUD:增删查改是常态 |
相对稳定的,以查询为主,基本无修改和删除 |
解决当下应用问题 |
反映历史变化,预测未来 |
(5)数据挖掘
关联分析:挖掘出隐藏在数据间的关联关系
序列模式分析:侧重点是数据间的前后关系(因果关系)
分类分析:为每一个记录赋予一个标记,再按标记分类。
聚类分析:分析数据是哪种分类的。
(6)数据湖
概念:数据湖是一个存储企业各种各样原始数据的大型仓库;其中的数据可供存取,处理,分析和传输。
特点:数据湖从企业多个数据源获取原始数据,并针对不同的目的,同一份原始数据还可能有多种满足特定内部模型格式的数据副本。因此,数据湖中被处理的数据可能是任意类型的信息,从结构化数据到完全非结构化数据。
区别:数据仓库只支持分析处理,数据湖即支持分析处理,也支持事务处理。
4.9 企业应用集成
4.9.1 企业集成分类
按集成点分:
|
集成点 |
效果 |
关键点 |
界面集成 |
界面 |
统一入口,产生“整体”感觉 |
“整体”感觉 最小代码实现一体化操作 |
数据集成 |
数据 |
不同来源的数据逻辑和物理上“集中” |
其他集成方法的基础 |
控制集成 |
应用逻辑 |
调用其他系统已有方法,达到集成效果 |
|
业务流程集成 (过程集成) |
应用逻辑 |
跨企业,或优化统一流程而非直接调用 |
企业之间信息共享的能力 |
门户集成 |
整体 |
将内部系统对接到互联网统一门户 |
发布到互联网统一门户 |
按传输方式分:
|
特点 |
消息集成 |
数据量小,交互频繁,立即的,异步 |
共享数据库 |
交互频繁,立即的,同步 |
文件传输 |
数据量大,交互不频繁,及时性要求低(年末,月末) |
4.9.2 企业门户
企业信息门户(EIP Enterprise Information Portal):使员工/合作伙伴/客户/供应商都能够访问企业内部网络和Internet存储的各种自己所需的信息。
企业知识门户(EKP Enterprise Knowledge Portal):企业网站基础上增加知识性内容。【企业知识库】
企业应用门户(EAP Enterprise Application Portal):以商业流程和企业应用为核心,把商业流程中功能不同的应用模块通过门户集成在一起。【企业信息系统的网上集成界面】
垂直门户:为某一特定行业服务的,传送的信息只属于人们感兴趣的领域。
第二章 软件工程
1 软件过程模型
(1)原型模型
典型的原型开发方法模型。适用于需求不明确的场景,可以帮助用户明确需求。可以分为【抛弃式原型】和【演化式原型】
原型模型的两个阶段:
1、原型开发阶段
2、目标软件开发阶段
(2)瀑布模型
瀑布模型将软件生命周期中各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析,设计,编码,运行和维护。
瀑布模型的特点是严格区分阶段,各个阶段因果联系紧密相连,只适合需求明确的项目。
缺点:软件需求完整性、正确性难以保证。严格串行化,很长时间才能看到结果。
瀑布模型要求各个阶段一次性完成该阶段的工作,不太现实。
(3)增量模型
融合了瀑布模型的基本成分和原型实现的迭代特征,可以有多个迭代版本的发布,核心版本往往最先完成,在此基础上,每轮迭代都有新的增量发布,核心功能可以得到充分测试。强调每个增量均发布一个可操作的产品。
(4)螺旋模型
以快速原型为基础 + 瀑布模型,典型特点是引入风险分析。它是由制定计划、风险分析、实施工程、客户评估这一循环组成的,它最初由概念项目开始第一个螺旋。
(5)V模型
强调测试贯穿项目始终,而不是集中在测试阶段。是一种测试的开发模型。
(6)喷泉模型
典型的面向对象的模型,特点是迭代,无间隙。会将软件开发划分为多个阶段,但各个阶段无明显界限,并且可以迭代交叉。
(7)快速应用开发(RAD)
概念:快速应用开发是瀑布模型的一种高速变种,适用于比传统生命周期快的多的开发方法,它强调极短的开发周期,通常适用于基于构件的开发方法获得极速开发。
过程:业务建模 - 数据建模 - 应用生成 - 测试与交付
适用性:对模块化要求比较高,如果某些功能不能被模块化,则构件就会出现问题;如果高性能是一个指标,且必须调整结构使其适应系统构件才能取得,则RAD有可能不能奏效。RAD要求开发和客户必须在很短时间完成一系列的需求分析,任何一方配合不当都会导致失败,不适合技术风险很高的情况。
(8)构件组装模型
【优点】:易扩展、易重用、降低成本、安排任务更灵活。
【缺点】:构件设计需要经验丰富的架构师、设计不好的构件难重用,强调重用可能牺牲其他指标(如性能)、第三方构件性能难控制。
(9)统一过程(在软考中RUP,UP都是指统一过程)
典型特点是用例驱动、以架构为中心,迭代和增量。
统一过程把项目分为四个不同的阶段:
构思阶段(初始/初期阶段):定义最终产品视图和业务模型、确定系统范围。
细化阶段(精化阶段):确定及设计系统架构、制定工作计划和资源要求
构造阶段:开发剩余构件和应用程序功能,把这些构件集成成产品,并进行详细的测试。
移交阶段:确定软件对用户是可用的,进行β测试,制造产品发布版本。
9个核心工作流:业务建模、需求、分析与设计、实现、测试、部署、配置与变更管理、项目管理、环境。
(10)敏捷开发
敏捷开发是以人为核心,迭代、循序渐进的开发方法,适用于小团队和小项目,具有小步快跑的思想。常见的敏捷开发方法有极限编程法、水晶法,并列争球法和自适应软件开发方法。
极限编程(XP):一些对费用控制严格的公司中使用,非常有效,近螺旋式的开发方法。四大价值观(沟通【加强面对面沟通】、简单【不过度设计】、反馈【及时反馈】、勇气【接受变更的勇气】),十二大最佳实践(简单设计、测试驱动、代码重构、结对编程、持续集成、现场客户、发行版本小型化、系统隐喻、代码集体所有制、规划策略、规范代码、40小时工作机制)。
水晶方法:提倡“机动性”的方法,拥有对不同类型项目非常有效的敏捷过程。
开发式源码:程序开发人员在地域上分布很广【其他方法强调集中办公】
SCRUM:明确定义了可重复的方法过程。
特征驱动开发方法:认为有效的软件开发需要三要素【人、过程、技术】。定义了六种关键的项目角色:项目经理、首席架构师、开发经理、主程序员、程序员和领域专家。
敏捷软件开发(ASD Agile Software Development):其核心是三个非线性、重叠的开发阶段:猜测、合作与学习
动态系统开发方法(DSDM):倡导以业务为核心。
敏捷宣言:
个体与交互胜过过程和工具
可工作的软件胜过大量的文档
客户合作胜过合同谈判
响应变化胜过遵循计划
2 基于构件的软件工程(CBSE)
CBSE体现了“购买而不是重新构建”的哲学。
CBSE的构件应该具备的特征:
1 可组装性:所有外部交互必须通过公开定义的接口进行
2 可部署性:构件总是二进制形式的,能作为一个独立实体在平台上运行。
3 文档化:构件有完善的文档,用户可以根据文档判断构件是否满足需求
4 独立性:可以在无其他特殊构件的情况下,进行安装和部署。
5 标准化:符合某种标准化的构件模型
构件的组装
1 顺序组装 按顺序调用已经存在的构件,可以用两个已经存在的构件来创造一个新的构件
2 层次组装 被调用的构件“提供”接口,必须和调用构件“请求”的接口兼容
3 叠加组装 多个构件合并形成新构件,新构件整合原构件的功能,对外提供新的接口。
3 需求工程
3.1 需求工程阶段的划分
软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望。
软件需求是指用户解决问题或达到目标所需的条件或能力,是系统或系统部件要满足合同,标准、规范或其他正式规定文档所需的条件或能力,以及反映这些条件或能力的文档说明。
需求开发包括:需求获取、需求分析、形成需求规格、需求确认和验证
需求管理包括:变更控制、版本控制、需求跟踪、需求状态跟踪。
3.2 需求开发
3.2.1 需求获取
方法 |
特点 |
用户面谈 |
1对1到3个有代表性的用户,了解主观想法,交互好。成本高,要有领域知识支撑。 |
联合需求计划(JRP) |
高度组织的群体会议,各方参与,了解想法,消除分歧,交互好,成本高。 |
问卷调查 |
用户多,无法一一访谈,成本低 |
现场观察 |
针对较为复杂的流程和操作 |
原型化方法 |
通过简易系统解决早期需求不明确的问题 |
头脑风暴法 |
一群人围绕新业务,发散思维,不断产生新的观点 |
3.2.2 需求分析
结构化需求分析(SA)
结构化需求分析工具 - 数据流图(DFD)
元素 |
说明 |
图元 |
数据流 |
由一组固定成分的数据组成,表示数据的流向。每个数据流通常有一个合适的名词,反映数据流的含义 |
|
加工 |
加工描述了输入数据流到输出数据流之间的变换,也就是输入数据流做了什么处理后变成了输出数据流 |
|
数据存储(文件) |
用来表示暂时存储的数据,每个文件都有名字。流向文件的数据流表示写文件,流出的表示读文件 |
|
外部实体 |
指存在于软件系统外的人员或组织 |
面向对象需求分析
(1)面向对象基本概念
对象:属性(数据)+ 方法(操作)+ 对象ID
类(实体类、边界类、控制类)
实体类映射需求中的每个实体,实体类表示需要存储在永久存储体中的信息,例如:在线教育平台系统,可以提取出学员类和课程类,它们都属于实体类。
控制类是用于控制用例工作的类,一般由动宾结构的短语(动词+名词或名词+动词)转化来的名词,例如:用例“身份验证”可以对应一个控制类“身份验证器”,它提供了与身份验证相关的所有操作。
边界类用于封装在用例内,外流动的信息或数据流。边界类位于系统与外界的交接处,包括所有的窗体,报表,打印机,扫描仪等硬件的接口,以及其他系统的接口。
继承与泛化:复用机制
封装:隐藏对象的属性和实现细节,仅对外公开接口。
多态:不同对象收到相同的消息产生不同的结果。
接口:一种特殊的类,只有方法定义没有实现。
重载:类里可以有相同名称,不同参数的方法
消息与消息通信:消息的异步通信的。
(2)UML的概念
UML包含两组公共分类,分别是类与对象(类表示概念,而对象表示具体的实体)、接口与实现(接口用来定义契约、而实现就是具体的内容)
结构事物:结构事物在模型中属于最静态的部分,代表概念上或物理上的元素。UML上有七种结构事物,分别是类、接口、协作,用例、活动类、构件和节点。类是描述具有相同属性、方法、关系和语义的对象的集合,一个类实现了一个或多个接口;接口指类和构件提供特定服务的一组操作的集合,接口描述了类和构件的对外可见的动作;协作定义了交互的操作,是一些角色和其他事物一起工作,提供一些合作的动作,这些动作比事物的总和要大;用例描述一系列的动作,产生有价值的结果。在模型中,用例通常用来组织行为事物。用例是通过协作来实现的。活动类的对象有一个或多个进程或线程。活动类与类很相似,只是它的类代表事物的行为与其他事物同时存在;构件是物理上或可替换的系统部分,它实现了一组接口的集合;节点是一个物理元素,它在运行时存在,代表一个可计算的资源,通常占用一些内存和具有处理能力。一个构件集合通常位于一个节点,但有可能从一个节点转到另一个节点。
行为事物:行为事物是UML的动态部分,代表时间和空间上的动作。UML上主要有两种行为事物:第一种是交互(内部活动),交互是由一组对象之间在特定上下文中,为达到特定目的而进行的一系列消息交换而组成的动作。交互中组成动作的对象的每个操作都要详细列出,包括消息和动作次序(消息产生的动作)、连接(对象之间的连接);第二种是状态机,状态机有一系列对象的状态组成。
分组事物:分组事物是UML中组织的部分,可以把它们看做盒子,模型可以在其中进行分解。UML中只有一种事物 称为 包。包是一种将有组织的元素分组的机制。与构件不同的是,包纯粹是一种概念上的事物,只存在于开发阶段,构件则可以存在于系统运行阶段。
注释事物:是UML模型的解释部分
(3)UML图关系
用例关系包括:包含关系、扩展关系、泛化关系
包含关系:其中这个提取出来的公共用例称为抽象用例,而把原始用例称为基本用例或基础用例当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们。
扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述可能更加清晰。
泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他的用例作为泛化关系中的子用例。在用例的泛化关系中,子用例是父用例的一种特殊形式,子用例继承了父用例所有的结构、行为和关系。