The applications on which your business depends have become too inefficient to ignore any more, and it’s time to modernize them. But is the process you’re going to use to bring those applications into the modern era even older and more inefficient than the software you’re going to be upgrading?
From the 1950s until the 1990s, virtually all software development followed the “waterfall model,” in which software was created, tested and deployed through a process in which defined phases followed each other in rigid order. Requirements were gathered and analyzed, a detained architecture design was created, the software was coded, it was tested, it was deployed and then it was maintained.
This mindset was so prevalent that in 1985, the U.S. Defense Department published a “military standard for software system development” that required all software developers working for the U.S. military to use “a software development cycle that includes the following six phases: Preliminary Design, Detailed Design, Coding and Unit Testing, Integration, and Testing."
Just as networks began to move from a centralized, hub-and-spoke mainframe-based model in the 1990s to distributed and cooperative networks such as the Internet and intranets, so too did the state of the art in software design. Design moved from the waterfall model to more iterative and adaptive models in which quicker and smaller, more evolutionary progress is made on an ongoing basis. That general model has continued to be refined in the intervening years, with agile development as the current state of the art.
But there’s something about legacy applications that all too often makes companies think in terms of legacy development processes to modernize them. Agile development has overtaken the traditional models of the mainframe era for a simple reason: It works better in virtually all cases, just as modern big data-driven, machine learning and AI applications work better than siloed mainframe applications.
That’s why when we take on an application modernization project at Reliable Software, we employ our own agile methodology to ensure that we’re not building the software of tomorrow for our clients using yesterday’s tools.
It’s important to understand, though, that “agile” is not anarchy. It’s a tested and efficient process that builds in accountability throughout the entire lifecycle, not just at big formal review points that sit months or years apart. We begin by ensuring we don’t just understand the technical requirements, but actually get into the business needs driving your strategy. We design a plan to meet those needs with technical requirements and measurable milestones, basing those on specific functionality that meets specific business requirements. In addition to traditional software development KPIs such as timeline, budget and features, we also hold ourselves accountable to agreed-upon business KPIs such as cost, labor or time savings delivered by the modernization process.
One key tenet of agile software development is close collaboration between experts, working together to pool their capabilities to solve problems and deliver software that satisfies the customer. If you’d like to learn what collaboration with the Reliable Software team could mean for your application modernization needs and how to ensure you’re not turning back the clock with your software development process, contact us to start the discussion.