软件系统由哪些部分组成