"Building of the law" to resolve key summary

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 -

 

Guess you like

Origin www.cnblogs.com/kingvist/p/11482139.html