1.1 General Introduction
The software industry aims to develop high-quality software for its clients under various development constraints. Huge expenditure is involved in an undertaking software project with failure risk threatening potential expected benefits. The m-commerce applications are very crucial for the business of product seller, and hence, any mistake done at part of the software developer takes seller business at stake. M-commerce apps are mobile apps, the success of which depends on both functional and nonfunctional requirements (NFRs). These m-commerce apps must be developed using matured and dynamic software development methodologies. The requirements of such mobile m-commerce apps are highly sophisticated as compared to desktop or web applications. The research work will analyze the status of mobile software development from implementation of NFR for generic mobile apps. The results will be equally valid for m-commerce apps.
The ability of the software to satisfy its customer results in enhanced customer base, implying higher software sales and huge turnover. The reverse of this situation negates the justification of investment of huge development costs. The failure not only creates a monetary loss in the current project but may also impact the company reputation, thereby decreasing the customer base of new projects to be undertaken by the firm. Customer satisfaction is a prime business value for the firm and the company's future depends on it.
Satisfaction comes from the ability of the software to meet the expectation of its customers/users. These customers are mainly concerned with the functionality of the software, i.e. functional requirements of the software, and hence, nonfunctional ones are unseen initially.
However, if the same NFR remains unimplemented, functional requirement may become obsolete as they may be unable to deliver without nonfunctional areas or may be unusable till nonfunctional ones are implemented. Thus, the neglect of nonfunctional ones may lead to complete the rejection of the software amongst the stakeholders/customers, even though they never requested them.
In case of mobile software development, various challenges get mapped to various NFRs like GUI, interactions with a large number of other apps, location aware services, security hardware and software independence apart from other traditional challenges like usability, performance and reliability. Software developers must consider these different issues in the form of NFRs during the development of the mobile apps. These issues can never be predefined and in fact depend on the level of expertise of the software developer.
For example, a software developer must consider the issue of database consistency as mobile networks usually perform handoffs. In case of availability of a high-speed network, it is possible to increase the data transfer speed during transaction execution, thereby making the consistency issues as one of the important NFRs. The successful implementation of the mobile app depends on the ability of the software developer to implement not only functional but also NFRs by anticipating future events led by technological changes, environmental changes etc.
Numerous techniques are available to elicit software requirements and to prioritize these requirements. The available techniques focus mainly on functional requirements that are available in the literature, and very little work is available that handles NFRs separately or at least relative to functional requirements.
Keeping in view the importance of NFR in successful implementation of projects, especially mobile apps, the need is felt to undertake a survey of existing mobile apps developments from the viewpoint of NFR contributions.
Effort is ongoing in the direction to analyze the contribution of NFRs to success/failure rates of the product, analyze the status of NFRs, and its implementation and contributions to the cost and time of overall development. Efforts are made to analyze the variation with increase in the size of organization and complexity of the projects.
Further, there is a need to study the impact of missing NFRs on the business success rates of both the software developing firms and the client firms who employs the system for delivering their produced goods and services in economy. Thus, the impact analysis is performed employing the survey of many firms at two independent levels—developing firm level and client firm level. The former deals with the impact analysis of missing NFRs from the developed software on software firm business while later deals with the impact analysis of missing NFRs from the purchased software by the firm on its goods/services business. There is a need to undertake an empirical study to investigate that how much and in what direction there is an impact of missing NFRs and the business success.
NFRs must be selected for implementation together with functional requirements to enhance the success of software projects. Three approaches exist for performing the prioritization of NFRs using the suitable prioritization technique. There is a need to analyze the accuracy of individual approaches and the variation of accuracy with the complexity of the software project. The objective is to see if individual prioritization of NFRs is better or the prioritization with functional one. The new prioritization techniques for NFRs in accordance with the outcome of the experiment are kept as future work.
The complete research will include various empirical methods like literature survey, industrial project survey, academic project survey and case studies, wherever applicable. The case study will be undertaken in the form of analysis of historical documents and personal observation to verify, validate and/or add more to the analysis information of the industrial and academic project survey. The advantage is that the researchers will get the opportunity to see if the practice adopted by survey participants is industry specific or generally followed across many firms.
Further, the wrong or misleading information due to different terminologies in literature and industries will be minimized as a result of observations through the case studies. Case studies undertaken by the researchers given them the opportunity to verify the insight brought up by the survey participants with the things observed by the researchers. The collected data will be subjected for necessary analysis individually and against each other.
1.2 Terminology
1.2.1 Requirement Prioritization
The software projects are getting more complex day by day due to an increased number of users and ever-changing needs. Further, there is a reduction in time to market and enhanced need for high quality due to ever growing competition. Every requirement is bearing a cost and time to implement which makes the idea of implementing all requirements in “one go” completely bad idea. Under such circumstances, the software engineer adopts techniques called requirement prioritization to select the high priority requirements. This allows the organization to release multiple versions of the same software.
Requirement prioritization is an activity to perform the selection of requirements, the task that is challenging due to the involvement of many stakeholders with potentially conflicting view points, multiple requirements to be handled and large effort to be invested in this activity. The wrong requirement selection not only results in wasteful effort and potentially increased effort of the next release, but also possesses the risk of project failures. There are different techniques for undertaking the software prioritization that varies in terms of computational algorithms, complexities, measurement scale etc.
1.2.2 Nonfunctional Requirements
The NFRs are the requirements that defines that how the functional requirements will be implemented. In other words, NFRs place constraints on the implementation on functional requirements. Such requirements do not provide any functionality to end user but are required for efficient implementation of functional requirements or proper working of the software.
It had been widely accepted that customers do not want NFRs since they do not offer any functionality; however, customer may refuse to use the software due to missing NFRs. The reason is functionality will be effectively implemented only if few NFRs and constraints are also implemented by the developer. Such requirements are not elicited from users but are implemented by developer, and it is difficult to convince the user/customer about NFRs.
NFRs require special focus during requirement engineering activity because the ignoring few NFR may lead to complete failure of the mobile applications. This is because the user expectations from the experience from executing the app on the mobile phone are different compared to the desktop computing machines. The mobile devices impose server restrictions on the development of the mobile apps because of the restrictions imposed by their working environments including limited resolution, working conditions of the mobile components, bandwidth limitations, storage limitations and energy utilization issues. This imposes conditions on the development of the mobile apps in order to execute them with high performance in tightly constrained mobile infrastructure.
1.2.3 Empirical Studies
According to Wikipedia, the empirical research is defined as “a way of gaining knowledge by means of direct and indirect observation or experience”. In other words, empirical research involves the collection of primary data by the means of either direct observation and/or experience of the field under investigation and the analysis of the collected data to draw meaningful conclusions. Empirical research helps researchers to undergo through various types of studies like exploratory, descriptive, explanatory and experimental research. Different types of research are carried out with different objectives using different tools. For example, exploratory study is carried out to explore new field using surveys of literature etc., while descriptive one involves getting descriptions of the elements of interest to researchers using interviews, case studies, etc. Researcher can do empirical research by using different methods like case studies, surveys and experiments. The surveys are conducted when the samples are too many and lot of broad information is to be collected, and case studies are conducted to gain deeper insights about elements of interests and experiments could be conducted to investigate the impact of one variable over another which could be conducted in controlled and uncontrolled manner.