Finishing jargon:
Program = data structure + algorithm
Software = Program +Software Engineering
Software Company =Software + Business Model
Chapter One
*********************************************************************************************************************************************************
1.1 Software = programs + Software Engineering
From a simple program , expanded to meet a variety of functions of the application software , then expanded to ensure a quality of service software services ,
Here the program , also referred to as the source , he was re-established some of the data structure algorithms . Programs also operate on the data
A sophisticated software will not only have a reasonable software architecture , software design and implementation , but also a variety of documents and data to describe the various procedures
Between file dependencies , compile parameters , link parameters , these are the software build process
Some programs you want to configure different interface, running on the operating system in Chinese, English or other languages; some programs as well as 32-bit versions, 64-bit version.
This is a source code management problem - also known as configuration management . There are a range of tools, processes and documentation to ensure the correctness of the program, in order to ensure developed
Software quality. This is quality assurance , specific validation process is called software testing
Software team personnel will flow, the new members of the existing program as soon as possible to read, understand design of the program, called program understanding .
Software will appear during operation such and such a problem that requires a large patch to the software from time to time, or maintain a large number of services, called software maintenance , or
Call service operations . This series of process is the software life cycle , in this cycle, someone must be responsible for managing software projects .
A good software, even if not very different functions and similar software, but it will make people feel very easy to use. This is the software user experience, user experience and digital
According to the structure, there is no direct relationship between the algorithm, but a lot of software Philadelphia win success in this regard. Software had to deal with different languages, with different regions
The different needs of the user interface and functionality. This is called software internationalization and localization
Some software companies business model and some are reasonable; however some very legitimate; before the relevant laws and improve the software industry there is a norm that should
This has a code of ethics to constrain IT human behavior
These software development activities and above (build management, source code management, software design, software testing, project management) relevant content is the core part of the software engineering
Software engineering in a broad sense also includes user experience, user interface design
It is a corollary:
Software program = + Software Engineering
An extension of inference is:
= + Software enterprise software business model
Different stages of software development
1, toy stage exercise program to write data structures / algorithms, with a new language to try "Hello World"
2, hobby stage to write about the site with JavaScript, ASPNET, Ruby
3, exploration stage research new technologies, new technology innovation in the software industry
4, mature stage of banking software systems industry, the Internet search industry, e-commerce system, Windows operating system
*********************************************************************************************************************************************************
1.2 What is Software Engineering
Software engineering is the systematic, orderly, quantifiable method is applied to the process of software development, operation and maintenance.
Software engineering includes the following areas: software requirements analysis, software design, software builds, software testing and software maintenance.
The following software engineering and related disciplines: computer science, computer engineering, management, mathematics, project management, quality management,
Soft pieces of ergonomics, systems engineering, industrial design and user experience design.
*********************************************************************************************************************************************************
Particularity 1.2.1 Software
System software: operating system, device drivers, and other software tools
Application software: users use them to complete the work, from the management of nuclear power plants to the article, or communication, games, browsing the web, playing video
Malware: viruses and other software
1) the complexity of the software can be said that mankind has created the most complex types of systems, large-scale software over a million lines of source code, there are tens of thousands of different files. The Software Engineer
Macroscopic typically only see the source code lines 30-80 (corresponding to a screen display). There are a variety of explicit or implicit dependencies between software modules,
With the increase in the growth of systems and modules, the number of these relationships tend to grow at a geometric rate numbers.
2) invisibility software engineers can directly see the source code, the source code is not the software itself. Software at high speed in the form of machine code, possibly simultaneously on several CPU cores
Run, also may run simultaneously on several CPU cores
3) variability software looks very easy to modify, to modify the software much easier than modifying the hardware. It is expected the amount of natural energy software in the following two cases "change" a) let the software do the new
Thing; b) allow the software to adapt to the new hardware. But at the same time, the right to modify the software is a difficult thing, please.
4) compliance software can not exist independently. He was always on top of the hardware to run, he should be subordinated to the other requirements of the system components, he will have to obey the requirements of users, industry systems
Requirements (such as changes in bank interest rates)
5) It is easier to understand non-continuous continuous system; increasing the input, able to see a corresponding increase in output. But many software systems have no such properties, sometimes on a very small input
The changes will lead to significant changes on output
The first four of these characteristics thing Fred Brooks (Fred Brooks Jr.) mentioned in the article No Silver Bullet
The fifth characteristic is Vaclav Rally Qi (Vaclav Rajlich) mentioned
These characteristics are determined by the nature of software, and other software features:
1, there are many different programming languages, software tools and software development platform
2, there are many different software development process
3, many different roles exist in the software team
4, the software can either be stored on magnetic tape, it can also be stored on CD / DVD
*********************************************************************************************************************************************************
Relations 1.2.2 software engineering and computer science
Chinese universities in three computer software organization
1, or Department of Computer Science and Technology Institute
2. Software College
3, Software Engineering, Software Engineering Institute
This academic computer science can be divided into those areas the neighborhood of these partial theories below:
Theoretical calculation, information and coding theory, algorithms and data structures, formal methods, programming languages
And following these partial practice areas:
Computer architecture, parallel computing and distributed systems, real-time systems and embedded systems, operating systems, computer networks, scientific computing, security and cryptography,
Artificial intelligence , this neighborhood covering a number of related neighborhood, such as pattern recognition, machine learning, data mining, information extraction, etc.
Computer graphics, computer vision, multimedia
Large-scale databases and data processing
WWW
Natural language processing and speech
Human-Computer Interaction
Software Engineering
Different emphasis in computer science and software engineering
Computer Science, Software Engineering
Discover and study the long-term, short-term objective truth of the actual results (specific software become obsolete)
Ideal compromise of various factors
Uncertainty, perfect, general manager of uncertainty and risk, and good enough, the specific application
Various disciplines independent in-depth study , the results of attention and knowledge to make the various disciplines related applications, to solve the problem
Flourishing practices unified theory
Emphasize the originality of the best, proven practices
Formalized, the pursuit of simple formulas established in practice inspiration and intuition
Correctness of plasticity
The various features of each project:
Build To Learn: software development, systems aim to build further experimental style, trying to find objective laws or explore the pros and cons of a method. These projects often are the basis of the work of research papers.
Build To Show: In order to highlight the role to show a technology demonstration to develop some software for the purpose of these projects is very eye-catching, often get news, but not necessarily fully functional or practical.
Build To Serve: To serve a range of target users and build tools, and sometimes in the form of public release SDK, allowing developers to use other
Build To Win: to win customers in the market for the goal of building software. This is also a variety of scientific discovery, technological breakthroughs best touchstone.
*********************************************************************************************************************************************************
1.2.3 knowledge of the field of software engineering
Lifecycle software requirements, software design, software component, software testing, software maintenance
Specialized field of software configuration management, software project management, software engineering processes, software engineering models and methods of software quality
The theoretical basis for the calculation based on the foundations of mathematics, engineering basis
*********************************************************************************************************************************************************
Target 1.2.4 software engineering - to create a "good enough" software
1) customer satisfaction users find a lot of problems when using the software, the user affects the efficiency of the use of the software.
2) the reliability of a piece of software often crashes from time to time an operating system crash, a site often can not get board when it is most needed.
3) question the quality of software development process and team software process too much, leading the team members can not collaborate with each other, delivering software. This type of software can also be said of the team bug
4) the maintainability of a software too difficult to maintain, and press played a gourd dipper, fixes a problem, another problem came out again. There is no adequate documentation, maintenance personnel need more money and time to maintain this
Software, even down to rewrite suggestions.
*********************************************************************************************************************************************************
By studying this book, the author hopes to reach the target audience:
1, developed software to meet user needs
Actual work phone, derivation, extraction of demand, and indeed is fulfilled after the software is released through the actual data validation requirements. Demand from the actual, rather than trying to imagine "demand" or parrot
Requirements (such as: virtual, nobody uses, there is no "library management system" data)
2, through a certain software process, publish "good enough" software at the expected time
This software is not the end of two days ago by the twenty-three students stay up all night to catch out of improvisation, but through a certain software process, gradually complete through the efforts of all team members, (one semester) at a stage in the long term.
For real-life software team, a good product is not a hero out of a long-term overtime raid
3, can prove that the development of software-based can maintain and continue to develop
For example, the analysis of user demand for detailed documentation, including analysis and plans for future development. Consistent with the actual behavior of the design documentation and software of the main functions of the source code integrity, and can be constructed to meet the requirements for your version.
Software management software can see the source code of each modification record, Bug's modification process. The key module unit tests can be performed normally, pressure test scripts, and so on -