Chapter 4 What will this book discuss

Source: Internet
Author: User
Part 1 Summary Chapter 1 What will this book discuss

Start with software engineering. The introduction of this concept often reminds us of CMM, RUP, and India models. Management factors play a very important role in the software development process. However, software engineering is not only a management of software development, but a wide range of comprehensive disciplines. In software engineering, about half of the content is very professional and involves software analysis, design, and even coding technologies. The so-called structured and object-oriented architecture are all in the scope of software engineering. "The scope of software engineering is extremely broad. Some aspects of software engineering belong to mathematics or computer science, and others may fall into economics, management, or psychology ."

The software industry has been exploring how to make software realize the same large-scale production as traditional industries. The idea of software engineering is to fulfill this desire. However, although software engineering has had a great development so far, the large-scale industrial production of software is still not realized. Why?

In terms of the essential attributes of software, the complexity of software is the essential attribute of software. Before this attribute is changed, software will not implement the same factory production as the traditional industry.

In terms of software production media, traditional industrial production is a tangible material product, and human production activities are subject to the material media such as production materials. However, the media of software production, it is an invisible human mind. The production of material is subject to the attributes of the material itself. It cannot be easily influenced by human thinking, and it is easy to be copied in large quantities, which makes it possible for an industrialized world. However, human thinking is so easy to change. What's more important is that it cannot be replicated, even for the same person, the replication of thinking in different periods is impossible, this makes it so difficult to implement large-scale industrial production of software that relies solely on the production of human thinking activities. In fact, it is not just the software industry. Any industry where the main production medium is the activity of people itself, it is difficult to achieve industrial production, such as consulting and performing arts.

In terms of the production process, product design and production are separated for traditional industries. In the design phase, the main work is human thinking. Therefore, at this stage, like software, it is not a mass production. In the production stage, the main object is material materials, and all standards have been formulated, and a large number of copies are only required on the pipeline. For traditional industries, the boundaries between design and production are so clear, and the proportion of production and design is so wide. However, for the software industry, the software production process is the design process, and the pure production process almost does not exist (or, the copy of the CD is ), this makes the production form of software different from that of traditional industries.

For the software development process, from the business model, demand analysis, system architecture, system analysis and design, to the final code implementation, the higher the abstraction level, the lower the controllability, the more backward, the closer it is to reality, the more controllable it is. Therefore, in software development, the core team plays such a huge role, the role of the core personnel of the core team is decisive to a large extent. For software development, if software development is to implement industrial production, it must start from the back to the front and from the code. The India model may give an example.

Therefore, we are constantly moving towards the engineering goal on the road of software engineering. However, it may take a long time to achieve this goal. Every technological advancement has made us step towards this goal. In the process of software engineering development, technological progress has played a very large, or even decisive role. As different technologies are used, the management methods used are constantly changing. Many aspects of software engineering technology are also prepared for management. The adoption of excellent software development technologies can make up for our engineering shortcomings, so that software development is more controllable and the quality of software is more secure.

This book is not intended to discuss the software engineering process, but to discuss the system framework design, an aspect of software technology in software engineering.

Now, many developers have realized that this is very important. That is, when developing an application software system, a good system framework is very important. Building applications from the underlying layer is a thankless task. applications without frameworks are hard to imagine as a good application.

In addition to the direct help for development, a good framework is also very meaningful for the company's knowledge management. Imagine that we often talk about the knowledge economy era. Especially for software companies, knowledge (employees with this knowledge) is the greatest fortune of the company. So how can we manage the knowledge effectively?

First, it should be clarified that knowledge management is an important purpose to accumulate the most important knowledge of employees in the company. Every employee in the company has a lot of knowledge in mind. This knowledge is very important for employees, but its importance is not completely consistent with that of the company. Some knowledge is the most important for an employee, but may not be required by the Company. What knowledge management needs to do is to accumulate the most important knowledge of employees on the company.

Second, knowledge management must have a carrier. If there is no carrier for knowledge management, the company's knowledge will be in the minds of employees. Once this employee leaves, knowledge will leave and there is no way to settle. If you only use the documents of the company's projects as the carrier, the carrier will be too fragmented. In fact, if a company has a unified framework, this framework is a good carrier of knowledge management. Because, this framework will certainly focus on the commonalities of all software projects of the company, the essence of the most important knowledge of the company, and the ability to serve all the projects of the company. In addition, as the framework continues to be used, the framework itself will also be upgraded and optimized. To join a new member, as long as he understands the framework, he can be well integrated into the team, I have also kept my most important knowledge about the company in this framework. It can be said that the framework serves as a knowledge management platform. One of the best examples is Microsoft's Windows. This is the most concentrated platform for all Microsoft Knowledge.

Software, in essence, is the simulation of the real world in the computer. When considering the architecture of the application software system, what are the main concerns? How can this problem be solved? How to use it? Therefore, the application software system should focus on the following aspects:

1. The processed object, that is, Data.

2. The processing method is how our system processes the system logic.

3. How to interact, including users and external systems.

In an application software system, data is the basic object for processing. A program always expresses data in a certain data structure. In addition, in a system developed using object-oriented language, data is always expressed in the form of classes and objects. On the other hand, data always needs to be stored. For most application software systems, relational databases are usually used to store data. In this way, because the data format is inconsistent between the program and the database, the ing between the two is required. This ing is usually called an object/relational ing (O/R Mapping) between an object-oriented design language and a relational database.

Currently, in the O/R Mapping section, there are a variety of solutions available on the Java platform, such as Entity Bean in the J2EE architecture, lightweight JDO, and Hibernate for open-source projects, because of Microsoft's. net framework has not been launched for a long time, and mature O/R Mapping frameworks are rare. O/R Mapping Framework selection or design is the most basic work for building application software systems. This book will discuss some basic theories, concepts, and methods for constructing the O/R Mapping Framework.

The business logic processing of the system is the core part of the application software system. How can we reasonably construct the business logic, provide services at the business logic layer, and access the functions provided by the business logic at the presentation layer, it is also a key concern of application software systems. In this regard, the industry has developed many alternative paradigms, such as contractual design and SOA architecture (Service-Oriented Architecture. These methods indicate the design direction and need to be applied in actual development.

After the business logic is determined, the question that follows is how to provide the business logic services to the client, or how the client accesses these services. In a multi-tier application software system, the client and business logic may exist physically on different machines or on the same machine, but at least, logically, there are two different parts, which involves a question: how do these two layers communicate? Remote Process calls are also involved.

Of course, we now have a variety of technologies for remote process calling, including Webservice,. Net Remoting, Corba, and even EJB. So many implementation technologies bring about great flexibility, but they also bring about problems. One of them is how many server technologies are there, the number of client access technologies required. Even in some distributed application systems, application logic is developed using different technologies, which exist on different machines, some exist on the client machine, and some use. net Remoting development exists in the LAN, and some use Web services on the Internet. Sometimes, we want the same business logic to support different clients.

In this case, we need a consistent service access programming model to integrate different service access modes and simplify system development and deployment. The prospect of a unified Remote Process calling framework is so attractive that every method tries to unify the world. However, for various reasons, none of them can achieve this in the end, the latest Web Service is trying to achieve this. In fact, the emergence of each method will eventually bring about a side effect, that is, a little more options available, and a little more confusion. In the actual development process, we also need a unified access method to solve this problem. This book will discuss some available solutions.

To make it clearer, some program code will be added to the article. When talking about specific technologies, this book will compare various available technologies. Therefore, the code in this book may use different languages, usually Java and C #. However, generally, the language used is specified when the code is provided. In most cases, if you do not describe the specific language, it is C # (because I prefer this language ). Because the syntax of Java and C # is so similar, I think, for experienced programmers, this should not cause reading trouble.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.