An Expert System for Learning Software Engineering Knowledge (with Case Studies in Understanding Static Code Warning)