Software development practice is a messy, complicated, and constantly shifting human endeavor. Barad’s concept of “entanglement” helps to theorize complex sociotechnical systems. We are testing the application of this theory to understand and explain software development practices, as our work appears to be the only ethnographic research using Barad in any technology industry. Our continual aim is to understand large-scale, collaborative software development more deeply in practice and to discover appropriate theories that describe our observations and insights. Both authors are experienced software engineers and researchers. Through an ongoing longitudinal ethnographic study at a large Australian software development company, we explore, support, and improve the lived experience and practice of the software developers that work there. Ethnographic insights and an appreciation of the mutual constitution of situated phenomena have expanded over several years into an elaboration of entanglement as a more insightful explanation of software development practice. This research is having a significant impact on the participant developers and organization, including changes in measurement practices, mentoring, knowledge management, and innovation.
Effective software quality assurance in large-scale, complex software systems is one of the most vexed issues in software engineering, and, it is becoming ever more challenging. Software quality and its assurance is part of software development practice, a messy, complicated and constantly shifting human endeavor. What emerged from our immersive study in a large Australian software development company is that software quality in practice is inextricably entangled with the phenomena of productivity, time, infrastructure and human practice. This ethnographic insight — made visible to the organization and its developers via the rich picture and the concept of entanglements— built their trust in our work and expertise. This led to us being invited to work with the software development teams on areas for change and improvement and moving to a participatory and leading role in organizational change.
Software developers confuse product quality with process quality, leading them to think they are measuring product quality when they are not. This is the main finding of this study of software developers in young small to medium companies in Colombia. Software product quality reflects two perspectives: conformance to specifications, and satisfying expectations when it is used under specified conditions. Measuring product quality still remains a problem for software development companies in relation to factors such as cost, effort, time and competitiveness. There are few studies that show the current state of software product quality in companies, how companies evaluate product quality, and which measures they use to develop and launch products that meet high-quality criteria. This research presents a study of software product quality in seven young software development companies in a developing country. The candidate used a qualitative research approach to understand, through their experiences and knowledge, how 20 employees—developers, testers, and project managers—and their companies evaluate software product quality, and which measures they apply in their companies. The results demonstrate that software process quality is better understood, and applied, by these software companies than software product quality. A greater difficulty is that most study participants ‘overlaid’ the idea of product quality with process quality, i.e. they talked about product quality as if it were process quality. This confusion leads them to think that they are measuring product quality when they are not. These findings have implications for companies that wish to increase competitiveness and productivity as they must develop a working knowledge of software product quality that is not confused with software process quality. It also has implications for educators, to ensure that the distinction between process and product quality is explicitly taught.
Our software studio demonstrably increases students' employability, according to the empirical findings of this study, and an evaluation of these findings based on the CareerEDGE Employability Development Profile. We provide a studio environment in which students work in mixed teams on real software projects for clients, under the guidance of industry and academic mentors. This study used open-ended interviews and ethnographic observations in the studio sessions to understand employability success. Skills found important for employability include: collaboration and communication, project management, supporting each other to resolve technical issues, seeking help from industry mentors and academics, social aspects of work (working with clients and mentors), reflection skills and technical skills. These skills were compared with the CareerEDGE Employability Development Profile and found to give good coverage of employability skills. Contributions made by this study to computing education are: • A deep empirical understanding of students' perspectives and what they value about their employability as a result of participating in the software studio • An evaluation of our findings against the CareerEDGE employability framework, in a technical learning environment • Findings from an investigation that is complementary to students' perspectives collected in accordance with the CareerEDGE approach, where the data is collected via a questionnaire with 5-point Likert scale responses; our interviews were open-ended and accompanied by ethnographic observations
Enterprise IT (EIT) governance has become the primary approach in leveraging the IT function to achieve business objectives. We found in previously published work that decision making is the core of EIT governance. We collected quantitative data from professionals on decision making in Agile Software Development (ASD) projects, which we analyzed using Spearman’s Ranked Correlation Coefficient. Decision-making clarity in implementation and decision-making distribution in the organization layers positively impact ASD project success. However, our finding that tailoring the decision-making process does not impact ASD project success was most surprising. We conclude that the impact of decision-making factors in an ASD project’s success needs to be explored more deeply
We have observed that it is a non-trivial exercise for undergraduate students to learn how to reflect. Reflective practice is now recognised as important for software developers and has become a key part of software studios in universities, but there is limited empirical investigation into how best to teach and learn reflection. In the literature on reflection in software studios, there are many papers that claim that reflection in the studio is mandatory. However, there is inadequate guidance about teaching early stage students to reflect in that literature. The essence of the work presented in this paper is a beginning to the consideration of how the teaching of software development can best be combined with teaching reflective practice for early stage software development students. We started on a research programme to understand how to encourage students to learn to reflect. As we were unsure about teaching reflection, and we wished to change our teaching as we progressively understood better what to do, we chose action research as the most suitable approach. Within the action research cycles we used ethnography to understand what was happening with the students when they attempted to reflect. This paper reports on the first 4 semesters of research. We have developed and tested a reflection model and process that provide scaffolding for students beginning to reflect. We have observed three patterns in how our students applied this process in writing their reflections, which we will use to further understand what will help them learn to reflect. We have also identified two themes, namely, motivation and intervention, which highlight where the challenges lie in teaching and learning reflection.
We have evidence that the software studio provides learning that genuinely prepares students for professional practice. Learning that entails dealing with complex technical problems and tools. Learning that involves working effectively in groups. Learning that results in the building of students' self-confidence and the conviction that they can successfully deal with the challenges of modern software system development. Learning that allows the accomplishment of the more elusive professional competencies. In order for students to achieve this type of deep learning, they need time to immerse themselves in complex problems within a rich environment -- such as the software studio. The studio also enables each student group to develop and succeed according to their needs, and in different ways. The conclusions above arise from an ethnographic study in an undergraduate software studio prototype with two student groups and their mentors.
The continuing expansion of telecommunication service domains, from Quality of Service guaranteed connectivity to ubiquitous cloud environments, has introduced an ever increasing level of complexity in the field of service management. This complexity arises not only from the sheer variability in service requirements but also through the required but ill-defined interaction of multiple organisations and providers. As a result of this complexity and variability, the provisioning and performance of current services is adversely affected, often with little or no accountability to the users of the service.This exposes a need for total coverage in the management of such complex services, a system which provides for service responsibility. Service responsibility is defined as the provisioning of service resilience and the judgement of service risk across all the service components. To be effective in responsible management for current complex services, any framework must be able to interact with multiple providers and management systems. The CARMA framework upon which we are working, aims to fulfil these requirements through a multi-agent system, that is based in a global market, and can negotiate and be responsible for multiple complex services.To this end the research aims to present the architecture, agent functionality and interactions of the CARMA system, as well as the structure of the marketplace, contract specification and risk management.As the scope and concepts of the proposed system are relatively unexplored, a model and simulation was developed to verify the concepts, explore the issues, assess the assumptions and validate the system. The results of the simulation determined that the introduction of CARMA has the potential to reduce the risk in contracting new services, increase the reliability of contracted services, and increase the utility of providers participating in the market.
Software mining is related to both data mining and reverse engineering. It is focused on mining software artefacts such as code, bases program states and structural entities for useful information related to the characteristics of a system. This paper provides an introduction to the field. It first reviews a representative selection of the ways software mining has been applied. It then divides software mining into three subcategories and explains each one in detail. Finally this paper summarises some of the advantages and limitations of software mining, both now and in the future. These advantages and limitations have been informed by the author's own research applying software mining to the field of User Interface generation.
The continuing rise in telecommunication and cloud services usage is matched by an increased complexity in maintaining adequate performance management. To combat this complexity, researchers and telecommunication companies are exploring a variety of management strategies to leverage their individual infrastructures to provide better performance and increased utilisation. We extend these strategies by addressing the complexities that arise through the interaction of multiple telecommunication and cloud providers when providing a modern complex service. Our overall aim is for the management to accept responsibility for the complex service in an open marketplace. Responsibility is, firstly, defined by aiming to cover the totality of modern complex services, managing both the connectivity and virtual infrastructure. Secondly, responsibility is defined as managing risk and resilience in the provisioning and operation of the complex service. With these aims, we are working towards a bundled service provider agent architecture, which can negotiate on the open service market. This approach aims to also optimise the utilisation of the providers infrastructure while reducing the risk of failure to users through total service management. We present the specification, design and simulation of the Complete Autonomous Responsible Management Agents (CARMA) in a marketplace environment.
Expansion in telecommunications services, such as triple play and unified communications, introduces complexity that adversely affects service and network provisioning, especially in terms of provisioning times and the risk of delivery (failure) of new services. We envision a marketplace in which all manner of complex services will be provisioned, and their performance managed, especially against poor performance. The first phase of our work is a focus on the architecture, negotiation and management, which will lead to effective specification of network management requirements. We are working towards a bundled service agent architecture, which can negotiate on an open single service market, and which will eventually help to optimise the utilisation of the providers networks while reducing the risk of failure to users. Our work to date has been on the specification, behaviour, service definition and simulation of service agents for bundled service delivery.
For many software projects, the construction of the User Interface (UI) consumes a significant proportion of their development time. Any degree of automation in this area therefore has clear benefits. But it is difficult to achieve such automation in a way that will be widely adopted by industry because of the diversity of UIs, software architectures, platforms and development environments. In a previous article, the authors identified five key characteristics any UI generator would need in order to address this diversity. We asserted that, without these characteristics, a UI generator should not expect wide industry adoption or standardisation. We supported this assertion with evidence from industry adoption studies. A further source of validation would be to see if other research teams, who were also conducting industry field trials, were independently converging on this same set of characteristics. Conversely, it would be instructive if they were found to be converging on a different set of characteristics. In this article, the authors look for such evidence of convergence by interviewing the team behind one of the research community's most significant UI generators: Naked Objects. We observe strong signs of convergence, which we believe signal the beginning of a general purpose architecture for UI generation, one that both industry and the research community could standardise upon.
In this chapter we aim to present an approach to addressing the problem of architectural optimisation of complex computer-based systems. Initially, we provide a survey of methods created with the direct aim of optimising systemwith respect to their non-functional qualities. An overview of commonalities and differences between these methods leads to exploration of reasons for their success in attaining their respective goals. The results of this discussion provide the information necessary to formulate the definition of the notion of guidance in the context of architectural design and optimisation. Following that, we describe a newHeuristic-based Architectural Optimisation framework developed in an attempt to unify the lessons learnt from the successes and shortcomings of the surveyed optimisation approaches. Special attention is paid to the guidance mechanism employed by the new framework to control the progress of design optimisation. We propose to develop a suitable guidance mechanism using a Bayesian Belief Network (BBN) obtained from a combination of hybrid simulation modeling and BBN discovery algorithm. Finally, the rest of the chapter is devoted to a description of a brief example problem. There, an attempt is made to show how the guidance mechanism can be applied to a fairly simple problem that nonetheless possesses an element of ambiguity that so often falters system design optimisation activities.
Telecommunications Network Management Systems ( TNMSs) have had to respond to enormous change, as telecommunication networks have changed from the early (digital) timeframe of being ISDN based, (devoted dominantly to voice), to the current timeframe, providing diverse services of data, voice, video, along with a very different business environment. The goal of this paper is to understand the probable impact of changes required, in order to then understand how current TNMSs are able to respond to the changes, and thus evolve. To evaluate the nature, complexity and risks of changes to TNMSs, we have used an evolutionary taxonomy and methodology which classifies change according to complexity. The data for the evaluation is based on the changes to the architecture of networks and TNMSs over the past 20 years. We have identified the major dimensions of change, and evaluated how TNMSs have responded to those changes.
Many software projects spend a significant proportion of their time developing the User Interface (UI), therefore any degree of automation in this area has clear benefits. Such automation is difficult due principally to the diversity of architectures, platforms and development environments. Attempts to automate UI generation to date have contained restrictions which did not accommodate this diversity, leading to a lack of wide industry adoption or standardisation. The authors set out to understand and address these restrictions. We studied the issues of UI generation (especially duplication) in practice, using action research cycles guided by interviews, adoption studies and close collaboration with industry practitioners. In addressing the issues raised in our investigation, we identified five key characteristics any UI generation technique would need before it should expect wide adoption or standardisation. These can be summarised as: inspecting existing, heterogeneous back-end architectures; appreciating different practices in applying inspection results; recognising multiple, and mixtures of, UI widget libraries; supporting multiple, and mixtures of, UI adornments; applying multiple, and mixtures of, UI layouts. Many of these characteristics seem ignored by current approaches. In addition, we discovered an emergent feature of these characteristics that opens the possibility of a previously unattempted goal – namely, retrofitting UI generation to an existing application.
Networks have become an integral part of the computing landscape, forming a global interconnection of a staggering number of heterogeneous systems and services. Current research focuses on policy based management and autonomous systems and involves the utilisation of very different languages and technologies in concert. This paper examines four current proposals for autonomous network management and analyses them using architectural modelling, against a measure of practicality, as expressed by scalability, reliability and maintainability.
The evolution of User Interface (UI) tools has generally regarded the UI as separable from the underlying application it represents. This viewpoint leaves the UI having to restate invariants already specified in other subsystems of an application, and any discrepancy between the versions in the UI and those in the subsystems leads to errors. This paper explores a sample of real world subsystems in use by enterprise applications today, and underscores the problem of duplication between them and the UI. It then surveys the prevalence of this issue within mainstream software development.
It is the UTS A-Engineering group's position that a strongly typed architectural model is the central and fundamental concept in the model-based development or alternatively the architecture-based engineering of computer based systems. Given a standard architectural model and representation, the architecture of systems can be discussed, drawn, reasoned about and classified. This paper presents the current UTS definitions and descriptions of system architecture. The definitions and concepts provided herein have been used as the foundation of several real-world model-based development, design, evolution and engineering projects.
Demands on communications networks to support bundled, interdependent communications services (data, voice, video) are increasing in complexity. Smart network management techniques are required to meet this demand. Such management techniques are envisioned to be based on two main technologies: (i) embedded intelligence; and (ii) up-to-the-millisecond delivery of performance information. This paper explores the idea of delivery of intelligent network management as a synthesis of distributed intelligence and information, obtained through information mining of network performance.