Dispel, understanding these concepts in software development

Source: Internet
Author: User

Wen/Dong Qingyang


Software is not like hardware, can see, touch. The hardware specification is data-specific, clearly. Software is not so intuitive, it is not easy to make the software clear. Listening to software gurus say software, abstraction, modeling, layering, and so on, it is difficult to understand, but dare not to question, but in many cases it is not so lucky. So, try to make the software easy to speak. Here for the concerns of some software problems to try to my little understanding of the software, as far as possible in a popular language to explore.


what has changed in the software over the years.


Over the past 10 years, hardware computing power has increased 100 times-fold. What has changed in the software. Software development language from the early Basic, Fortran, C, to the present Java, C #, Python, PHP, the current commonly used in the development of more than hundreds of languages. New software technologies are emerging, XaaS, open source, containers, services, and so on. and hardware to enhance the processing capacity, compared to the development of the main line of software.


Over the past 10 years, the amount of software code has increased by at least 100 times times. The main line of software technology development is to continuously improve the software development efficiency and developer experience, reduce the entry threshold of software development, let more and more people participate in the software development, and continuously improve the software productivity. The rapid development of software productivity also leads to the continuous development of software production relations, such as open source. and hardware development of the Scale up, software development is born Scale out. To say that the ability to build the biosphere, the software is absolutely first-class. Internet software is to grasp this rule, and constantly apply the latest software development technology and development model, and continuously reduce the production costs of software.


Our current programming language and programming methods have barely changed in 16 years. From the development capacity, is not to keep up with the pace of software development.


What is embedded software, embedded software development direction is what.


What is embedded software. Early understanding of embedded software is embedded in the hardware system, and hardware coupling is very tight, with the device sales of software. More than 10 years later, from the concept of definition, wireless software still belongs to the scope of embedded software, but since the Linux from the pc/server to the embedded environment, embedded software is also changing, and ordinary PC, Server software development environment, compared to the technical nature of the difference. The following comparison can be seen more clearly:




The real difference between embedded software and Internet software is in the business delivery model and operating mode. Since there is not much difference in technical features, many good development methods on Internet software can be used in embedded software. For example, the Internet Software development Sdk+ide, a large number of code can be automatically generated, to improve the efficiency is not a little bit. Unfortunately, Sdk+ide is rarely used in our current software development. It is difficult to develop a good sdk+ide, and many people's stereotype of sdk+ide automatically generates code is that it consumes a lot of resources and has poor performance. These realizations are obsolete, even so, to 1% of the performance loss in exchange for 10 times times the development efficiency, dry.


Do not think of themselves as embedded software and stop the pace of progress. The direction of embedded software development is also to enhance the software development efficiency and developer experience.


Why break the current monolithic software model.


It is commonly used in Australian Ayers to describe the monomer (monolithic) software. 348 meters high, 3000 meters long, circumference of 9.4 kilometers, for a stone is spectacular, but for the software is not good. Monolithic software, the software running on each unit is an indivisible whole. In this whole, to optimize a performance, you need to delete an attribute, you must compile the entire version, verify all the use cases, delivery upgrade the entire version. The client says to add a window, and we always give the client the whole building.


Our current development organizations are generally divided according to the module, such as OM Group, signaling group, community Management Group, algorithm group and so on. Group and feature are completely intertwined relationships. For example, the development of a HSPA characteristics, the need for the platform group, OM Group, Transmission group, signaling group, community Management Group, algorithm group to participate, must be modified. In turn, each group has a relationship with almost every feature. This kind of network relation leads to the influence of modifying characteristic and the spreading range of fault is unknown. It takes less time for each developer to modify the code, and a lot of time is waiting and validating. In addition to verifying the features that you have developed or modified, wait for someone else's bug fix, and verify that your modifications do not affect other features. This is the root cause of the current programmer's pain.


It is possible to control the range of fault propagation in the modification attribute. There, we're going to break the monolithic software model.


The CBB component has been applied for so many years, and why is it a gimmick or a lifeline?


Why is it from component to service. To answer this question, first understand what a service is. Learning to communicate, the word Service is the most puzzling. Service or business. Almost on different occasions, there are different meanings. For example, it is easier to understand that Huawei uses outsourcing staff in two ways: one way is to put the outsourcing staff directly to Huawei, Huawei is responsible for outsourcing staff work arrangements, output monitoring, performance management. This approach looks direct and efficient, but also has its drawbacks, that is, Huawei is responsible for outsourcing personnel management, basic necessities and even ideological trends. Huawei is also responsible for what happens to an outsourced person on any given day.


Another way is for outsourced personnel to be managed by outsourced companies. Huawei to the outsourcing companies to bring business and quality needs, the outsourcing company with how many people, how to do, Huawei companies do not care, to get things done on the line. This approach may be troublesome in the early days, but the follow-up is less troublesome and replaceable is also very strong. It is also easy for Huawei to switch to an outsourcing company, even to find different outsourcing companies to make spare tyres. The first approach is component, and the second is service.


Component is the primary means of reuse. A common function is made into a binary component for different product invocations. Avoid repetitive development and improve development efficiency. Component development to the present, the shortcoming is also very obvious. For example, the same VPP components, wireless almost all products need to use, each product to its adaptation, resource management and operation Maintenance Management, the additional overhead is still very large. And the product is easily kidnapped by CBB components, once used a platform or components, it is difficult to change. The disadvantage of component is the advantage of service. After service transformation, its own data information management, the external provision of Easy-to-use service interface. Use square function, do not care about internal implementation, do not need to adapt, management components of the operating environment, resources, and replacement is easier, cross-platform migration is almost 0 cost. This is definitely a boon for products that have been kidnapped by heavy platforms.


The service-born reusability is good, the coupling is low, and the autonomy is strong. Good use is a means of improving efficiency. Huawei's current outsourcing model wants to switch to FP, which coincides.


containers and micro-services are what ghosts.


The current Docker container is so hot that many people think the container was invented by Docker. In fact, the container is a program's operating environment. It was there more than 20 years ago, has been tepid, the recent explosion of containers, there is the potential to replace the virtual machine, mainly because Docker in the container provides a development environment and deployment scenarios, making it easier for developers to use containers to develop and deploy their own applications. The above sentence, the lower threshold is to enhance the productivity ah.


The difference between "micro-service" and "service" is in fact a big difference. At the implementation level, the component emphasizes divide and conquer complex systems, reduces the overall complexity, but does not emphasize the autonomy of the data information and the ease of use of the function. and service in the birth of the initial, only emphasize through Easy-to-use service interface through the enterprise application, heterogeneous software can coexist, ignoring the service within the definition of implementation. Micro-service combines the advantages of both component and service--the application is decomposed by a small enough service granularity, developed independently, started lightweight, rapid development, fast testing. Each micro-service allocates computing and storage resources according to its own characteristics, and can scale and metabolize independently.


The fault isolation capability of the micro-service is good, the service is not affected, each service can be modified or upgraded at any time, without affecting other services. Developers reduce mutual waiting and dependencies, more autonomy, and better experience. It looks good, it's a sharp weapon to break monolithic. Technology has been validated by the landing of commercial products. Yes and no, we're almost there.


Micro-Service is a revolutionary framework to support DEVOPS, the cost of system change is very low, but the coordination between micro-services is a very complex project, the need for automated tool matching. Huawei Wireless Tools has started the relevant work, we look forward to it.


(more Huawei information please pay attention to Huawei developer community, Huawei's own open door: http://developer.huawei.com/ict/cn/, don't ask my name, others call me Lei Feng)



Related Article

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.