What is Software Development?Category: computer / software Date: 16 1401, 17:40 Author: a Views: 70
People both inside and outside IT often ask what is software development. It is a process to create computer software using one or more specific programming languages that provides functionality to address particular business or personal objectives. The development of software is usually a planned initiative with a number of steps and stages that result in the creation of operational software. Hence a good definition is: “a process with a set of activities that create computer software products, including their design, development, testing, and deployment.” Software itself is a set of instructions or programs that tell a computer what to do. It is independent of hardware and makes computers programmable.
DevelopmentSince the advent of software product development in the 1960s, many different approaches have been used for developing the software; the most common today uses an agile approach to development. An agile software development definition includes an approach where development requirements and solutions are delivered through the collaborative effort of self-organizing and cross-functional teams and their customers. Unlike the more traditional and often inflexible development software examples, agile encourages and promotes flexible responses to change, by advocating adaptive planning, evolutionary development, early delivery, and continual improvement.
Software is developed using computer programming, carried out by a software developer. A software developer definition is “a person that creates software, either by themselves or in conjunction with others.” What do software developers do day-to-day? They use processes and techniques to create working software, including requirements definition, data flow design, code design, process flow design, flowcharting, code creation, software development testing, and debugging. The end-to-end process is sometimes referred to as the software development life cycle (SDLC). The term ‘full stack software developer’ is someone that develops both user-facing software and server software, including database development and the development of application interfaces.
What are the Different Types of Software Development?
There are several different types. They can be grouped into four basic categories:
Application development that provides functionality for users to perform tasks. Examples include office productivity suites, media players, social media tools, and booking systems. Applications can run on the user’s own personal computing equipment or on servers hosted in the cloud or by an internal IT department. Media streaming development is one example of application development for the cloud.
System software development to provide the core functions such as operating systems, storage systems, databases, networks, and hardware management.
Development tools that provide software developers with the tools to do their job, including code editors, compilers, linkers, debuggers, and test harnesses.
Embedded software development that creates the software used to control machines and devices, including automobiles, phones, and robots.
Each of the categories of the different types of development typically attracts different types of software developers, with different personalities, characteristics, and specialisms. For example, medical device software development requires software developers that are fully conversant with developing safety-critical systems. This is a specialism that a typical application software developer is unlikely to possess, but which is critical for all aspects of healthcare software development. A music software developer will need to have musical ability, as well as a grounding in formal music theory, to be successful in developing software for the notation and performance of music. A security software developer needs to have more than just development skills, they must also be experienced in all aspects of IT security. Mobile development specializes in developing application software for mobile devices such as phones and PDAs. Enterprise software development is used to develop a suite of applications that are used across an organization.
The software that is developed can remain proprietary within the organization, or be sold to others. It can also be made freely and widely available to anybody that wants to use it; this is called open source development.
The History and Future
The history of software development and the history of software developers is an interesting one and is intertwined with the history of computers. Early computers were mechanical machines, known as analog computers. Some consider that the first example in history of developing software was in 1810 when Joseph Marie Jacquard devised a system of holes punched in cards to guide the patterns used in his looms to make cloth. The technique of using holes punched into cards or paper tapes was later adopted to program early computers, including those made by IBM, Elliott, and GEC.
Ada Byron daguerreotype by Antoine Claudet 1843 or 1850 - croppedOthers say that Ada Lovelace is often credited as the first software developer when in 1843, she created a rudimentary program for Charles Babbage’s ‘Difference Engine.’ This allowed sequences to be designed so that instructions could be given to select particular gears and shafts.
The big breakthrough was made by George Boole, who, in 1947, proved the link between logic and mathematics. Without this, we would not have the computers that we all use every day, including our smartphones and digital watches, but it wasn’t until 1948 that Claude Shannon wrote a thesis on how binary logic could be used in computing.
This paved the way so that when digital computers were first developed, they could be instructed on what to do using binary logic as the method. In 1949 John Mauchly developed ShortCode. This was the first programming language for electronic computing devices, but it required the software developer to change the statements from 0’s to 1’s by hand. In 1951 Grace Hopper wrote the first compiler that turned programming language statements into the required 0’s and 1’s. This lead to faster development, as the software developer no longer had to do it by hand.
In 1957 the first major programming language, FORTRAN, was developed. FORTRAN was excellent at handling numbers but was not so good at handling the inputs and outputs required for business computing. To address this, COBOL was developed in 1959, specifically for business computing. COBOL is still at the heart of many major systems used in the banking industry today.
Over time, more and more programming languages were developed, all aimed at speeding up the development process and improving the quality of the software for specific tasks. For example, in 1958, the LISP programming language was developed specifically to aid research into artificial intelligence. LISP looked nothing like the other programming languages of the time, but it is still in use today because of its highly specialized and abstract nature.
The popular languages Algol (1958) and BASIC (1964) led to a rapid growth in computer programming and the development of software, as they were cheap to deploy, easy to learn, and very flexible in what they could do. Many of today’s programming languages, including C, C+, C++, VB, and Java, have their roots in ALGOL and BASIC.
The history of lean development, which is the approach most used today, started in 2003. Mary and Tom Poppendieck were actively involved in the agile software development community. They authored a book called ‘Lean software development’ that restated lean principles as applied to developing software, and a set of 22 tools. The future of agile development was assured as more and more organizations realized the value that it could bring.
As the demand for more and more applications continues to accelerate across the globe, the future of software development and the future of development jobs is in no doubt. Even the best artificial intelligence is unlikely to replace the need for skilled, innovative, and motivated software developers.