What is "Software Development" and how can I efficiently build software solutions to increase profitability for my buisness with it?
“Software development refers to a set of computer science activities dedicated to the process of creating, designing, deploying and supporting software.”
Software itself is the set of instructions or programs that tell a computer what to do. It is independent of hardware and makes computers programmable. There are three basic types:
System softwareto provide core functions such as operating systems, disk management, utilities, hardware management and other operational necessities.
Programming softwareto give programmers tools such as text editors, compilers, linkers, debuggers and other tools to create code.
Application software(applications or apps) to help users perform tasks. Office productivity suites, data management software, media players and security programs are examples. Applications also refers to web and mobile applications like those used to shop on Amazon.com, socialize with Facebook or post pictures to Instagram.1
A possible fourth type isembedded software. Embedded systems software is used to control machines and devices not typically considered computers — telecommunications networks, cars, industrial robots and more. These devices, and their software, can be connected as part of theInternet of Things(IoT).2
Software development is primarily conducted by programmers, software engineers and software developers. These roles interact and overlap, and the dynamics between them vary greatly across development departments and communities.
Programmers, or coders, write source code to program computers for specific tasks like merging databases, processing online orders, routing communications, conducting searches or displaying text and graphics. Programmers typically interpret instructions from software developers and engineers and use programming languages like C++ or Java to carry them out.
Software engineersapply engineering principles to build software and systems to solve problems. They use modeling language and other tools to devise solutions that can often be applied to problems in a general way, as opposed to merely solving for a specific instance or client. Software engineering solutions adhere to the scientific method and must work in the real world, as with bridges or elevators.
Software developershave a less formal role than engineers and can be closely involved with specific project areas — including writing code. At the same time, they drive the overall software development lifecycle — including working across functional teams to transform requirements into features, managing development teams and processes, and conducting software testing and maintenance.3
The work of software development isn’t confined to coders or development teams. Professionals such as scientists, device fabricators and hardware makers also create software code even though they are not primarily software developers. Nor is it confined to traditional information technology industries such as software or semiconductor businesses. In fact,according to the Brookings Institute, those businesses “account for less than half of the companies performing software development.”
An important distinction iscustom software developmentas opposed to commercial software development. Custom software development is the process of designing, creating, deploying and maintaining software for a specific set of users, functions or organizations. In contrast, commercial off-the-shelf software (COTS) is designed for a broad set of requirements, allowing it to be packaged and commercially marketed and distributed.
Steps in the software development process.
Developing software typically involves the following steps:
Selecting a methodologyto establish a framework in which the steps of software development are applied. It describes an overall work process or roadmap for the project. Methodologies can includeAgile development,DevOps,Rapid Application Development(RAD),Scaled Agile Framework(SAFe),Waterfalland others. (See the glossary.)
Gathering requirementsto understand and document what is required by users and other stakeholders.
Choosing or building an architectureas the underlying structure within which the software will operate.
Developing a designaround solutions to the problems presented by requirements, often involving process models and storyboards.
Constructing codein the appropriate programming language. Involves peer and team review to eliminate problems early and produce quality software faster.
Testingwith pre-planned scenarios as part of software design and coding — and conducting performance testing to simulate load testing on the applicatio.
Managing configuration and defectsto understand all the software artifacts (requirements, design, code, test) and build distinct versions of the software. Establish quality assurance priorities and release criteria to address and track defects.
Deployingthe software for use and responding to and resolving user problems.
Migrating datato the new or updated software from existing applications or data sources if necessary.
Managing and measuring the project to maintain quality and delivery over the application lifecycle, and to evaluate the development process with models such as theCapability Maturity Model(CMM).
The steps of the software development process fit intoapplication lifecycle management.
Requirements analysis and specification
Design and development
Maintenance and support
Software development process steps can be grouped into the phases of the lifecycle, but the importance of the lifecycle is that it recycles to enable continuous improvement. For example, user issues that surface in the maintenance and support phase can become requirements at the beginning of the next cycle.