In the 80s and 90s, two trends dominated software development. One is the rapid growth of applications, including those built for the Web. The other is the flourishing of tools and paradigms (approaches to design).
Despite the emergence of new trends, the main stages software development remained unchanged:
- Definition of software development process;
- Development project management;
- Description of the target software product;
- Product design;
- Product development;
- Parts testing;
- Integration of parts and testing of the product as a whole;
- Product support.
Developers are changing the sequence of development of these directions. In reality, software development is usually defined required feature set or project deadline. As a result, only well-organized groups of engineers who software development methods, are able to properly build the work. AT otherwise, developers usually expect chaos.
The software development system includes 4 “P” (Personnel, process, project, product) Personnel – those who do it. The development team is the best works well if each participant knows what he has to do, and has certain responsibilities. The other side of the personnel aspect is these are the persons interested in the project: customers, users and investors. In any production, results are determined technology used. Due to the specificity of software production (practically zero replication cost, very fast obsolescence, etc.) the technology of its creation is highly dependent on quality of the development team, so it should include organizational and managerial aspects.
Process is the way in which it is done. Allocate: waterfall process, iterative process, XP. Custom development process (Personal Software Process), team development process (Team software process). Capability Maturity Model Model) to evaluate the capabilities of the development team. A project is a set of activities necessary to create artifact. The project includes contact with the customer, writing eleven documentation, design, coding and testing product. A product is not only software, but everything its constituent artifacts. Artifacts are objects modules, source code, documentation, test and measurement results productivity.
Quality – applications must satisfy in advance a certain level of quality. To reach the required level quality, the following methods are used:
- inspection (quality control process focused on to the development teams. It applies to all stages development);
- formal methods (proof of correctness – mathematical or logical);
- project management methods.
Programming Technology Toolkit
Toolkit of programming technology – a set programs and software systems that provide technology development, debugging and implementation of created software products.
Application building tools
Средства для создания приложений – локальные средства, обеспечивающие выполнение отдельных видов работ по созданию программ, делятся на:
- programming languages and systems;
- user tool environment.
A programming language is a formalized language for describing algorithm for solving a problem on a computer. They are divided into classes:
- machine languages are programming languages that are perceived computer hardware (machine codes);
- machine-oriented languages – programming languages, that reflect the structure of a particular type of computer (assemblers);
- algorithmic languages – architecture-independent, computer programming languages to reflect the structure algorithm (Pascal, BASIC, Fortran, etc.);
- procedurally oriented languages – programming languages, where it is possible to describe the program as a set procedures (subroutines);
- problem-oriented languages – designed to solve tasks of a certain class (Lisp).
Another classification of languages is their division into languages, focused on the implementation of the basics of structured programming, based on the modular structure of the software product and typical control structures of data processing algorithms of various software modules, and object-oriented languages, supporting the concept of objects, their properties and processing methods.
Programming systems include:
- compiler (translator);
- Integrated Program Development Environment (not always);
- means of program code optimization;
- a set of libraries;
- link editor;
- service tools (utilities) (for working with libraries, text and binary files);
- reference systems;
- system of support and management of software products complex.
The compiler translates the entire program without executing it. Translators (interpreters) perform step-by-step processing and program execution. Debuggers are special programs intended for tracing and analyzing the execution of other programs. Tracing is the provision of execution in a statement-by-statement option.
The user tool environment is a special tool, built into application packages, such as:
- library of functions, procedures, objects and processing methods;
- keyboard macros;
- language macros;
- designers of screen forms and objects;
- application generators;
- high-level query languages;
- menu designers, etc.
IDEs integrate a set of means for their complex application at technological stages creating a program.
Tools for creating information systems (Case–technology)
CASE-technology (CASE – Computer-Aided System Engineering) – software package that automates the entire technological process of analysis, design, development and maintenance of complex software systems. The means of CASE-technologies are divided into:
- implementations built into the system – all solutions for design and implementation of binding to the selected DBMS;
- system-independent implementations – all solutions for design focused on unification (definition) the initial stages of the life cycle of the program and the means of their documentation, provide more flexibility in choosing means of implementation.
The main advantage of CASE technology is the support team work on the project due to the possibility of working in local network of developers, export (import) of any fragments project organized by project management. Some CASE systems support the creation of a program framework and the creation of a complete product.