Software product line and Silver bulletAbstract In 1986 there was a pretty famous article about the accident in production software. "No Silver Bullet-Essence and Accident in Software Engineering" written by Frederick p. Brooks, Jr., This paper raises difficulties lead to failure in the development of software. But the article was written nearly 30 years ago and in that time there have been many new technologies being created. This report will help you to reach a new technology as software products line. I will analyze some of the issues in the article and compare it with software products line. Through that for we know the software product line is this the silver bullet?IntroductionIn his seminal paper "No Silver Bullet-Essence and Administering of Software Engineering" Fred Brooks Jr., he has launched a variety of difficulties inherent in the nature of the software. However, in that time we have seen the development of new techniques. Evolution of software product line. To know more details about the issue. I began research on the benefits of product line. Through the articles on the internet, the reviews for that product line to help improve many problems in the production of software as time, cost and complexity. After thirty years with the development of new technologies and typically Product line. Having solved a number of risks set forth in article Brooks.In this paper I will use the collective knowledge and some document to prove that the SPL is the optimal solution. I can't mention all of the issues in this article. So I will use a couple of the inherent properties of this irreducible essence of modern systems software to prove my point.In his book "Software Engineering 9th" Ian Sommerville. He defined the software product line as follows "a software product line is a set of applications with a common architecture and shared components, with each application specialized to reflect different requirements. The core system is designed to be configured and adapted to suit the needs of different system customers ".In the current time product line is quite popular in many different sectors: "Manufacturers have long employed analogous engineering techniques to create a product line of similar products using a common factory that assembles and configures parts designed to be reused across the product line. For example, automotive manufacturers can create unique variations of one car model using a single pool of carefully designed parts and a factory specifically designed to configure and assemble those parts. The characteristic that distinguishes software product lines from previous efforts is predictive versus opportunistic software reuse. Rather than put general software components into a library in the hope that opportunities for reuse will arise, software product lines only call for software artifacts to be created when reuse is predicted in one or more products in a well defined product line. " [1]ComplexityThere are a lot of problems in the development of a software. In the article of the Brooks has also mentions the complex as increasing the size of the software, much less understanding, all the possible states of the program, etc. There will be far more difficult to develop a large software when just starting the project. But it will be easier to create an average or low application. The creation of a medium or small products help you control everything within it and control of system errors perfectly. A typical example is the microsoft Windows operating system. They began laying the groundwork for the development of the operating system from DOS and then the process continuously updated to add features and fixing bugs for them in the next upgraded version. We can recognize the nature of the software product line through the example above. Creating a solid framework and develop more effective in many aspects. Developing applications by adapting a generic version of the application means that a high proportion of the application code is reused. Furthermore, the application experience is often transferable from one system to another. Consequently, when software engineers join a development team, their learning process is shortened. Testing is simplified because tests for large parts of the application may also be reused, thus reducing the overall application development timeConformityWhen creating a software it is only appropriate to a particular object that can not be all. Because of the cultural differences of religion, location or age etc.. . therefore, there are different requirements for software. To their product line with multiple objects, you need to create multiple different products. So do rising costs, lost time for the manufacturers. Product line is a perfect solution. Think about if your company receives a request to design two websites for their two hotel. It takes a lot of time for the development of each website individually. Meanwhile you can re-use modules built for website A to website B and you have a large savings in terms of time, money and effort.Object-oriented programming.In the book software engineering 9th by Ian Sommerville. He wrote that "A software product line is a set of applications with a common architecture and shared components, with each application specialized to reflect different requirements. The core system is designed to be configured and adapted to suit the needs of different system customers. This may involve the configuration of some components. implementing additional components, and modifying some of the components to reflect new requirements." With the idea that I also believe product line can remove large number of difficulties from the expression of the design. With the development and popularity of programming languages such as Java, .Net or PHP. These languages allows user to reuse the modules applied to their software. The use of modules have been developed and tested for quality. it helps developers find solutions for quality and shortened time to build the software. Thereby, can be seen adopting Software Product line has been proven to be highly effective in developing the software.Unified programming environmentsUnified programming environments was a programming environment built around a version of the any programming language. This tool enables programmers to reuse the modules. For example Netbean is a software development platform written in Java. NETBEAN allows applications to be developed from a set of modular software components called modules. The module is created by multiple developers, they can use other people's modules (The modules are sharing publicly or purchase) to integrate into their applications.Program verificationThe program verifies very important for application developers. It help finding and removing the errors from the source. but the development of program verification is extremely difficult and complex. An idea of the program verifies that I found in the article "Family-Based Verification of Software Product Lines deductive" that would solve the problems. "A recent idea is to apply verification to the product-line’s code base (instead of to all generated products) in order to omit redundant analyses pursuing a family-based strategy Family-based strategies have been proposed for the analysis and verification of software product lines using type checking and model checking . In principle, there are two family-based approaches: First, a new tool is built or an existing verification tool is adapted to incorporate both the code base and variability. Second, the whole software product line is encoded as a single metaproduct in the input language of an existing verification tool using variability encoding ; the metaproduct simulates the behavior of all individual products of the product line in question. We use the second approach as it does not involve to build new verification tools which need to be trusted and apply variability encoding to program verification by theorem proving".Incremental development-grow, not build, softwareToday, when the development and popularity of programming languages. the construction of applications already available is not wise. Instead of developing from scratch, we can buy it that help us save time, limiting errors and focus on development. As pointed by Frederick P. Books Jr. that “Incremental development — grow’, not build software ... That the system should first he made to run, even though it does nothing useful except call the proper set of dummy subprograms. Then, bit by bit it is fleshed out, with the subprograms in turn being developed into actions or calls to empty stubs in the level below.” Here are the specific evidence for that "YouTube is a video-sharing website and this service was created by three former PayPal, then acquired by Google. Through the development of Google, youtube become video-sharing website of the world and bring huge profits for Google."ConclusionI have done my best to show in this report that the software products line is this the silver bullet or not? Several examples have been analysed, although one or two of these were somewhat out of date. The report also suggested ways of overcoming this problem, although it is not clear. I would say that software products line can solve a lot of problems, but it is not perfect in the production of software. So it is not a "silver bullet" that could lay to rest the monsters of missed schedules.AcknowledgementsFirstly, I want to send my thanks to my teacher has provided knowledge and motivate me to complete this report. Secondly, I want to express the thanks of my friends, they've supported me on the idea of my course. I want to thank my parents for helping support me about personal economics. I am really grateful to them.References
đang được dịch, vui lòng đợi..
