美文网首页
设计软件

设计软件

作者: begonia_rich | 来源:发表于2018-04-28 17:09 被阅读8次

    1架构驱动力
    如何理解架构驱动力?架构是由什么东西驱动的,驱动架构的成型因素就是架构驱动力
    功能需求,质量属性(非功能需求),约束(外界的限制,如:技术选型,部署平台),原则(为了将一致性和清晰度引入代码库而采用的原则或架构的原则),理解影响(根据特定的目标和语境,作出最优解)

    软件架构谈论的是最重要的设计决策,其重要性以变动的成本来衡量。

    2质量属性(非功能需求)
    非功能需求一般被看作“能力”,主要跟服务质量有关
    性能(快慢),可伸缩性(相同的时间内处理更多的请求),可用性(9的个数指正常运行时间的百分比),安全性,灾难恢复,可访问性(残疾人也能访问),检测(心跳/告警),管理,审计(系统数据的修改记录),灵活性,可拓展性,可维护性(很难量化,不如遵循架构开发原则靠谱),法律法规,国际化,本地化

    网上找的可用性图

    可用性和9的关系,5个9五分钟,6个9三十一秒,3个9八小时
    计算公式:全年不可用时间=99.999几个看你的99% * 365 *时间单位

    3处理非功能需求
    捕获,提炼,量化非功能需求,给出书面的表示,这样就可以检验和测试。不能只是简单的口头描述

    4约束
    只要是现实世界都有约束。
    时间和预算的约束,技术约束(可用的技术清单,现有系统的互操作性,目标部署平台等),人员约束,组织约束。
    约束可以划分优先级,并且是可商量的。。
    软件架构角色的一部分就是找出这些约束,搞清楚为什么会被强加进来,让它们帮助塑造你的软件架构。

    5原则
    约束是强加于你的,而原则是你为了将标准方法和一致性引入构建软件的方式而采用的。
    开发原则(编码标准规范,自动化测试,静态分析工具等),架构原则(分层策略比如mvc,高内聚低耦合,无状态,充血与贫血)

    谨防最佳实践,虽然最佳实践是行动的指导,但是也并不是最完美的,一定要是按照具体的语境处理问题

    6技术不是实现细节
    如果你不明白选择X技术而非Y的权衡,那就不应该做决策!技术不只是一个“实现细节”你做出的技术决策跟你分解,安排和设计软件系统的方式重要!

    7更多分层等同于更高复杂度
    分层越多,系统越松散,同时带来了复杂度的提升。需要根据实际的项目需要进行分层。

    8协同设计是一把双刃剑
    我们给出的策略都是基于自己已有知识,经验和喜好给出的。沟通然后达成共识,这才是最好的方式。

    9软件架构是对话的平台
    软件设计过程是一个交流的平台。

    相关文章

      网友评论

          本文标题:设计软件

          本文链接:https://www.haomeiwen.com/subject/duaglftx.html