软件如何封装