Explosive impacts of computer and information technology on business and individuals have generated a need to design and develop new computer and software system to incorporate a rapid growing range of computer applications. Software engineers apply the software engineering principles and techniques to design, evaluate, test and implement software systems to enable computer to perform different applications. Software engineers use systematic and quantified approach to design, evaluate, implement software and provide maintenance for software. In other word, software engineering systems use sound engineering principles to design economical and reliable software for business and individual uses. Typically, software engineering principles are used for the development of software application, which include network distribution, and operating system.
Pimentel, et al. (2009) argue the growing integration of application development into web development has made software engineers to apply the principles of document engineering to assist in enhancing the software specifications. Document engineering is an aspect of computer science that focuses on the method to investigate document in any form and media. With reference to software engineering, document engineering is concerned with tools, principles and processes to create, manage, and maintain documents. Document engineering is a systematic application of technical and intellectual knowledge that assist a software developer to create tangible product. Document engineers also assist in creating a robust reusable document to design a software application at reasonable costs and at acceptable time. (Glushko, & McGrath, 2008).
In the contemporary business environment, much of the business transactions taking place through the web are through information exchange. The transactions take place through collaborations, which include customer, online catalogue and credit card authorization. Document engineering is needed to design, analyze, and implement the internet information exchange to enhance coherent information exchange. Document engineering is a pragmatic and coherent business approach to model documents that could deliver practical and effective solutions. For nearly three thousands years, business and individuals organized information in a self-contained package called document. With development of technology, there is a fundamental change in the method of encoding and exchange document. Thus, document engineering assists in delivering a pragmatic and coherent approach to model document to provide practical and effective solutions. (Pimentel, et al. 2009). With reference to software engineering solution, document engineering is compatible to design the system and usability engineering that assist in developing application that is applicable for web services and document exchanges.
On the other hand, requirement engineering covers all activities that involve documenting, discovering, and maintaining a set of requirements for computer systems. Typically, requirement engineering shows that the systematic and repeatable technique need to be consistence, complete and relevant so that computer systems could deliver the pre-determine application goals. The major problem in software engineering applications is the requirements specifications and effective management of customer requirements. The system may be delivered late and costly if a software developer does not follow the requirements. Moreover, the system may be unreliable if the requirements are wrong.
Despite the identification of the importance of requirement engineering for the application of software development, software engineers are facing challenging in meeting the system requirements because business operations are rapidly changing and the requirements for system support are also changing. Sometimes, different stakeholders may present conflicting requirements. (Sommerville, 2008).
This section reviews the literatures that focus on the challenges facing software applications. Sommerville, (2008) argues that software engineers often face challenges to develop a large-scale software application. For example, the development of large-scale application such as ERP (Enterprising Resources Planning) is very complex to configure. And the user-configuration is practically difficult to implement. The author identifies some of the crisis that has been manifested within the software application in the 80s and 90s:
Projects running over the target budget,
Projects running over the time-frame,
Software developed was of low quality.
Software developed did not meet user needs.
Code is difficult to change and projects were unmanageable.
In the light of the problems, there has been a radical shift in the software development. Rather than developing software from the scratch using a conventional programming language such as Java, C++ and C. languages, developers have devised a strategy to develop commercial software using reuse strategy. The reuse is the configuration and adaptation of existing software system to meet specific organizational requirements. However, the resources limitation may hinder the application of large-scale project. More importantly, the security problem is other challenges facing software engineering application. Sometimes, sensitive data are sometimes hidden in the local machines, which may be exploited by unauthorized users.
On the other hand, Nojoumian (2007) identifies challenges that are common to the application of document engineering. The author argues that published electronic document is rich in knowledge, however, the complexity surrounding the structure of the document make users to face challenges in making maximum use of the document. While document engineering may assist in the knowledge extraction and logical structure of data conversion, however, there have been challenges with conversion, which include messy output when converting from DOC to RTF. Moreover, the extraction of HTML format from DOC or RTF tends to produce unneeded properties. Document conversion from DOC to text format deliver messy output because a user may face challenges to find tables, heading and chapters.
Pawlik, et al. (2012) presents a research on the role of documentation in software engineering among users of scientific software. The authors argue that documentation specification and requirement in scientific software has become challenging because the requirements are constantly emerging during the project lifecycle. Typically, scientists often found the document specification difficult to implement. Moreover, there is a scarcity of technical documentation for long-term and large scale project. For example, there is a little or no documentation for a project on nuclear facility. Moreover, there was no documented modification to the source code.
One of the factors leading to the unavailability of documentation is the limited time. The second challenges are the constant changing in the requirements for the document design. Generally, scientists do not produce documentation recommended by the software engineering principles, and design and the architectural documentation do not follow specific standards. Moreover, documentation related to project management and planning does not generally follow a specific standard. More importantly, specialized tools supporting maintenance and documentation production are generally rare.
Clements, et al. (2009) in their own case identify software architecture as the subsidiaries of software engineering that denotes set of structures needed to design a software system, which include software element, and relations between them. Typically, design and creation of software architecture is not enough, however, documentation of software is very critical for software architecture to apply software correctly. Documentation is the creating of the artifact that consists of electronic files, paper, snapshot of a whiteboard and Web pages. Delivering software architectural information to stakeholders often solves the configuration problems.
Thus, documentation of software architecture assists the stakeholders to use software properly. Typically, proper documentation speaks for the architect. Despite the importance of documentation in software architecture, the documentation of software architecture is afterthought. For example, a software architect often produces documentation because a contract requires it or a customer call for it. None of the reason is standard enough to produce high quality documentation.
"Good software documentation can be difficult, costly, and tiresome to produce unless the appropriate tools and methods are used. A software system is usually documented in two places -- internally in the source code and externally in user documents. In addition, software development documentation also includes requirements, design specifications, data schemes, and test plans. The consistency between the source code, the user documents, and the development documentation is difficult to maintain as the software evolves. As a result, developers often postpone the documentation from the right moment to the last moment." (Rettich, 2011, P 2-3 ) .
Forward, (2002) also contributes to the argument by pointing out that software documentation is an important aspect of software engineering, and documentation has become popular sub-domain in the software engineering application. However, current perception of documentation with reference of document engineering is outdated, incomplete and irrelevant. Generally, the role of documentation in a software engineering domain is to communicate information to audience as well as instilling knowledge about the system; however, there is still a little understanding about the importance of documentation for current and future development. Moreover, there is little knowledge on the importance of documentation within the software engineering community. Many software professionals publicly profess the importance of documentation without applying the concept of document engineering to produce high quality documentation.
Generally, challenges in documentation often emerge from the little training on documentation that software engineers receive in schools. Since documentation is basically useful for future project, many software engineers views documentation as waste of time and costs. Parna, (2008) argues that many software engineers do not view software documentation within computer science topics since it does not contain mathematics, algorithm and models; they show no interest in it.
Given the challenges inherent in the application of software documentation, wiki is gaining attention to address the problem of…