Guiding Principles for Developing Adaptive Software Products

distributed under the Creative Commons Attribution License unported 3.0, which permits unrestricted use, distribution, and reproduction in any medium, provided that original work is properly cited. Abstract This paper presents an analysis of problems that are faced by software development practitioners. While communication, team management, coding and software documentation are some of the persistent problems, the first and major troubles for software practitioners is to select appropriate software development approach. This approach should allow developers to develop adaptive software products. The role of organizational culture, context, practice and concepts in developing adaptive software products is also discussed. This qualitative research study interviewed seven software development practitioners in South Africa, focusing on software developmental methods that allow the capturing of softer, human elements inherent in organizations and the accompanying problems that inhibit their inclusion in the resultant software products. The research used Grounded Theory Method, to construct a framework of requirements that must be considered when choosing a software development approach that allows the development of adaptive software products. This framework highlights the importance of employing a software development approach that is grounded in the relativistic paradigm, adopting a behavioral systems approach and adopting methods whose communication techniques and tools can capture the humanist elements that are inherent in organizational systems.


Introduction
A software development process is required to come up with a piece of software.This software development process can be viewed as a framework or structure that is used during the development of a software product.The field of software development is characterized by two major groups of stakeholders: the software developers and the method engineers (Gonzalez-Perez and Henderson-Sellers, 2006).Software developers may be in any one of the following categories: system analysts, programmers, business analysts or system architects.On the other hand, method engineers define and prescribe a methodology that is used by developers in their quest to construct software products.These two terms, that is, software developers and method engineers, refer to the roles played by either individuals or organizations involved in the software development process.
However. the software development process is faced with a myriad of requirements that, over the years, have been found to be very difficult to satisfy.
Examples of such requirements are the Communications of the IBIMA 2 ability to capture organizational culture, context, practice, the concepts used in an organization and the ability to develop adaptive software products.More overarching is the failure to capture the human element inherent in organizational systems into the software product.In addition, in the development of software products, organizational knowledge is a key factor.This knowledge is found in the organizational structures of the system to be developed.Since information systems must capture and share this knowledge, the tacit nature of the knowledge makes it difficult for system developers to totally understand the task of software product development.
The rest of the paper is as follows: The research method used in this study will be discussed, Followed by a discussion on software development issues as reflected in the literature on software development.Effective communication is highlighted as a major driver for successful software development.As such, communication issues that are faced by software developers and which method engineers should address when formulating software development approaches are addressed.Using data from the empirical study, practitioners' viewpoints on issues that should be considered during the development of software products will be highlighted.These viewpoints lead to some propositions that need to be addressed using the guiding principles for developing adaptive software products as proposed herein.The research study employed Grounded Theory Method (GTM) and the reporting of the study will follow the sequence of processes that were undertaken using this method.

Research method and design
"adequacy of a theory … can not be divorced from the process by which it is generated".Barney G. Glaser and Anselm L. Strauss, 1967.
Every research process, whether deductive or inductive type has to use some theory.As Glaser and Strauss (1967) put it, if theory generation is the goal of research, the processes undertaken in such an endeavor should be chosen, planned, executed carefully and documented comprehensively.These processes will contribute immensely to the acceptance and final use of the theory in practice.
When researching phenomena that do not fall into the functionalist and positivistic paradigms, researchers find it compelling to spend some time in choosing the most appropriate research methods.Most importantly, if the research is qualitative and interpretive in nature, greater emphasis should be placed on the research design process.This is an attempt to ensure that two factors, that is, quality and rigor, are satisfied.
More often, the philosophical nature of a research problem dictates the research approach and methodology that will be followed.To borrow Glaser (1992)'s dictum, a methodology can be described as "a theory of methods".A single research project may use one or several methods.For any particular research project, it is therefore of paramount importance to order and describe the research methods in a coherent way.
In an interpretive research like this one, the researcher required to constantly modify the data-gathering process as the study progresses (Trochim, n.d.).This is in response to the changing environment and the understanding of the researcher as the study progresses.In fact, the researcher tends to gain greater understanding of the project being researched as the research progresses.This allows the researcher to direct and redirect the questions to get data that answers the research questions.
By definition, a research method is a strategy of inquiry that moves from the underlying philosophical assumptions to research design and data collection.It may be seen as a "general way of thinking about conducting qualitative research" Trochim (n.d.).The choice of research method influences the way in which the researcher collects data, analyses it and the subsequent presentation of the results.As Myers (1997) contends, specific research methods also imply different skills, assumptions and research practices.

Research method used in this study
Grounded Theory Method (GTM) was used as the research method in this study.There are many different ways of conducting research using Grounded Theory Method.Some of these are very prescriptive (Strauss and Corbin, 1990) but others leave room for the researcher to direct his or her research in the way that suits the research environment.The proponents of Grounded Theory Method, however, urge researchers to use the method flexibly (Glaser and Strauss, 1967;Charmaz, 2006).Charmaz ( 2006) also refuses to accept any prescriptive way of using this GTM.Instead she regards the method as a guiding framework, that is, as "a set of principles and practices" that any researcher can fine-tune to suit the context of research under study (Charmaz, 2006).

Grounded theory method (GTM)
Grounded Theory Method is a research method that seeks to develop theory that is grounded in data.According to Olivier (2004), Grounded Theory Method starts by observing the field of interest and theory is allowed to emerge from (is grounded) what is observed in the data.The data are systematically gathered and analyzed.
In addition, Trochim (n.d.) regards Grounded Theory Method as a generative method in that its purpose is to generate or produce theory.Cornford and Smithson (1996) regard GTM as a method that can be used to develop (induce) the final hypotheses, propositions, themes and classifications from the data that are gathered and analyzed as the study progresses.
The main idea of GTM is supported by Hacking (2002), who, in his discussion of the "Creation of Phenomena", asked the question, "What comes first, theory or experiment?"He contended that Hall, the discoverer of the Hall effect in magnetism, unequivocally supported the notion that experimentation should be the beginning of a theory.For anything to exist, it must be created.This inductive stance to theory development is dichotomous to the view that is followed when using deductive research approaches.
In terms of research design, Glaser and Strauss (1967) urge grounded method theorists not to start with a problem statement or research questions, but just an interest in the field will suffice.Adherence to this requirement influences the way a grounded researcher plans and executes the research study as will be described below.Contrary to this dictum, Strauss and Corbin (1990) advise researchers to have a preliminary hypothesis that should be used to guide the scope of the study.
The research design Trochim (n.d.) regards research design as a process or phase that fastens the project components together.Each research activity is positioned and described according to its contribution to the overall goal of the research.It is a process of moving from methodological abstractions to descriptions of the practical steps that are proposed and later followed during execution of the research study.Since our chosen research method is the Grounded Theory Method, the research design should meet the requirements for its use in this research.
The research started with generic research questions that were proposed only as to guide and direct the scope of Communications of the IBIMA 4 the research (Mavetera and Kroeze, 2009).These research questions followed Roode (1993)'s process-based research framework that looks at the what, why, how and how should, of software development practices.
The data for this research study were gathered through the use of unstructured open interviews.The respondents were software development practitioners in South Africa.The interviews were recorded on tape and later transcribed with the help of professional transcription services.After that, the interview data was loaded as primary documents for coding into Atlas.Ti, a qualitative data analysis tool.The first three interviews were used for open coding, the remainder being used for selective coding and for reaching theoretical saturation.It is important to note that the process of literature study was done continuously and in parallel with the data-gathering and dataanalysis processes.This literature study increased the theoretical sensitivity of the researcher.The following section discusses some software development issues that are documented in software development literature books as affecting the development of adaptive software products.

Software development issues
The complex nature of organizational systems Organizational systems are examples of dynamic and complex systems.The complexity of these systems can be measured using the concept of requisite variety as proposed by Rosenkranz and Holten (2007).Requisite variety views organizational systems as possessing several possible states, in terms of "patterns of behavior" or "number of manifestations".
During software development, it is the developers' intention to capture and maintain these patterns of behavior (manifestations) in the resultant software product.However, during the software development process, the tasks of modeling, that is, of developing the analysis, design and implementation models, tend to reduce the complexity of these organizational systems by reducing their requisite variety.This in turn reduces the possible behavioral states of the subsequent software products and information systems under development.This process is regarded as the reductionist principle.Any reduction in the organizations possible behavioral states and, hence, in their requisite variety, reduces in turn the life responsiveness of the modeled and developed system.
In order to maintain the requisite variety of organizational systems and to transfer them to the developed systems, either the modeled system must have its requisite variety reconstituted to the organizational systems' originally unmodelled state or the original system should not be modeled using the reductionist principle.Another option would be to allow the implementing tools used in the system and the users of the system to have as much of the requisite variety as the original unmodelled system possessed (Rosenkranz and Holten, 2007).Practically, it is impossible to have tools and users that have the same behavioral modes as the original system.In the end, the only practical way to do this is to find methods and tools that maintain the requisite variety during the process of system development.The requisite variety of organizational systems is observed in the culture, context and the concepts used in the organization.

Culture and concepts in organizations
Another aspect that contributes to the requisite variety of organizational systems is culture.Organizational culture comprises people's attitudes and experiences, as well as the beliefs and values of an organization.It also embodies the organization's interactional behavior with stakeholders.All organizations are run within certain cultural boundaries.Organizational culture is therefore reflected in the concepts that are used in these organizations.
The success of a development team to build a language community with all the stakeholders in the development process and, hence, communicating concepts in the domain effectively, is regarded as one of the success metrics of software development.
Dahlbom and Mathiassen (1993) agree with Buitelaar et al. (2005) that concepts are not packages of information defined by structured complexes of more elementary concepts.They argue that concepts are defined by people's practices (Buitelaar et al, 2005).These concepts should satisfy three basic things, that is, they should have an intensional aspect, a set of the concept's instances (its extension) and a set of linguistic realizations.Linguistic realizations refer to the multilingual terms that are applied to the concept (Buitelaar et al, 2005).The use of concepts in a practice defines the organizational culture.Together they can be used to define the organizational context.

Context in organizational systems
As discussed above, concepts apply to a specific practice within a certain context.Roque et al (2003) emphasize the need for context to be understood if one is to successfully develop a software artifact.The software artifact should be fashioned so that it fits the context in which it is to be used.It must have situatedness.
Organizational communication requires a language to pass information between actors.To enable the actors to understand each other, this language should be "embedded within the context" of the organization (Malinowski, 1923).Messages that are communicated in an organizational system are also situated in that particular context.As such, information systems should be tuned in such a way that they capture this organizational context.Capturing organizational context subsequently captures meaning, a very important facet that actors need if they are to communicate.Context building amongst organizational actors is a process of weaving different situational understandings from different actors, of establishing threads of common understandings and the inter-subjective knowledge within the network 9Goldkuhl, 2002; Dilley, 1999).It must be noted that context is not a static thing.
It is not self evident in a situation but requires a constructive machinery to mould the varying situational meanings into a common understanding.Context therefore is an object of study that requires some analysis to have an agreed and shared understanding.It is the environment surrounding the meaning of a situation.At the same time, it is within the shared meaning of some situatedness that the said context resides.The next section is a discussion on other issues that affect the development of adaptive software products.

The development problem
Other issues which need consideration during software development range from focusing on the design of reusable components to focusing on the innovative elements of software product design.These innovative elements of a software product represent the domainrelated additions that mark the difference between different types of domain packages.
With regard to domain, De Oliveira et al ( 2006) regard the lack of domain knowledge by software developers as the biggest problem in the development process.
While the process of requirements elicitation and knowledge gathering are very laborious, knowledge sharing and reuse is also very limited.In these processes, for different software development projects, though in the same domain, one needs to explain the same concepts repetitively to different software development personnel.In Communications of the IBIMA 6 addition, developers have to study and learn the domain while simultaneously linking them to the tasks to which they relate.These tasks pertain to the problem domain that needs to be addressed by the subsequent software product (De Oliveira et al., 2006).Another issue that needs to be addressed in software development is the issue of communication.

Communication in software development
In all development processes, the analysis phase is tasked with creating a true reflection of the organizational system environment.As such, the analysis phase should result in the development of an analysis model that is both descriptive and in the form of a computationally independent model (CIM) (Aβmann et al. (2006).The CIM possesses as little platform information as possible, at the same time ensuring that the customer's viewpoint is maintained.
The computationally independent viewpoint captures the system environment and the system requirements.
However, many techniques have been used in traditional analysis modeling that ensures that this analysis model is "expressed in terms of the problem domain".Figure 1  As discussed earlier, the analysis model is derived from the organizational system's environment.This environment is characterized by the domain and business information, both of which are context related.In addition, the system requirements, which derive their fit from the organizational context, are added.The analysis model is intended to capture the triplet of domain model, business model and requirements model.As is common, the requirements model manifests itself as the system specification.The design model is the architectural model of the system and, at this stage, it should capture the system from the designers' viewpoint while at the same time maintaining its platform independency.
Lastly, the implementation model derived from the design model is gradually populated with platform specific details as discussed by Aβmann et al. (2006).
It must be noted that the domain model is a product of the process of domain engineering.As Bjorner (2008) submits, understanding and capturing human behavior are the prime purposes of this process.Organizational human behavior has to be described formally or informally and communicated throughout all the software developmental stages.This same domain model captures concepts used in the domain field as well as the relationships between these concepts.The business model is tasked with capturing the company's rules of business, while the requirements model, which models the system specification, is tasked with capturing the functional and nonfunctional system requirements (Aβmann et al. 2006).Most of the time, system requirements refer to program code, hence implying that the specifications are platform dependent.For specifications to be platform independent, some informal specification methods should be used.Bjorner (2008) argues that this may require the specification to be drawn up in a natural language of some sort.This has not been the case with all specifications especially when developers get to the later stages of development.This Bjorner (2008) decries and submits that 'there are very many aspects of requirements that we today, 2008, do not know how to capture formally…".As a result, many design specifications do not represent the true world view of a system.
As is always evident in software development, developers' insistency on formalization results in the development of mechanistic systems.In these mechanistic development methods, from the analysis model through to the implementation model, platform-specific information is allowed to creep into the system as a result of this formalization.The problem faced by software developers is that of translating all the characteristics of the analysis model (CIM) to the implementation model through the design model (PIM).This is normally because, at the end of the analysis stage, the system requirements are translated to a specification model (SM).It must be noted that this SM is an instantiation of parts of the functions of the system.This is a persistent problem in software development and ways of addressing it are proving to be elusive.
As stipulated by Aβmann et al. (2006) 'a specification model is a prescriptive model, representing a set of artifacts by a set of concepts, their interrelations, and constraints under the closed world assumption'.The failure of the SM to transfer descriptive information captured by the analysis model to subsequent stages poses a serious problem in software development.The problems of capturing these issues during software development and of maintaining the organizational context in the software product were included in the data-gathering interview questions.The data gathering and its subsequent analysis revealed a plethora of issues that are discussed below as 'practitioner's perspectives' to software development and methods.

Practitioners' perspectives
Figure 2 depicts four major areas that were identified by respondents as warranting attention.These therefore need to be addressed in any software development process.As shown in Figure 2, the respondents identified the world view, the development paradigm, the research approach and the research methods as the four areas that need consideration when software products are being developed.They also identified two world views that are dichotomous and should also be considered when software products are being developed.These world views, the mechanistic and romantic world views should therefore be afforded the highest priority (Priority I in Figure 2) in the development of an approach to software development.The romantic world view posits reality as a Communications of the IBIMA 8 social construction (Struwig and Stead, 2004) and believes in a shared reality among actors.Most importantly, what may be considered as knowledge depends heavily on the context, as well as on organizational politics and culture.
On the other hand, the mechanistic world view conceives reality as existing and as a given (Struwig and Stead, 2004).Using the results from axial coding, the mechanistic world view in contrast to the romantic world view is considered to be very syntactic.
As shown in Figure 2, every software development paradigm is associated with a world view.The second priority level (Priority II) therefore depicts the relationship between the world view, the development paradigm and the software development approach.The interviewed practitioners contended that a software development paradigm must be related and derived from a world view at the same time it must lead to the development of a software development approach.Therefore, two dichotomous software development paradigms: the realistic and the relativistic paradigms are noted.The choice of a software development paradigm was raised by the respondents as a fundamental issue when software products are being developed.They noted that many software products are delivered within an ill-founded grounding, that is, the development paradigm.
Furthermore, all the respondents concurred that, although there is an association between the development approach, the development paradigm adopted and the development method, development approaches should lie in between the paradigm and the method.The development approaches should derive and share the same philosophical underpinnings as the paradigm.The study therefore revealed an existence of three classes of development approaches: the structural approach, the behavioral approach and approaches in transition.Approaches in transition lie between the structured and behavioral approaches.
The class of structured approaches, usually referred to as traditional approaches, include the classical structured approach and the objectoriented approaches.At the other pole, we find the behavioral approaches, which encompass Checkland's widely read (but rarely used) soft systems approach.Behavioral approaches from which behavioral methodologies are derived assume a holistic organizational perspective (Benson and Standing, 2005).
They accept the social construction nature of software products as well as the information systems they implement and therefore should assume a relativistic paradigm and a romantic world view.
In the middle, the approaches in transition, we find approaches that exhibit both the syntactic characteristics of traditional structured and the softer humanist elements heavily embedded in the soft systems approaches.This leads Brown et al. (2004) to refer to agile approaches as neo-humanist approaches.This is in recognition of the fact that many agile methods are touted to include techniques that capture the human aspects of organizations during analysis although they become very mechanistic at the design and implementation phases.This therefore qualifies agile approaches for inclusion in the approaches in transition.As the third level cannot be achieved without considering the world view and the development paradigm, we allocate it priority level III as indicated in Figure 2.
Lastly, the development method lies at the bottom of Figure 2. The reason for this stems from the fact that an approach dictates the group of methods that will be used at lower levels to develop software products.An approach which can erroneously be likened to a methodology is referred to as a study of methods.These methods are a way of selecting and using specific techniques and tools to accomplish a software development project Bjorner (2008).The methods are therefore at the lower, more prescriptive phase of software development phases.There are however many methods that are considered and used in software development of which only communication methods will be discussed here as it raised a lot of interest from the interview respondents.In discussing development methods, the respondents gave the highest priority to the need for communication methods that can transfer the business model through all the development stages from analysis to implementation.

The Research Propositions
The study has opted to use propositions instead of hypotheses strictly because unlike the former, the later has to be stated in a testable form, which allows the relationship between two or more variables to be examined.In many cases, a hypothesis is a suggested solution to a problem.This study is making empirical generalisations from the facts collected from software practitioners.These generalisations are therefore regarded as propositions, and are derived as a result of an exercise in deduction after observing themes and relationships in an empirical situation.
Based on the open coding and axial coding results of the first three interview data samples and closely related to Figure 2, the following propositions that Communications of the IBIMA 10 need to be considered during software development were made.From the analysis, it was discovered that: Proposition (P1): The field of software development lacks the correct paradigm, that is, it must therefore be positioned in the relativistic world view instead of the current realistic world view.

Proposition (P2):
The software product development process requires an approach that will ensure the capturing of soft human elements or behavioral states that are inherent in organizational systems.
Proposition (P3a): The software development process requires communication methods that will ensure that all the stakeholders in the development process understand each other.
Proposition (P3b): The field of software development requires a method or tool that will capture the organizational context during analysis and maintain it through the subsequent development stages and the development life cycle of the system.

Proposition (P4):
There are no proper methods that can be used to develop adaptive or evolvable software products that characterize organizations as dynamic systems.A method is therefore required to dynamically represent an organizational system as a dynamic piece of software.

Proposition (P5):
The most important requirement for a software development environment is to have a communication protocol that uses a software model as a medium for capturing and transferring the descriptive analysis model characteristics to the design and implementation models without losing the informal domain-and business-related requirements.
These Propositions are addressed using elements from the software development framework discussed below.• There should be a method of capturing and modeling the design phase elements of a system in order to enable all the intended functions of the proposed system to be captured.
• An analysis model, derived from the domain theory should be designed for a family of systems in the same domain.• The software product should be able to capture semantic and pragmatic (tacit) information in organizations.

Proposition (P5) requirements:
• There is a need for a software development tool or language that is capable of capturing the human aspect of communication.This would capture the informal part of the system into the software product.
• Language limitation is the factor that most inhibits and limits the ability of software products to capture informal requirements in systems.A language is needed that allows the building of a language community and facilitate knowledge sharing using concepts.

These
propositions while many researchers and authors have written a lot on them, they still remain persistent and solutions to them are increasingly becoming elusive.It is therefore paramount to explicitly devote a paper on their nature and what is needed in software practice if they are to be addressed.

Conclusion and discussions
The development of adaptive software products has been hampered by many factors.As discussed in this paper, capturing the culture and organizational context are among the major issues that may improve the software development process.In order to develop adaptive software products, the propositions discussed in this paper, have to be accepted, adopted and remedies found.
As it is difficult to find a development approach that addresses all the requirements listed in these propositions, a gradual approach to developing methods, techniques and tools that can be used to develop adaptive software products should be followed.Future research looks at developing a software development methodology that incorporates most if not all of the propositions listed herein.In addition, the techniques and tools required for one to use the proposed methodology must be developed as well.
In conclusion, it must be noted that, the process of software development has been made difficult by the failure of developers to capture the continuous and ever-running context of organizational systems.