Basic introduction Chinese name: Software mbth: Sofare application category: system software, application software and other development languages: Java, C/C++, Basic and other definitions, characteristics, classification, application category, authorization category, related concepts, development process, software engineer, legal protection, copyright ownership, carrier, license, life cycle, software life cycle model, common software life cycle model, Development language, O language, Java language, Yi language (E language), C/C++ language, learning language, Basic, PHP, Perl, Python, C #, JavaScript, Ruby, Fortran and the pinyin is Rum4Njià n. The definition of software in the national standard is: 1. A collection of instructions or computer programs that can provide the required functions and performance at runtime. 2. The program can handle the data structure of information satisfactorily. 3. Describe the functional requirements of the program and how the program operates and uses the requested document. Taking the development language as the description language, we can think that: software = program+data+document features 1, which is intangible and has no physical form, and its function, characteristics and quality can only be understood through its running state. 2. Software permeates a lot of mental work, and people's logical thinking, intelligent activities and technical level are the keys to software products. 3. Software will not be worn out like hardware. However, there are defects in maintenance and technical update. 4. Software development and operation must depend on the specific computer system environment and hardware. In order to reduce dependence, software portability is put forward in the development. 5. Software is reusable, and it is easy to be copied when developing, thus forming multiple copies. Application categories are divided according to the scope of application. Generally speaking, software is divided into system software, application software and middleware between them. System software System software provides the most basic functions for computer use, which can be divided into operating system and system software, among which the operating system is the most basic software. System software is responsible for managing all kinds of independent hardware in the computer system, so that they can coordinate their work. System software enables computer users and other software to treat the computer as a whole, regardless of how each underlying hardware works. 1. Operating system is a program for managing computer software and hardware resources, and it is also the core and cornerstone of computer system. The operating system is responsible for managing and allocating memory, determining the priority of supply and demand of system resources, controlling input and output devices, operating networks, managing file systems and other basic affairs. The operating system also provides an operating interface for users to interact with the system. 2. Supporting software is software that supports all kinds of software development and maintenance, also known as software development environment (SDE). It mainly includes environmental database, various interface software and tool sets. Famous software development environments include IBM and Microsoft's Web Sphere. Including a series of basic tools (such as compiler, database management, memory formatting, file system management, user authentication, driver management, network connection and other tools). Application software system software is not aimed at a specific application field, and application software is the opposite. Different applications provide different functions according to users and service fields. Application software is software developed for a specific purpose. It can be a specific program, such as an image browser. It can also be a collection of programs with closely related functions that can cooperate with each other, such as Microsoft Office software. It can also be a huge software system composed of many independent programs, such as a database management system. Nowadays, smart phones have become very popular, and the application software running on mobile phones is called mobile phone software for short. The so-called mobile phone software is the software that can be installed on the mobile phone to improve the deficiency and personalization of the original system. With the development of science and technology, the functions of mobile phones are becoming more and more powerful. It is no longer as simple and rigid as it used to be, but it has developed to be comparable to PDA. Mobile phone software is the same as computer. When downloading mobile phone software, we should consider the system installed in this mobile phone to decide whether to download the corresponding software. The mainstream mobile phone systems are as follows: Windows Phone, Symbian, iOS, Android. Software with different license categories generally has corresponding software licenses, and software users can legally use the software only after agreeing to the license of the software they use. On the other hand, the license terms of specific software cannot violate the law. According to different authorization methods, software can be roughly divided into several categories: proprietary software: this authorization usually does not allow users to copy, study, modify or distribute software at will. Violation of this authorization usually entails serious legal responsibility. Traditional commercial software companies will adopt this license, such as Microsoft's Windows and Office software. The source code of proprietary software is usually regarded as private property by companies and is strictly protected. Free software: This license is just the opposite of proprietary software, giving users the right to copy, research, modify and distribute the software, and providing the source code for users to use freely, with only a few other restrictions. Linux, Firefox and OpenOffice can be representative of this kind of software. * * * Enjoy the software: You can usually get and use the trial version for free, but the function or use period is limited. Developers will encourage users to pay for a fully functional commercial version. According to the authorization of the author of * * * software, users can get their copies free of charge from various channels, and can also spread them freely. Free software: you can get and copy it for free, but you can't modify it without providing source code. Public software: Software in which the original author gives up his rights, the copyright expires or the author is no longer elegant. There are no restrictions on use. Related concept development process Software development is the process of building a software system or software part in the system according to the user's needs. Software development is a systematic project, including requirements capture, requirements analysis, design, implementation and testing. Software is usually implemented in programming languages. Software development tools can usually be used for development. The software development process is the software development process. The general flow of software design ideas and methods includes the design of software functions, algorithms and methods, the overall structure design and module design of software, programming and debugging, program debugging and testing, and program writing and submission. 1 Relevant system analysts and users have a preliminary understanding of the requirements, and then list the main functional modules of the system to be developed, and what small functional modules each main functional module has. For some interfaces related to requirements, a few interfaces can be defined first in this step. 2 The system analyst deeply understands and analyzes the requirements, and makes a functional requirements document of the document system according to his own experience and requirements. This document will clarify the general large functional modules of the sample system, which small functional modules are in the large functional modules, and also give examples of related interfaces and interface functions. 3 System analysts and users reconfirm the requirements. According to the interface and functional requirements illustrated in the confirmed requirements document, the system analyst will design the system outline for each interface or function in an iterative way. The system analyst gives the written outline design document to the programmer, who writes it one by one according to the listed functions. 6 test the written system. Give it to the user, and the user will confirm each function one by one after use, and then accept it. A software engineer generally refers to a person engaged in software development. 10 for many years, software engineers have been at the forefront of the high-paying career rankings. As representatives of high-tech industries, they have high technology content and fierce job competition. Software development is a systematic process, which requires market demand analysis, software code writing, software testing, software maintenance and other programs. Software development engineers play a very important role in the whole process, mainly engaged in developing project software according to requirements. Legal Protection As a knowledge product, computer software must meet the following necessary conditions to obtain legal protection: (1) originality. That is, software should be a combination of codes designed and compiled independently by developers. (2) perception. Protected software must be fixed on a tangible object, expressed by objective means and known to people. (3) Reproducibility. That is, the possibility of reprinting software on tangible objects. Ownership of Copyright According to Article 10 of the Regulations on the Protection of Computer Software, the copyright of computer software belongs to the software developer. Therefore, the general principle of determining the ownership of computer copyright is "whoever develops it enjoys the copyright". A software developer refers to a legal person or an unincorporated unit that actually organizes the development work, provides working conditions to complete the software development, and takes responsibility for the software, as well as citizens who rely on their own conditions to complete the software development and take responsibility for the software. The carrier of carrier software can be data storage devices such as hard disk, optical disk, portable disk and floppy disk. Software with different licenses generally has corresponding software licenses, and software users can legally use the software only if they agree to the license of the software they use. According to different licensing methods, software can be roughly divided into several categories: proprietary software, free software, proprietary software, free software and public software. Life Cycle Software life cycle refers to the whole process of software from definition, development, use, maintenance to scrapping, which generally includes problem definition, feasibility analysis, requirements analysis, overall design, detailed design, coding, testing and maintenance. The definition of a problem is to determine what is the problem to be solved in the development task. Through interviews with users, the system analyst finally draws a written report on the nature, engineering objectives and scale of the problem that is satisfactory to both parties. Feasibility analysis is to analyze whether the problems identified in the previous stage are feasible. System analysts should further analyze the system, determine the project scale and objectives more accurately and concretely, and demonstrate whether it is economically and technically feasible, so as to make a software plan on the basis of understanding the scope and cost of work. Requirement analysis: Even if the user's requirements are analyzed in detail, it is clear what the target system should do. All the user's requirements for the software system are expressed in the form of requirement specification. The overall design is to transform the function of the software into the required architecture, that is, to determine the module structure of the system, and give the mutual call relationship between modules, the data transmitted between modules and the functional description of each module. The detailed design is to determine the algorithm and data structure inside the module, and also to specify "how to realize this system". Coding is to select an appropriate programming language to code each template and debug the module. Testing is to make the software meet the predetermined requirements through various types of tests. Maintenance refers to the continuous inspection, correction and modification of software after it is delivered to users, so that the system can meet the needs of users permanently. The life cycle of software can also be divided into three stages, namely, planning stage, development stage and maintenance stage. Software life cycle model Software life cycle model, also known as software process model, reflects how the work in each stage of the software life cycle is organized and connected. Commonly used models include waterfall model, prototype model, spiral model, incremental model and fountain model, as well as build-repair model, MSF process model and rapid prototype model. Waterfall model is a common software life cycle model, sometimes called V model. It is a linear sequence model, which refers to the process of a project from requirements analysis to system testing to submission to users in a certain order from beginning to end. It provides a structured, top-down software development method. The main work results of each stage are passed from one stage to the next, and it must be strictly examined or tested to determine whether the next stage can be started. Each stage is independent and does not overlap. Waterfall model is the basis of all software life cycle models. Prototype+Waterfall Model Prototype model itself is an iterative model, which aims to solve the problems of uncertainty, fuzziness and incompleteness in the early stage of product development. By establishing a prototype, developers can further determine the products they should develop, making developers' imagination more specific and easier for customers to understand. Prototype is only a part of the real system or model, and may not accomplish anything useful at all, usually including discard type and evolution type. Discarding refers to throwing away the prototype after it is established and analyzed, and re-analyzing and designing the whole system. Evolutionary type is a well-defined requirement, which should be preserved after the prototype is established. As the basis of the gradual increase of the system, we must pay attention to the systematicness and integrity of software design when adopting evolutionary type, and there is no shortcut in quality requirements. Therefore, it takes more time to build an evolutionary prototype than to build an abandoned prototype to describe the same function. After the prototype is established and the requirements are confirmed, the waterfall model is used to complete the project development. Incremental mode is the same as Gai Lou, and the software is built step by step. In the incremental model, software is designed, implemented, integrated and tested as a series of incremental components, and each component consists of code fragments that provide specific functions formed by various interactive modules. The incremental model does not deliver a complete product that can be run at every stage, but a subset of products that can meet the needs of customers. The whole product is divided into several components, and the developer delivers the product one by one. The advantage of this is that software development can adapt well to changes, and customers can constantly see the developed software, thus reducing the development risk. Some large-scale systems often take many years to complete, or customers are eager to realize the system. Each subsystem often adopts the mode of incremental development, which realizes the core products first, that is, the basic requirements, but many supplementary functions (some known and some unknown) will be released in the next issue. The incremental model emphasizes that every increment releases an operable product, and the construction of every increment still follows the waterfall model of design-coding-testing. Iterative model as early as the end of 1950s, iterative model appeared in the software field. The earliest iterative process can be described as a "piecewise model". Iteration includes all development activities that produce a product version (stable and executable product version) and all other peripheral elements necessary to use the version. Therefore, to some extent, development iteration is a complete process that runs through all workflows: (at least) requirements workflow, analysis and design workflow, implementation workflow and test workflow. Essentially similar to a small waterfall project. All phases (requirements and others) can be subdivided into iterations. Each iteration will produce a product that can be released, which is a subset of the final product. Development language O language O language is a Chinese computer language (or packaging: O assembly language, O intermediate language, O high-level language). As a cross-platform language, Java language can run under Windows and Unix/Linux, and has long been the first choice for users. Since JDK6.0, the overall performance has been greatly improved, and the market utilization rate has exceeded 20%. It may have reached its peak, and I don't know how long it will last. Yi language (E language) Yi language is a self-developed Chinese programming language, which is suitable for national conditions and convenient for people of different levels and occupations to learn and use. Easy language lowers the programming threshold of computer users, especially those who don't know English at all or know little about English. Using this language can quickly enter the door of Windows programming. As a traditional language, C/C++ has been exerting great influence in the field of efficiency priority. The core of a language like Java is written in C/C++. It is the first choice for high concurrent real-time processing, industrial control and other fields. Learning language is China's version of C language BASIC, which is a "beginner's general symbol instruction code" developed by American computer scientists John Kemenj and thomas kurz in 1959. Because BASIC language is easy to learn and use, it quickly became one of the popular computer languages. Php is also a cross-platform scripting language, which has become the first choice for website programming. Hosts supporting PHP are cheap, and the combination of PHP+Linux+MySQL+Apache is simple and effective. Perl scripting language is the forerunner, and its excellent text processing ability, especially regular expressions, has become the basis of many website development languages (such as php, java, C#) in the future. Python is an object-oriented explanatory computer programming language, and it is also a powerful and perfect universal language. It has a development history of more than ten years and is mature and stable. Python has the richest and most powerful class libraries in scripting languages, which can support most daily applications. This language has very simple and clear grammatical features, which is suitable for completing various advanced tasks and can run in almost all operating systems. The related technologies based on this language have developed rapidly, the number of users has expanded rapidly, and there are many related resources. C# is an object-oriented high-level programming language, which is published by Microsoft Corporation and runs on the. NET Framework, and is scheduled to make its debut at the Microsoft Professional Developers Forum (PDC). C# is the latest achievement of Anders Hejl *** erg, a Microsoft researcher. C# looks surprisingly similar to Java; Including single inheritance, interface, almost the same syntax as Java, the process of compiling into intermediate code and then running. However, there are obvious differences between C# and Java. It draws lessons from a feature of Delphi and integrates directly with COM (Component Object Model). It is the protagonist of Microsoft. NETwindows network framework. Javascript Javascript Javascript is a scripting language developed from Netscape's LiveScript. Its main purpose is to solve the speed problem left by the server terminal language, such as Perl. At that time, the server needed to verify the data, because the network speed was quite slow, only 28.8kbps, which wasted too much time. So Netscape's browser navigator added Javascript to provide the basic function of data verification. Ruby is a scripting language created for simple and fast object-oriented programming. It was developed by Japanese Matsumoto Sachi Hong (まつもとゆきひろ, translated into English: Matsumoto, nicknamed matz), and abides by the GPL protocol and Ruby license. The author of Ruby thinks Ruby > (Smalltalk+Perl)/2, which shows that Ruby is a programming language with completely object-oriented grammar, script execution and Perl's powerful word processing functions like Smalltalk. Fortran Fortran was once the most important programming language in the field of scientific computing software. Typical examples are Fortran 77, Watcom Fortran and NDP Fortran. Object c this is a language running on apple's mac os x and iOS operating system. The upper graphical environment and application programming framework of these two operating systems are all realized in this language. With the popularity of iPhone iPad iPad, this language has become popular all over the world. Pascal Pascal is a general computer high-level programming language. Pascal was named in memory of blaise pascal, a famous French philosopher and mathematician in the17th century. It was designed and created by Swiss Professor niklaus wirth in the late 1960s. Pascal is the first structured programming language with strict grammar, clear hierarchy, simple programming and strong readability. Swift Swift is a new development language released by Apple at WWDC (Apple Developers Conference) in 20 14. It can run with Objective-C**** * * on Mac OS and iOS platforms to build applications based on Apple platform.