What is software Reuse? Software reuse is the process of implementing or updating software systems using existing software assets. Although your first gut reaction may lead you to believe that a "software asset" is simply another term for source code, this is not the case. Software assets, or components, include all software products, from requirements and proposals, to specifications and designs, to user manuals and test suites. Anything that is produced from a software development effort can potentially be reused.
A good software reuse process facilitates the increase of productivity, quality, and reliability, and the decrease of costs and implementation time. An initial investment is required to start a software reuse process, but that investment pays for itself in a few reuses. In short, the development of a reuse process and repository produces a base of knowledge that improves in quality after every reuse, minimizing the amount of development work required for future projects, and ultimately reducing the risk of new projects that are based on repository knowledge.
There are two type of the reuse software. 1.) Horizontal reuse 2.) Vertical reuse.
Horizontal reuse refers to software components used across a wide variety of applications. In terms of code assets, this includes the typically envisioned library of components, such as a linked list class, string manipulation routines, or graphical user interface (GUI) functions. Horizontal reuse can also refer to the use of a commercial off-the-shelf (COTS) or third-party application within a larger system, such as an e-mail package or a word processing program. A variety of software libraries and repositories containing this type of code and documentation exist today at various locations on the Internet.
Vertical reuse
Vertical reuse, significantly untapped by the software community at large, but potentially very useful, has far reaching implications for current and future software development efforts. The basic idea is the reuse of system functional areas, or domains that can be used by a family of systems with similar functionality. The study and application of this idea has spawned another engineering discipline, called domain engineering. Domain engineering is "a comprehensive, iterative, life-cycle process that an organization uses to pursue strategic business objectives. It increases the productivity of application engineering projects through the standardization of a product family and an associated production process. Which brings us to application engineering, the domain engineering counterpart: "Application engineering is the means by which a project creates a product to meet a customer's requirements. The form and structure of the application engineering activity are crafted by domain engineering so that each project working in a business area can leverage common knowledge and assets to deliver a high-quality product, tailored to the needs of its customer, with reduced cost and risk. Domain engineering focuses on the creation and maintenance of reuse repositories of functional areas, while application engineering makes use of those repositories to implement new products.
Conclusion
As the saying goes, "no pain, no gain," and the reuse of software is no exception. The product line approach to software reuse requires substantial upfront investment with substantial, but not immediate, benefits. Much commitment, planning, and effort are required to begin a reuse program. Reuse processes and procedures must be incorporated into the existing software development process. Repositories of software assets must be created and maintained. Reusable assets must be designed for reusability. People must be trained in the skills of software reuse. Despite the initial overhead, there are high benefits to software reuse, if appropriate processes are invoked and the requisite planning takes place. Product quality and reliability can increase. Project development time can decrease, along with associated project costs. Project scheduling can become another standard calculation instead of a guesstimate. All these benefits, in the long term, can dramatically increase productivity in an organization, and decrease the overall risk of project development by supplying a solid foundation from which all subsequent product family members are derived.
Software plagiarism?
In the most serious cases, a significant fraction of the entire work was written by someone else: the plagiarist removes the true author names and substitutes the plagiarist's name, perhaps does some re-formatting of the text, then submits the work for credit or as part of the requirements for a degree (e.g., thesis or dissertation), or even as a professional/personal concern, and other hand software plagiarism is a use somebody else idea and concept and make it own that is plagiarism.
Another important point is that as you progress in your education the standards become higher. As a College student you are expected to have your own ideas. To read information and explain it in your words. If you complete an assignment by copying material, you are not showing that you understand something. Only that you can repeat what the textbook says. This does not show that you understand.
Definition of software plagiarism?
Without crediting the source to commit literary theft present as new and original an idea or product derived from an existing source
First, it is unacceptable to copy something out from software, newspaper, journal or any other printed source and make it product. It does not matter if it is only a phrase. If it is not yours, either do not use it or place it in quotes and reference it. There are different methods for doing this. The important thing is that the reader can tell what is yours, and what someone else’s is.
For short quotes, use quotation marks in the sentence. An example is "CFC's: These substances are also of concern in connection with the destruction of stratospheric ozone
Another reason to use references is to show where you get information from. When you state a fact, unless it is "general knowledge," you should say where it comes from. Otherwise, a careful reader will have no way to verify your statement. It may be subjective to decide what is "general knowledge" but keep in mind who is your audience. As an example what is your reaction to the statement
The above examples may seem obvious. If you use something word for word it MUST be acknowledged. Things start to get a bit gray when you paraphrase. There is one simple solution to this dilemma. DO NOT PARAPHRASE! Only use someone else's writing when it serves a purpose. Only use someone else's writing when you want to quote precisely what they wrote. If this is not your goal, USE YOUR OWN WORDS.
This avoids any ambiguity about who wrote it. After all, you do not want someone to accuse you of plagiarism.
You need to learn how to create software in your own style. You may be influenced by product that you find clear and easy to understand.
Understanding and learning is more than just replaying something you have heard. Writing software is a valuable exercise that tests your ability to explain a topic. I often think I understand something, until I try to write it out. This is an important part of learning.
The Law of Plagiarism:
College and university rules for student conduct sometimes say that plagiarism is an academic offense, not a legal offense. That statement is not correct.
Colleges, universities and professional entities certainly have the authority to punish plagiarists in various ways, including expulsion from the college or revoking a degree earned in part by plagiarism. But plagiarism is also a legal issue.