系统架构师学习笔记(一)

现代信息系统“架构”三要素:构件、模式、规划;规划是架构的基石,也是这三个贡献中最重要的。

架构本质上存在两个层次:概念层,物理层。

搭建系统实现的核心架构,对整个软件架构、关键构件、接口进行总体设计,并澄清关键技术细节,给出开发规范,负责、管理并最终确认和评估非功能性系统需求。

主要着眼于系统的“技术实现”,同时还要考虑系统的“组织协调”。

要对所属的开发团队有足够的了解,能够评估该开发团队实现特定的功能需求目标和资源代价。

对软件工程标准规范有良好的把握。

系统架构师是一个高效工作团队的创建者,必须尽可能使所有团队成员的想法一致,为一个项目订制清晰的、强制性的、有元件的目标作为整个团队的动力;

必须提供特定的方法和模型作为理想的技术解决方案;

必须避免犹豫,必须具备及时解决技术问题的紧迫感和自信心。

系统分析师,需求分析,技术实现

系统架构师,系统设计,基于环境和资源的系统技术实现

项目管理师,资源组织,资源实现

由于职位角度出发产生冲突制约,不可能很好地给出开发规范,搭建系统实现的核心架构,并澄清技术细节,扫清主要难点。

所以把架构师定位在项目管理师与系统分析师之间,为团队规划清晰的目标。对于大型企业或项目,如果一人承担多个角色,往往容易发生顾此失彼的现象。

需要从大量互相冲突的系统方法和工具中区分出哪些是有效的,那些是无效的。

总结自己的架构模式,深入行业总结规律。

几天的培训不太可能培养出合格的软件架构师,厂商的培训和认证,最终目的是培养自己的市场,培养一批忠诚的用户或产品代言人,而不是为中国培养软件架构师。

计算机系统由硬件和软件组成,软件通常分为系统软件和应用软件。

系统软件支持应用软件的运行,为用户开发应用软件提供平台,用户可以使用它,但不能随意修改它。

常用的系统软件有操作系统、语言处理程序、连接程序、诊断程序、数据库等。

应用软件指计算机用户利用软硬件资源为某一专门的应用目的而开发的软件。

操作系统OperatingSystem,是计算机系统的核心系统软件。

1、操作系统定义

硬件资源包括中央处理器、存储器、输入输出设备。

软件资源是以文件形式保存在存储器上的程序和数据。

操作系统既有效组织和管理系统中各种软硬件资源,合理地组织计算机系统的工作流程,又控制程序的执行,为用户使用计算机提供了一个良好的环境和友好的接口。

2、操作系统分类

按功能不同分:单用户操作系统、批处理操作系统;分时操作系统、实时操作系统;网络操作系统、分布式操作系统;嵌入式操作系统。

3、操作系统的特征

并发性、共享性、虚拟性、不确定性。

4、操作系统的功能

进程管理、文件管理、存储管理、设备管理、作业管理。

1、进程的定义及其分类

进程通常由程序、数据、进程控制块PCB组成。

2、进程的状态转换与控制

就绪、运行、阻塞。

进程控制是通过进程控制原语实现的,进程控制原语主要有:创建原语、撤销原语、挂起原语、激活原语、阻塞原语、唤醒原语。

注:原语不可分割,不允许中断。

3、进程互斥与同步以及P/V操作

同步是使在异步环境下的各进程按一定的顺序和速度执行。

互斥要保证临界资源一次只能提供一个进程使用,称为临界资源CR。

PV操作是低级通信原语,在执行期间不可分割,P表示申请一个资源,V表示释放一个资源。

P操作定义:S:=S-1,若S>=0,则执行P操作的进程继续执行,否则若S<0,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。

V操作定义:S:=S+1,若S>0,则执行V操作的进程继续执行,否则若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续执行。

4、进程通信与管程

控制信息的交换称为低级通信,数据的交换称为高级通信。

高级通信的类型有共享存储系统、消息传递系统、管道通信。

在任一时刻最多只有一个进程能够真正地进入管程,其他的只能等待。

5、进程调度与死锁

产生死锁的四个必要条件:互斥条件、请求保持条件、不可剥夺条件、环路条件。

预防策略,破坏死锁的四个必要条件之一。

6、线程

线程是进程中的一个实体,是被系统独立分配和调度的基本单位。

线程只拥有一些运行中必不可少的资源。

同一个进程中的多个线程可以并发执行,线程具有:就绪、运行、阻塞,三个基本状态。

存储器的发展方向是:高速、大容量、小体积。

存储管理的主要任务是:如何提高主存的利用率、扩充主存以及对主存信息实现有效保护。

设备管理的目标是:提高设备的利用率,为用户提供方便统一的界面。

随机访问是指对文件中的信息可以按任意次序随机读写文件中的信息。

文件控制块FCB,描述和控制文件的数据结构。

常用的作业调度算法有:先来先服务、短作业优先、相应比高优先、优先级调度算法、均衡调度算法。

网络操作系统分为:集中模式、客户机/服务器模式、对等模式。

现代操作系统已经把网络功能包含到操作系统的内核中,作为操作系统核心功能的一个组成部分。

数据库的三要素:数据结构、数据操作、数据约束条件。

特别需要指出的是,E-R模型强调的是语义。

关系数据库设计理论的核心是数据间的函数依赖,衡量的标准是关系规范化的程度及分解的无损连接和保持函数依赖性。

数据依赖包括:函数依赖、非平凡的函数依赖、平凡的函数依赖、完全函数依赖、部分函数依赖、传递依赖、码、主属性、非主属性、外码、值依赖定义、函数依赖的公理系统。

事务是数据库环境中不可分割的逻辑工作单位。

四个特性:原子性、一致性、隔离性、持久性,ACID。

SQL语言中事务定义语句有三条:BEGINTRANSACTION事务开始、COMMIT事务提交、ROLLBAK事务回滚。

并发操作是指:在多用户共享系统中,用户可能同时对同一数据库进行操作。

带来的问题主要有:丢失更新、不可重复读、读脏数据。

并发控制主要技术是封锁:排他锁(简称X锁、写锁)、共享锁(简称S锁、读锁)。

保护数据库的关键技术在于建立冗余数据、即备份数据。

方法是:数据转储、建立日志。

需求分析、概念结构设计、逻辑结构设计、物理结构设计、应用程序设计、运行维护。

E-R方法的数据库概念结构设计可分三步:设计局部E-R模型、设计全局E-R模型、全局E-R模型优化。

分布式数据库系统的特点:数据的集中控制性、数据独立性、数据冗余可控性、场地自治性、存取有效性。

4层模式划分为:全局外层、全局概念层、局部概念、局部内层,各层还有相应的层间映射。

一般认为:数据仓库、连机分析处理、数据挖掘技术是商业智能BI的三大组成部分。

数据仓库的关键特征:面向主题、集成的、非易失的、时变的。

三层结构:数据仓库服务器、OLAP服务器(连机分析处理服务器)、前端工具。

数据仓库的实现步骤:规划、需求研究、问题分析、数据的抽取清洗集成装载、数据仓库设计、数据仓库管理、分析报表查询、数据仓库性能优化、数据仓库部署发布。

切片、切块、下钻、上卷、旋转等多维度分析与跨维度分析。

OLAP系统架构主要分为:基于关系数据库的ROLAP、基于多维数据库的MOLAP、基于混合数据组织的HOLAP。

数据挖掘是在没有明确架设的前提下去挖掘信息、发现知识。

所得的信息应具有先知、有效、实用,三个特征。

主要功能有5类:自动预测趋势和行为、关联分析、聚类、概念描述、偏差检测。

按通信距离分广域网、局域网、城域网;

按信息交换方式分电路交换网、分组交换网、综合交换网;

按拓扑结构分星型网、树形网、环形网、总线型网;

按传输带宽分基带网、宽带网;

按使用范围分公用网、专用网;

通信传播方式分广播式、点到点式……

OSI/RM:把复杂的问题分解开,保持了层次之间的独立性。

物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。

1、广域网、局域网、城域网

广域网又称远程网,覆盖范围广,传输速率相对低,以数据通信为主要目的的数据通信网。数据传输可靠性随着传输介质不同而不同、拓扑结构复杂。

局域网是指传输距离有限,传输速度较高,以共享网络资源为目的的网络系统,数据传输可靠误码率低,网络控制一般为分布式,总线拓扑、环形拓扑、星型拓扑、混合型。

城域网是一种较大范围的高速网络。

网络拓扑结构:网络中通信线路和节点的几何排序,反映各节点之间的结构关系,影响着整个网络的设计、功能、可靠性、通信费用等重要方面。

局域网和城域网都是IEEE802标准,决定局域网主要技术有:传输介质、拓扑结构、介质访问控制方法。

最重要的是介质控制访问方法。(CSMA/CD)

无线局域网具有以下优点:安装便捷、使用灵活、经济解约、易于扩展。IEEE8.2.11

2、网络互联

网络互联目的是使一个网络的用户能访问其他网络的资源,使不同网络上的用户能够互相通信、交换信息。

网络互联设备的作用是连接不同网络。

传输介质是信号传输的媒体,常用的介质分为有线介质和无线介质。局域网中,其基本组成部件为服务器、客户机、网络设备、通信介质、网络软件等。

3、Internet及应用

世界上规模最大、覆盖面最广且最具影响力的计算机互联网络,它将分布在世界各地的计算机利用开放系统互连协议连接在一起,用来进行数据传输、信息交换、资源共享。

TCP/IP作为Internet的核心协议,已被广泛应用于局域网和广域网中,主要特性为:逻辑编址、路由选择、域名解析、错误检测、流量控制、对应用程序的支持等。

TCP/IP是一个协议族,网际层除了IP协议外,还有ICMP、ARP、RARP等几个重要协议……

Internet的地址主要有两种书写形式:域名格式、IP地址格式。

www也称万维网/全球网,是指在Internet上以超文本为基础形成的信息网。采用统一的资源定位器URL和图文声并茂的用户界面。

1、网络管理

网络管理是对计算机网络的配置、运行状态、计费等进行管理。它提供了监控、协调、测试各种网络资源以及网络运行状况的手段,还可以提供安全处理和积分等功能。

OSI网络协议标准中定义了网络管理的5大基本功能:配置管理、性能管理、故障管理、安全管理、计费管理。

实际上还应该包括网络规划、网络操作人员管理等。

2、计算机网络安全

计算机网络安全是指计算机、网络系统的硬件、软件、数据受到保护,不因偶然或恶意的原因而遭到破坏、更改、泄漏,确保系统能连续、可靠地运行,使网络服务不中断。

网络安全从本质上讲就是网络上的信息安全。

信息的传输、存储、访问提供安全保护,以防止信息被窃取、篡改、非法操作。

信息安全的基本要素是保密性、完整性、可用性、真实性、可控性。

完整的信息安全保障体系应包括:保护、检测、响应、恢复。

信息安全术语:密码学、鉴别、Kerberos鉴别、公钥基础设施、数字签名、访问控制

3、VPN

所谓虚拟专用网,是建立在公用网上,没有专用物理连接,而通过ISP提供的公共网络来实现通信,VPN内部用户可以实现安全通信。

关键技术:隧道技术、加密技术、密钥管理技术、身份认证技术。

解决方案:内联网VPN、外连网VPN、远程接入VPN。

网络规划、网络设计阶段、工程组织、实施阶段、维护阶段。

RAID磁盘阵列,目的是建立数据冗余、增强容错、提高容量、增进性能。

网络存储体系结构大致分为三种:直接式存储DAS、网络连接存储NAS、存储区域存储SAN。

负载均衡LoadBalance从结构上分为:本地负载均衡、全局负载均衡。

一般情况下从传输链路聚合、采用更高层网络交换技术、设置服务器集群策略三个角度实现。

集群Cluster,大多数模式下,集群中所有的计算机拥有一个共同的名称,各节点服务器通过一个内部局域网相互通讯,集群内任一系统上运行的服务都可被所有的网络客户所使用,当一台节点服务器发生故障时,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管,客户也能很快自动地连接到新的应用服务器上。

媒体有两种含义:信息的载体、存储信息的实体。

根据ITU-T(原CCITT)建议,媒体有5种:感觉媒体、表示媒体、显示媒体、存储媒体、传输媒体。

多媒体技术是指:以数字化为基础,对多种媒体信息进行采集、编码、存储、传输、处理、表现,使之建立有机的逻辑联系,具有良好的交互性的技术。

多媒体的特征:多样性、集成性、交互性、实时性。

JPEG,JointPhotographicExpertsGroup,联合图像专家小组,是一种对静态图像压缩的编码算法。“联合”的含义是:CCITT和ISO联合组成的图像专家小组。

MPEG,MovingPictureExpertsGroup,运动图像专家小组,是作为一个国际标准来研究制订的,具有很好的兼容性。

其次,比其它算法提供更好的压缩比,最高可达200:1。更重要的是对数据损失很小。

不存在专利问题,适合大力推广。

数据压缩编码两大类:无损压缩编码法(也称冗余压缩法、熵编码法),有损压缩编码法(也称熵压缩法)。

对数据进行有效压缩将是多媒体发展中必须要解决的最关键的技术之一。

数据量大、种类繁多、关系复杂,是多媒体数据的基本特征。

虚拟现实

首先,“逼真”就是要达到三维视觉、听觉、触觉等效果;其次,通过人的感官与这个环境进行交互;最后,为用户提供一个逼真的操作环境。

虚拟现实是一种多技术多科学相互渗透集成的技术。

只能多媒体技术

将具有推理功能的知识库与多媒体数据库结合起来,形成智能多媒体数据库。

发展趋势:把多媒体和通信功能集成到CPU芯片中。

其一,专用设备、家电及宽带通信设备,可以取代这些设备中的CPU及大量Asic和其他新品。

其二,与现有的计算机系列兼容,同时具有多媒体和通讯功能。

系统性能是一个系统提供给用户的众多性能指标的集合。既包括硬件性能,也包括软件性能;既包括部件性能指标,也包括综合性能指标。

系统性能包含性能指标、性能计算、性能设计、性能评估,四个方面内容。

是一系列重复的受控的性能试验,循环的调整过程为收集、分析、配置、测试。

对测试结果做出解释,并形成一份文档的技术。

目的是为了性能的优化提供参考。

用得最多、最频繁的那部分核心程序作为评价计算机性能的标准程序,称为基准测试程序Benchmark。

1、客观性:反映了事物的运动状态和方式,既事实性。

2、普遍性:信息无所不在。

3、无限性:事物及其变化是无限多样的。

5、依附性:不能完全脱离物质而独立存在。

6、变换性:可以用不同的载体以不同的方法来负载。

8、层次性:信息可以分为战略级、管理级、操作级。

9、系统性:可以形成与现实世界相对应的信息系统。

信息化Informationalization,是以信息资源开发利用为核心,以网络技术、通讯技术等高科技技术为依托的一种新技术扩散的过程。

1、信息资源的开发利用

2、信息网络的全面覆盖,计算机网络、电信网、电视网等,逐步实现三网合一。

3、信息技术的广泛应用,这是信息化的基础。

4、信息产业的大力发展

5、信息化人才的培养

6、信息化政策和标准规范建设

基于web的架构是松散耦合的,优势在于能够在不同的网络及操作系统中运行;以服务器为中心,客户端瘦小、简单,容易在运行时实现自动升级。

电子政务的内容

1、政府与政府G2G

2、政府对企事业G2B

3、政府对居民G2C

4、企业对政府B2G

5、居民对政府C2G

物料需求计划MRP,物料单系统BOM,制造资源计划MRPII。

1、ERP的概念

企业的所有资源包括三大流:物流、资金流、信息流。

ERP是建立在信息技术基础上,全面地集成了企业的所有资源信息,并为企业提供决策、计划、控制、经营业绩评估的全方位和系统化的管理平台。

ERP是一种管理理论和管理思想,不仅仅是信息系统。

1.生产预测

市场需求是企业生存的基础,ERP中首先需要对市场进行较准确的预测,预测主要用于计划。

常用的预测方法有:德尔菲方法、移动平移法、指数平滑法、非线性最小二乘曲线拟合法。

2.销售管理(计划)

销售管理从其计划角度来看,属于最高层计划的范畴,是企业最重要的决策层计划之一。

3.经营计划(生产计划大纲)

4.主生产计划

5.物料需求计划

根据主生产计划对最终产品的需求数量和交货期,推导出构成产品的零部件及材料的需求数量和需求时期,再导出自制零部件的制作订单下达日期和采购件的采购订单发送日期。

6.能力需求计划CRP

通过分析比较MRP的需求和企业现有生产力,及早发现能力瓶颈所在。

7.车间作业计划PAC

将零部件的生产计划以订单的形式下达给适当的车间,属于ERP执行层计划。当前主流的车间作业计划模式是JIT模式。

8.采购与库存管理

是ERP的基本模块,从采购订单产生至货物收到的全过程进行组织、实施、控制,库存管理IM对企业物料的进、出、存进行管理。

9.质量与设备管理

全面质量管理TQM,对企业的全过程进行质量管理,而且明确指出执行质量职能是企业全体人员的责任。

设备管理对设备寿命周期内的所有设备物资运动形态和价值运动形态进行综合管理。

10.财务管理

以货币的形式反映和监督企业的日常经济活动,并对数据进行分类、汇总,为企业管理和决策提供必要的信息支持。

11.ERP有关扩展应用模块

客户关系管理、分销资源管理、供应链管理、电子商务等。

3、ERP的功能

ERP为企业提供的功能是多层面的全方位的。

1、CRM的概念

提供的信息要有利于更好地理解客户;

流程管理要为客户提供高效、适当的体验;

提供那些构建强有力关系、提高客户忠诚度的体验。

CRM的核心思想就是以客户为中心,

从传统的“以产品为中心”的经营理念解放出来,通过富有意义的交流沟通,理解并影响客户行为,最终实现客户保留、客户忠诚、客户创利的目的。

将客户信息转化为积极的客户关系的反复循环过程。

市场竞争,客户资源逐渐减少,市场主动权让给客户,了解市场和客户真实需要的基础上提供令其满意的产品和服务。

客户能根据自己的需求量身定做合适自己需要的产品和服务。

客户信息是客户关系管理的基础。

更低成本、更高效率地满足客户的需求,与客户建立起基于学习性关系基础,最大程度提高客户满意度、忠诚度。

功能:日历和日程安排、联系和客户管理、佣金管理、商业机会、传递渠道管理、销售管理、建议的生产和管理、定价、区域划分、费用报告等。

产品目录和价格、购买记录、服务记录、存货情况、促销文本资料、信用记录。

SFA应用往往集成电子邮件、办公软件等其它各种标准应用。

集成客户商业智能信息、产品信息、“营销百科全书”等信息资源。

CRM中,客户服务与支持主要是通过呼叫中心和互联网来实现,在满足客户的个性化要求方面,高速度、准确性、高效率来完成客户服务人员的各种要求。

当把客户服务与支持功能同销售、营销功能比较好地结合起来时,就能为企业提供很多机会。

客户服务与支持的内容应包括:客户关怀;纠纷、订货、订单跟踪;现场服务;问题及解决方法数据库;维修行为安排调度;服务协议合同;服务请求管理等。

商业智能是指利用数据挖掘、知识发现等技术分析和挖掘结构化的、面向特定领域的存储与数据仓库的信息,帮用户认清发展趋势、识别数据模式、获取职能决策支持、得出结论。

智能的范围:客户、产品、服务、竞争者等。

收集和分析市场、销售、服务和整个企业的各类信息,对客户进行全方位的了解,从而理顺企业资源与客户需求之间的关系。

CRM尚未有成型的理论出现

对市场的设定、跟踪、分析总结。

呼叫中心支持由合作的硬件厂商参与并提供全套设备,而不仅仅是提供支持呼叫中心的应用软件。

对移动设备的支持。

决策者所掌握的信息完全,能更及时地做出决策。

不管客户由何种渠道与企业联系,与客户的互动都应该是无缝的、统一的、高效的。

需要任命一名来自企业的系统管理员,作为内部系统专家。

经特殊调整的系统必须伴随技术培训。

“培训者”必须接受由软件供应商进行的培训,称为新系统专家。

对所有用户的正规培训,用户必须认识到使用新系统的即时和明显好处。

对系统的持续支持要求公司配备至少一名全职的内部系统管理员,可保证技术上自给自足的灵活性,CRM系统的支持是艰巨的工作。

为保证系统带来所希望的益处,在将其推广到所有用户之前一定要加以测试。

间接电子商务,商品是有形货物。

直接电子商务,商品是无形的货物或服务,双方越过地理界限直接进行交易。

供应链是企业赖以生存的商业循环系统,企业供应链可以耗费企业高达25%的运营成本。

从供应商开始,经由制造商、分销商、零售商,直到最终客户的全要素、全过程的集成化管理模式。

正向推动式运作模式是以生产为中心;逆向拉动式运作模式是以用户为中心;两种不同的运作模式适用于不同市场环境。

传统的软件生命期是指软件产品从形成概念(构思)开始,经过定义、开发、使用、维护、废弃,的全过程。

可以把软件生命期划分为软件定义、软件开发、软件运行与维护,三个阶段。

1、软件定义时期

1.问题定义,目标系统“是什么”,系统的定位以及范围。

2.可行性研究,技术可行性、经济可行性、操作可行性、社会可行性。

3.需求分析,确定软件系统的功能需求、性能需求、运行环境的约束,写出需求规格说明书、软件系统测试大纲、用户手册概要。

充分理解用户的需求,并以书面形式写出规格说明书,这是以后软件设计和验收的依据;用户也许很难一次性说清楚系统应该做什么。

系统分析员、软件开发人员、用户,共同完成,逐步细化、一致化、完全化等。

软件需求规格说明SRS,内容可以有系统(或子系统)名称、功能描述、接口、基本数据结构、性能、设计需求、开发标准、验收原则等。

2、软件开发时期

软件开发时期就是软件的设计与实现,概要设计、详细设计、编码、测试等。

概要设计是在软件需求规格说明的基础上,建立系统的总体结构(含子系统的划分)和模块间的关系,定义功能模块及各功能模块之间的关系。

详细设计对概要设计产生的功能模块逐步细化,包括算法与结构、数据分布、数据组织、模块间接口信息、用户界面等,写出详细设计报告。

测试可分成单元测试、集成测试、确认测试、系统测试等。通常把编码和测试称为系统的实现。

3、软件运行和维护

软件维护就是尽可能地延长软件的寿命,没有维护的价值时,宣告退役,软件的生命结束。

软件生存周期模型又称软件开发模型或软件过程模型,模型的特点是简单化,是软件开发实际过程的抽象与概括。

为软件工程管理提供里程碑和进度表,为软件开发过程提供原则和方法。软件过程有各种各样的模型。

1、瀑布型

瀑布型的特点是因果关系紧密相连,前一个阶段工作的结果是后一个阶段工作的输入,前一个阶段的错漏会隐蔽地带到后一个阶段,每一个阶段工作完成后,都要进行审查和确认,

它的出现有利于人员的组织管理,有利于软件开发方法和工具的研究。

2、原型模型

根据用户提出的软件系统的定义,快速地开发一个原型,包含目标系统的关键问题和反映目标系统的大致面貌。

三种途径:

利用模拟软件系统的人机界面和人机交互方式。

真正开发一个原型。

找来一个或几个正在运行的类似软件进行比较。

实际工作中,由于各种原因,大多数原型都废弃不用,仅仅把建立原型的过程当作帮助定义软件需要的一种手段。

用户对系统模糊不清,无法准确回答目标系统的需求。

经过对原型若干次修改,应该收敛到目标范围内,否则可能会失败。

对大型软件来说,如果没有现成的,就不应该考虑用原型法。

3、螺旋模型

是生命周期模型与原型模型的一个结合,分成多个阶段,每一个阶段都由4部分组成:

1.目标设定,指定对过程和产品的约束,并且制订详细的管理计划。

2.风险分析,制订解决办法。

3.开发和有效性验证,即开发软件产品。

4.评审,确定是否需要进入螺线的下一次回路。

每增加一周,软件系统就生成一个新版本,系统应该尽快地收敛到用户允许或可以接受的目标范围内。

该模型支持大型软件开发,适用于面向规格说明、面向过程、面向对象的软件开发方法,也适用于几种开发方法的组合。

4、基于可重用构件的模型

把软件工程项目所创建的构件不断地积累和存储在一个构件库中,系统将依赖构件的健壮性。

5、基于面向对象的模型

构件重用是非常重要的技术之一。一方面进行构件开发,另一方面进行需求开发,快速建立OOA、OOD原型,由重用构件组装而成,甚至通过组装可重用的子系统而创建更大的系统。

6、基于四代技术的原型

四代语言完全不用变成方式来构造应用系统,而是利用一些生成器。

与通常的软件工程环境或计算机辅助软件工程不同,只侧重于支持应用软件开发过程中的设计阶段和实现阶段,特别是支持界面以及与界面有关的处理过程

1、敏捷方法的特点

敏捷方法是“适应性”而非“预设性”的,重型方法在计划制定完成后拒绝变化,而敏捷方法则欢迎变化。

“面向人的”而非“面向过程的”

传统的软件开发方法的基本思路一般是只要图纸设计得合理并考虑充分,施工队伍可以完全遵照图纸顺利构造。

但是,一些设计错误只能在编码和测试时才能发现。

传统正规开发方法是个体不重要,角色才是重要的,尽量减少人的因素对开发过程的影响,但是敏捷方法正好相反。

只有在第一线的开发人员才能真正掌握和理解开发过程中的技术细节,所以技术方面的决定必须由他们来做出。

特别提倡直接的面对面交流,交流成本远远低于文档的交流。

按照高内聚、松散耦合的原则将项目划分为若干个小组,以增加沟通。

2、敏捷方法的核心思想

1.适应性型,利用变化来发展。

2.以人为本,在无过程控制和过于严格繁琐的过程控制中取得一种平衡,以保证软件的质量。

3.迭代增量式的开发过程,发行版本小型化,根据客户需求的优先级和开发风险,制订版本发行计划。

3、敏捷方法的含义及其特征

重型方法注重开发文档的完备和充分性;而敏捷方法认为最根本的文档应该是源码。

4、敏捷方法的适用范围

实际上,满足工程设计标准的唯一文档是源代码清单。

敏捷方法比较适合需求变化比较大或者开发前期对需求不是很清晰的项目。

敏捷方法对设计者、开发者、客户之间的有效沟通和及时反馈要求比较高,不易在开发团队比较庞大的项目中实施。

5、敏捷方法的主要内容

四个核心价值观:沟通、简单、反馈、勇气。

简单:只要满足当前功能需求,不做假象设计。

勇气:用于抉择,用于实践,用于重构。

12条实践规则:简单设计、测试驱动、代码重构、结对编程、继续集成、现场客户、开发版本小型化、系统隐喻、代码集体所有制、规划策略、规范代码、40小时工作机制。

6、主要敏捷方法简介

极限编程

水晶系列方法

开放式源码,任何人发现Bug都可以将补丁发给维护者。

SCRUM

Coad的功用驱动开发方法:短时迭代阶段和可见可用的功能,一个迭代周期一般为两周,编程人员分为类程序员、首席程序员。

ASD方法,猜测、合作、学习。

RUP把软件开发生命周期划分为多个循环(cycle),每个cycle生成产品的一个新版本,每个cycle依次由4个连续阶段(phase)组成:

初始:定义最终产品视图和业务模型,并确定系统范围。

细化:制定工作计划及资源要求。

构造。

移交。

迭代并不是重复地做相同的事,而是针对不同用例细化和实现,每一个迭代都是一个完整的开发过程。

每个阶段结束前有一个里程碑(milestone)评估该阶段的工作。如果未能通过该里程碑的评估,则决策者应该做出决定,是取消该项目还是继续做该阶段的工作。

RUP中的核心概念

角色(Role),who的问题,某个人或一个小组的行为与职责。

活动(Activity),how的问题,是一个有明确目的的独立工作单元。

制品(Artifact),what的问题,是活动生成、创建、修改第一段信息。

工作流(Workflow),when的问题,每个工作流产生一些有价值的产品,并显示了角色之间的关系。

RUP的特点

RUP是用例驱动的、以体系结构为中心的、迭代和增量的软件开发过程。

用例驱动:需求分析、设计、实现、测试,都是用例驱动的。

以体系结构为中心:刻画了系统的整体设计,去掉了细节部分,突出了系统的重要特征。

不依赖于具体语言,是软件设计过程的一个层次。

体系结构层次的设计问题包括:总体组织和全局控制、通讯协议、同步、数据存取、给设计元素分配特定功能、设计元素的组织、物理分布、系统的伸缩性、性能等。

一个系统不可能在所有特性上都达到最优,对于一个系统,不同人员所关心的内容也是不一样的,对于不同类型的人员,只需提供这类人员关心的视图即可。

分析和测试人员关心用例图,最终用户关心逻辑视图,程序员关心实现视图,系统工程师关心部署视图。

RUB强调采用迭代和增量的方法来开发软件,每次迭代中,只考虑系统的一部分需求,每次增加一些新的功能实现。

好处:

早期就可以对关键的、影响大的风险进行处理。

可以提出一个软件体系结构来指导开发。

处理不可避免的需求变更。

可以较早地得到一个可运行的系统,鼓舞开发团队的士气,增强项目成功的信心。

更有效工作的开发过程。

没有一个项目会使用RUP中所有的东西,用RUP时要裁剪,裁剪步骤:

1.确定本项目需要哪些工作流。

2.确定每个工作流要产出哪些制品。

3.确定四个阶段之间(初始阶段、细化阶段、构造阶段、移交阶段)如何演进。

4.确定每个阶段内迭代计划。

5.规划工作流内部结构。

按软件过程活动将软件工具分为软件开发工具、软件维护工具、软件管理和软件支持工具。

软件开发工具有:需求分析工具、设计工具、编码与排错工具、测试工具等。

需求分析工具,生成完整的、清晰的、一致的功能规范。功能规范是软件开发者和用户间的契约,也是软件设计者的和实现者的依据。正确、完整表达清晰的、无歧义的。

需求分析工具分为基于自然语言或图形描述的工具,基于形式化需求定义语言的工具。

项目管理工具:项目的计划、调度、通信、成本估算、资源分配、质量控制等。

需求最终文档经过评审批准后,则定义了需求基线Baseline;构筑了功能需求和非功能需求的一个约定Agreement。约定是需求开发和需求管理之间的桥梁。

需求管理是一个对系统需求变更、了解和控制的过程,初始需求导出的同时就启动了需求管理规划。

过程能力成熟度模型CMM,指导软件过程改进,5个成熟级别,6个关键过程域KPA。

一旦需求文档化了,开发组和有关团队需要评审文档。发现问题应与客户或者其他需求源协商解决。软件开发计划是基于已确认的需求。

绝不要承诺任何无法实现的事。

关键处理领域通过版本控制和变更控制来管理需求文档。确保与新的需求保持一致。

版本控制是管理需求的一个必要方面,必须统一确定需求文档的每一个版本,当需求发生变更时,及时通知所有涉及人员。

为了尽量减少困惑、冲突、误传,应该仅允许指定的人员来更新需求。

清楚地区分草稿和文档定稿版本。

迟到的需求变更会对已进行的工作产生非常大的影响。

如果每一个建议的需求变更都采用,项目将可能永远无法完成。

需求文档应该精确描述要交付的产品。

项目负责人在信息充分的条件下做出决策。

变更成本计算应该包括需求文档的修改、系统修改的设计、实现的成本。

变更控制过程并不是给变更设置障碍,相反,它是一个渠道和过滤器,确保采纳最合适的变更,使变更产生的负面影响降到最低,变更过程应该做成文档。

绝不能删除或者修改变更请求的原始文档。

变更控制委员会只要能决定合适的人做正确的事就足够了,在保证权威性的前提下应尽可能精简人员。

对每个变更权衡利弊做出决定。

“弊”是指增加开发费用、推迟交付日期、产品质量下降、减少功能、用户不满意。

变更总是有代价的,即使拒绝的变更也因为决策行为而耗费资源。

要是不能获得一些约定的调整,应该把面临的风险写进风险计划中。

需求、体系结构、其他设计部件、源代码模块、测试、帮助文件、文档等。

跟踪能力(联系)链(traceabilitylink)是优秀需求规格说明书的一个特征,确保软件需求规格说明包括所有客户需求。

跟踪能力联系链记录了单个需求之间的父层、互连、依赖的关系。

不必拥有所有种类的跟踪能力联系链,要根据具体情况调整。

只有在知道变更成本后才能做出理智的选择,一个表面上很简单的变更也可能转变成很复杂的局面。

影响分析确定对现有系统做出是修改或者抛弃的决定,创建新系统以及评估每个任务的工作量,进行影响分析的能力依赖于跟踪能力、数据的质量、完整性。

1、范围

可交付物、假设、约束条件的基础上准备详细的项目范围说明书,是项目成功的关键。

进度安排的准确程度可能比成本估计的准确程度更重要。对于成本估计的偏差,可以靠重新定价或大量的销售来弥补成本的增加,

如果进度计划不能得到实施,则会导致市场机会的丧失或用户不满意,而且会使成本增加。

工作分解结构WorkBreakdownStructureWBS

1、配置管理

配置项ConfigurationItemCI,

属于产品组成部分的工作成果,如需求文档、设计文档、源代码、测试用例等。

属于项目管理和机构支撑过程域产生的文档,如工作计划、项目质量报告、项目跟踪报告等。

每个配置项的主要属性有名称、标识符、文件状态、版本、作者、日期等。

2、文档管理

文档是影响软件可维护性的决定因素,使用过程中必然会经受多次修改,所以文档比程序代码更重要。

用户文档:主要描述系统功能和使用方法。

系统文档:描述系统设计、实现、测试等各方面内容。

软件文档应该满足下述要求:

1.如何使用

2.怎样安装和管理

3.需求和设计

4.实现和测试

说明用户操作错误时应该怎样恢复和重新启动。

1、软件质量

IOS9000对项目质量的定义:一组固有特性满足需求的程度。

质量低说明产品或服务存在问题,而低等级的产品或服务不一定存在问题,二者概念不同。

2、软件开发风险

认识不足或者没有足够的力量加以控制。

或然性、不确定性、涉及到某种选择时,才成为有风险,以上三个是风险定义的必要条件,不是充分条件,具有不确定性的事件不一定是风险。

结构程序设计较流行的定义为:采用自顶向下逐步求精的设计方法和单入口单出口的控制构件。

自顶向下逐步求精的方法是:先整体后局部,先抽象后具体,一般具有较清晰的层次。

仅使用单入口单出口的控制构件,具有良好的结构特征。

面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;

设计模型包含:

以包图表示的软件体系结构图、

以交互图表示的用例实现图、

完整精确的类图、

针对复杂对象的状态图、

描述流程化处理过程的活动图等。

重复使用相同或相似软件元素。

软件元素:需求分析文档、设计过程、设计文档、程序代码、测试用例、领域知识等,通常这些软件元素称为软部件。

不断地进行软部件的积累,并将它们组织成软部件库。

横向重用(horizontalreuse):重用不同应用领域中的软件元素。

标准函数库是一种典型的、原始的横向重用机制。

纵向重用广受瞩目,并称为软件重用技术的真正希望所在,关键点是域分析,根据应用领域的特征以及相似性预测软部件的可重用性。

库的组织结构直接影响软部件的检索效率。

由于软部件大都经过严格的质量认证,并在实际运行环境中得到检验,因此重用软部件有助于改善软件质量。

逆向工程就是分析已有的程序,寻找比源代码更高级的抽象表现形式。

重构Restructuring,在同一抽象级别上转换系统描述形式;

设计恢复designrecovery,

重构工程re-engineering,也称修复和改造工程。

1、恢复信息的级别

逆向工程导出的信息,4个抽象层次

1.实现级

2.结构级

3.功能级

4.领域级

2、恢复信息的方法,4类:

1.用户指导下搜索与变换

2.变换式方法

3.基于领域知识的

4.铅板恢复法

可扩展标记语言(xml)是标准通用标记语言(SGML)的一个子集;可以用XML来开发一种标记语言,它的元素和属性多是为专门行业和产业而定义的。

支持统一字符编码UCS,使得XML成为了国际标准,XML和HTML都支持样式表(stylesheet)。

XML元素的结构与HTML基本相同,使用尖括号来界定标签,但二者相同点也就仅此而已。

与HTML不同,几乎所有的XML标签都是大小写敏感的,主要是满足XML国际化的设计目标和简化处理过程的需要。

非英语字母可能没有对应的大小写,合并会存在许多缺陷。

1、字符

XML指定的字符均在16位的Unicode2.1字符集。

2、命名

XML命名必须以字母、下划线或冒号开头,后面跟着的是有效命名字符(数字、减号、点)。

实际应用中不应该使用冒号,除非是用作命名空间修饰的分隔符。

字母并非局限于ASCII码,这一点是非常重要的。

格式正规的XML:

1、一个可选的序言(prolog)

2、文档的主体(body)

3、可选的“繁杂”的尾声(epilog),包括:注释、处理指令(ProcessingInstruction,PI)和/或紧跟在元素后面的空白。

元素是XML标签的基本组成部分。

元素使用标签(tag)进行分隔:尖括号围住元素类型名。每一个元素都必须由一个起始标签和一个结束标签分隔开。

空元素

只是指定一个点,而不是提供一个包容器,空元素可以用缩略形式表示,起始和结束标签的混合体。

文档元素,每个文档有且只有一个根节点,称为文档实体(documententity)或文档根(documentroot),它们的根被称为文档元素(documentelement)。

XML对元素必须正确地嵌套。

如果字符串中包含单引号,分隔符必须使用双引号,反之亦然。

字符数据就是任何不是标记的文本,小于号、大于号、&号是标记分隔符,因此他们绝不能以字符串的形式出现在字符数据中(CDATA部分除外),必须使用转义字符“&It;”等。

元素是XML中的名词,属性是它的形容词。

attributename=“attributealue”

起始标记或空标记中属性只允许有一个实例存在。

非法的:

XML数据中,只有4个字符可以作为空白使用,09水平指标(HT),0D回车(CR),0A换行(CF),20空格。

是一种用来包含文本的方法,对希望在自己的文档中包含XML标记的使用举例的作者来说是最有用的。

使用这些部分时XML几乎所有的优势都丧失殆尽。

,“…”可以是任何字符串,只要不包含字符串“]]>”。

元素和元素之间唯一的直接关系就是父子关系;

兄弟关系是通过数据结构推断出来的,既不直接也不可靠,因为元素可能被插入到某个元素和它的一个或多个子元素之间。

数据对象如果满足下列条件就是各式正规的文档。

1、语法合乎XML规范。

2、元素构成一个层次树,只有一个根节点。

3、没有对外部实体的引用,除非提供了DTD。

任何XML解析器发现不是个是正规的结构,就报告一个“致命”错误,致命错误不一定导致解析器终止操作,但它不再会以正常的方式向应用程序传递字符数据和/或XML结构。

XML命名空间是解决多个义性和名字冲突问题的方案。

命名空间是一组具有结构的名称的集合。

命名空间推荐标准为我们提供了xmlns属性,属性值就是URI。

命名空间前缀经常被提及为前缀,而名称本身是基本名。

DTD文档类型定义。

DTD中主要定义以下几个方面的内容:

3、属性的种类。

提供一种验证的手段,对XML来说是一大贡献,确保XML文件确实地遵守了指定的格式,而这个格式可能是一个标准,或者是数据交换双方所共同定制的协议。

实体(entity)是一些预先定义好的数据。

存储部位,内部实体,外部实体;

组成内容,可分解实体,不可分解实体。

引用方式,一般型实体,参数型实体。

元素名称指的是属性所属的元素名称。

DTD尽管进行了很大的简化,但还是一门风格和XML完全不同的语言,而schema文档是一种特殊的XML文档,容易学习和使用。

DTD的另一个缺点是数据类型相当有限。DTD中根本不提供数值数据类型。

一个XML文档只能使用一个DTD文档,schema则采用了名域空间的机制,使得一个XML文档可以调用多种schema文档。

(eXtensibleStylesheetLanguage,XSL)是描述XML文档样式信息的一种语言,W3C制订。

XML的一个优点就是形式与内容相分离,XSL就是它的两种样式表单之一,

另一种是层叠样式表(CSS),是一种静态的样式描述格式,其本身不遵从XML的语法规范。

而XSL是一个XML文档。

是XML的一种具体应用

它有两大部分组成:

第一部分描述了如何将XML文档进行转换、转换为可浏览或可输出的格式;

第二部分定义了格式对象(FomattedObject,FO)源树转换为可以显示的结果树,称为树转换,按照FO分析结果树,产生一个输出结果,这个过程称为格式化。

转换树日趋成熟,已从XSL中分离出来,另取名为XSLT(XSLTransformations),现在一般所听说的XSL大多是指XSLT。

一同退出的还有配套标准Xpath(XMLPathLanguage,XML路径语言)

XSL在网络中的应用大体分为两种模式:

1、服务器端转换模式

XML文件下载到浏览器前先转换成HTML。

1.动态方式,接到转换请求时再进行实时转换。

2.批量方式。

2、客户端转换模式

XML和XSL文件都传送到客户端,浏览器必须支持XML+XSL的工作方式。

采用简洁的、非XML语法,基于XML文档的逻辑结构,在该结构中进行导航。

XPath表达式通常出现在URL和XML属性值里。

XPath将XML文档描绘为树或节点的模型,节点的类型有根节点、元素节点、属性节点、文本节点、注释节点、名称空间节点、处理指令节点7种。

XPath规范定义了两个主要部分:一部分是表达式语法,另一部分是一组名为XPath核心库的基本函数。

指向某个XML文档中一个特定节点的路径由三部分信息构成:一个轴类型、一个节点测试和谓词。

轴类型有多种,指定所选节点和环境之间的关系。节点测试查找什么类型的节点,测试包括通配符“*”、text()、node()、comment()、processing-instruction()等。

谓词以“[”开始,以“]”结束,谓词通过使用内部函数来过滤不需要的节点。

<轴>::<节点测试>[<谓词表达式>]

XLink指定一个文档如何连接到另一个文档,XPointer指定文档内部的位置,都是基于XPath推荐标准。

THE END
1.CRM客户关系管理系统的设计与实现毕业论文.docxCRM客户关系管理系统的设计与实现毕业论文.docx,客户关系管理系统的设计与实现 客户管理系统对企业业务流程的重组整合用户信息资源,以便有效的方法来管理客户关系,在企业内部实现信息和资源的共享。客户管理系统在系统设计上以帮助企业的主管人事管理的部门提高工作效率,https://max.book118.com/html/2022/0630/6154152053004204.shtm
2.客户关系管理系统的设计与实现随着信息技术的发展和企业竞争的加剧,客户关系管理系统(Customer Relationship Management System,CRM)在企业中的重要性日益凸显。本文将探讨CRM系统的设计与实现。 CRM系统的设计需要考虑到企业的具体需求和目标。不同企业的CRM系统设计可能存在差异,因此在设计之前,需要对企业的业务流程、客户需求和市场竞争进行全面的分析...https://www.dugusoft.com/zixun/zixun20938.html
3.如何对公司客户关系管理系统的进行设计与实现?本系统开发的是房地产公司客户关系管理系统,实现对老客户价值的发掘,更多新客户的开发,通过因特网完成服务的处理和记录,并且用Web进行发布。系统主要需求有: 1.营销管理功能客户资源是一个公司的重要资源,我们只有合理有效的利用这些资源才能为公司创造更多的财富。当我们了解到有公司或个人有意向购买我们公司的产品时,...http://www.myidp.net/softwareRead.php?id=12159
4.云环境下的医院CRM系统设计与实现在21世纪的医疗健康领域,数字化转型已成为不可逆转的趋势。随着云计算技术的飞速发展,医院客户关系管理(CRM)系统也迎来了全新的变革。本文将深入探讨云环境下的医院CRM系统设计与实现,揭示其如何通过智能化、高效化的方式,提升医疗服务质量和患者满意度。 http://maigoucrm.cn/v3/news/detail.aspx?id=122799
1.毕业设计基于java的CRM客户关系管理系统设计与实现随着市场竞争的日益激烈和客户需求的多样化,客户关系管理(CRM)已成为企业成功的关键之一。传统的手工管理方式已经无法满足现代企业的需求,因此,基于Java的CRM客户关系管理系统的设计与实现具有重要的研究背景和实际应用价值。 在当前的商业环境中,企业需要更好地了解和管理与客户之间的关系,以便提高客户满意度、增加销售收入...https://blog.csdn.net/m0_62396648/article/details/134257121
2.客户关系管理系统的设计与实现在社会高度现代化,高度市场化的今天,企业之间的竞争变得更加的激烈,企业不仅需要提高他们的产品服务质量、提高销售能力,挖掘客户、赢得客户、留住客户也成为企业成功的至关重要的因素,而客户关系管理(Customer Relationship Management,CRM)系统正是能提供这种专业的管理企业客户关系的功能的系统。本文介绍了客户关系管理的...https://d.wanfangdata.com.cn/thesis/D445736
3.企业客户关系管理系统的设计与实现客户关系管理系统集管理科学、信息科学、系统科学、现代通信技术和电子计算机技术于一体,可以解决企业或组织所面临的问题。该系统根据鑫鑫装饰公司所属客户的实际管理情况进行编写的,为了方便企业对客户来往业务及客户关系信息情况进行集中的查询与管理工作以及满足不同管理层次对各种信息的需求,因此,本文设计和实现了该企业客...https://wap.cnki.net/touch/web/Dissertation/Article/1013293341.nh.html
4.基于springboot的客户关系管理系统(crm)的设计与实现客户关系管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。https://blog.51cto.com/u_6668792/7287088
5.CRM的实现(精选十篇)4 系统设计 基于以上需求,要求实现对企业潜在客户进行跟踪、管理客户信息,同时能够实现企业经销商采购及库存管理,因此可将本系统分为用户信息管理、潜在客户及客户管理、产品和价格手册管理、业务机会及报价管理、市场活动管理、促销信息发布、订单管理、库存管理、销售管理、历史数据及报表管理、权限管理等功能模块。CRM系统...https://www.360wenmi.com/f/cnkeyltgkz9m.html
6.公司客户关系管理办法6篇(全文)企业管理人员通过现有的客户、客户维系及追求高终身价值的客户等措施,不仅通过有效了解客户的真实需要量和需要品系,减少了多余没用产品的浪费;而且也促进销售的增长,节约了销售费用、营销费用、客户沟通成本及内部沟通成本。另处客户关系管理系统的应用还可以大大减少人为差错,降低了营销费用。https://www.99xueshu.com/w/fileu46zj37a.html
7.数据挖掘论文[18]涂继亮.基于数据挖掘的智能客户关系管理系统研究[D].哈尔滨理工大学20xx [19]贾治国.数据挖掘在高考填报志愿上的应用[D].内蒙古大学20xx [20]马飞.基于数据挖掘的航运市场预测系统设计及研究[D].大连海事大学20xx [21]周霞.基于云计算的太阳风大数据挖掘分类算法的研究[D].成都理工大学20xx ...https://www.unjs.com/lunwen/f/20220924130749_5650839.html
8.关于电子商务的论文常用15篇在电子商务环境下,每一个人都可以成为贸易主体,每一个人也都可以在电子网络环境下快速的寻找适合自己的商品和服务,从而实现市场经济的快速变化,商品的快速流通,实现消费的个性化,满足商品设计、交易的多样化,各种资源的高效利用,利益的共享。 4、促使国际贸易的经营管理方式发生改变...https://www.fwsir.com/shangwu/html/shangwu_20230720135024_3074310.html
9.这篇超详细的文章,帮你全面搞定B端产品设计优设网? 3. CRM系统 客户关系管理系统(CRM)是以客户数据的管理为核心,利用信息科学技术,实现市场营销、销售、服务等活动自动化,并建立一个客户信息的收集、管理、分析、利用的系统,帮助企业实现以客户为中心的管理模式。客户关系管理既是一种管理理念,又是一种软件技术。 https://www.uisdc.com/product-design-to-business
10.客户关系管理案例经典(通用12篇)基于ATM专网实现采购、仓储、销售、财务、结算、物流、配送、售后服务、客户关系一体化实时在线管理。适应管理和处理日益庞大的市场数据的要求,建立全面、统一、科学的日常决策分析报表、查询系统。有效控制物流库存,大幅提高周转速度,库存资金占用减少,盘点及时有效。电脑区域配送派工。完善售后服务系统(送货管理、安装管理、...https://mip.jy135.com/guanli/14172.html
11.谈MDM主数据管理系统设计和实现关键点腾讯云开发者社区共享所有系统中的数据,使之成为一系列以客户为中心的业务流程和服务 实现对于客户、产品和供应商都通用的主数据形式,加速数据输入、检索和分析支持数据的多用户管理,包括限制某些用户添加、更新或查看维护主数据的流程的能力 集成产品信息管理、客户关系管理、客户数据集成以及可对主数据进行分析的其他解决方案。 https://cloud.tencent.com/developer/article/2238219