SEPTEMBER 2023CIOAPPLICATIONS.COM 19delivery has helped deliver software faster, this automation is still only a small part of the software development process. AI tools such as ChatGPT may help, but it is likely that a large amount of future software will still depend on the human creative process.When software engineering was in its infancy, it was thought that it was similar to existing forms of physical engineering. Like many of these engineering disciplines, for complex structures or products, software development adopted the waterfall model. This had very limited success. In 1998, dissatisfaction with the old engineering paradigm led to a new, more nuanced approach. Instead, the Agile Manifesto was proposed to handle the experimental nature of software development and recognised the need to build tangible models earlier. This approach enabled software engineers to surface hidden assumptions and then use these models (working software)to clarify requirements with end users (customer collaboration) and then amend the approach (responding to change over following a plan). The different engineering paradigm is exemplified in one of the Agile principles: 'Working software is the primary measure of progress.'"We are uncovering better ways of developing software by doing it and helping others do it. Through this work, we have come to value:· Individuals and interactions over processes and tools· Working software over comprehensive documentation· Customer collaboration over contract negotiation· Responding to change over following a plan.That is, while there is value in the items on the right, we value the items on the left more."Agile Manifesto - http://www.agilemanifesto.org/Agile software development recognises that because software can have potentially unbounded complexity and is customisable through the creation process, an approach where software is built incrementally is better than a structured top-down, architecture-driven waterfall method. This is recognised in the principles behind the Agile manifesto, which states that "The best architectures, requirements, and designs emerge from self-organising teams."Here, new software has an emergent architecture rather than the intended architecture possible in other forms of engineering. In summary, the cerebral virtual nature of software development means it is still more of a computerised craft industry relying on experimental investigations and evolving architectures. The lack of bounded physical artefacts and standards has implications for the management of software projects where more traditional methods and tools must be replaced by more iterative agile approaches. The rapidly changing nature of software engineering means it must rely more on a creative, collaborative approach compared to other physical engineering disciplines. Understanding the context of any engineering discipline is important because it enables us to determine what paradigms and principles can be applied from related technical areas
< Page 9 | Page 11 >