Как подразделяется программное обеспечение?