-
Essay / Essence and Accidents of Software Engineering - 1133
Assignment 3: Software Process ModelsBrook's article "No Quick Fix: Essence and Accidents of Software Engineering" presents the complexity of software development and its inherent difficulties . It brings out the accidental and essential difficulties that we encounter in the software development process. It identifies complexity, conformity, variability and invisibility as inherent properties of any software while accidental difficulties are encountered during the development cycle/process. He suggests that being able to develop reusable software reduces cost and time and leaves room for a wide variety of applications/features across different platforms/environments. Being able to balance and make the most of available resources in terms of processing powers, hardware/software capabilities, personnel, budget, etc., is essential for software success in the market. It is quite interesting and very relevant how the creative process of staged software development helps and (rather than just writing the code) motivates software developers and design managers to come up with new ideas during iterations. Brook's also mentions how high-level programming languages, time sharing, and different development environments affect the complexity of the software development process to eliminate accidental difficulties, thereby leading to high efficiency. According to him, areas such as graphics programming, expert systems and artificial intelligence, although providing powerful insights, have little to do with the actual software development process of defining its requirements or features. It identifies the benefits the user can gain from adapting an existing system to simple solutions. In fact, they are now part of the development process to help developers with an easy transition. Different tools and environments play an important role in improving software efficiency by reducing the time and need for coding and syntaxes (e.g. translating UML diagrams into real code, etc.) and help designers to facilitate debugging and thus enable rapid prototyping. for quick results. Brook mentions variability and complexity as software constraints. But, in my opinion, even though the change introduces complexity for the designers, from the user's point of view the change reduces the complexity for the user to use the software. Additionally, the more complex the problem, the more successful the results will be when solved. However, users have ever-changing requirements (often they're not sure what they want!). The spiral model solves this problem wherever possible.