软件工程有过程层、方法层、工具层,核心问题是质量问题。
                   ----以上参考自《软件工程-实践者的研究方法》
过程层是软件过程,参考《个人软件过程》、《小组软件过程》、《统一软件开发过程》、rup文档。方法层是各种分析、设计和测试的方法,如omt,booch,jacobson等人的ooa方法。没有方法层的支持,过程层是无法实施的。参考《uml和模式应用-面向对象分析与设计导论》、《设计模式》等书。工具层是使用各种工具满足方法层的需要,工具如分析设计语言、编程语言、编程工具等等,参考《uml用户指南》、《uml参考手册》、《c++编程思想》、《vc技术内幕》各种编程语言的教材。除了以上几个,项目和产品还依赖于各种现有的技术,如平台,SDK,第三方类库。这些都是方法层的“生产资料”,这方面书太多了。