software (computer software)

software

  For the characteristics of molluscs, see Molluscs .

Software (English: ) is a series of computer data and instructions organized in a specific order , which is the non-tangible part of the computer. The tangible part of a computer is called the hardware , which consists of the computer's casing, various parts and circuits. Computer software needs hardware to work, and vice versa, neither software nor hardware can actually work without cooperating with each other.

Commonly used translations of ""
Chinese mainland
Taiwan
Hongkong

OpenOffice.org Writer

Generally speaking, computer software is divided into programming language , system software , application software and intermediary software between the two . Among them, system software provides the most basic functions for computer use, but it does not target a specific application field. The application software is just the opposite. Different application software provides different functions according to the users and the fields served.

Software includes all programs that execute on a computer, regardless of its architecture. For example, executable files , function libraries , and scripting languages ​​are all software. Regardless of the architecture, software has its common characteristics. After execution, the hardware can perform the functions required by the design. The software is stored in the memory , and the software is not a tangible entity. What can be touched is only the part (memory) or medium ( CD or magnetic disk, etc.) that stores the software.

Software does not necessarily only include computer programs that can run on computers . In some definitions, documents related to computer programs are generally considered to be part of the software. Simply put, software is a collection of programs and documents. Software is used in various fields in the world, and has a profound impact on people's life and work.

Programming language

See also: programming language

At the lowest level, an executable file contains mechanical code for a particular microprocessor (usually a CPU ) . The mechanical code consists of a series of binary values ​​that cause the processor to change from the current state to the next state. . For example, an instruction may modify a value in a specific location in the computer, and the effect cannot be directly observed by the user. An instruction may also cause specific data to be displayed on the screen, and this state change is visible to the user. The processor will process the received instructions in order, but the processing of the processor may also be interrupted, or the instructions to be processed may be changed due to flow control instructions.

Mechanical codes are many binary values, which are inconvenient for engineers to read and develop programs. Therefore, there is an assembly language that converts mechanical codes into mnemonic codes that humans can understand . However, most of the software nowadays is written in high-level language , which is more similar to natural language . It is simpler for humans than mechanical code or assembly language, and it is convenient for humans to use [1] . High-level languages ​​generally use literal translation or compilation to convert the source code of the software into machine code.

Source code refers to a series of human-readable computer instructions written in a programming language to implement the behavior and functions of the software.

Software classification

There are many ways to classify software, which can be divided into the following categories according to the purpose of software:

system software

Entry: operating system

System software is responsible for managing all kinds of independent hardware in the computer system, so that they can work in harmony, provide basic functions, and provide a platform for running application software [2] . System software enables computer users and other software to treat the computer as a whole without concern for how the underlying individual pieces of hardware work. The details of each hardware work are handled by the driver .

Generally speaking, system software includes operating systems (such as BSD , DOS , Linux , macOS , iOS , OS/2 , QNX , Unix , Windows , etc.) and a series of basic tools (such as compilers , database management, memory formatting, tools for file system management, operating system management, user authentication, drive management, network connectivity, etc.).

application

Item: Application software

Application software is software developed for a specific purpose. It could be a specific program, such as an image viewer. It can also be a collection of programs whose functions are closely related and 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.

The more common ones are:

  1. Word processing software such as Microsoft Office , GNOME Office , KOffice , LibreOffice , Google Docs , WPS Office
  2. Relational databases such as Oracle Database , SQL Server database
  3. Computer aided design such as CATIA , AutoCAD , FreeCAD
  4. Computer programming such as C / C++ , assembly language , BASIC , Swift , JavaScript , Java
  5. P2P software such as BitTorrent , µTorrent , Foxy , Bit Genie , Vuze , Free Download Manager
  6. Image processing software such as Photoshop , CorelDRAW , Corel painter , GIMP , MAYA , Softimage , 3ds Max , Blender , xsi , lightwave , Cinema 4D , Houdini , Krita
  7. Motion graphics and visual effects such as After Effects , shake
  8. Web browsing software such as Internet Explorer , Edge , Firefox , Chrome , Safari , Opera , Konqueror
  9. Internet communication software such as Line , ICQ , Windows Live Messenger , UUcall , Skype , Yahoo! Messenger , QQ , AOL Instant Messenger
  10. Media players such as MPC-HC , MPlayer , RealPlayer , GOM , VLC , WMP , Baofengyingyin , Fengleiyingyin, Winamp , Foobar2000
  11. Download management software such as Free Download Manager , IDM
  12. Email such as Outlook.com , Windows Live Mail , Outlook Express , Foxmail , ThunderBird , Dreammail , KMail
  13. Information security software such as ESET , 360 Security Guard , German Little Red Umbrella , Kaspersky , PC-cillin , Norton Antivirus , BitDefender , Rising Antivirus , Kingsoft Antivirus
  14. Virtual machines such as VMware , VirtualBox , Microsoft Virtual PC , Bochs
  15. Input method software such as Xinkuyin input method , Google Pinyin input method
  16. real-time control system
  17. educational software

malicious software

See also: Malware

Malware is computer software developed to harm and destroy computers, and as such, malware is frowned upon. Malware is associated with computer-related crime, although some malicious programs may be designed to be used mischievously.

Software related topics

software architecture

See also: software architecture

Users often see things that programmers don't notice. Users of modern general-purpose computers (as opposed to embedded systems , analog computers , or supercomputers ) often use the following three-layer software architecture to perform different tasks: system platform, application programs, and user software.

  • Application software: Application software is what most users think of as software. Common examples include office suites and games. Application software is usually sold separately from the hardware, and occasionally it is sold together with the hardware. Most application software is software independent of the system platform, but it is still developed for certain specific system platforms during design. Some people regard "system software" such as editors and databases as application software.
  • User-written software: The purpose of end-user development is to make software meet the specific needs of users. Generally, it includes templates or macros for spreadsheets and word processors. Even email filters can be regarded as a kind of user-written software. Depending on the degree to which the software written by the user is integrated into the default application software, other users may not know which are the original functions of the application software and which are the user-extended functions.

software execution

Once the software is loaded into the computer's data storage (such as a hard disk or memory ), the computer can execute the software. "Execution" refers to moving the instruction set from the software to the computer hardware, and the hardware will process the machine code corresponding to the instruction set . Each instruction causes the computer to perform a specific action, including moving data, performing calculations, or changing the flow of control .

Data movement generally moves from one location in memory to another, and sometimes data movement uses scratchpads in the CPU that allow for faster data processing . A large amount of data movement will use a lot of system resources, so sometimes "indicators" are used to process data. The scope of performing calculations is very wide, simple ones may include adding one to the data at a certain location, complex ones may include many data and corresponding processing.

The execution of the software is mostly carried out sequentially one instruction after another, but sometimes it is necessary to change the order of instruction execution in the software, for example, there is a loop that can execute a certain program several times, or execute two programs according to specific conditions A branch instruction in a section of the language can even execute a subroutine , and return to the original program after execution is completed, and some languages ​​​​also support unconditional jump instructions.

Software can run in many different ways, including executable files , source code , scripts , and computer configurations.

Quality and Reliability

Entries: Software quality and Software testing

The quality of software is of certain importance, especially in commercial or system software such as Microsoft Office , Microsoft Windows and Linux . If the software does not execute correctly, it may delete the results of the user's work, cause the computer to crash, or cause other unexpected situations. Such situations are called program errors , commonly known as bugs. Software is also subject to software regression, that is, performance degradation due to many undiscovered programming errors. Many programming errors can be found and eliminated by software testing , but software testing can rarely completely eliminate programming errors. Many large software companies, such as Microsoft, Novell, and Sun Computer, have dedicated software testing departments whose main job is to test software. Software can be tested with unit tests, regression tests, and other means. Testing may be done manually or, in the case of large programs, it is more common to use computer automated testing. For example, NASA has a particularly rigorous testing process for its operating system and its communication procedures.

license

Different software generally has a corresponding software license, and software users must agree to the license of the software used before they can legally use the software. On the other hand, the license terms for specific software cannot be in conflict with the law.

According to different licensing methods, software can be roughly divided into several categories:

  • Proprietary software : This type of license usually does not allow users to freely copy, research, modify or distribute the software. Violation of such authorizations often carries serious legal liabilities. Traditional business software companies use such licenses, such as Microsoft 's Windows and Office software. The source code of proprietary software is usually regarded as private property by the company and is closely guarded.
  • Free software : This type of license is just the opposite of proprietary software. It gives users the right to copy, research, modify, and distribute the software, and provides the source code for users to use freely, with only a few other restrictions. Linux , Firefox and OpenOffice can be used as representatives of such software .
  • Shareware : Trial versions are usually free to obtain and use, but are limited in functionality or duration of use. Developers encourage users to pay for a fully functional commercial version.
  • Free software : can be obtained and distributed free of charge, but the source code is not provided and cannot be modified.
  • Public software : software whose original author has given up his rights, whose copyright has expired, or whose author is no longer available. There are no restrictions on use.

patent

Some countries can apply for software patents, but some countries can't, but use the viewpoint of copyright to protect software [3] . However, in the software industry, software patents are a highly controversial issue, and various parties have different positions. The main point of contention in the software patent dispute is whether the part protected from copying in a software patent is its algorithm or the technology it uses.

software development

Entries: Software development and Software development process

Software development is the process of building a software system or a software part of the system according to user requirements. Software development is a systems engineering that includes requirements capture, requirements analysis , design , implementation, and testing , which may include research, new development work, modification, reuse, redesign (reengineering), maintenance, or any resulting software Other activities of the product [4] .

The software development process is a model of how software is planned, controlled, and monitored from inception to completion. There are several different types:

  • Waterfall model : Follow the steps of requirements analysis, design, implementation, testing (validation), integration, and maintenance.
  • Iterative development : The development work is organized as a series of short, fixed-length (such as 3 weeks) small projects, known as a series of iterations. Requirements analysis, design, implementation, and testing are performed in each iteration.
  • Agile software development : A software development method that responds to rapidly changing needs, emphasizing the collaboration between the designer team and business experts, face-to-face communication, frequent delivery of software versions, and code writing that adapt to changes.
  • Extreme Programming: A type of agile software development that introduces concepts such as basic values, principles, and methods to reduce the cost of change. Its main purpose is rapid application development.
  • Rapid application development , a software development methodology that rapidly completes the prototype with minimal planning. The planning of the software development is interleaved with the writing of the software itself.
  • Spiral model : It takes into account the iterative characteristics of rapid prototyping and the systematic and strict monitoring of the waterfall model, and adds risk analysis that other models do not have, so that the software has the opportunity to stop when major risks cannot be ruled out, so as to reduce losses.

Programming Tools

Article: Software development tools

Software development tools refer to the form of software programs or applications that software developers use to create, debug , maintain , or otherwise support.

Software is written in one or more programming languages. Many programming languages ​​exist today, and each has at least one way of writing, including its own set of programming tools. These tools consist of relatively self-contained programs such as compilers , debuggers , interpreters , linkers , and text editors that can be combined to accomplish a single task, much like a person can use multiple hand tools to hold a physical object.

It is also possible that the set of tools is an integrated development environment (IDE) that combines many or all of these tools. An IDE can do this, either by calling the tools of those concerned, such as programmers, or by reimplementing their functionality in a new way. Almost all programming languages ​​provide a separate tool for writing, rather than an IDE, because some programmers don't like using IDEs for various reasons, or because IDEs usually take longer to develop into an acceptable standard, rather than a personal tool. In fact, new programming languages ​​usually don't offer their IDEs initially.

Industry and Organization

The software industry is an industry composed of many software companies and programmers, and its nature is more similar to the service industry . Due to its industrial characteristics, the gross profit margin is higher than other industries [5] . The profits of the software industry are quite high. For example, Bill Gates, the founder of Microsoft , has become the richest man in the United States several times because of the sales of Microsoft Windows and Microsoft Office [6] . However, with the changes of the times, the division of labor and specialization of the software industry have become more and more detailed. For example, the video game industry and office software both belong to the software industry, but there are many differences between the two.

There are many non-profit software organizations, such as the Free Software Foundation , the GNU Project , and the Mozilla Foundation . Organizations such as the World Wide Web Consortium (W3C) and the Internet Engineering Task Force (IETF) develop many software standards, so that different software can communicate with each other through these standards, such standards include XML , HTML , HTTP and FTP , etc. .

Other well-known software companies include Google , Novell , SAP , Symantec , Adobe Systems , and Corel , but there are also many small companies with innovative products.

Guess you like

Origin blog.csdn.net/weixin_40191861/article/details/131335307