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