Degree of abstraction

Source: Internet
Author: User

"The focus of software design is abstraction." I can't remember who said this. I want to correct it: "The focus of software flexibility design is abstraction, the role of abstraction is to "ensure flexible software design ". More and more languages and platforms are built on the OO ideology, which fully demonstrates the correctness of OO. Oo is an idea that must be involved in software design. More and more people are pursuing it. Of course, I am also one of them. With it, software design can be upgraded to a "beautiful" realm; with it, the readability, maintainability, flexibility, and scalability of the software have been greatly improved. Over the past few years, a series of terms, such as "Design Model" and "architecture", have been gaining more and more attention. All these things are actually designed to implement an abstract-level programming to ensure software flexibility.

So what is abstraction? I think the abstract is actually to implement a sentence "don't repeat". Do not repeat it. Ideally, any code, metadata, or concept of a system is unique in this system, and the uniqueness of the Code is easily guaranteed, but it is difficult to ensure the uniqueness of metadata and concept, with the increase of the degree of abstraction, their uniqueness has also been improved, and the flexibility of the software has also increased.

In this case, does it mean that the higher the degree of abstraction, the better? This is generally the definition in the book. However, I think this statement ignores one of the most important factors: people. Software is written by people and cannot be perfect. In addition, in a development team, each person has different levels and different ideas. This kind of factor restricts us.

One of my colleagues said to me: "What is the mark of successful software projects? Three points: customer satisfaction, company satisfaction, and employee satisfaction"
How are customers satisfied? The software is completed according to the budget period and cost, and creates value for them
How satisfied is the company? The software is completed according to the budget period and cost, and creates benefits for the company
How satisfied are employees? The software is completed according to the budget period and cost, and the development process is smooth, so that your own benefits are guaranteed.
The conclusion is that the software project is successfully completed based on the budget duration and cost.

The level of each development team is different. The project manager and architect need to think over and over again. To what extent is the best abstraction in software design? This must be determined based on the existing resources (developers, tools, and so on). If you are too abstract, you can understand the level in place. What about the following developers? You must consider the training cost, communication cost, too abstract, extend the construction period, and even make the project far away. The best practice is to use the simplest and easiest-to-use technology to meet current needs.

It doesn't mean that there is no need for abstraction. If there is no need for abstraction, isn't it empty talk about so many documents and books about software design? Without abstraction, it is difficult to ensure the flexibility of the software, causing great difficulties for software maintenance, program readability, and ,.. Performance is hard to guarantee.

After talking about a lot of things, there is still no conclusion. Such things may not have a conclusion at all. The most important thing is to know what your current most important task is? Time allowed? Is the cost sufficient? Does the developer level meet the requirements? And so on.

Of course, after a series of project exercises, the technical level of your team is also constantly improved. You are using more and more design technologies, and the development efficiency and software quality will gradually increase. Therefore, we still need to design and abstract, but this is a process.

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.