架构内容 节选自《闻缺陷则喜》(此书可免费下载)
Posted 软件架构师何志丹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了架构内容 节选自《闻缺陷则喜》(此书可免费下载)相关的知识,希望对你有一定的参考价值。
1.1 架构内容
1.1.1 取舍
质量、工期与成本三者之间是相互影响、相互制约。质量与工期影响着成本。成本又约束着质量和工期,工期影响着质量的提高。反过来质量的提高又促进了工期的缩短。让公司亏钱是最大的罪过;工期的长短严重影响现金流,暂时亏损可以拉投资,没现金流公司会倒闭。
体会:一,有时,要求高质量会让成本翻倍,所以不如分两阶段,第二阶段重写,不留历史包袱。二,不同经历的开发人员侧重于不同的质量要求,有的适合快,有的时候适合可维护性、可复用性。天下武功唯快不破,快是很大的优势。90%的项目会失败,项目早出生,早验证,早止损。三,不同阶段,质量要求不同。四,取舍和优先级重要。
1.1.2 转换成开发级需求和规则
寻找边框用各级功能需求的区别
系统级功能需求
CAD插件可以自动识别边框。
第一版
用户级功能需求
边框分三类,直线、多以线、块。
开发级功能需求
边框分三类:
1, line实体,4条line如果刚好可以组成正矩形,则是边框。
2, 闭合的Polyline、Polyline2d实体的4条边可以组成矩形,则是边框。
3, 块一定时边框,边框是包围盒。
第二版
用户级功能需求
用户可以配置边框种类,以提升速度和准确性。
开发级功能需求
寻找边框时,增加参数边框类型。
有界面可以配置边框类型。
边框类型可以保存。
1.1.3 运行架构
关注的是应用程序运行中可能出现的一些问题。包括:一,并发带来的问题,比较常见的是“线程同步”、异步、死锁问题。二,生命周期管理,对象创建和销毁。三,状态的变化,如:登录、注销。四,业务流程。
控制流图中不同线程(进程)直接或间接调用的模块可能需要加锁,为了简便,跨线程的数据、资源只有一个模块能直接访问。
1.1.4 逻辑架构
模块拆分的四个方法:一,按所需技能拆分,如html做界面,C++内核。最常见的是分层细化,如:界面层、业务逻辑层、核心逻辑层、数据层、数据存取层。二,分块,按功能细化。三,按通用专用细化。公司基础库,部门基础库等。四,通用机制的提取。如:某个框架要实现几个接口。
可以用鲁棒图发现遗忘的职责,时序图也能发现一些职责。
1.1.5 开发架构
一,开发技术选型,开发语言、工具。二,将逻辑职责拆分成程序单元。包括:a,自主编写的源程序。b,外包的源程序。c,付费、免费的第三方库、插件、框架。d,脚本、配置文件、注册表。e,其它工具,比如安装盘工具。f,系统工具、免费工具,已有工具。三,程序单元间关系,项目划分、项目目录结构,依赖关系。
混合编程是指使用两种或两种以上的程序设计语言来开发应用程序的过程。如:智勇三国二单机版,C++内核,界面以html对话框为壳,实质为js+html。网络版BS程序,后端C++,前端JS+HTML,通讯方式WebSocket。
1.1.6 数据架构
分布式是重点内容,但我没经历过,所以不涉及。
数据库概念结构设计和 E-R图
数据库概念模型能真实、充分地反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求。
E-R图提供了表示实体型、属性和联系的方法。
1. 实体型用矩形表示,矩形框内写明实体名。
2. 属性用椭圆形,并用无向边将其与相应的实体型联系起来。
3. 联系用棱形表示,菱形框内写明联系名,并用无向边分别于有关实体型连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)。
如果一个联系具有属性,则这些属性也要用无向边与该联系连接起来。
1.1.7 物理架构
涉及较少不班门弄斧了。
以上是关于架构内容 节选自《闻缺陷则喜》(此书可免费下载)的主要内容,如果未能解决你的问题,请参考以下文章