A Unifying Framework for Structured Analysis and Design Models : An Approach Using Initial Algebra Semantics and Category Theory (Cambridge Tracts in Theoretical Computer Science)