Study on the "Flexibility" Development Method

In software engineering field, it is an important study topic that building more suitable and effective development method. Although there are many type of traditional development methods, and in past development activities they achieved great success, but they lack "flexibility". With the complexity and variability gradually increased in software development process, due to the lack of "flexibility", the ability of traditional development methods will be restricted. In order to enhance the ability of development method, concept of "flexibility" development method has been proposed, and some problems related to "flexibility" development method have been discussed. Such as that: some factors making the "flexibility" development method to appear, some technology related to "flexibility" development method, some strategy constructing "flexibility" development method, future development trends. Through these discussions, study work of software engineering theory is promoted.


Introduction
With the development of software engineering theory, the contents of software development method become more and more rich. First of all, 1970's appeared linear development method (waterfall model is its representative). Later, many development methods successively appear. Such as that: rapid prototype model, incremental model, spiral model, formal development method, structured development methods, object-oriented development methods, agile development method, Agent-oriented development method, etc. [1]. In software development activities, although these development methods play a huge role, and achieved great success, but there is a common shortcoming, they lack "flexibility".
Here, the "flexibility" can be understood as flexible variability. That is to say, if a software development method has "flexibility", then in the software development process, according to different situations, contents of the software development method can make an appropriate adjustment. Its contents are allowed variation flexible.
In the past, when constructing development methods, "flexibility" is not considered. Therefore, current variety of traditional development methods lack "flexibility", their content is fixed and difficult to change. For software development activities, the traditional development methods provide development steps and specific scheme that is detailed and fixed. In carrying out development activities, it requires developers to follow the development steps and specific scheme. However, in the development process, we know that development activities are complex. Different situations probable occur, each software comparison with other software. Therefore, it is clearly too idealistic, to the any software development activities, in carrying out development activities, simply asking the developers to be in accordance with the uniform provisions. Producing problem is inevitable.
We believe that software development method should have "flexibility". That is to say, in building a software development method, people should consider that contents of development method allow flexible variation in a certain range, in order to enhance the applicability of the development method, in order to improve ability of development method.
It is very necessary that software development method has "flexibility". That at least has two important meaning. First, we look at the development trend of software development activities. There are more and more complexity and variability in development process. Facing such complexity and variability, the development steps and specific development scheme may not be fully applicable. Clearly, the mechanical implementation is wrong, and play to the score should be allowed according to circumstances. Secondly, for the sake of developers, if the contents of development method have "flexibility", so the developer may slick use the development method. In the development process, when the circumstances change, the developer can free change the contents of development methods. Developers have some leeway for manoeuvre, and calmly deal with changing circumstances.
From the above simple description, we can see which is very necessary to study "flexibility" development method. At present, in this regard, no one has done a systematic study. We did some study for this problem. In the following, we describe the studies about "flexibility" development method.

Some Factors Making the "Flexibility" Development Method to Appear
From Requirements Analysis to See "Flexibility". In software development process, requirements analysis is an important work. It is an important factor impelling "flexibility" development method to appear that requirements analysis work has evolved from simpleness to complexity. In software development activities of the early days, due to the scale of software is smaller, user's requirement is simpler and clear, and user's requirement does not change mainly, so the work of requirements analysis is simple, it is easier to do. Therefore, the work of requirements analysis can be accomplish only requiring once, without regard to the "flexibility" development issues. Later, the scale of software gradually increase, the complexity of user needs gradually increase. When doing work of requirements analysis, if still as early as, then it is difficult to complete the development tasks. These situations force people to change their methods in doing the work of requirements analysis. Different methods successively appeared, such as structured method, object-oriented method, prototyping, iterative method, formal method, and so on. In the future, this situation will be further expanded. Therefore, the complexity of requirements analysis will lead to changes in its methods. Method getting user requirements should not be fixed, and should have "flexibility". In other words, according to the change of situation, people can use different methods of requirements analysis. From Software Design to See "Flexibility". In software development process, software design is an important work. It is an important factor impelling "flexibility" development method to appear that software design work has evolved from simpleness to complexity. Software design work is divided into two parts (outline design and detailed design), the outline design work is to design the overall structure of software, detailed design work is to design each module of software. To the early software, because software scale is relatively small, software function is relatively simple. So the overall structure of software is relatively simple, the data structures and algorithms of each module is relatively simple, the link between the modules is relatively simple. Once the above content of design is completed, it basically will not change. In such cases, the software design method is simple. The change of design method is not need. Considering "flexibility" development issues is not necessary. Later, the situation change gradually. Overall structure of software becomes increasingly complexity, the module content and the links between the modules becomes increasingly complexity, case of redo is more and more for the design work, different design methods start to appear. If the design is done still as early, it is impossible that people complete design work using a design method onetime. Therefore, people are compelled neatly doing work of design. Based on changes in circumstances different design methods are used. This impels the "flexibility" development method to appear. That is to say, in the software design work, "flexibility" development issues should be considered. As circumstances change, the design method can make the appropriate adjustments.

10
Information Technology for Manufacturing Systems III From Development Form to See "Flexibility". With the deepening of network applications, the development form has evolved from simpleness to complexity. This is another important factor impelling "flexibility" development method to appear. In the early development process, the development form is very simple. Developers work in the same place, for example, in the same room, the distance is very close to each other. This development form is conducive to the exchange of information, and can improve development efficiency, but there are many problems. For example, if the member of team leaves this fixed location, it will affect the development work; if people in other locations want to participate for development work, it is very difficult. In order to communicate with each other, so as not to affect the development progress and development efficiency, the team members must be in the same location, there are not other development forms. Therefore, from the perspective of development form, considering "flexibility" development issues is not necessary. Later, the deepening of network applications has brought a new phenomenon. With network, people in different locations can easily communicate, just like sitting in same the room, this provides an important condition for "flexibility" development. People can not consider the impact of geographical location, with network, development form can become diversified. Therefore, the deepening of network application, leading to people can choose different development forms, this impels the "flexibility" development method to appear.

Some Technology supporting "Flexibility" Development Method
The following discuss technologies supporting "flexibility" development method. Iterative Development Technology. In the early days, software development use linear sequence.
Since changes of circumstances are few, unknown circumstances are also few. So following the simple linear development sequence, work developing software can be completed. Yet "flexibility" development will face the change of circumstances and many unknown circumstances in the development process. Therefore to complete development task is difficult to linear development sequence. Iterative development technology is applicable, for the "flexibility" development process. In the certain development stage, due to the situation are complicated and varied, the work can not simply one-time complete, so iterative development technology are needed. Fixed development process has be change to "flexibility" development process, through several iterations to achieve scheduled objectives. Iterative development technology can be applied to all phases of development process. Especially in the requirements analysis phase, facing complexity and variability of user requirements, people must use iterative development technology, after several surveys analysis, building and modifying models, real and detailed user requirements can be obtained. Software Reuse Technology.Software reuse technology is one of the important development technologies, it is widely used. Reuse is exactly repeated use. The software materials of reuse not only include the module's code, also include other software material. Through software reuse, not only can improve the efficiency and quality of development, but also can realize "flexibility" development.
In many stages of software development, it can be embodied that software reuse technology support "flexibility" development. For example, in detailed design stage, based on changed circumstances, we can use different design methods. Any design method can reuse the existing design scheme, the design scheme more people design more convenient.
In order to achieve reuse, reusable software component should be collected. For this purpose, people built a variety of software component libraries. In the software component library, a variety of software component are collected, this has established foundation for "flexibility" development. In "flexibility" development process, as the situation evolves, developers can choose neatly in the software component library. Obviously, if the contents of the software component library are richer, then ranges of the choice become relatively large. The support will be greater, and effect will be better to "flexibility" development.

Advanced Engineering Forum Vols. 6-7
Network Technology. Network closer to the distance between people, when communicating with each other, with the help of network, people of different geographical position as sit in the same room, this provided a strong support conditions for "flexibility" development.
With the help of network technology, in different geographical position, members of development team can exchange information that include language and graph picture. This changed the phenomenon that members of development team must be located in the same geographical position. Like this, the development form is not limited to geographical position. This can adjust development form according to the change of situation, using development forms of flexible and diversified.
In order to enhance the effect of support of network to the "flexibility" development, network technology should be further developed, and widely used. The network technology main include technology of phone, technology browsing text and graphic image, technology transmitting documents. Thus, in the software development process, people can exchange information more convenient, rapid, accurate and clear.

The Strategy to Structure "Flexibility" Development Method
To Structure "flexibility" development method, it is the key that process of analysis and design as well as realization has "flexibility". This makes developers neatly to complete the process of analysis and design as well as realization. Some strategy of the following can be adopted. Careful Mode. Goal of the careful mode of building strategy is to build careful software development method. In the careful mode of building strategy, to the use's method, the use's tools and implementary scheme, etc., they not only are described detailedly, the description but also should reflect "flexibility".
When to use the careful mode of building strategy, in order to reflect "flexibility", according to the available materials and experience, for every stage of the development process, people should imagine the changes that may occur. At the stage, what circumstances do people encounter during development? For each circumstance, people should determine strategy. Because there may be gaps to reality circumstances with imagine, so people should also prepare strategy for the situation being no consistent with all the imagines. Thus, when the actual application of the "flexibility" development method, according to the development sequence, in terms of the concreteness circumstances of each phase, in the strategy prepared, people can neatly choose the best strategy. Framework Mode.In order to give full play to the developer's initiative and creativity, framework mode of building strategy can be used. The goal of framework mode of building strategy is that the software development method has the frame structure, the contents within the framework do not detailed. That is to say, it is not described in detail that the various situations and strategy of every stage, letting developers freely to ascertain development scheme.
Using framework mode of building strategy, "flexibility" of software development method mainly embody in the process implementing the method. Due to the use's strategy do not give a detailed description for development process at every stage, to face the changes of situation in the development, so developers need to ascertain strategy self-reliance.
Clearly, using framework mode of building strategy, developers should have a relatively high quality. During development, developers respond to changing circumstances, their experience should be more rich, their ability should be more strong, so as to achieve "flexibility" development. Using framework mode of building strategy, to build a development method, its contents are not careful, so that no bound developers, just an opportunity be provided for developers to play their own initiative. Developers can play their creativity, and free ascertain development scheme, to achieve the greatest degree of "flexibility" development. Improve Mode. Contrasting above two building strategies, improve mode of building strategy is relatively simple. It is to improve on the basis of some existing development methods, by adding factors of "flexibility", existing methods becomes "flexibility" development method.

Information Technology for Manufacturing Systems III
Where does process of the software development add "flexibility" factors? Developer should base on the specific circumstances, after analysis, determining the content and location increased. Due to core idea of "flexibility" development is flexible replying the change to the process. Therefore "flexibility" factors should be added to the location that situation is more complex. For example, if the needs analysis is more complex, then "flexibility" factors should be added to location of the needs analysis. Several scheme of the needs analysis should be prepared. According to different circumstances, developer can select different scheme.

Future Development Tendency
"Flexibility" concept first emerged in the machinery manufacturing industry in 1970's. At that time in order to meet consumer's requirements of diversified and personalized, giving up the production model of large quantities and single species, adopting the production model of multi-species and small-lot production, "flexibility" manufacturing system [2] is proposed. After 1990, the "flexibility" concept began to appear in the software field, relevant study articles gradually increase [3,4], these articles focus on the "flexibility" of software [5,6], the "flexibility" of development method has not been studied. Inspired by above studies, combined with the current variation trend of the software development process, we proposed the concept of "flexibility" development method.
The purpose to propose the concept of "flexibility" development method is to adapt the current complex and fickle trends in software development process, and to meet requirements of the diverse and personalized to software development process. Facing variation trend of complexity and variability in development process, software development method should not be changeless.
People have done some work, in terms of adapting the change trends of development process, as well as in terms of meeting requirements of diversified and personalized. For example, we know that RUP method has the attribute of "can be tailor" [7], after tailoring, it is suitable for the specific situation. In fact, the attribute of "can be tailor" is manifestation of "flexibility". For example, we know that XP method is "emphasizes adaptability" [8]. It emphasizes adapting the change of circumstances. In fact, "emphasizes adaptability" is also manifestation of "flexibility". Facing complexity and variability of development process, by the "can be tailor" and "emphasizes adaptability", RUP and XP method achieve diversification and personalization. In essence, this is to achieve a "flexibility" development process.
Future development tendency should is having "flexibility" to all development methods. An important factor influencing future development tendency is the variation trend of the software development process, the methods must adapt to the future development process of complex and fickle. Another important factor influencing future development tendency is people's needs, needs of diversity and individual will increase in the future. Each method has its own application field, when the development method has "flexibility", then the development method can have different form of expression in different situation. This will meet the different needs, and enhance the ability of development method.

Conclusion
In software engineering theory, software development method has a very important position. Build a more suitable and more effective development method is an important problem. Over the years, although this problem has been studied, and new software development method constantly emerge, but they all lack "flexibility". Facing complexity and variability of development process, their ability is insufficient. In the above, we discussed "flexibility" development method. we hope that the study can propel sustainable development for study work of software engineering theory.