Infrastructure software specializing in the capture, management, organization, and accessing of large amounts of related information.
Starting with the results of analysis, creating a concrete plan for implementation. Software design is the first phase of implementation, including establishing an architecture and refinement of that architecture into a detailed plan and requirements for individual modules. In the course of designing, detailed scenario capture, requirement, and specification documents are developed to guide programming activities. The esthetic and interactive capabilities and features of the software in context must also be designed, including the user interface (encompassing details of how software captures inputs from and presents results to users), interaction design (how the user interacts with the software in complex ways to achieve higher-level purposes), graphics design (the pictorial and artistic presentation of information on a screen), and industrial design (the physical layout and properties of a material artifact such as an information appliance).
The set of organizational activities and processes surrounding the creation of a software artifact ready for provisioning and operations. The waterfall model decomposes development into a set of distinct activities. Development includes defining specific requirements (e.g., functionality, performance), defining an architecture, implementation (programming of modules to realize functionality promised at interfaces), testing (trying out in the intended environment to check for fidelity with requirements and for defects), and documentation. During provisioning and operations, developers continue to maintain the software (repair defects) and upgrade the software to improve it and accommodate changing requirements. The spiral process model defines how those activities can be performed iteratively, emphasizing how the complementary and conflicting needs of various stakeholders are satisfied. Agile processes emphasize ways in which evolving needs can be satisfied. In community-based development, a community of interested volunteer programmers has access to source code and governance mechanisms to choose and incorporate contributed improvements into a coherent software distribution. An example is open-source software, a specific set of licensing terms and conditions (defined and trademarked by the Open Source Initiative).
A credential provided by a certificate authority to an entity (e.g., host, user) along with a secret to aid in that entity's authentication. The certificate includes identity information and corroboration information for the secret, and is signed by the certificate authority. Another party performing an authentication can use a certificate to validate the identity of the entity, assuming it trusts the authority, using a challenge-response protocol. An entire system of authentication based on certificates and certificate authorities is called a public key infrastructure (PKI).
See network effects.
A style of computing based on software that is partitioned across two or more hosts and having functionality based on interactions among those partitions involving communication across a network.
The act of conveying a software distribution to its eventual point of provisioning and operations, usually by download over a network or transport of a material storage medium. Deployment customizes a software distribution (an application or a component) for a particular platform (e.g., the configuration of a data-processing component to match a corporation's specific database schemas). Installation is the step of placing a deployed software distribution on a particular host, enabling its execution and use. If software is downloaded on demand, installation may be an automatic step performed after download and before use.