案例分析涉及概念

一、项目管理

1.关键路径

  1. 关键路径是项目中的最长路径,是整个项目成败关键,不能延误;
  2. 一个PERT图可以有多条关键路径;
  3. 关键路径越多,说明项目活动并行度越高,因为有大量任务不容延误,项目管理的复杂度也变高,从而风险变大;

2.PERT图

  1. PERT(项目评估与评审技术)图是一种图形化的网络模型,描述一个项目中任务和任务之间的关系,每个节点表示一个任务,通常包括任务编号、名称、开始和结束时间、持续时间和松弛时间。主要描述不同任务之间的依赖关系

3.Gantt图

  1. Gantt图是一种简单的水平条形图,它以一个日历为基准描述项目任务,横坐标表示时间,纵坐标表示任务,图中的水平线段表示对一个任务的进度安排,线段的起点和终点对应的横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长度表示完成该任务所需的时间。主要描述不同任务之间的重叠关系

4.最可能工期(D)

  1. 最优工期(OD)是估计完成任务所需的最小时间量;最差工期(PD)是估计完成任务所需的最大时间量;期望工期(ED)是估计完成任务所需的时间量。最可能工期(D)的计算公式为:
    D = ( 1 × O D ) + ( 4 × E D ) + ( 1 × P D ) 6 D = \frac{(1 \times OD) + (4 \times ED) + (1 \times PD)}{6} D=6(1×OD)+(4×ED)+(1×PD)
    其中,1、4和1是计算三个估计值的加权平均值的默认权值。

二、开发方法与开发模型

1. MDA(Model Driven Architecture)

  1. 可移植性:在MDA中,先回建立平台无关模型(PIM),然后转换为平台相关模型(PSM),1个PIM可转换成多个PSM,所以要把一个软件移植到另一个平台时,只需要将平台无关模型转换成另一个平台的相关模型即可,所以可移植性很强;
  2. 平台互操作性:在MDA中,整个开发过程都是模型驱动的,所以标准化程度很高,这样为平台的互操作带来了非常大的帮主;
  3. 文档和代码的一致性:在MDA中,代码是由模型生成的,所以具有天然的一致性,这一点其他方法无法比拟。

三、数据库

1.数据同步

  1. 通过定时任务机制做定期数据更新;
  2. 通过程序代码实现数据同步。
  3. 通过触发器完成数据同步;
  4. 通过数据库插件完成数据同步。
  5. 物化视图完成数据同步。

2.数据库复制方式

  1. 基于SQL语句的复制(statement-based replication,SBR);
  2. 基于行的复制(row-based replication,SBR);
  3. 混合模式复制(mixed-based replication,MBR)。

3.数据库视图

  1. 视图能简化用户的操作;
  2. 视图机制可以使用户以不同的方式查询同一数据;
  3. 视图对数据库重构提供了一定程度的逻辑独立性;
  4. 视图可以对机密的数据提供安全保护。

4.数据库设计

  1. 概念设计:概念设计也称为概念结构设计,其任务是在需求分析阶段产生的需求说明书的基础上,按照特定的方法将它们抽象为一个不依赖于任何DBMS的数据模型,即概念模型。概念模型的表现形式即ER模型
  2. 逻辑设计:逻辑设计也称为逻辑结构设计,其主要任务是将概念设计阶段设计好的ER图转换为与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构(如:关系模式)。
  3. 物理设计:物理设计也称为物理结构设计,其任务是对给定的逻辑模型选取一个最合适应用环境的物理结构,所谓数据库的物理结构,主要是指数据库在物理设备上的存储结构和存取方法。

5.反规范化设计

  1. 表分割:

    1)水平分割:根据一列或多列数据的值把数据行放到两个独立的表中。

    2)垂直分割:把主码和一些列放到一个表,然后把主码和另外的列放到另一个表中。

  2. 增加冗余列:指在多个表中具有相同的列,常用来在查询时避免连接操作。

  3. 增加派生列:指增加的列来自表中其他数据,由它们计算生成。

  4. 重新组表:指如果许多用户需要查看两个表连接出来的结果数据,则把这两个表重新组成一个表来减少连接而提高性能。

  5. 优缺点:

    1)优点:提高统计、查询效率

    2)缺点:增加了数据冗余,浪费存储空间,增、删、改操作的效率降低,可能导致数据不一致,可能产生添加、修改、删除异常。

6.物理数据分区技术

  1. 水平分区:

    1)范围分区:以列值的范围做为分区的划分条件,将记录存放到列值所在的范围分区中。

    2)哈希分区:根据字段的hash值进行均匀分布,尽可能的实现各分区所散列的数据相等。

    3)等值分区:一般用于数据可枚举,比如按国家名字来分区。

    4)列表分区:明确指定了根据某个字段的某个具体值进行分区,而不是像范围分区那样根据字段的值范围来划分的。

  2. 垂直分区

7.分布式数据库

  1. 概念:分布式数据库是由一组数据组成的,这组数据分布在计算机网络的不同计算机上,网络中的每个节点具有独立处理的能力(称为场地自治),它可以执行局部应用,同时,每个节点也能通过网络通信子系统执行全局应用。

  2. 性能提升策略:

    1)全局查询树的变换

    2)副本的选择与多副本的更新策略

    3)查询树的分解

    4)半连接与直接连接

8.并发操作的数据不一致

  1. 丢失修改:事务A与事务B从数据库中读入同一数据并修改,事务B的提交结果破坏了事务A提交的结果,导致事务A的修改被丢失。
  2. 读脏数据:事务A修改某一数据,并将其写回磁盘,事务B读取同一数据后,事务A由于某种原因被撤销,这时事务A已修改过的数据恢复原值,事务B读到的数据就与数据库中的数据不一致,是不正确的数据。
  3. 不可重复读:事务A读取数据后,事务B执行了更新操作,事务A使用的仍是更新前的值,造成了数据不一致性。

9.不规范关系存在的问题

  1. 数据冗余:关系模式中多次重复记录某些列值
  2. 插入异常:冗余列信息增加,其他列只能默认设置为空
  3. 修改异常:但修改冗余列时,需要同时修改多条记录,若未全部更新,会产生数据不一致
  4. 删除异常:其他列的删除,会导致冗余列信息被删除。

四、系统规划

1. 软件系统可行性分析

  1. 经济可行性:主要评估项目的建设成本、运行成本和项目建成后可能的经济收益。
  2. 技术可行性:研究的对象是信息系统需要实现的功能和性能,以及技术能力约束。
  3. 法律可行性:具有比较广泛的内容,它需要从政策、法律、道德、制度等社会因素来论证信息系统建设的现实性。
  4. 用户使用可行性:从信息系统用户的角度来评估系统的可行性,包括企业的行政管理和工作制度、使用人员的素质和培训要求等。

五、系统分析

1.问题分析阶段

  1. 研究问题领域

    1)利用信息系统框架来列出和定义系统领域

    2)数据—列出所有与系统当前存储的数据(在文件、数据库、表格中)有关的内容,并按照业务词汇定义每项内容

    3)过程—定义当前为其实现了业务响应(过程)的每个业务事件

    4)接口—定义运行当前系统的所有地点和每个地点的所有用户

  2. 分析问题和机会

  3. 分析业务过程

  4. 制定系统改进目标

  5. 修改项目计划

  6. 汇报分析结果和建议

  7. 阶段确认

2.系统约束

  1. 进度约束
  2. 成本约束
  3. 技术约束
  4. 政策/标准约束

3.结构化分析(SA)

  1. 结构化分析(SA)主要分析内容是对系统进行模块划分,并把识别出来的功能分配到各模块中,通过细分的模块功能来达到系统整体功能的目的。结构化分析中以数据流图DFD表示模块间数据的交互关系,以实体关系图ERD表示数据模型,以及状态转换图STD表示行为模型。

4.面向对象分析(OOA)

  1. 面向对象分析(OOA)主要分析内容是对系统进行概念类定义,确定类与类之间的关系,以及确定类的职责,建立交互图等,从而对系统功能进行完整描述。在面向对象分析中,以用例图来表示概念类之间的关系,以交互图来表示相关对象之间的行为。

  2. 设计类

    1)实体类:实体类映射需求中的每个实体,保存需要存储在永久存储体中的信息。例如,用户、商品等。

    2)控制类:控制类是用于控制用例工作的类,用于对一个或几个用例所特有的控制行为进行建模。例如,结算、备货等。

    3)边界类:边界类用于封装在用例内、外流动的信息或数据流。例如,浏览器、购物车等。

5.系统性能和容量扩展

  1. 数据存储容量

    1)采用独立存储系统如阵列,对于数据存储可灵活扩展

  2. 服务器处理性能

    1)考虑可扩展性问题,利用集群,扩展时采用水平扩展方式(即增加服务器的数量)

    2)利用分布式存储方式,将各个城市的数据分散存储,减少压力,提升处理性能。

    3)利用负载均衡技术,解决高并发问题。

  3. 通信性能

    1)服务器网口提速,对服务器接口进行灵活扩展如采用端口聚合等。

6.微服务

  1. 优势:

    1)解决了复杂性的问题。它把庞大的单一模块应用分解为一系列的服务,同时保持总体功能不变。

    2)让每个服务能够独立开发,开发者能够自由选择可行的技术,让服务来决定API约定。

    3)每个微服务都能独立配置,开发者不必协调对于本地服务配置上的变化,这种变化一旦测试完成就被配置了。

    4)让每个服务都可以独立调整,你可以给每个服务配置正好满足容量和可用性限制的实例数。

  2. 挑战

    1)并非所有的系统都能转成微服务。例如一些数据库层的底层操作是不推荐服务化的。

    2)部署较以往架构更加复杂:系统由众多微服务搭建,每个微服务需要单独部署,从而增加部署的复杂度,容器技术能够解决这一问题。

    3)性能问题:由于微服务注重独立性,互相通信时只能通过标准接口,可能产生延迟或调用出错。例如一个服务需要访问另一个服务的数据,只能通过服务间接口来进行数据传输,如果是频繁访问,则可能带来较大的延迟。

    4)数据一致性问题:做为分布式部署的微服务,在保持数据一致性方面需要比传统架构更加困难。

7.软件的逆向工程

  1. 软件重构:

    1)代码重构

    2)设计重构

    3)架构重构

    4)重构方法:提取方法、用委托来代替继承、用子类代替型别码、用多态来代替条件判断、模板函数、提取类、提取接口

  2. 设计恢复

    1)实现级:过程的设计模型

    2)结构级:程序和数据结构信息

    3)功能级:对象模型、数据和控制流模型

    4)领域级:UML状态图和部署图

  3. 重构工程

六、系统设计

1. 软件

  1. 软件复用:软件复用是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级的复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切相关方面。
  2. 软件产品线:软件产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足特定领域的特定需求。软件产品线是一个十分适合专业的开发组织的软件开发方法,能有效地提高软件生产率和质量,缩短开发时间,降低总开发成本。

七、Web技术

1.REST架构

  1. REST风格5条关键原则:

    1)网络上的所有事物都被抽象为资源;

    2)每个资源对应一个唯一的资源标识;

    3)通过通用的连接件接口对资源进行操作;

    4)对资源的各种操作不会改变资源标识;

    5)所有的操作都是无状态的。

八、系统运行和维护

1.新旧系统转换策略

  1. 直接转换:直接转换就是在原有系统停止运行的某一时刻,新系统立即投入运行,中间没有过渡阶段。

  2. 并行转换:并行转换就是新系统和现有系统并行工作一段时间,经过这段时间的试运行后,再用新系统正式替换下现有系统。

  3. 分段转换策略:分段转换策略也称为逐步转换策略,这种转换方式是直接转换方式和并行转换方式的结合,采取分期分批逐步转换。

    1)按功能分阶段逐步转换

    2)按部分分阶段逐步转换

    3)按机器设备分阶段逐步转换

2.新旧系统演化策略

  1. 淘汰策略:旧系统技术含量低,且具有较低的业务价值,对这种旧系统的演化策略为淘汰,即全面重新开发新的系统以代替遗留系统。
  2. 继承策略:旧系统技术含量低,已经满足企业运作的功能或性能要求,但具有较高的商业价值,目前企业的业务尚需紧密依赖该系统,对这种旧系统的演化策略为继承。在开发新系统时,需要完全兼容遗留系统的功能模型和数据模型。

3.软件维护

  1. 改正性维护:为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程称为改正性维护。
  2. 适应性维护:在使用过程中,外部环境(新的硬、软件配置)、数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程称为适应性维护。
  3. 完善性维护:在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动称为完善性维护。
  4. 预防性维护:这是指预先提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。通常,预防性维护可定义为“把今天的方法学用于昨天的系统以满足明天的需要”。也就是说,采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编码和测试。

九、需求工程

1.用例建模

  1. 用例规约:包括用例名、参与者、目标、前置条件、事件流(基本事件流和扩展事件流)和后置条件等。

  2. 用例关系:

    1)包含关系:当可以从两个或两个以上的用例中提取公共行为时,应该使用包含关系来表示它们,关键字——include,虚线箭头指向公共行为。

    2)扩展关系:如果一个用例明显地混合了两种或两种以上的不同场景,即根据情况可能发生多种分支,则可以将这个用例分为一个基本用例和一个或多个扩展用例,这样使描述更加清晰。关键字——extend,虚线箭头指向这个用例。

    3)泛化关系:当多个用例共同拥有一种类似的结构和行为的时候,可以将它们的共性抽象成为父用例,其他用例做为泛化关系中的子用例。关键字——实线箭头指向父用例。

十、新技术的应用

1.虚拟化技术

  1. 概念:虚拟化是指计算机元件在虚拟的基础上而不是真实的基础上运行。虚拟化技术可以扩大硬件的容量,简化软件的重新配置过程。CPU的虚拟化技术可以单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

  2. 应用:

    1)使用VMware软件,在Windows平台下安装linux操作系统。

    2)存储的虚拟化,在云存储中,就应用到了存储的虚拟化。

    3)服务器虚拟化,目前多家公司推出了虚拟化服务器,这种服务器可以用一台硬件设备,虚拟出多台服务器对外提供服务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值