Software engineering technical issues
1. Category
Speaking of software engineering, often think of CMM, RUP, India mode, etc. The management factor plays a very important role in software development, however, software engineering does not only refer to the management of software development, but a wide range of integrated disciplines. In software engineering, about half of the content is very professional, involving software analysis, design and even encoding technologies. The so-called structured, object-oriented, all in software engineering. "Software engineering range is extremely wide. Some of the software engineering is math or computer science, other aspects can be classified into economics, management or psychology." 1
This article is not prepared to discuss the problem of software engineering, but only the techniques available in software engineering, as well as their impact. This does not mean that the authors are ignored by management, but because this paper is not a textbook of software engineering, it is just a professional papers, and the problem that is ready to explore is within a certain range.
This article also does not discuss all technical issues of software engineering, and issues that are prepared to explore include:
l Software engineering problem
l interface
l Application software system architecture
l software design technology
2. Software engineering problem
Software has been discussed, how to make software achieve as large-scale production as traditional industries. The proposal of software project is to achieve this wish. However, although software engineering has now been greatly developed, however, the software's large-scale industrial production is still not implemented. What is the reason?
From the essential properties of the software, the complexity of the software is the essential properties of the software. Before this attribute has not changed, the software will not realize the same factory production as the traditional industry.
From the media produced by software, traditional industrial production is a tangible material product, and people's production activities are subject to production materials; however, the medium produced by software is intangible human thinking. Production of material data, is subject to the properties of the substance itself, and it is not easy to be around the thinking of humans, and it is easy to copy, which makes industrialization possible. And human thinking is so easy to change. It is impossible to copy, even the same person, and different periods of thinking. This makes software that is purely dependent on the production of large-scale industrial production. This is so difficult. In fact, it is not only a software industry. Any industry that is the main production medium is a human own activities, it is difficult to achieve industrial production, such as consultation, performance.
From the production process, for the traditional industry, the design and production of the product is separate. In the design phase, the main work is human thinking, so, in this stage, the same software is not mass production. In the production phase, the main object is material data, and all standards have been developed, only a large number of copies on the pipeline. For traditional industries, the boundaries of design and production are so clear, and the proportion of production and design is so disappersion. However, for the software industry, the software production process is the process of design, and the pure production process has little (perhaps, the CD is calculated), which makes the software production form There is an inevitable difference between the production of the traditional industry.
For software development, from business model, demand analysis, system architecture, system analysis and design, to the final code, the higher the abstract level, the smaller the controllability, the closer to the actual , The greater the controllability, so in software development, the core team's role is so huge, and the success or failure of a software product, the core team's core personnel role is largely decisive. For software development, if the software development is to achieve industrial production, it must be advanced from the back forward, starting from the coding. India mode may give such an example. Therefore, we are on the way software engineering, just moving towards engineering goals, but to achieve this goal, it may take a long time. Every progress in technology has made us step towards this goal. During the development of software engineering, technological progress has been great, and it can even be said to be a decisive role. With the different technologies, the management methods used are constantly changing. Many of the software engineering technologies are also prepared for management. Excellent software development technology can make up for our lack of engineering, so that software development is more controllable, and software quality is more secure.
Below, let's specifically explore the use of software engineering technology.
3. Interface
The software is composed of different functional modules, and each different part is independent of each other and impact each other. Therefore, in the software system, the independence of each part is guaranteed to be a pair of contradictions.
In order to ensure the independence of each part of the system, high cohesion, low coupling is the basic criterion that the system design must follow. Highly polymerization, low coupling requirements, more than just the requirements between the horizontal modules, but also the guidelines necessary to follow each level of the system longitudinal direction. Regarding the problem of system-hierarchical design, the application software system architecture will be discussed.
At the same time, in order to ensure the mutual error calls of each part, a series of rules must be developed, these rules are interfaces. Therefore, the interface referred to herein is not the meaning of the Interface syntax on the program language, but a broad concept.
In essence, the interface is a contract, and he stipulates the interaction specification between the implementation of the interface (service provider) and the caller (customer). The introduction of the interface has brought great flexibility to the system design, and the image of the interface can be seen in the object, the use of the design mode, and the design mode. It can be more exaggerated that interface technology is the soul of object-oriented design.
"Interface programming, rather than implementation programming" 2. In order to make the software architecture more reasonable, and for the cooperation between the team, the first work of software design, the first work of software design, is a call interface for the various horizontal and longitudinal parts of the software.
Last continued
Note: 1 "Software Engineering Java Language" Stephen Schach Mcgraw-Hill
2 "Design Mode"