This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
The use of software has invaded our daily lives as it enable us to accomplish many tasks especially those which are associated in doing various business processes and in dealing with different business systems. It enables the use of knowledge on both computing and computers to be able to help solve various problems which confront everyday situations. The often most encountered problems encountered in the field of software engineering deals with computers and computing although its underlying causes are not actually on such dimensions, and oftentimes go beyond such. To be able to distinguish a good software engineering program, the following criteria must be accordingly observed: there is quality in what we can recognize but we cannot define; there is fitness of purpose; there is an existence of conformance relative to specifications; it is tied to inherent product characteristics; and it can also be assumed to be dependent on the amount at which the customer is willing to pay (Pfleeger & Atlee, 2006).
With the complexities and the complications confronting the businesses nowadays, the requirements for system engineering has been seen to offer a solution. The requirements are the ones which form the basis for planning the development of a system and accepting it on a completion. They can form a basis for project planning, risk management, acceptance testing, trade-off, and change control (Hull et al, 2005). Requirements are meant to specify the specific sets of features which are essential to the software or program. They can either be functional or non-functional. Functional requirements can be defined as the specification of a function that the system must support while non-functional requirements refer to the constraints associated on the operation of the system that is not directly related to a function of the system (Bruegge & Duttoit, 2010).
In simpler terms, non-functional requirements take into consideration not what the software will do but how the software will do it. It is geared towards a much wider scope as it deals more with the requirements for process rather than just the tools which are necessary for functionality. The researcher agrees to the fact that non-functional requirements are indeed important because they are able to address various issues which are important in the achievement of quality. They are very vital for the success of the system and if they are not properly addressed, the result can be damaged and they can be inconsistent and poor quality, users and customers would end up being dissatisfied, and it can also affect time and cost which are associated with running the system.
One of the most recognized importance of non-functional requirements in software engineering is its capacity to define system properties and constraints. Non-functional requirements can be classified as product requirements, organizational requirements, and external requirements. Product requirements refer to specifications which deal with how a particular product which is delivered should behave in a particular way such as those related to execution speed and reliability. Furthermore, organizational requirements refer to the consequences of the policies and procedures of the organization such as the variety of process standards which are sued as the requirements undergo implementation. Lastly, external requirements are those which arise because of the various factors which are external to the development process and system. The main reason on why non-functional requirements arise because of the needs from the users, budget constraints, and existing policies of the organizations, there is a need for interoperability with other hardware or software systems, and because of the presence of external factors such as standards for safety (Puntambekar, n.d.).
According to Chung et al (n.d.), software engineering illustrates both pragmatic and systematic alternatives in which we are provided with the ability to to establish software systems of the highest standards and quality with regards to its usage and functionality. It calls for the need of software engineered systems to be modifiable, accurate, and secured which are some of the indications of a high performing software system. However, they are very subjective making them a hard subject for the purpose of evaluation. The system typically interacts with each other making their functions affect the general system and therefore it also affects the entire system.
Non-functional requirements are also being characterized for being hard to deal with as compared with functional requirements primarily because their impact is not generally localized to only a specific part of the system. Instead, it involves the entire system. The various changes with functional requirements in software will also inevitably affect the non-functional requirements. An effective software architecture evaluation is often the tool which is used to be able to deal with the numerous impacts of non-functional requirements (Aurum & Wohlin, 2005).
Data mining can be considered as one of the important aspect of software system and of software engineering. Data mining involves solving data problems which already exist in the software particularly referring to the process of discovering patterns in the data. The process should be either automatic or semi-automatic and it should be present in substantial quantities to be able to reap the maximum benefits out of these existing data (Witten & Frank, 2005). It can be aptly defined as “extracting or mining knowledge from large amounts of data” (Han & Kamber,2006). It can be actually treated as the process of mining knowledge from existing data and not the other way around. The process of data mining could include the following procedures: data cleaning, data integration, data selection, data transformation, data mining, pattern evaluation, and knowledge presentation.
Data mining activities are some of the practices executed by organizations, especially among software engineers, to be able to improve software quality and productivity. Data mining in the field of software engineering ahs recently emerged because it ahs been recognized among industries that such is needed in order to increase the abundance of data and they are also helpful in solving different types of real-world problems. Data mining algorithms are by being increasingly used in different software engineering tasks to be able to improve the productivity of the system or the software. These algorithms can be able to help engineers to what code locations must be changed when another code location is changed. Data mining in the field of software engineering can be done in the series of the following procedures: collection or investigation of software engineering data; determining software engineering tasks; pre-processing of data; adapting or developing algorithm which will be executed for mining; and post processing or application of mining results (Xie 1t al, 2009).
The non-functional requirements in data mining could come from the operating environment, the users, and the competitive products. In the operating environment, data can be affected by the system which is used in supporting the process. It poses problem on how the software will work towards establishing dynamic data architecture. Furthermore, users are also behind the non-functional requirements for data mining in software engineering primarily because they control a big fraction of the entire program and they are the ones who completely understand the attributes of the system. Lastly, the existence of competitive alternatives affects the non-functional requirements because of their features which generally affect the quality of the system (Malan & Bredemeyer, n.d.)
In order to properly carry out the purpose of the research, that is to provide an insight on the various non-functional requirements which exist with regards to data mining, the study will attempt to answer various research questions which will form foundation of the research and which will form the backbone of the study. The research questions which the researcher will attempt to shed light to will include:
- What is the nature of non-functional requirements in software engineering and how they are different with functional requirements with regards to the extent of use and practice in the general industry?
- What are the examples of non-functional requirements in data mining?
- How are these non-functional requirements in data mining addressed by the software engineers of today? Are they addressed effectively?
- What does the future of requirements analysis in the field of software engineering hold for the non-functional requirements in software engineering?
To be able to successfully carry out the purpose of this research, the researcher will employ an exploratory research design wherein the primary objective of the study will be the provision of insights into and comprehension of the topic at hand. The research will be qualitative in nature, which will take into account significant data and previous researches which are related to the topic rather than dealing with quantitative techniques of research.
In carrying out a qualitative research, the researcher will make use of widely available secondary data and literature from credible sources such as books, scholastic articles, academic journals, credible websites, and other reputable sources which will provide the researcher with additional information regarding the non-functional requirements of data mining in the field of software engineering. Because of the very nature of the topic, first hand information will be quite hard to obtain that is why second hand information will be preferred for this study. Widely available references will provide significant researches which have been previously done and will be geared towards shedding light to the topic. It must be however understood that although the topic is limited to data mining in software engineering, where the researcher finds its niche against other works, resources and references regarding software engineering in general will also be sued in order to provide a general perspective of the topic at hand.
To successfully finish the paper and generate significant findings, there will be a pre-determined time-frame which will include all the activities which will be related to the completion of this research. In the first weeks of conducting the study, the researcher will focus into redefining or reshaping the fundamentals of the research given that some modifications can be eyed. However, since the topic seems to be good enough as an area of study in the field of software engineering, the succeeding weeks of the research will be focused towards extensive research which shall form the big part of the entire paper. Since the researcher decided to make use of secondary sources widely available, much of the time will be spent browsing through books and other reputable sources to gain more idea regarding the topic. Once the information needed has already been enough and sustainable to support the researcher's claim and to give answers to the research questions earlier identified, writing the general research based on a previously outlined structure will commence which will be followed with subsequent proof reading and revisions which will ensure that the work is fully furnished before finally submitting the work and the final presentation of the research.
Aurum, Aybuke, Wohlin, Claes, (2005). Engineering and Managing Software Requirements. Sweden: Springer
Bruegge, Bernd., Duttoit, Allen (2010). Object-oriented Software Engineering. 3rd ed. USA: Pearson Education Inc.
Chung, L., Nixon, B., Yu, E., Mylopoulos, J. (n.d.). Non-functional Requirements in Software Engineering.
Han, Jiawei., Kamber, Michelin (2006). Data Mining Concepts and Techniques. Elsevier: USA
Hull, Elizabeth., Jackson, Ken., Dick, Jeremy, (2005). Requirements Engineering. 2nd ed. United Kingdom: Springer
Malan, Ruth, Bredemeyer, Dana, (n.d.). Defining Non-functional Requirements. Bredemeyer Consulting
Pfleeger, Shari Lawrence., Atlee, Joanne (2006). Software Engineering: Theory and Practuce. 3rd ed. USA: Pearson Prentice Hall
Puntambekar, A. A. (n.d.). Software Engineering. Technical Publications Pune
Witten, Ian., Frank, Eibe (2005). Data Mining: Practical Machine Learning Tools and Techniques. USA: Elsevier
Xie, Tao., Thummalapenta, Suresh., Lo, David., Liu, Chao (2009). Data Mining for Software Engineering