软件构造 = 技术框架 + 业务实现。
1. 选择合适的技术框架, 适应业务的需求;
2. 根据业务的需要,改造现有框架。
两大问题: 数据存取、呈现 ; 应用组件整合。
1. 业务需求 ===》 实现为: 应用逻辑片段。 a. 需要做什么? 完成什么目标 ?
2. 数据模型 ===》 实现为: 数据库 。 b. 涉及哪些数据? 如何合理组织这些数据?
3. 技术框架 ===》 以一种优雅的方式组织所有的应用逻辑片段。 c. 需要哪些应用组件 ? 怎么合理地整合这些应用组件使之良好运转 ?
数据是驱动和内容, 通过应用逻辑和技术框架驱动业务目标的实现;
业务需求是呈现和形式,直接面向用户,提供价值与服务。
软件的核心是数据和业务。 数据从哪里来? 数据分布在哪里? 如何组织和呈现数据以提供最好的价值和服务?
软件与产品的一大区别是: 软件更倾向于注重技术,而产品更倾向于注重业务。 要想提升产品的价值与服务, 就要细致设计自己的业务目标。
技术 ===》 软件 ===》 产品 === 》 业务 ===》 用户
一个开发者不应该花过多时间关注:
1. 项目构建、编译、打包、部署等开发流程。 这些应该使用像 MAVEN 这样的项目构建工具结合脚本的方式自动化完成。 唯一的手工活动是敲入一行命令,然后从源代码直接生成可发布的二进制代码;
2. 项目的技术构架。 对于小中规模的应用程序, 通过选择合适的技术架构来构建系统应用框架,而这些技术架构由那些成天嚷嚷着要当系统架构师的人来完成;
一个开发者应该关注:
1. 专注于自己要完成的实际目标。 可以是某种算法,或者是特定业务的实现;
2. 项目的应用架构。 对于中大规模的应用程序, 关注项目所使用的应用架构是必要而不可避免的。
任何有助于偷懒的工具和做法都值得尝试。