For some developers, the software development life cycle consists of architecture, design, programming and a bunch of other stuff. Joe Niski, an analyst with the Burton Group, argues that those three processes are not, in fact, part of the SDLC at all.
Instead, he said, developers should think of the SDLC as a series of specialized functions, ranging from status reporting and version control to code analysis and bug tracking. These processes do not involve writing code, but they certainly impact software quality and the development process.
In a recent briefing called "SDLC Infrastructure: Supporting the Development Process," Niski offered insight into the steps of the software development life cycle and discussed how products like Visual Studio Team System address the challenges of SDLC management.
Some phases of the SDLC, like requirements management, remain in their infancy, Niski said. This is largely because they are trends and tend to be tightly coupled to a particular programming language, development methodology or architecture.
Those trends, though, can easily become mature elements of the life cycle. In particular, Niski pointed to unit testing.
"[Unit testing] has been going on at some level for decades," he said. "It's been very popular over the last eight years or so...through the extreme program methodology, but once it got into the general consciousness of the professional development community, it proved itself valuable regardless of the methodology you are using. At this point most developers swear by unit testing."
In between are processes such as integration, source code analysis and status reporting, which Niski said are "established but still evolving." This means there is no clear-cut set of best practices, the tool market is not stable and interoperability is limited.
With so many steps in the software development life cycle, developers should not be surprised when obstacles arise, whether they are the result of corporate mergers, multiple runtime platforms or developers simply trying something new.
The latter case may not be a bad thing, even if it conflicts with business standards, Niski said: "Industry trends happen and will inevitably find their way into an organization. Developers will want to do what's best for their business customers."
So how, exactly, can developers and architects manage the SDLC? For starters, Niski said, the development process must be in good shape. Requirements management tools will only work if there are explicit rules for establishing requirements, he said.
Another key step is to provide developers with the tools and the support they need. In this case, Niski suggested products that are methodology, architecture and platform agnostic. "In a lot of these [SDLC] disciplines, there's going to be an increasing move toward interoperability and less toward integrated lifecycle management or development cycle management suites," he noted.
Even though Microsoft's Visual Studio Team System is a vertical product suite, the company is well positioned in the software development life cycle management market, Niski said. Visual Studio Team System is intended to be a tightly bundled package, but at the same time, the company's "partner ecosystem" allows innovative products like the build tool NAnt and the unit testing tool NUnit to gain traction.
"They're bringing their basic functionality to market as quickly as they can and expecting ISVs and partners to build out the details," he said.