以下是一些安全软件开发的经验总结,希望与大家共享。
1. 安全软件不要太复杂!复杂的安全软件不易与理解,设计,开发,以及验证,从而提高了软件系统的不安全性。 2. 采用动作的地方应该呈现相应的紧要属性。 3. 安全性和可靠性是一门艺术,并且两者都是紧要属性。 4. 系统开发中,合适的抽象是一种关键的工具。 5. 抽象和紧要的概念是非常难于量化的。 6. 记住,不要将折衷和优化从安全软件生命周期中删除。 7. 多样性和冗余是技术是提高可靠性的具有历史性的关键工具。 8. 软件不是硬件,同样设计也不是实现。 9. 有目的去创建多样的设计是很困难的,更糟的是一个版本的设计经常就是一个瓶颈。 10. 过程不是产品。提高过程是提高设计的一种很有效的方法,但是它并不能保证产产出更好的产品。 11. 记住验证和确认。但是用少的尺度和少的功能去评估部分设计 12. 从历史经验中学习失败的教训 13. 未来的设计工具:优美降级,形式化方法,过程改进方法(ISO 9000/TQM/CMM) 14. 我们善于做没有新奇的系统,但是市场需要新奇。 15. 没有xx的系统 16. 即使我们可以作出xx的实际(事实上我们不可以),但是最终我们会采用基于技术和经济的折衷方式。系统开发高层是由利益驱动的。 17. 即使说明文档设计很好的,但是系统在实际环境中也会应对意想不到的情况,因此没有xx和xx的说明文档。 18. 人是系统的一部分,并且用户和设计者是无法预见的。 19. 社会和法律问题是现实的一部分,它们是非技术的而外附加约束。 20. 系统并不是被期望或可接受的方式使用。尤其是对于临界软件,如果它们没有某种功能,它们就会被抛弃。 21. 在实际开发中,我们还应该使用,代码检错,回滚和检错点,从过去的经验学习。 22. 另外,还应该具有 对未来的预知能力:安全,异常和环境,高度的跨学科知识, 学会对付复杂化。系统会越来越复杂,甚至超出了我们可以控制的范围。 以上的22条经验,希望能于大家共勉!!
|