Computer-based system engineering is introduced by Sommerville as a discipline sitting above software engineering and encompassing hardware systems to take a whole system perspective. The introduction of hardware systems bring in a number of aspects such as the physical environment of the system, which need to be considered and controlled. Another key aspect is the consideration of system properties which exist within the system as a whole (emergent properties). Sommerville provides some examples these emergent properties, such as the overall weight of a system (which could be computer from the weights of all the subsystems), and the usability of the system (which would have complex dependencies on the hardware, software the system’s environment and indeed the system’s users).
Though it’s not actually relevant, I’ll wander off on that last point as I’ve always been quite interested in usability (being a Mac user). Simplistic views of usability have always really frustrated me. I remember once reading a really high level requirements specification written by a client which said something along the lines of ‘The system should be user friendly – what more is there to say?’. Actually, there’s a lot. Who are these users? Can we assume they can use a computer? If not, maybe I should be getting out of the way so someone can design a paper based system. What are the usage patterns in the system? A system which users will work on without any training needs to be designed very differently to a system people will use day in and day out. In the end, what the client really meant here was that usability was an important factor for the system, which I would agree with whole heatedly, but downplaying the complexity of usability just makes it more difficult to allocate the time it requires.