Software development basics might not be basic to everyone, but they do help a person begin to learn what those codes really do to your computer.
Software development is the initial phase of the software life cycle, by which software is written, approved, packaged, disseminated, utilized by users, maintained and updated, and finally, replaced and rendered obsolete. he software development is currently based on a body of international standards known as ISO 12207. It establishes the means by which services to a system are acquired and configured based on an algorithm of processes and associated outcomes. Based on this algorithm, there are 43 primary processes, 95 activities, 325 tasks, and 224 outcomes as of the most recent update to ISO 12207 in 2008. This standard has been established in order to reduce dependence on specific modules (so that there are no compatibility issues) and maximize cohesion throughout the software development market so that as much innovation can be applied without a predominance of one figure, product, or organization.
There are three main stages to software development, known as the planning stage; the implementation, testing, and documentation stage; and the deployment and maintenance stage.
The Planning Stage of Software Development
The first step of the planning stage is to determine the requirements of the software to be developed through a requirement analysis. This includes communicating with the client in need of software development, an analysis of this communication to verify that there are no obscurities, irregularities, or incomplete information, and the construction of a record of such requirements. Throughout this process, frequent generation of live code is often produced so that the abstract ideas often provided by clientele can be translated into something that can be produced in accordance to what the client wants.
Finally, once a clear idea and trajectory has been established, the scope of development is compiled and published in a document referred to as a Scope Document. This will be the result of various determinations, such as whether the desires of the client is possible within the allotted time or budget, whether the software can be produced in its entirety legally, and any other nuances to assure that there are no discrepancies with what is finally promised to the client before beginning production.
Implementation, Testing, and, Documentation Stage of Software Development
This is the stage during which a team of developers actually create a programs using one of various programming languages. Such languages include:
- .NET (dot-net)
- Java (currently the most common programming language used worldwide through a platform released through the company Sun Java)
- J2EE
- HTML
- Ajax
- XML
- C++
- C#
- CLI
- PHP
- Python
- Perl
- SQL
- Ruby
Once the programming is complete, the testing stage determines whether the completed script follows specific quality requirements, including:
- Efficiency/performance (how many/much resources are required to run the program)
- Reliability (the stability of the program based on a lack of programming errors)
- Robustness (the stability of the program based on anything but programming errors)
- Usability (the ease of use/how well the software translates in a Graphical user interface)
- Portability (how easily the program can be converted to function on various platforms)
- Maintainability (how easily the program can be updated, altered, and fixed)
Finally, the documentation stage begins, during which the design of the program is documented and an Application Programming Interface (API) is developed, which enables the software to interact with other programs, if necessary.
Deployment and Maintenance Stage of Software Development
At this stage, the software is given to the client to be allocated to users. Prior to this release, it is highly recommended to programmers that a user manual be written in order to facilitate the introduction of the software. For more important programs, the final release of a program is usually preceded by an Alpha and Beta stage, whereby the initial and secondary release is disseminated to a small pool of select users in order to “test drive” that version of the program before official release. Once the official version program is finally released, the maintenance phase begins, during which problems are reported to the parent company, developer, or team of developers, and alterations are subsequently applied to the software to approach such problems. Bug tracking tools are usually included in software packages in order to track such problems to avoid expensive delays in reported issues. If labor costs during the maintenance stage of a released program exceed 25% of the labor costs prior to release, the program is usually considered a failure, leading to a complete recreation or abandonment of the project.
There are also four development models that programmers follow that determine how software behaves, interacts, and what is required to run the program. They are:
- The Waterfall Software Development Model
This determines a slightly different set of steps from the standard programming methodology. These steps are the following:
- Specification of requirements
- Design
- Implementation of design
- Integration
- Validation
- Deployment and Installation
- Maintenance
Although there may be reviews between each stage, the Waterfall model is generally continuous, with one stage immediately leading to the other. The Waterfall method discourages reviews of completed stages. This renders the model efficient, but critics have asserted that it is inflexible.
The Spiral Model for Software Development
The Spiral Model also has slightly divergent steps for developers to follow during the construction of software. These steps are:
- Formulate plans to identify the target market for the software and clarify development restrictions
- Perform a risk analysis to eliminate risks associated with the development of the software
- Implementation of the project
- Customer evaluation (alpha and beta versions released to a small pool of users)
The Spiral Model is usually applied to large-scale development projects.
The Iterative or Incremental Software Development Model
Through this iterative process, the software is developed in incremental but progressively larger portions in order to identify issues as the software is being developed. It is accepted as a rather efficient development methodology, but is vulnerable to issues identified in the late stages in the program development, resulting in lost time and money, and sometimes, abandonment of the project.
The Agile Model for Software Development
This is a more ambitious form of the iterative model that relies entirely on feedback as opposed to planning, with numerous tests and versions of the product released in relatively quick succession, usually within a few weeks of each other. Versions of this model include Extreme Programming, Rational Unified Process, and Scrum.