Code Quality
Quality is a goal of software development, so it may seem that considering code quality to be an element is unnecessary. Yet, the quality of the existing code does impact how enhancements and fixes are made to that code in the future. When the quality of the code is high and uncomplicated, even junior developers and those unfamiliar with the code can probably fix bugs in it and make enhancements, but when the quality is really low, changes made by anyone other than those experienced with it may quickly lead to new, unintentional problems. A good suite of unit tests for the code can provide a lot of assurance and reduce a lot of fear for developers coding complex applications with low quality code. High quality code, by definition, also implies that the code is relatively easy to change its design to support new features. When it is not, such changes take much longer, thus affecting the entire SDLC. When a software solution has a lot of bugs, teams spend a lot of time doing support instead of new development, and much of their development processes may be oriented toward optimizing the resolution of bugs instead of optimized to producing new features. In some companies, fixing bugs is handled by different teams than those that originally wrote the software; entire teams of coders are tasked with the job of fixing bugs across many applications. Each company must decide which team formations work best for them, but when software quality is high, teams existing just to fix bugs is probably unnecessary.