软件产品的思考

软件产品

构想 -> 需求 -> 系统设计 -> 架构设计 -> 模块设计 -> 编码 -> 测试 -> 发布 -> 维护 -> 生命周期

如何进行软件架构设计

  • 横纵向充分解耦
    架构是业务逻辑的技术表现形式
    沿着业务领域解耦开的模块才是真正意义的解耦
    在于切分出的模块可以匹配产品业务逻辑以及产品未来演进的诉求
    各模块保证接口稳定,模块本身可长期独立交付演进
  • 模块,组件间的接口定义
    功能清晰,性能需求明确,接口定义明确
  • 看护软件架构,确定架构的不腐化
    • 架构和接口定义代码化 —> 以头文件的形式代码化
    • 严格的架构管理机制
    • 新增需求对架构的影响
      首先从产品全景的功能逻辑入手,把新需求挂在产品全功能这颗树上。更新完产品全景业务逻辑后,再进行软件架构调整
  • 重视软件工程能力建设
  • 软件工程师的素养
    • 自我设定目标和自我激励
      代码洁癖
      软件研发 = 软件技术 + 软件工程 + 艺术想象力
    • 持续学习的能力
    • 逻辑抽象能力和技术感知力
    • 全局视野和系统思维能力
    • 洞察未来能力

对软件生态的思考

  • 要有多赢的心态
  • 生态成功的基础是为消费者,开发者带来价值
  • 把方便留给开发者

对软件文化的思考

  • 信任和开放的环境
  • 开放的做软件
  • 评价和考核要有新的方式

软件分类

  • 嵌入式软件
    与硬件强耦合
    需求明确,架构确定<国际标准就是架构>
    标准明确,生命周期明确,客户维护水平高

  • 平台&云化软件
    需求分散,缺乏标准,研发实现新功能堆叠无尽
    规模膨胀,架构极易腐化
    生命周期极难收敛,因客户业务演进,背景差异大

  • 互联网服务类软件
    没有标准,初期无架构,研发实现需求快,小,全,强。
    要求全功能团队,没有生命周期概念,快速迭代,快速闭环
  • 工程工具类软件
    构建生态
    软件工程能力和优秀软件经验的总结和积淀
显示 Gitment 评论