About the understanding and use of software engineering theory
[Author] In this article, we discussed the important role of software engineering in system development, and gave several software development methods and program code written based on software engineering, and combined with their actual projects. The choice of matters and related tools that need to be noted in system development are analyzed, and systematic analysis and developers have a certain role.
I have a dream
Undoubtedly, the development of the computer is very short compared with the history of human history, and the success of the first computer has no hundred years since the development of the first computer, but the computer and its related technologies. The development is definitely the fastest. The development of the hardware (the development of hardware is basically in accordance with the law of Moore, every 18 months, the speed performance of the machine is doubled), from the development of software, from the architecture, we experience From the mainframe structure to the file server structure, from the client server system to the architecture of the Internet-based server browser structure. From the point of view of the coding, we have experienced from the most beginning machine code to assembly code, from the advanced program language to artificial smart language, from a dedicated programming language to a generic programming language. In terms of development tools, we have experienced from separation development tools (with code editor, intermediate code generator, and connectors) to integrated development systems, from the simplest single-line command debugger to convenient and flexible multi-functional Debugger. However, all software manufacturers and software developers today will still think of Martin of the black human rights sports leader? Luke? A famous saying "I have a dream". Yes, all developers still have a dream, I hope to have an universal system development framework and method, as long as we follow this framework, we will be able to develop applications suitable for all fields, so we are studying This time I vote for a class, such a class is a software engineering. But when we were studying this class, we still didn't find such a frame and even connect to such a frame. Regardless of whether we believe that software projects may be ineffinning, all schools and logical people are trust the theory's guiding significance, because there is an Einstein and many of its great scientists after the theory of energy and quality. We have made an atomic bomb. However, unfortunately, software engineering is not a specific theory, it is more abstract science. Software engineering is a methodology, rather than a specific touch, seeing products. It tells us that when designing a system, we need a feasibility study, plan development, demand analysis, system design, coding, testing, maintenance, etc. And what should be made in these processes to present a guiding thing. But there is no expert and standard committee to ensure that we will definitely be completed smoothly as long as they follow these standards. And in fact, the field of software development is so much not to have a universal framework for all fields.
No matter what the software engineering has reached a very mature stage or that software engineering is still a black box that does not understand, software projects have experienced three different phases. The first stage is the software structured production stage, with structural analysis and design, structured review, structured programming and structured testing. From the mid-1980s, software production began to enter the second phase of the process-centered, to propose a process-mature model CMM, individual software process PSP, and group software process TSP. The third phase is the software industrial production stage that appears in three axes, object-oriented and components. For the words, we still return to our article title, we are developing, the military and horses are not moving, and the grain is in the first time, still touches the river. The soldiers and horses have not been moved, and the grain is of course means that we are not busy writing code when developing, we must first develop a way to develop. This is the concept of metadata, and metadata does not define data, which is a description of the data, that is, the data that is usually said about data. When we design, it is the case, define the standard, how to develop, how to develop. Touching the river and crossing the river means that we will do anything, we will do it first. If you do it, you can follow this model, in fact, in anything Initially, we are all like this. From the perspective of syndrome differentizers, it is from practice, then sublimated to theory, and use theory to guide practice. I remember a joke saying that foreigners engage in software projects in a black house, but now still caught it, and the Chinese is in a black room, and there is no cat, then someone says, I said, I I have caught the cat. This joke is an explanation until now, the software engineering is still a process of continuing to explore, develop, and the other side also shows that China engages in software engineering nothing. In fact, no matter whether there is a software engineering, no matter whether there is a universal framework system, our application system is still doing, a variety of software is still going to develop. Said that the software system is because there is a need. With the application domain with the meaning of software. Many times, we can see all kinds of software and innovation abroad, and we don't, we are more like impression and some duplicate features, because we don't have this demand, this is also Explain why ERP systems can carry out good abroad, while more than success in China. On the one hand, it is of course because our company is still not long in accordance with the market economy. On the other hand, our company does not have this demand. Status Quo of my country's Software Engineering Development
Many domestic experts believe that the domestic software research and development process, personal color is relatively strong. It is not possible to form an industrial scale over, without a scale, and there is no industrialization. Anyway, we must first come to see how much domestic software vendors provide us with how much powerful software products, from the perspective of technology and profits, the core part of the software system is the operating system, the compilation system is then Things such as developing platforms, this is some application systems, such as graphics development, game development, corporate applications, website construction, anti-virus, network tools, etc. The operating system is centered on the Chinese Academy, which is a COSIX. This is an unix system. Unix initial source code is open, although CoSix is a system of operating systems called China and a UNIX series (IX represents Unix Series), but how many original technical components are there, we don't know, but there is a bit of certain market coverage is absolutely small, and whether you can run a variety of compilation systems, databases, Group parts and application systems may also need further testing. Then it is also necessary for the support of the hardware platform. Then the vigorous Linux system, Linux is an operating system that complies with the GNU standard. China has a lot of companies launched their own Linux and have Chinese Linux. This has a more doubtful point. Why not architecture like Unicode on Linux? Things, but only do this localized product? I don't know if it is an eye or a market problem. MIS system, financial software is a highlight of the Chinese software industry, and they completely expose China software development disorderly and repeated inefficient labor. Education software is on a certain level is an electronic question bank. Of course, there is also an advantage, such as joining multimedia teaching (good visualization is good) and the characteristics of so-called entertaining, but from essentially the question bank. Anti-virus software is said to be the pride of China software, and the Chinese authority evaluation has reached the world's leading level, but it seems that there is no recognition of international authorities. The game software does not have to be mentioned. The secret of successful game software in the domestic industry is well known, not technical and creativity, is really attributed to our long history. Word processing software and typographic software objectively say that domestic also doing, but from the system's scalability and architecture, the gap is placed there compared with MS and Adobe. In fact, this reason is very simple, one is our lack of innovation ability, and the other is our lack of software engineering concept, the demand analysis of the pre-system development, the design is not good or not good enough. Of course, we rarely doubt their skills, we have thought that this is the current situation of the Chinese software industry in the geographical environment and economic environment. Of course, China's software developers can absolutely be excellent, but think about how much technological innovation and patented technology in our software industry leading companies? No matter what this, actually break an operating system, such as file system, process management and scheduling, IO scheduling, etc., maybe we can implement some of the contents of one, but how to integrate them reasonably absolutely one It involves the problem of software engineering. As a developer, we have used our programming mode, and our habits do not consciously affect new developers. Therefore, establish a software engineering role in the mind. From a certain point of view, there will be more important than a few developing languages. Several programming skills are really important. For example, we may be able to write several classes in the MFC or extend the MFC with their own classes, but have several people truly analyze and consider the design and principles of the MFC architecture? Self-hearted, how many people can we design a framework system such as MFC? Let's talk about some related topics on our topic.
Do we need software engineering?
One point, you can reach a consensus, if an operating system like Windows does not carry out comprehensive planning, it is absolutely unable to use software engineering ideas and methods. The success of Windows is not that it has a successful innovation in process management and scheduling, file system, memory management, interface design, etc., and its greatest is to put all the technologies reasonably and concentrate on a Window. Operating system unique frame structure. More importantly, every technological innovation of Windows can be effectively integrated into the Windows framework, such as COM, XML and other technologies, making Windows from the desktop operating system into a network-based operation via ActiveX, DCOM and other technologies. system. OLE2 technology has effectively integrated the software related to the entire Office. Here we can compare the Office's design and WPS design, objectively, WPS is also a good product for Chinese users. However, from the concept of the entire system design, Office is obviously more than the WPS high, it can integrate Word, Excel, PowerPoint, Access, so that all our office-related documents, charts, databases, demo becomes A integrated thing. And through macro, users can customize user interfaces and prepare appropriate templates. Single is that this secondary development feature is not WPS can now be able to be back, and of course, it is limited to the current user's ability to use secondary development. . From the Microsoft product line, you can see the role of software engineering. All products of Microsoft have a whole frame structure, such as Office software, effective communication and contact through OLE technology. For example, Visual Series Development Tools provides similar development interfaces to learn other development tools that can be easily learned after developing tools. For example, SQL Server and Access, although they apply different, they behave to the user's interface, especially in queries and analysis. It is worth mentioning that because of the rationality of the design structure, because many analytical and research have been made in the early stage of development, considering scalability and scalability, Microsoft's series of products can quickly utilize new technologies and use unified structures. The form is manifested. For example, when the network has become the mainstream of computer development, almost Microsoft's tools can quickly support network-based development and applications.
In contrast, many companies in our domestic companies have rarely have continuity. It is often a new product to completely restart the stove, and there is no half of the relationship with old products. This is what we do in designing products, there is no good abstraction and concept, logical design, resulting in extracting some useful, common things from the old product. Of course, many developers also recognize that a large system does require software engineering, but a small project can be rushed to horses? the answer is negative. The so-called mason (although) is small, the fifty organs. Whether it is a big project or a small project. As a project, they need to have a demand analysis, system structure establishment, design, coding, testing. This is an indispensable thing for any project. It is often seen that many large companies' IT sectors are constantly making a variety of reports. When each department puts forward a new type of statement, the corresponding data is extracted from the database and draws the business. The style structure required by the person is rarely providing a common template, and of course the high-level API interface is less. This inevitably enables developers to fall into some trivial statements. One of the important reasons for this situation is that there is no design, demand analysis, and system architecture in the early stage of system development. Here, some small software projects we have developed to talk about some development summary and experience. In general, small software project features a single one, and the connection between modules and modules is not a lot, while the development cycle is relatively short. Although the small project is relatively simple, many developers are easy to make some mistakes, remember that we have three developers when we develop an Internet-based paid service system: a preparation responsible for the front-end interface, a responsible data communication protocol and implementation (Application Protocol based on TCP), a query, finishing, and extraction responsible for database data. We did not carefully conduct an estimate of the actual future and workload of the project when developed. There is no serious estimate of the project difficulty, such as multi-threaded issues and cache processing issues when multiple users in communication, and the implementation of the user batch request processing. The interface between the three people is also in the development of rest, and the verbal definition. The results found that there is a non-tight place (for example, the developer is written with VC, the developer is transmitted by stream, and the client is written in Delphi. When receiving data, it is discovered inaccurate, and later studies have found VC. With CSocket, the data is defined in the data stream, and the server-side data transmission module has to rewrite it), and in which the understanding of the two sides is different, then rewritely revive. In the end, there is no more formal document when the system is basically completed. Then, because someone graduated from this project, then the module he prepared needs to upgrade, the new received person has to spend a lot of time to read his source code.
Therefore, in the development of small projects, you must also establish a reasonable mode: and the so-called reasonable mode is that the software engineering tells us that the five steps needed when developing a project: obtaining demand, demand analysis, design, coding, testing . 1. Understand the real needs of users. Before entering formal development, you must first get an accurate demand from the user. It is necessary to spend a considerable amount of time here. Our software project can be roughly divided into two categories: special software and general software. For dedicated software, the general user has a relatively clear contour for software to complete, and often regulate it in development contracts. However, it is only a probably framework that the development contract must be more specific to the user before entering the development, and it is understood that the product in the user's mind is like, it is best to use prototyping methods. A simple frame gives the user. For universal software, a certain market survey must be made before development, on the one hand, from economic benefits, there are many potential markets in investigation products, on the one hand, from the perspective of technology, understand the various technologies of software for software. The requirement, on the other hand, it is to determine the positioning of our software, that is, our software is specifically for which user groups are served. Then a certain investigation of the existing hardware configuration, software configuration, network usage, database usage, and computer familiarity is determined by the survey, based on the statistical results of the survey, determines some technical indicators of the upcoming software. 2. demand analysis. Things to do in demand analysis include: high-level ideas, establish system objectives, division business, current business analysis, establish business model (Enterprise Model), information demand analysis, user view standardization, data element standardization and consistency control. After understanding the needs of the user, use a model to reply to demand analysis, usually we can target the object-oriented approach to represent the entire system by analyzing user needs, use class, and classes. In order to discuss the process of software operation, UML can be used. In systematic analysis, you need to clarify the scope of application domain, and then clarify what we need to do. At the same time, we need to decide what method to use to complete the demand acquisition, which greatly affects the needs of demand analysis.
For example, USE CASE can be used to represent user needs, and each entity that interacts with each other from various sequence diagrams is a class. In addition, the analysis needs to be connected to the design process. The content of the analysis process is the relationship between objects and objects to represent the flow of the entire system and system, and does not design specific implementation. What programming language is used, run on what operating system platform, etc. These specific implementations are done in the design phase. The advantages of object-oriented methods are analyzed, design, and encoding process representations, which can be more good. Many case tools are now different from analysis and design. However, this does not mean that development can not distinguish between analysis and design, how to use a good design (CASE) tool or developer. 3. designing process. The work of the design phase includes the necessary modifications to the analysis model, and may need to make some modifications to certain types of structures, determine the user representation layer (which is a popular interface definition), user service layer, business logic layer, database service The work needs to be done at the layer and the specific database. At the same time, it is necessary to determine the architecture (such as B / S or C / S) and development tools (such as VB, VC, VI, C Builder, Delphi, Powerbuiler, etc.) 4. coding. After entering the encoding, some errors in the previous analysis or design phase may still be found, and should return to the necessary modifications in front. At the same time, the code is specified before the encoding, and the style is maintained in the development process. 5. test. Test is a step forward that the system is put into use. Even small projects should also be tested strictly. It is actually a problem that left the error to you or leaves it. Finally, we know that the software project is mainly completed by the developer, so it is also important for the reasonable arrangements and configuration of the person. Generally, a project person in charge is needed, responsible for analyzing, designing and coordination. In addition, several programmers need code to complete different layers (such as user service layers, business logic layers, database service layers, etc.). At the same time, there is a need to have documentation to organize the documentation related to the system development process. If the condition is possible, you must configure a test engineer, specifically perform code testing, of course, if the condition is not allowed, it can also be cross-test by the developer. It should be noted here that the work of coordinating several people is more important for the work of the project. Because of the coordination of vulnerabilities, it may result in a large problem, so the project leader must monitor the work of each developer, including whether the content is deviated from the request, and the progress is lag. At the same time, you must give a clear task book for each developer. Each developer must be very clear when specific development, these tasks should be represented by a clear document. Each developer needs to know what the work you do is in what is in the entire system, so it is possible to discover the vulnerabilities in the design model, avoiding the consequences of modifying the code after each person. Software development changes
The development of many foreign projects is based on some graphical things, and their purpose is to write less code or even write code. The code can be automatically generated by graphical ways, such a advantage is that if the user's demand changes or business logic changes, what we need to do is the adjustment of the graphic representation, and then re-automatically generates code, this is also foreign development. Reasons for the concept and logic analysis of the project. Their focus is to show business rules and demands with graphical ways and then automatically generate code through the Case tool. Therefore, when the Chinese is still developing another MIS tool, many energy have been put on the production of the CASE tool. Many of our company are busy writing specific business processes, and many abroad have put energy into the establishment and commonality of models of different applications, different industries. So, what they do is relatively strong and extended, and we are a little change in the needs of users, and they are busy with the code, and even change the architecture. In addition, because they pay attention to the establishment of the model, when other applications can be used, they can be drawn from the original model, and adjust and optimize at a high level, and can effectively extract the parts that can be used in the original system. So we should translate from the software development model of code as the core to the model-centric, based on CASE development. A great phenomenon about collaboration and "personal heroism" social progress is that social division is more and more thin, and the development of software is no exception. Why can't I develop a software hero such as Ju Bojun today, I will have an operating system like Windows. Because the current software barriers are nothing more than two, one is to win with technological innovation, you imitate the interface, but you have no way to implement the core functions. The result is that you can only purchase its technology core, and you do some corners. Examples, such as developing tools such as VB, their core part is its COM control provided by the third party or a DLL library, what you do is a integrated job. The second is to win in detail, that is to say a lot of functions and do very delicate, even if the technology itself is not very complicated, you really want to make a such thing without a two-year worker is impossible. And I am waiting for you to make it, and its new version has already been launched. It is really possible to call it on the market, and it is characterized by these two aspects. The characteristics of these two aspects determine that you are absolutely unreliable, maybe you can complete technological innovation independently, but you must definitely be able to achieve all of these complicated functions. Therefore, this era requires innovative heroes, and more needs to cooperate with people. Today's software development is no longer a person who can hold the world. The management of software development, the design of the system architecture, the connection between modules, the implementation of the core algorithm, the development of the flexible interface, the implementation of software re-development interfaces require special people. These effective integration obviously require effective use of software engineering ideas and methods. Therefore, the real software hero is no longer a programmer written by others, but the analysis, design, standard development and coordination of the entire architecture.
How to train software engineering thinking and approach
As a software developer, a common problem is in the early stage of the project, I like to talk about the details of the implementation, and I am not tired. We prefer to discuss how to use flexible and short code to implement a specific function, and ignore the consideration of the entire system architecture. So as a developer, especially an experienced developer, you should free from the code, more times in our minds or even temporarily give up to consider how to achieve problems, and from projects or products Overall, consider a software product. Here is some of my personal experience: 1. Consider the market prospects of the entire project or product. As a real system analyst, not only from the perspective of technology, but also consider problems from the perspective of the market. That is to say, we need to consider who our products are user bases. When our products are put into the market, they have vitality. For example, even if we use the best technology to implement a single process, its market prospects must not be optimistic. 2. Consider problems from the perspective of the user. For example, some operations are very obvious for developers. But for a general user, it may be very difficult to master, that is, sometimes we have to compete in flexibility and ease of use. In addition, in the functional implementation, we also need to make comprehensive considerations, although some features are very powerful, if the user is hardly used, it is not necessarily launched when the product is first. From the perspective of the user, it means that the user is approved, is not a good developer. 3. Consider problems from the perspective of technology. Although technology is definitely not the only important, technology must be very important, it is the necessary link to success. In product design, we must consider adopting advanced technologies and advanced architecture. For example, if you can use a multi-thread to process the individual parallel processing, it is best to use multi-threaded processing. When developing under Windows, it is possible to encapsulate functionality into a separate COM component, which is not a simple DLL or a library of source code or objects. For example, if you can run under the B / S structure and do not affect the system function, it is not necessary to implement it under C / S.
4. Rational segmentation of the module. From a multi-layer model perspective, the general system can be divided into three parts: user layers, business and database layers. Of course, every part can be subdivided. Therefore, when designing is designed, the segmentation of each part is performed and the standards of interaction between various parts are performed. And when it is actually developed, it is really necessary to re-adjust. This ensures that each part is in line with the head and developers can also apply. 5. People's organization and scheduling. It is important to think about the specialty of people, and some people like to do interfaces, and some people like to be core. If possible, the specific configuration is made according to the specific situation of the person. At the same time, it is necessary to ensure that each developer first completed the need for interacting with other people during development, and has a clear understanding of his project progress and other developers, ensuring that developers in different parts can communicate frequently. . 6. Write the document in the development process. There will be a variety of problems and difficulties during the development process, and of course there are all kinds of ideas and new ideas. These things should be recorded and launched in time. For difficulties and problems, if you don't solve it in a short time, you can consider adopting other technical replacements and do special studies afterwards. For various ideas, it can be considered in this release or in the next release in the next release. 7. Take over the problem that may be encountered when implementing. Development is a matter, the user can really use it. It is another thing. For example, in the MIS system development, the simplest problem is how the user operates if the data is incorrect. How to make users understand the position and role of themselves in the process, how to make users truly use computers to collaborate. The above is my personal experience. In fact, as a software developer, I also like to see the problem, sitting directly in front of the computer, but I do think that the software engineering is huge for our system development. As the support of the software engineering, I simply combine my own development experience to introduce problems such as software engineering, programming specifications, and tool usage. Summary of software development methods
Foreign software companies and agencies have been studying conceptual things in software development methods, and there are many practical development methods, such as life cycle, prototyping methods, object-oriented methods, etc. Here is a few popular development methods: 1. Structured method structure development method is proposed by E.YourDon and LlConstantine, that is, the so-called SASD method, can also be referred to as a functional software development method or a data stream. Software development method. The YOURDON method is the most widely used software development method in the 1980s. It first uses the structured analysis (SA) to analyze the software, and then uses the Structured Design (SD) method to perform overall design, and finally Structural Programming (SP). It gives two types of typical software structures (transform types and transaction) to increase the success rate of software development. 2. Software Development Method for Data Structure Jackson method is the most typical software development method for data structures, and Jackson methods decompose the problem to the hierarchy of each portion of the three basic structures. The three basic structures are sequential, selection and repetition. The three data structures can be combined to form a complex structural system. This method starts from the input, output data structure of the target system, exports the program frame structure, and then supplement other details, you can get a complete program structure. This method is particularly effective for the input and output data structure, such as the file form processing in commercial applications. This method can also be combined with other methods for detailed designs of modules. 3. Problem-oriented analytical method PAM (Problem Analysis Method) is a software development method proposed by Hitachi at the end of the 1980s. Its basic idea is to take into account the input, output data structure, and guide the decomposition of the system, step by step under systematic analysis guidance. The specific step of this method is: from the input, output data structure export basic processing box; analyze the relationship between these processing boxes; step by step by step, until the entire system is drawn. This method is essentially a comprehensive approach to the bottom, but has made a purposeful decomposition before gradual synthesis, this purpose is to fully consider the input and output data structure of the system. Another advantage of the PAM method is to use a PAD diagram. This is a two-dimensional tree structure diagram that is one of the best designs that are the best designs. Of course, due to the input and output data structure, there is also a gap between the entire system, this method is only applicable to small and medium questions.
4, the prototyping method has a lot of reasons for the prototyping method, mainly with the increase in our system development experience, and we also found that not all needs can be pre-defined and it is inevitable. Of course, it is possible to use the rapid development of development tools. For example, use VB, Delphi, etc. We can quickly develop a system framework that allows users to see, touch, so that it is not very familiar with the computer. Users can make their own needs according to this template. The development of prototyping system is generally in the following stages: (1) Determine User Demand (2) Development Original Model (3) Consulting User Forward Objectives (4) Modifying Prototyles. Prototyping development is suitable for cases where users are unclear, business theory is uncertain, and demand often changes. This method is preferred when the system is not very uncommon. 5. Object-Oriented Software Development Method Currently, the most popular number of words in computer industry is distributed, parallel, and object-oriented objects. This can be seen that object-oriented concepts in the current computer industry. For example, the current popular two major object-oriented technology DCOM and CORBA are examples. Of course we actually use or object-oriented programming languages, such as C . It is undeniable that object-oriented technology is a revolution in software technology, which has a milestone in software development history. With OOP (object-oriented programming) to OOD (object-oriented design) and OOA (object-oriented analysis) development, the object-oriented software development method OMT (Object Modeling Technique) is formed. This is a method of combining upward and auto-top downwards, and it is based on object modeling, but not only considers input, output data structure, but also contains data structures of all objects. Therefore, Omt completely implemented PAM has no fully realized goals. Not only that, OO technology has substantive breakthroughs in key links and quality indicators of the three software development of demand analysis, maintainability and reliability, and basically solves the serious problems in these areas.
In summary, the object-oriented system adopts the method of summarizing the summary, the top downward decomposition, which can truly establish a user-based demand by establishing the object model, and the maintenanceability of the system is greatly improved. The current industry's standard-oriented modeling is UML (Unified Modeling Language). Here we need to talk about Microsoft Solutions Framework's framework, which simply divides system design into three phases: concept design, logic design and physical design. The concept design phase is how many objects can be obtained from the user's angle, and the service framework is drawn in the object. The logical design phase is another object of the concept design phase to analyze, subdivide, integrate, and delete. And build the method properties of each object and the relationship between the objects. The physical design is actually to determine the components, services and frame structures we actually need, and the specific programming language, etc. The entire structure of the MCF is clearly a relatively good operational frame system based on object development. 6. Visual development methods In fact, visual development cannot be separately used as a development method, more appropriate, can be considered a auxiliary tool, such as people who have used Sybase s-design know that with this tool can be displayed The graphical database mode is created and can be imported into different databases. Of course, people who have used S-Design are not necessarily a lot, but people with development tools such as VB, Delphi, C Builder must be a lot, in fact you are using visualization development tools. Of course, it is undeniable that you just use visualization on this link, rather than the systematic analysis and system design of this high-level approach. In fact, the establishment of systematic analysis and system design visualization tools are a very good selling point, and many tools have a lot of tools in this regard. For example, Business Object is a very good database visualization tool. Visual development allows us to focus on business logic and business processes, and user interfaces can be easily composed of visualization tools. By operating interface elements, such as menus, buttons, dialogs, edit boxes, radios, check boxes, list boxes, and scroll bars, etc., the application software is automatically generated by the visual development tool. Software architecture and tool selection
The software architecture represents a high-level structure of a software system. The main features are: 1) Software system structure is a high-level abstraction, which does not involve specific system structures (such as B / S is also c / s), nor Caring for specific implementation. 2) The software architecture must support the functions required by the system. When designing a software architecture, the dynamic behavior of the system must be considered. 3) When designing a software architecture, there must be considered compatibility, security, and reliability of existing systems. At the same time, it is also necessary to consider the system's future scalability and scalability. So sometimes decisions in multiple different directions. There are already some about standardized software architectures, such as ISO open system interconnect models, x window systems, and more. The structure of the software system is typically defined as two parts: one is the calculation component. The other is the interaction between components. If the software system is viewed as a figure, the calculation component is the node, and the interaction between the components is the arc between the nodes. The connection between components can be considered a connector, such as process call, event broadcast, database query, etc. The correct architecture design is the key to the success of the software system. After we understand the importance of software engineering, we have no corresponding tools, and we are also difficult to complete a system. What kind of tools do we need in a demand analysis and design phase? Of course, it is best to be UML-based Case tools. The current relatively popular is ROSE, which is a good tool for analyzing and establishing objects and object relationships. At the time of specific encoding, we need version control tools, MS's SourceSafe is a good version management tool and project management tool. The specific development tools are of course a lot, but if you are a programmer that has been infected with VC, you will choose it because it will make you feel what is real oriented, and you are using VB, Powerbuilder At lot of Delphi, there will be the same feelings. As for the database mode build, I have always used Sybase's S-Design, and better tools don't know. It is also important to note that we need to establish several templates prepared by document so that developers write specifications and documentation in accordance with this template. Help documents can be made with Microsoft's HTML Help Workshop (Hhw.exe), you can also compile them into .chm format, which packs text and graphics, only one file, use and distribution easier. Finally, if the developer is not concentrated in a place, it is best to build a mailing list, and developers can discuss various issues in the development through the mail system. to sum up
As a software developer, we believe that it is necessary to spend on software engineering. At the same time, the standard to establish a system development is also something that individuals and groups must first consider when developing software. There is no rules that are not square, especially software development as an emerging industry, and the norm is more important. Therefore, while domestic software development companies should focus on new product research and development, they should turn their attention to the management and standardization of software development. Paying only returns, only according to the outline of the software engineering, you may be best in building a software system, especially large software projects.