`
snoopy7713
  • 浏览: 1152146 次
  • 性别: Icon_minigender_2
  • 来自: 火星郊区
博客专栏
Group-logo
OSGi
浏览量:0
社区版块
存档分类
最新评论

软件(架构)设计培训心得总结

阅读更多
天培训的是软件设计过程,但我会把今天的内容理解为架构设计。

不管了,我在本文中都统一为架构设计,不恰当的地方请见谅。

 

关键名字解释:

迭代: 就是 反复求精 的过程,是提升质量的过程,是 从模糊到清晰 的过程;

增量: 则是 数量渐增 地过程。

 

 

说在最前面的话,我认为软件架构是【 ******

1、  架构设计不是一些图和文档,架构设计是一个过程,是一个不断深入分析的过程,深入思考的过程。所以所有产物不一定是必须的,但是一定要先想,有分析、思考、决策的过程。 【至于为什么要深入分析,深入思考,后面会说明。】

2、  好的架构是持续完善的。所有好的架构都是在发展中演化出来的。

3、  架构是一种权衡与取舍,没有完美的架构。软件的要求肯定很多,必须抓住关键因素。

4、  架构是对复杂系统的一种共性的抽象,是针对特定目标系统、问题而提出的通用解决方案。即架构是蓝图,是整体到部分的最高层次的划分。

5、  架构是关注点分离。

for example:

  错误理解:高楼大厦是由钢筋、水泥和砖块构成

  正确理解:高楼大厦是由支撑系统、管道系统、强弱电系统、给排水系统。。等构成

 

  错误理解:信息系统是由一个个模块、一个个对象和组件构成

  正确理解:信息系统是由组织结构、业务流程、业务功能、业务信息。。等构成

 

软件(架构)设计的作用或意义【一定要记住】:

1、 深入理解业务与系统。【这条最重要。因为你不够理解业务与系统,所以才需要分析和设计】

2、 提供高层次的解决方案,还有为开发提供指导原则、实现思路、关键决策。

3、  团队理解、沟通的桥梁

 

项目管理的主要对象是人和项目,

而,架构设计主要的对象是【也要记住】

1、 业务

2、 系统

所以相对来说,架构设计跟人的关系不大。

 

 

一些事情不要太纠结,关注和理解你的目标、目的、意义

设计即分析,分析即设计。分析与设计的界线很模糊,没必要纠结自己到底是在做分析,还是在设计。

 

 

软件(架构)设计过程【这个大家都知道,请跳过】:

需求采集、捕获【需求采集卡,用户故事】 -------

需求分析【需求规格说明书 : 背景、目标、功能性、非功能性需求、约束等】 --------

概念模型【 用例简述、用例图、用例规约 边界、业务环境图、系统环境图】 ---

业务用例分析、实现【鲁棒图、时序图、活动图】 ----》

得到领域模型、 系统用例-----》

系统用例分析、实现【交互图、状态图、分析图】 ----

概念类、数据字典 ---

再进行分析------》

架构设计【 4+1 视图】

 

简单解释什么是概念模型?

概念模型就是从用户看重的角度,来分析这个产品或者这个项目,抽象得到的一些模型。

相对的, 从开发人员脑子里想的、从开发实现角度分析设计 的就是实现模型。

 

重点说明下这个设计过程:

1、上面这个设计过程的意思,不是说你从下往下做了一遍,软件架构设计就出来了,就完成了。

其实在实际工作中,这些过程经常是反复进行的,交替进行的,不断进行迭代和增量的,不断的进行验证的。【进化式架构概念】

上面的过程的一个重要作用是,前面一个步骤的结果就是后面一个步骤的输入和验证条件,最终判断是否正确,是看是否满足了所有需求。

2、也并不是说,你上一个步骤没有完成,下一个步骤就不能开始。否则稍微复杂的项目,将是一个漫长的过程,还会因为长时间看不到有价值的东西,而打击团队的信心。在实际工作中,并非严格按照上述步骤,很多工作可以并行的。比方说,你在前期分析、设计到一定程度的时候,就可以考虑开发视图、关键功能原型设计、技术调研等。

 

 

软件设计规范过程、步骤【 Rational 】其实是很多的,产物也很多。但其实针对具体的软件产品或项目,并非全部是必须的,这已经是公认的。

具体项目中,哪些是必需的,哪些可以省略?有没有什么标准呢?【大家很关心吧】

 

根据上面架构设计的目的,我觉得必需的依据标准如下:

1、  业务需求、目标、范围、约束、成功标准、关键驱动因素、关键功能和要求

2、  业务边界、业务环境、系统环境

3、  业务特点、业务规模大小(小型、中型、大型)

4、 你和你的团队,不了解的、不清楚的、模糊的,或者复杂的,都需要分析、设计【这个很重要】

 

架构设计中最关键的两样东西:

1、  领域模型(或者说概念类)

2、 系统中各个角色与系统之间、还有各个实体之间的关系与交互。 这个是最关键的。系统其实就是一堆关系和行为。

 

由于这两个关键的东西,所以我认为架构分析、设计中最重要的图是:

1、  领域模型、概念类、数据字典;

2、  鲁棒图、协作图、状态图

其他什么用例图、时序图、活动图都是为了辅助分析、理解的。

 

架构设计其实就是不断的通过分析,不断的深入理解业务和系统,然后得到较高层次的解决方案。

架构设计其实就是从多维度、多角度进行抽象

架构设计中难把握的两样东西:

1、 粒度

2、 抽象层次

 

我觉得架构设计中抽象的最低层次应该是:组件、一个小功能、一个处理流程、一个线程,不要再往下细分设计咯。

 

架构设计需要注意事项:

软件需求一般包括:功能性需求、非功能性需求【包括约束和质量性需求】,

1 、功能性需求是最容易变化的,架构设计中,从一开始用例场景到最后,都应该思考很容易改变。

2 、约束会影响架构和功能,所以从一开始就要尽量弄清楚所有约束

 

4+1 视图:

 

4

过程视图:其实就是组件图,组件之间的交互

开发视图:其实就是技术选型、分层,关注点分离、复用、公用。【常见的:内核层、 Framework 层(业务无关)、业务公用 API 层、业务中各种应用(管理系统、 WebService 、客户端 .. )】

 

逻辑视图【这个没什么好说的】

部署视图【这个没什么好说的】

 

1 :用例视图【这个没什么好说的】

分享到:
评论

相关推荐

    软件架构设计最佳实践

    下面将详细介绍关于软件架构设计的目的、目标、方法及其质量约束等方面的体会与总结。 2. **架构设计目的** - **沟通交流的工具**:软件架构作为一种风险承担者之间的沟通工具,明确了对系统实现的约束条件,...

    软件架构培训学习小结

    软件架构设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使 设计的项目尽量效率高,开发容易,维护方便,升级简单。本文从架构师职责、软件架构定 义、设计架构、评估架构、架构管理等方面来...

    赴上海交通大学学习培训心得.pdf

    - 系统架构设计:了解和掌握系统架构的基本原则和方法,对构建大型系统至关重要。 - 云计算与大数据技术:云服务和大数据分析是当下IT行业的热点。 - 安全知识:网络安全是目前IT行业不可忽视的问题,需要掌握...

    FPGA 学习心得体会

    FPGA(Field Programmable Gate Array),即现场可编程门阵列,是一种高度灵活的集成电路技术,它允许用户通过软件编程的方式来定制硬件功能。这种特性使得FPGA在数字信号处理、通信系统、图像处理等多个领域有着...

    Oracle_RAC培训学习心得

    ### Oracle RAC培训学习心得详解 #### 一、Oracle RAC概述 Oracle Real Application Clusters (RAC) 是Oracle数据库的一项关键技术,旨在提供高可用性和可伸缩性。RAC允许在一个集群环境中运行多个数据库实例,每...

    公共安全防范系统的设计要点与心得.docx

    1. **系统架构设计**: - 根据项目需求设计合理的系统架构,确保各子系统之间协调运作。 - 考虑系统的可扩展性和兼容性,方便日后的升级和维护。 2. **设备选型**: - 选择性能稳定、可靠性高的安防设备。 - ...

    浪潮齐鲁软件实习心得体会.doc

    以下是基于本人在浪潮齐鲁软件开发中心的实习经历,所总结的心得体会。 首先,实习经历让我深刻理解了软件开发的全过程。实习期间,我有幸参与了包括文档审核、产品封版测试以及项目开发在内的多个环节。通过实际...

    学校数学老师个人工作心得总结最新___5篇.docx

    因此,尽管文件标题和描述指向了数学老师的工作心得总结,其背后所蕴含的深层次原则和方法却在技术行业同样适用。下面,我将从团队协作、个体差异的关注、持续学习以及实践与反馈四个角度,将数学教育领域中的经验与...

    133springboot + vue 人事管理系统.zip(可运行源码+数据库文件+文档)

    然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项目软件架构选择B/S模式和java技术,总体功能模块运用自顶向下的分层思想。再然后就是实现系统并进行代码...

    opnet调试心得体会

    它能够提供精确的网络性能预测,帮助工程师们在实际部署前对网络架构进行评估和优化,避免了因设计不当而导致的资源浪费和性能瓶颈。 ### 调试重要性 在使用OPNET的过程中,调试是一项不可或缺的技能。良好的调试...

    sip学习资料个人总结

    SIP的架构采用了客户端/服务器模式,主要包括用户代理(UA)和网络服务器。用户代理是SIP系统中的终端用户,可以发起和接收通信请求。网络服务器则包括代理服务器、重定向服务器和注册服务器。代理服务器用于解析...

    和利时DCS学习总结报告

    【和利时DCS学习总结报告】 通过在杭州和利时公司进行...通过这次培训,我不仅掌握了和利时MACSV系统的硬件和软件知识,还学会了如何进行初步设计、安装和维护,这对我未来在DCS系统领域的实践操作具有重要指导意义。

    crm从开发到完成心得体会

    架构设计要考虑系统的可扩展性、安全性、稳定性和易用性。模块划分则应根据业务流程来,如销售模块可能包括线索管理、机会管理、合同管理等。 三、数据库设计 CRM系统依赖于强大的数据库来存储客户信息、交易记录等...

    学生信息管理系统课程设计报告书.doc

    总的来说,《学生信息管理系统课程设计报告书》不仅是对一个具体项目的设计回顾,更是对学生软件开发和数据库管理能力的一次全面培训。通过这样的课程设计,学生能够在实践中加深对理论知识的理解,并在此基础上提高...

    《公路涵洞CAD系统》与PCV2000软件的优缺点.pdf

    总结来说,《公路涵洞CAD系统》和PCV2000软件都是设计领域内的重要工具,分别在特定领域和广泛领域拥有各自的优势和不足。设计人员应该根据项目需求、自身的技术水平和偏好来选择合适的CAD软件,以便在保证工作效率...

    建模心得.pdf.zip

    在IT行业中,建模是一种非常重要的技能,尤其在软件工程、数据分析、系统设计等领域。"建模心得.pdf.zip"这个文件很可能包含了一位专业人士在建模过程中的学习体验、技巧总结以及常见问题的解决策略。虽然没有具体的...

    初级测试员学习必备很也是我的笔记总结

    这篇文档集合了初级软件测试员在学习过程中应掌握的关键知识点,结合了我在达内培训期间的学习资料,包含了名牌讲师的精彩PPT内容,旨在帮助初学者系统性地理解和掌握软件测试的基础与进阶技巧。 【描述】:“软件...

    vb人事管理系统全套(源代码+设计说明书+调研报告+实习报告).zip

    VB人事管理系统是一款基于Visual Basic开发的人力资源管理软件,它涵盖了人事管理的多个核心功能,如员工信息管理、考勤管理、薪酬福利、培训发展等。这个压缩包包含的资源全面,不仅有源代码,还有设计说明书、调研...

Global site tag (gtag.js) - Google Analytics