系统分析与设计的三个发展阶段


1. 面像数据驱动分析与设计

系统分析与设计的第一阶段是面向数据驱动分析与设计,这一阶段的特征就是围绕数据库编程,应用系统是典型的两层架构,分为展示层和数据库层。

这种面向数据驱动分析与设计的方法导致了过程化的编程思维。数据库结构由DBA设计后交由程序员编写 SQL 语句,而 SQL 语句执行是有先后顺序的,所以面像数据驱动分析与设计,容易形成面像过程的思维方式。

面像过程(procedure Oriented)是一种思维方式,在面对问题时,我们关注的是解决该问题的过程。例如经典的问题:如何把大象放入冰箱:
第一步:打开冰箱
第二步:装入大象
第三步:关上冰箱

优点 VS 缺点:

  • 面向过程可以更直接、更有效的解决问题,但是面对更复杂的问题时,解决问题的过程也会变得费城复杂和难以理解。
  • 不能迅速、有效、全面地认识和反应需求,是一种扭曲的分析方法。
  • 系统的性能很难提升,容易导致软件运行时负载集中在数据库端,使系统编程集中式和高风险的大型单体模式,丧失分布式集群处理能力。
  • 面向对象的编程语言和关系型数据库本身是矛盾的。因为关系型数据库分析与设计本身是面向过程的。

2. 面向对象和服务分析与设计

面向对象和服务分析与设计的方法产生了具有划时代意义的三层架构:展示层、业务层、数据访问层。

  • 此时出现独立进行分析与设计的两个阶段,系统分析与设计开始上升到一个更高的层次,拥有自己的一套科学且艺术的方法论,但也带来了一个致命的缺点:分析阶段和设计阶段不能很好的衔接,出现了难以逾越的鸿沟。因为分析人员负责从需求领域中收集基本概念,而设计人员负责指明一组能够在项目中适应编程工具构造的组件,这些组件必须能够在目标环境下有效执行,并且能够正确解决应用程序出现的问题。
  • 可以看到,分析阶段和设计阶段的目标并不一致,分析人员只关注需求分析,并不关注是否适合设计或者能否导出适合设计的分析结果;设计人员发现分析结果过于简单,无法进行编码实现。于是,分析阶段和设计阶段无法对接,导致整个项目无法顺里进行,以失败告终。

3.面像问题域分析与设计

问题域模型有一个流行的名字:领域模型,是对现实世界或领域中的对象的可视化表示,可分为概念模型、领域对象模型、分析对象模型

Eric Evans 在 2004 年发表了 Domian-Driven Design - Tackling Complexity in the Heart of SoftWare 的论文,主题便是领域驱动设计,还提出了领域模型的分层架构,将整个系统划分为基础设施层领域层应用层用户接口层

领域建模是一种艺术,融合了分析阶段和设计阶段,目的是使复杂的软件快速应付变化。

领域模型同时适用分析原型和程序设计,如果一个模型在实现时不具备可行性,就需要重新寻找新的模型,如果该模型没有忠实表达领域的关键概念,则也必须重新寻找新的模型。
所以,领域建模的过程就是把分析阶段和设计阶段变成了单个循环阶段,把分析与设计紧密联系起来,使领域建模专家不再只是关注需求概念收集,也关注程序代码的设计与实现。


参考图书:《程序员的三门课》

系统分析与设计的三个发展阶段相关推荐

  1. 系统分析与设计结对项目———Wordcount

    系统分析与设计结对项目---Wordcount 合作者:201631062513.201631062511 本次作业要求链接地址:https://edu.cnblogs.com/campus/xnsy ...

  2. 详细介绍软件架构设计的三个维度

    如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中 ...

  3. 软件架构设计的三个维度,软件架构师需要知道的点,了解一下吧!

    架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中去体会.这篇文章主要介绍面向对象OO.面向方面AOP和面向服务SOA这三个要素在架构设计中的位置与作用. 架构设计有 ...

  4. 软件架构设计_软件架构设计的三个维度,软件架构师需要知道的点,了解一下吧...

    架构设计是一个非常大的话题,不管写几篇文章,接触到的始终只是冰山一角,更多的是实践中去体会.这篇文章主要介绍面向对象OO.面向方面AOP和面向服务SOA这三个要素在架构设计中的位置与作用. 架构设计有 ...

  5. 系统分析与设计 复习

    文章目录 系统分析与设计 复习 第 1 章 系统分析与设计概述 系统特性 DevOps 第 2 章 系统规划 **系统规划步骤** 规划模型 诺兰模型 **CMM 模型** 系统规划方法 战略集合转换 ...

  6. 信息系统分析与设计 机票预定管理系统

    系统规划 1.1系统开发背景 随着人均收入水平的提高,人们出行的方式也变得多种多样,更多的人会选择节约时间的飞机出行,因此航班数和飞机数量也就随之增加.为了增强用户的购票体验,需要一种如本实验所做的机 ...

  7. 信息系统分析与设计-信息、管理与信息系统

    信息系统分析与设计-信息.管理与信息系统 1.信息与信息系统 1.1 信息的概念 1.2 信息系统的定义 1.3 信息系统的基本功能 1.4 小结 2.信息系统结构 2.1 信息系统的概念结构 2.2 ...

  8. 【亿可控】第一天系统分析与设计

    第1章 亿可控系统分析与设计 学习目标 了解物联网应用领域及发展现状 能够说出亿可控的核心功能 能够画出亿可控的系统架构图 能够完成亿可控环境的准备并了解亿可控的功能结构 完成设备管理相关功能的开发 ...

  9. java毕业设计员工绩效考核系统分析与设计Mybatis+系统+数据库+调试部署

    java毕业设计员工绩效考核系统分析与设计Mybatis+系统+数据库+调试部署 java毕业设计员工绩效考核系统分析与设计Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构:B/S架构 ...

  10. [架构之路-177]-《软考-系统分析师》-17-嵌入式系统分析与设计 -2- 系统分析与设计、低功耗设计

    目录 1 7 . 4 嵌 入 式 系 统 开 发 17.4.1 开发平台 1 . 交叉开发环境 2 . 交叉编译环境 17. 2 开发流程 1. 过程模型 2 . 分析与设计方法 17.4.3 软硬件 ...

最新文章

  1. C#如何根据DataTable生成泛型List或者动态类型list
  2. 2.Linux技能要求
  3. NHibernate 3.0在PetShop 3层架构中的应用 系列
  4. SAP offline应用的flush按钮实现
  5. .NET再出发!20岁生日快乐
  6. Java日期格式化SimpleDateFormat
  7. java jdbc(mysql)驱动源码分析_JAVA JDBC(MySQL)驱动源码分析(二)
  8. 小个子怎么能穿得优雅大方呢?
  9. linux面试题:删除一个目录下的所有文件,但保留一个指定文件
  10. Ruby的Range类
  11. 分析打开hdu 3335 (最小路径覆盖)
  12. layui开关按钮,checkbox复选框开关按钮效果美化
  13. 三星5G先锋计划:0元起抢先换5G不是梦
  14. JDK下载常用的几种方法
  15. testerhome学习笔记2_Bash基础
  16. 怎么打包python环境_python环境搭建和打包
  17. [Python] 通过采集两万条数据,对《无名之辈》影评分析
  18. 值得珍藏的免费观影网站
  19. 数据库:一条sql语句查询每门课程都大于80分的学生姓名
  20. 华为云服务器客户端,华为终端云服务带来全场景云体验让用户办公更便捷

热门文章

  1. eos java调用命名sql_普元 EOS Platform 7.6 开发命名SQL缓存示例
  2. web前端 原生js签名板(电子签名)写字板 canvas 截图
  3. Keil MDK5硬件仿真之基本介绍
  4. 数学建模入门例题python_用Python分析支付宝轻定投收益--Python数学建模实例
  5. IntelliJ Idea 常用11款插件(提高开发效率),附优秀主题插件
  6. PHPWAMP自启异常,服务器重启后Apache等服务不会自动重启的原因分析
  7. 服务器SSH 22端口关闭
  8. Mac 软件汉化教程(一)
  9. 2020非常全的接口测试面试题及参考答案-软件测试工程师没有碰到算我输!
  10. SpringBoot拦截器和过滤器的一起使用