The module touches on almost every aspect of software engineering. It starts from software development processes, to software requirement analysis, to architecture design, to principles and patterns, and finally software development evolution. While CS2103/CS2103T would have covered a bit on some of the topics, CS3219’s requirements are more in depth and practical. You are expected to make architectural decisions or various design decisions in different stages of developments given a certain scenario. This not only requires the in-depth knowledge of each topic, but also connecting various topics to understand the bigger picture. When making a design decision, you have to think about the requirements and constraints, and use them as basis for your decisions.
A big shock to me in this module was how much content there was in the various topics. I did not think software engineering was that complicated before. However through the readings, I learnt that it is actually a formal field of study as vagarious as artificial intelligence. For example, the first stage of software development, the requirement analysis is a well-studied topic. There are various methods and approaches to carry it. The final result of the requirement analysis is also a piece of formal document called software requirements specification (SRS). SRS has well-defined formats to aid in the architectural designs later. The hot topic of Agile development is also studied as well, but it is merely one of the many approaches for software development life cycles (SDLC).
Head over to our Shop for more module content!