1,054,043 research outputs found
Artificial intelligence approaches to software engineering
Artificial intelligence approaches to software engineering are examined. The software development life cycle is a sequence of not so well-defined phases. Improved techniques for developing systems have been formulated over the past 15 years, but pressure continues to attempt to reduce current costs. Software development technology seems to be standing still. The primary objective of the knowledge-based approach to software development presented in this paper is to avoid problem areas that lead to schedule slippages, cost overruns, or software products that fall short of their desired goals. Identifying and resolving software problems early, often in the phase in which they first occur, has been shown to contribute significantly to reducing risks in software development. Software development is not a mechanical process but a basic human activity. It requires clear thinking, work, and rework to be successful. The artificial intelligence approaches to software engineering presented support the software development life cycle through the use of software development techniques and methodologies in terms of changing current practices and methods. These should be replaced by better techniques that that improve the process of of software development and the quality of the resulting products. The software development process can be structured into well-defined steps, of which the interfaces are standardized, supported and checked by automated procedures that provide error detection, production of the documentation and ultimately support the actual design of complex programs
A Comprehensive Analysis of Literature Reported Software Engineering Advancements Using AHP
The paper provides a various potential improvements in software engineering using analytic hierarchical processing (AHP). The presented work could support in assessing the selection of process, project, methods and tools depending on various situations encounter during software engineering. AHP belongs to Multi Criteria Decision making methods which seems to be a continuous research to solve critical and complex scientific and software engineering applications. This paper discusses existing key research contributions and their advancements in the areas of both software engineering and in combination of AHP with software engineering
Happy software developers solve problems better: psychological measurements in empirical software engineering
For more than 30 years, it has been claimed that a way to improve software
developers' productivity and software quality is to focus on people and to
provide incentives to make developers satisfied and happy. This claim has
rarely been verified in software engineering research, which faces an
additional challenge in comparison to more traditional engineering fields:
software development is an intellectual activity and is dominated by
often-neglected human aspects. Among the skills required for software
development, developers must possess high analytical problem-solving skills and
creativity for the software construction process. According to psychology
research, affects-emotions and moods-deeply influence the cognitive processing
abilities and performance of workers, including creativity and analytical
problem solving. Nonetheless, little research has investigated the correlation
between the affective states, creativity, and analytical problem-solving
performance of programmers. This article echoes the call to employ
psychological measurements in software engineering research. We report a study
with 42 participants to investigate the relationship between the affective
states, creativity, and analytical problem-solving skills of software
developers. The results offer support for the claim that happy developers are
indeed better problem solvers in terms of their analytical abilities. The
following contributions are made by this study: (1) providing a better
understanding of the impact of affective states on the creativity and
analytical problem-solving capacities of developers, (2) introducing and
validating psychological measurements, theories, and concepts of affective
states, creativity, and analytical-problem-solving skills in empirical software
engineering, and (3) raising the need for studying the human factors of
software engineering by employing a multidisciplinary viewpoint.Comment: 33 pages, 11 figures, published at Peer
Formalising responsibility modelling for automatic analysis
Modelling the structure of social-technical systems as a basis for informing software system design is a difficult compromise. Formal methods struggle to capture the scale and complexity of the heterogeneous organisations that use technical systems. Conversely, informal approaches lack the rigour needed to inform the software design and
construction process or enable automated analysis.
We revisit the concept of responsibility modelling, which models social technical systems as a collection of actors who discharge their responsibilities, whilst using and producing resources in the process. Responsibility modelling is formalised as a structured approach for socio-technical system requirements specification and modelling, with well-defined semantics and support for automated structure and validity analysis. The
effectiveness of the approach is demonstrated by two case studies of software engineering methodologies
Process Driven Software Engineering Environments
Software development organizations have begun using Software Engineering Environments (SEEs) with the goal of enhancing the productivity of software developers and improving the quality of software products. The encompassing nature of a SEE means that it is typically very tightly coupled with the way an organization does business. To be most effective, the components of a SEE must be well integrated and the SEE itself must be integrated with the organization.
The challenge of tool integration increases considerably when the components of the environment come from different vendors and support varying degrees of “openness”. The challenge of integration with the organization increases in a like manner when the environment must support a variety of different organizations over a long period of time. In addition to these pressures, any SEE must perform well and must “scale” well as the size of the organization changes.
This paper proposes basing the Software Engineering Environment on the software development process used in an organization in order to meet the challenges of integration, performance, and scaling. The goals and services of distributed operating systems and Software Engineering Environments are outlined in order to more clearly define their roles. The motivation for using a well defined software development process is established along with the benefits of basing the Software Engineering Environment on the software development process. Components of a SEE that could effectively support the process and provide integration, performance, and scaling benefits are introduced along with an outline of an Ada program used to model the proposed components. The conclusion provides strong support for process driven SEEs, encourages the expansion of the concept into other “environments,” and cautions against literal interpretations of “process integration” that may slow the acceptance of this powerful approach
Business engineering building blocks
In order to utilize the contemporary advanced technology, business processes
need sound software support. With respect to this, one frequent cause of
software project failure is the mismatch between the business requirements and
the actual functionality of the delivered software application. To solve this
problem, it is necessary to build software stemming out from a business
process model. Aiming at aligning business process modeling and software
design in a component-based way, the proposed research investigates the
identification of generic business engineering building blocks and their use
for building ICT applications which effectively support business processes
A requirements-based software process maturity model
The requirements phase of software development is an on-going problem for the
software engineering community. The many disparate recommendations and best
practices found in the literature make it difficult for software organisations to
recognise which practices apply to their individual needs. The aim of this thesis is to
pull together key solutions into a framework that allows practitioners to assess where
their requirements process needs strengthening and to provide a means in which
improvements can be achieved.
In this thesis I show how I design, develop and validate a model of requirements
engineering processes. This requirements capability maturity model (R-CMM)
adheres to the characteristics of the Software Engineering Institute's Software
Capability Maturity Model (SW-CMM) and is designed to take practitioners from an
immature process capability through to an advanced capability.
I contribute to the body of knowledge in both software process improvement and
requirements engineering (RE) by providing rigorous detail of how a process
maturity framework is developed to support RE practices. The model is generic and
should apply to many software development organisations. The R-CMM guides users
towards a view of RE that is based on goals and is problem driven. The SW-CMM
framework is transformed into a simplified model that relates goals and problems to
individual RE practises
- …