The agile architecture design article has all ended. As architecture design is a big topic, it is very difficult to clearly describe the architecture design in an article. Therefore, a group of books and articles are provided in the last chapter of this Article. These materials are related to architecture design. The writing process of this article also benefits a lot. Therefore, it is recommended to interested readers.
Refactoring To Patterns (Joshua Kerievsky)
Undoubtedly, pattern is an effective tool for software design. However, when associating a pattern with a software design in reality, many people are often confused about how the pattern is applied. The result is two extremes: one is poor mode, and the other is excessive abuse mode. Mode is a summary of others' design experience, but it also increases complexity while providing excellent design ideas. Therefore, it is very dangerous to use a wrong mode without knowing the context of the mode application. It not only fails to achieve the original results, but also makes it difficult for the design team to understand and communicate with the design team. At the beginning of the article, the author criticized the misuse of the model. So what is the correct use mode? The author draws on the Reconstruction Method of Martin Fowler. Through practical examples, we will discuss how to reconstruct a common, inflexible, and non-extensible design into a beautiful design model. Therefore, the core of this article is how to identify which designs need reconstruction? How can we determine the timing of refactoring? How to evaluate the advantages and disadvantages before and after reconstruction? And, how to refactor? This book is currently being written, and you can find its draft from http://industriallogic.com. You can also find some translations on transparent websites and umlchina. After reading the architecture reconstruction mode, you can read this article to learn about the implementation of this mode at the code level.
Valid Java (Joshua Bloch)
This book is positioned on programming habits (Idiom) and good OO thinking. No design can be separated from the final code. Therefore, designers who are good at architecture design must also have excellent coding skills. An excellent software process is composed of a large number of excellent practices, and the architecture design is the same. It is accumulated by a large number of Code-level practices. In addition, many discussions in this book are about how to make an excellent OO design. In this article, many discussions about specific designs are based on OO design. In the stabilization mode, we also discuss the excellence of OO design. Therefore, after understanding the basic ideas of architecture design, read this book to further understand and strengthen the design ideas of the OO architecture. By the way, the Chinese version of this book is coming soon.
Writing valid tive Use Case (Alistair Cockburn)
This book describes how to compile use cases. In architecture design, we constantly emphasize the importance of requirements. We can say that there is no architecture without requirements. How Should requirements be organized? Use Cases are a good way to organize requirements. Note that use cases cannot completely replace requirements, and requirements similar to business processes and non-functional requirements are not what they are good. The essence of this book is that it fully introduces all aspects of the narrative case, and describes the composition of the case from the scope, role, and level of the case, I also discussed a lot of related knowledge about use cases. More importantly, this book contains a large number of instances. The positioning of this book is more practical than some books that introduce examples. The value of an outstanding requirement is that it can easily be converted to the artifacts required by other practices in the software development process. If we carefully understand this book, we will find that many ideas in this book are based on this. The Chinese and English versions of this book are available on the market.
Thinking in Patterns (Bruce Eckel)
Bruce Eckel's other two books, Thinking in C ++ and Thinking in Java, are very famous. The latter has three versions, both of which have Chinese translations. Teacher Hou Jie personally translated the second version. The third version is currently being written, you can download it from Bruce Eckel's website (http://www.mindview.net. Thinking in Patterns is still in writing, but it has been well developed. Bruce Eckel discusses the differences between models and their meanings from different application perspectives. For example, the discussion on the factory mode starts from the perspective of creating encapsulated objects, and the discussion on the adapter mode starts from the perspective of changing interfaces. The key to the model lies in its application. You can understand this point by reading this book.
Java and patterns if some of the above-mentioned good texts are from foreign experts, this book is absolutely original Chinese. The focus of this book is to discuss the object-oriented laws hidden behind the patterns, and analyze and discuss various design patterns one by one. The use of many interesting examples and the use of philosophical thinking to explain patterns are two major characteristics of this book. When reading this book, be sure to differentiate the technical details and framework code. The benefit of the design mode is that it can design a framework with flexibility, scalability, and low Coupling Degree Based on the context environment. This is the same as architecture design. do not consider too many details in the early stages of the software development process.
Patterns of Enterprise Application Architecture (Martin Fowler)
This is an absolute book about architecture design patterns, but the architecture here is especially about the architecture of enterprise information systems, which is the same as the problem domain discussed in this article. Based on the theory of three-tier structure, the model of this book can be roughly divided into five categories: presentation layer mode, logic layer mode, data layer mode, distributed mode, and some basic models. Early versions of books use this classification method. After the publication, the classification of the model is further refined. For example, the data layer mode is further divided into data source architecture mode, object-link behavior mode, object-link structure mode, and Object-link metadata ing mode. This book covers a wide range of content, and Martin Fowler has excellent talents in material organization. This is an example of restructuring. Read this book and you will have a deep understanding of the technical aspects of architecture design. However, you should note that some of the models in this book seem simple, but if you want to implement them, however, it takes a lot of effort. Therefore, follow the Refactoring To Patterns book and the Reconstruction Mode suggestions in this article. Only when necessary can we reconstruct the design into a pattern.
Dealing with Roles (Martin Fowler)
This is just a short article. The focus of this Article is on Role processing. However, based on the basic object-oriented knowledge, the author discusses how to meet different requirements, and use actual examples to demonstrate how the design changes. This idea is very similar to the idea proposed in this article, and architecture design cannot exist independently of requirements. It is recommended that anyone interested in object-oriented design or software engineering can read this article. You can find this article on the Martinfowler website (http://www.martinfowler.com), times, there are other excellent works on the website, "Dealing with Properties" is one of them. I used to write a book note for a question about Dealing with Roles, which is published on a point space (http://www.dotspace.twmail.net/patternscolumn/analysis%20patterns/RoseModelingNotes_S.htm). If you are interested, you can also guide one or two.
Framework Process Patterns (James Carey, Brent Carlson)
The author of this book is a member of IBM, who has experience Designing object-oriented operating systems and enterprise application frameworks, and the latter is the famous IBM SanFrancisco framework. They organized the knowledge learned in the framework design into a process model. There are not many theories in the book, but the author's rich experience is everywhere. When reading this book, you should always remember the features of the Framework Design introduced by Alibaba Cloud, and then understand and apply these models based on the specific circumstances of your work. Don't blindly apply the model introduced in the book to yourself. This is my advice. The Chinese version of this book will be translated by me and a friend and will not be available soon.
IBM Sanfrancisco framework
This is not a book, but a real product. Based on market experience, IBM has designed an enterprise application framework to provide general components for enterprise application developers. From this product, you can fully understand how the model is applied to a mature product. To understand the design concept of this product, the key is to first understand its hierarchy. The SanFrancisco framework consists of three layers: Foundation Layer, Common Business Objects Layer, and Core Business Process Layer. The Foundation Layer defines basic classes and usage policies of classes. For example, the factory class is used to create all Objects. The Common Business Objects Layer defines some Common Objects in the enterprise, for example, company, account, and customer, and Core Business Process Layer defines the key Business processes required by enterprise applications, including the accounting framework, receivables and payables, order processing, and inventory management. The three layers can be reused independently. The higher the layers, the greater the reuse value. When understanding such a product, we need to have such ideas. For a large product, consistency is sometimes more important than other values. For example, in terms of object creation, the product uses the factory model in a unified manner, while the property processing adopts the dynamic attribute design method in a unified manner. Although these two design patterns are not needed in some places, they must be used to maintain design consistency. This may not be suitable for general project development or small product development, but it is very important for large projects or products.
Applying Patterns (Frank Buschmann)
This is an article describing how to apply the design pattern in practice using the process pattern language. The article is short and concise. It is a pity to summarize the application of the design mode into several modes without providing specific instances. For those who are learning design patterns, it is necessary to spend some time learning how others apply the design patterns. You can find the original article link and traditional version translation in the dot space. The Architecture Vision Model in this article is based on the content in this article.
In fact, Martin Fowler does not need to be introduced in this book. His value lies in his ability to promote many excellent daily practices of programmers to the theoretical stage, and provide guidance to more programmers. This is also one of the major reasons I have praised Martin Fowler for his outstanding organizational skills. Unfortunately, this book has never been translated into Chinese, but this regret is coming to an end. Hou Jie and transparent are translating this book. I believe it will soon be a blessing. Http://www.refactoring.com is the refactored discussion site created by Martin Fowler, and there will be a lot of related content above. Another message about refactoring is that more and more modeling tools are taking refactoring as one of the important features, which can undoubtedly save a lot of effort for programmers.
Http://www.agiledata.org (Scott W. Ambler), a site recently maintained by Scott W. Ambler, also represents a direction for the development of Agile Methods-How to Develop database projects in an Agile fashion. After reading the site content, you will learn how to develop database projects. At present, the site is constantly updated under the Maintenance of Scott W. Ambler. Database Design has never been a focus of the object-oriented camp. The basic point of view is that the key is that the class design is standardized enough, and the database is not the main problem. However, in actual projects, databases, especially relational databases, are often negligible, including database pattern design, performance optimization, database connection management, and data manipulation languages. In addition, legacy databases, concurrency issues, security, relational data-to-object ing, and business logic processing all need to be considered during architecture design. There is no specific chapter in this article to discuss database-related knowledge, because it is best to discuss the database with a specific database. If you have any database problems in architecture design, refer to this website.
Designing for Scalability with Microsoft Windows DNA (Sten sundbglad)
Currently, there are not many excellent books about Microsoft system platform design, and this book is one of them. This book introduces the issues that need to be paid attention to when designing a layered architecture under the DNA system. Its core idea is to avoid purely theoretical object-oriented design. For example, when introducing domain objects in the book, it is recommended that read-only objects and writable objects be processed separately. In this way, read-only objects do not need the support of COM + and can improve efficiency, however, this is not in line with the object-oriented design packaging ideas. In addition, in order to be able to use the Object Buffer Pool technology, this book proposes not to include State data when designing business objects. This is also the same as the basic idea of classes including data and behavior. From this book, we can understand the positive relationship between the design of the real system and the classic Object-oriented thinking.
Design data layer components and transmit data between layers (Angela Crocker, Andy Olsen, and Edward Jezierski)
This is another article about the windows system platform. Microsoft products are suitable for small-scale development. On the one hand, they are related to specific technologies, and on the other hand, they are also related to the design of the architecture. Windows architecture is characterized by rapid development. Therefore, in some small projects, the development speed of Microsoft products is faster, but as the project scale increases, the structural issues that accompany rapid development have gradually become apparent. Therefore, the main content of the article is how to optimize the structure. The main idea is to layer the system and implement the Inter-layer data transfer strategy. These two points are critical issues in any type of system. In the layered mode, we have also made a wide discussion of these two issues. Compared with the Java System, the Window system has a special side and can also play a different role.
EJB Design Patterns (Floyd Marinescu)
This book is divided into two parts. The first part focuses on how to apply the pattern language in a layered system, and specifically for the architectural design and data transmission (that is, the layer transfer data discussed in the previous section), transactions and persistence, server-client interaction, primary key generation policy, and other topics discuss possible design patterns. The second part discusses the practical activities and processes in the EJB Design Process. Although all the content in this article is designed for EJB, its ideas can also be used for reference by other systems. This book can be downloaded from the Middleware website.
Lin Xing, Senior Project Manager of the Project Management Group of Chen Xun software studio, has many years of project implementation experience. Chen Xun software studio is committed to the application of advanced software ideas and software technology. Its main research direction is software process ideas, Linux cluster technology, OO technology and software factory model. You can contact him by email firstname.lastname@example.org.