You might look at the design advice for Haskell, and specifically, some of the more recent research papers on embedding strong properties into the type system:
- Putting Curry-Howard to Work
Tim Sheard, Proceedings of the 2005 ACM SIGPLAN workshop on Haskell. Tallinn, Estonia, 74 - 85, 2005
- Language-Based Program Verification via Expressive Types
Martin Sulzmann and Razvan Voicu. In Programming Languages meet Program Verification (PLPV'06)
- Typed Contracts for Functional Programming
Ralf Hinze, Johan Jeuring and Andres Loh.
- A Library for Light-weight Information-Flow Security in Haskell
A Russo, K Claessen, J Hughes .
There's no standard methodologies here yet, though there are many many nice examples of individual problems.