需求获取
1、需求获取的技术:
用户访谈 | 优点:具有良好的灵活性,有较宽广的应用范围。 缺点是:用户忙,信息量大,记录困难,需要沟通技巧。 |
问卷调查 | 优点:短时间内收集数据。 缺点:缺乏灵活性,信息不全面,无法了解细节问题。 |
采样 | 优点:加快了数据收集的过程,提高了效率。利用数理统计原理,减少 数据收集的偏差。 缺点:主观性强。 |
情节串联板 | 优点:用户友好、交互性强,对用户界面提供了早期的评审。 缺点:花费时间,速度慢。 |
联合需求计划 | 优点:用户参与,有利于消除矛盾信息。 缺点:会议的组织与相关人员的能力。 |
其他方法:实地观察、收集资料等 。 |
四、系统架构设计
1、面向服务的架构 SOA
SOA 是一种在计算环境中设计、开发、部署和管理离散逻辑单元 (服务) 模型的方法。关于 服务,一些常见的设计原则有:明确定义的接口、自包含和模块化、粗粒度、松耦合、互操 作性。
SOA 紧密相关的技术主要有 UDDI、WSDL、SOAP 和 REST 等,而这些技术都是以 XML 为基础而 发展起来的。
UDDI | 统一描述、发现和集成,提供了一种服务发布、查找和定位的方法,是服务的信 息注册规范, 以便被需要该服务的用户发现和使用它。 |
WSDL | Web 服务描述语言是对服务进行描述的语言。 |
SOAP | 简单对象访问协议定义了服务请求者和服务提供者之间的消息传输规范。SOAP 用 XML 来格式化消息,用 HTTP 来承载消息。通过 SOAP,应用程序可以在网络中进 行数据交换和远程过程调用 RPC。 |
REST | 表述性状态转移是一种只使用HTTP 和 XML 进行基于 Web 通信的技术,可以降低 开发的复杂性,提高系统的可伸缩性。 REST 提出了如下一些设计概念和准则: (1) 网络上的所有事物都被抽象为资源。 (2) 每个资源对应一个唯一的资源标识。 (3) 通过通用的连接件接口对资源进行操作。 (4) 对资源的各种操作不会改变资源标识。 (5) 所有的操作都是无状态的。 |
2 、微服务
微服务是一种架构风格,将单体应用划分成一组小的服务,服务之间相互协作,实现业务功 能每个服务运行在独立的进程中,服务间采用轻量级的通信机制协作 (通常是 HTTP/JSON), 每个服务围绕业务能力进行构建,并且能够通过自动化机制独立地部署。
微服务有以下优势:
(1) 通过分解巨大单体式应用为多个服务方法解决了复杂性问题。它把庞大的单一模块应 用分解为一系列的服务,同时保持总体功能不变。
(2) 让每个服务能够独立开发,开发者能够自由选择可行的技术,提供 API 服务。
(3) 微服务架构模式是每个微服务独立的部署。开发者不再需要协调其他服务部署对本服 务的影响。这种改变可以加快部署速度。
(4) 微服务使得每个服务独立扩展。你可以根据每个服务的规模来部署满足需求的规模。 甚至可以使用更适合于服务资源需求的硬件。
微服务架构带来的挑战如下:
(1) 并非所有的系统都能转成微服务。
(2) 部署较以往架构更加复杂:系统由众多微服务搭建,每个微服务需要单独部署,从而 增加部署的复杂度,容器技术能够解决这一问题。
(3) 性能问题:由于微服务注重独立性,互相通信时只能通过标准接口,可能产生延迟或 调用出错。
(4) 数据一致性问题:作为分布式部署的微服务,在保持数据一致性方面需要比传统架构 更加困难。
3、C/S 架构
二层 C/S 结构为单一服务器且以局域网为中心 ,所以难以扩展至大型企业广域网或 Internet;软、硬件的组合及集成能力有限;它的缺点主要有:
(1) 服务器的负荷太重,难以管理大量的客户机,系统的性能容易变坏;
(2) 数据安全性不好。因为客户端程序可以直接访问数据库服务器,那么,在客户端计算 机上的其他程序也可想办法访问数据库服务器,从而使数据库的安全性受到威胁。
与二层 C/S 架构相比,在三层 C/S 架构中,增加了一个应用服务器。可以将整个应用逻辑 驻留在应用服务器上,而只有表示层存在于客户机上。这种客户机称为瘦客户机。三层 C/S 架构将应用系统分成表示层、功能层和数据层三个部分。
与传统的二层架构相比,三层 C/S 架构具有以下优点:
(1) 允许合理地划分三层的功能,使之在逻辑上保持相对独立性,从而使整个系统的逻辑 结构更为清晰,能提高系统的可维护性和可扩展性。
(2) 允许更灵活、有效地选用相应的平台和硬件系统,使之在处理负荷能力上与处理特性 上分别适应于结构清晰的三层,并且这些平台和各个组成部分可以具有良好的可升级性和开 放性。
(3) 系统的各层可以并行开发,各层也可以选择各自最适合的开发语言,使之能并行且高 效地进行开发,达到较高的性能价格比。对每一层的处理逻辑的开发和维护也会更容易些。 (4) 利用功能层可以有效地隔离表示层与数据层,未授权的用户难以绕过功能层而利用数 据库工具或黑客手段去非法地访问数据层,这就为严格的安全管理奠定了坚实的基础。
B/浏览器/服务器 (Browser/Server, B/S) 架构是三层 C/S 架构的一种实现方式,其具体结 构为“浏览器/Web 服务器/数据库服务器” 。B/S 架构利用WWW 浏览器技术,结合浏览器的 多种脚本语言,用通用浏览器就实现了原来需要复杂的专用软件才能实现的强大功能,并节 约了开发成本。
- MVC
模型:执行业务流程 (不包括输入输出) ,存储业务数据。模型不依赖于视图和控制器,
提高了架构的灵活性。
视图:展示模型中的数据,用户的同一份数据可以通过不同的视图以不同的方式展示。
视图必须了解模型中的数据结构,对模型有很强的依赖性,但是模型对于视图则没有依 赖性。
控制器:把模型接收的事件和用户输入的数据转化为对模型方法的调用。控制器对用户
的行为作出解释,并决定调用模型的哪个方法。
使用MVC 模式来设计表现层,可以有以下的优点。
(1) 允许多种用户界面的扩展。在 MVC 模式中,视图与模型没有必然的联系,都是通过控 制器发生关系,这样如果要增加新类型的用户界面,只需要改动相应的视图和控制器即可, 而模型则不需发生改动。
(2) 易于维护。控制器和视图可以随着模型的扩展而进行相应的扩展,只要保持一种公共 的接口,控制器和视图的旧版本也可以继续使用。
(3) 功能强大的用户界面。用户界面与模型方法调用组合起来,使程序的使用更清 晰,可 将友好的界面发布给用户。
6、MVP
MVP 的优点包括:
(1) 低耦合。模型与视图完全分离,可以修改视图而不影响模型。
(2) 可以更高效地使用模型,因为所有的交互都发生在一个地方—Presenter 内部。
(3) 复用性好。可以将一个 Presenter 用于多个视图,而不需要改变 Presenter 的逻辑。 这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
(4)可测试性好。如果把逻辑放在 Presenter 中,就可以脱离用户接口来测试这些逻辑(单
元测试) 。
7、MVVM
MVVM 是由 MVP 进化而来,MVVM 模式基本上与 MVP 相同,只是把 MVP 中的 P 变成了 VM,即 ViewModel,MVVM 中的数据可以实现双向绑定,当 Model 变化时,View-Model 会自动更新, View 也会自动变化。很好做到数据的一致性,不用担心,在模块的这一块数据是这个值, 在另一块就是另一个值了。所以 MVVM 模式有些时候又被称作:model-view-binder 模式。 因此 MVVM 框架比较适合逻辑复杂的前端项目,比如一些管理系统等。
8、轻量级架构
- SSH:指的是 Struts2(做前端控制器),Spring(管理各层的组件),Hibernate(负责持
久化层)
- SSM:指的是 SpringMVC(做前端控制器),Spring(管理各层的组件),Mybatis(负责持
久化层)
Hibernate 与 Mybatis 区别:
①开发方面:Hibernate 开发中,sql 语句已经被封装,直接可以使用;Mybatis 属于半自 动化,sql 需要手工完成。
②sql优化方面:对复杂查询的 sql语句进行人工调优的时候,Mybatis 更方便。
③可移植性方面:Hibernate 使用时自动生成相应的 sql语句,因此具备良好的数据库移植 性,而 Mybatis 中手动编写的 sql语句需要针对不同厂商的数据库进行修改。