Compare and contrast the software engineering approaches for each of the following software application domains; system software, application software, engineering/scientific software, embedded software, product-line software, web/mobile applications, and artificial intelligence software.