软件的复杂性

本文深入讨论了软件复杂性的根源,包括问题域的复杂性、管理开发过程中的困难、软件灵活性的选择以及描述离散系统行为的问题。复杂性通常表现为层次结构,具有相对本原性、关注点分离、共同模式和稳定的中间形式这五个属性。文章引用了《面向对象分析与设计》的内容,指出需求变化、沟通分歧和多样的技术选型都是导致软件复杂性增加的因素。
摘要由CSDN通过智能技术生成

引用声明:电子工业出版社《面向对象分析与设计》第三版:修订版 Grady Booch等著的书籍内容,仅供学习使用。

复杂性

一. 为什么软件在本质上是复杂的?

软件固有的复杂性有四个原因:
  1. 问题域的复杂性
    比如公共交通购票系统需求(经常出问题的12306,不仅要处理正常用户购票,还要抗住第三方软件的频繁抢票)。
    比如航天电子系统需求,从功能上就很难理解,还要加上所有的非功能需求,如可用性、性能、成本、健壮性和可靠性,不能遇到突发问题直接宕机吧,那就不是航天了,而是拿人命开玩笑。
    有的客户只是对想要的软件系统有一个模糊的想法,和开发者之间存在沟通上的分歧。
    软件系统在开发过程中经常发生需求改变;产品经理和开发程序员之间大打出手也不是一次两次了,“小明,其他同类型的产品做得挺好,今晚加班搞下,明早上线。”,“这种坑爹需求谁爱做谁做,老子不伺候了”。

  2. 管理开发过程中的困难性
    人员协调困难,怎么合理安排人手,投入多少骨干和萌新,不同的开发者能承受多少工作量?
    风险管控困难,怎么控制需求管道,不超出团队承受能力范围。怎么控制交付时间点,保证合理的开发和测试时间?
    质量维护困难,怎么维持设计的一致性和完整性?怎样沉淀团队经验和解决方案?假如前期开发管理不到位,测试阶段问题爆炸怎么处理?线上问题多影响开发进度怎么办

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值