Pahami prinsip-prinsip umum keamanan, (integritas, otentikasi, otoritas) dan kemudian bacalah beberapa buku tentang bagaimana orang telah merongrong pilar-pilar keamanan ini selama ribuan tahun dan Anda akan berada di setengah jalan di sana.
Kemudian bacalah beberapa buku bagus tentang desain dan strategi pengujian dan Anda akan belajar bagaimana merancang testability ke dalam arsitektur Anda.
Sekarang kita sampai pada titik ketika saya memikirkan keamanan. Saya berpikir tentang bagaimana saya bisa memvalidasi sumber data, apakah penting jika data dirusak, siapa sumber datanya, seberapa yakinnya saya? bagaimana itu bisa diubah dll ...
Ini mempengaruhi desain. File konfigurasi mungkin memiliki bagian kunci yang dienkripsi, atau bidang tertentu bisa dalam teks yang jelas dengan bidang tanda tangan yang terkait. Hal-hal menjadi lebih kompleks dengan layanan yang dihadapi internet karena Anda harus mengharapkan tingkat permusuhan yang lebih besar di sana.
Kemudian pada pengujian, bagaimana Anda menguji semua ini. Apa entri data maksimum Anda, apa yang terjadi jika Anda mendorong perangkat lunak melampaui batas itu, bagaimana cara mengatasinya? Apa yang dipercaya? bagaimana Anda bisa memalsukan kepercayaan itu?