scholarly journals Evaluation of a Suite of Metrics for Component Based Software Engineering (CBSE)

10.28945/3379 ◽  
2009 ◽  
Author(s):  
Lakshmi Narasimhan ◽  
Prapanna Parthasarathy ◽  
Manik Lal Das

Component-Based Software Engineering (CBSE) has shown significant prospects in rapid production of large software systems with enhanced quality, and emphasis on decomposition of the engineered systems into functional or logical components with well-defined interfaces used for communication across the components. In this paper, a series of metrics proposed by various researchers have been analyzed, evaluated and benchmarked using several large-scale publicly available software systems. A systematic analysis of the values for various metrics has been carried out and several key inferences have been drawn from them. A number of useful conclusions have been drawn from various metrics evaluations, which include inferences on complexity, reusability, testability, modularity and stability of the underlying components. The inferences are argued to be beneficial for CBSE-based software development, integration and maintenance.

Author(s):  
Tarek Zernadji ◽  
Raida Elmansouri ◽  
Allaoua Chaoui

Current research on software reuse in Component Based Software Engineering (CBSE) covers a variety of fields, including component design, component specification, component composition, component-based framework. CBSE is quickly becoming a mainstream approach to software development and most researchers are hoping that it will be solutions to all the problems that led to software crisis. The software engineering techniques specific to this discipline, in phases such as modeling, verification or validation of component based software systems still insufficient and need more research efforts. ECATNets (Extended Concurrent Algebraic Term Nets) are frameworks for specification, modeling and validation of concurrent and distributed systems. They are characterized by their semantics defined in terms of rewriting logic. The objective of this article is to propose a formal specification of software components by using ECATNets formalism. The expected benefits of this work are: Offer a formal notation for describing the different features of concurrent and distributed software components; Defining a formal unambiguous semantic to describe behavior of the composed system.


Author(s):  
P. K. KAPUR ◽  
ANU. G. AGGARWAL ◽  
KANICA KAPOOR ◽  
GURJEET KAUR

The demand for complex and large-scale software systems is increasing rapidly. Therefore, the development of high-quality, reliable and low cost computer software has become critical issue in the enormous worldwide computer technology market. For developing these large and complex software small and independent modules are integrated which are tested independently during module testing phase of software development. In the process, testing resources such as time, testing personnel etc. are used. These resources are not infinitely large. Consequently, it is an important matter for the project manager to allocate these limited resources among the modules optimally during the testing process. Another major concern in software development is the cost. It is in fact, profit to the management if the cost of the software is less while meeting the costumer requirements. In this paper, we investigate an optimal resource allocation problem of minimizing the cost of software testing under limited amount of available resources, given a reliability constraint. To solve the optimization problem we present genetic algorithm which stands up as a powerful tool for solving search and optimization problems. The key objective of using genetic algorithm in the field of software reliability is its capability to give optimal results through learning from historical data. One numerical example has been discussed to illustrate the applicability of the approach.


Author(s):  
L. Rodríguez-Martínez ◽  
M. Mora ◽  
F. Álvarez ◽  
L. Garza ◽  
H. Durán ◽  
...  

Service-oriented software engineering (SoSE) is a new  paradigm for building software systems, fostered by the availability of a new -but already mature- computing technology based on services.  SoSE advances the current object-oriented and the component-based software engineering paradigms. Under that new paradigm, multiple software-system development life cycle (SDLC) methodologies have been proposed; however, none of them have gained a total acceptance as the dominant SDLC in SoSE.  On this theoretical and practical situation, we believe that a research is required to reach more standardized and stabilized knowledge about SDLCs in SoSE.  Thus, this article reviews nine recent SDLCs proposed for SoSE with the aim to present a descriptive-comparative landscape of a relevant range of SDLCs for SoSE. Such description-comparison is guided by two criteria: (i) the extent of completeness of each SDLC, with respect to the proposed phases, activities and delivered artifacts, and (ii) the extent of the Boehm-Turner’s Rigor-Agility balance. Our results suggest that only three of the nine SDLCs studied already provide the best level of completeness and Rigor-Agility. Finally, we consider that the reported descriptivecomparative framework and their findings from each SDLC can be useful also for comparing and elaborating future SDLCs in SoSE.


Author(s):  
Alexander Konstantinovich Petrenko ◽  
Denis Valentinovich Efremov ◽  
Eugeny Valerievich Kornykhin ◽  
Alexey Vladimirovich Khoroshilov ◽  
Ilya Viktorovich Shchepetkov ◽  
...  

Research on formal methods of software development and verification focuses on building specifications using incremental and iterative development methodologies. The presence of several levels of specifications simplifies proving of properties, since it is possible to reuse the proofs that were performed for more abstract layers of the model. It is desirable to use the same models that were used for formal verification also in testing of real systems for compliance with the requirements set by these models. In practice, large software systems are described by multi-level models. There was no experience of using such models as the basis for testing and monitoring. The paper discusses various methods for developing multi-level models, new opportunities that can be obtained through a combination of functional specifications and implementation-level refinements, limitations that must be considered during testing and monitoring of real systems for compliance with multi-level models.


Author(s):  
Kuldar Taveter ◽  
Leon Sterling

Over the past decade, the target environment for software development has complexified dramatically. Software systems must now operate robustly in a dynamic, global, networked environment comprised of distributed diverse technologies, where frequent change is inevitable. There is increasing demand for flexibility and ease of use. Multiagent systems (Wooldridge, 2002) are a potential successor to object-oriented systems, better able to address the new demands on software. In multi-agent systems, heterogeneous autonomous entities (i.e., agents) interact to achieve system goals. In addition to being a technological building block, an agent, also known as an actor, is an important modeling abstraction that can be used at different stages of software engineering. The authors while teaching agent-related subjects and interacting with industry have observed that the agent serves as a powerful anthropomorphic notion readily understood by novices. It is easy to explain to even a nontechnical person that one or more software agents are going to perform a set of tasks on your behalf. We define software engineering as a discipline applied by teams to produce high-quality, large-scale, cost-effective software that satisfies the users’ needs and can be maintained over time. Methods and processes are emerging to place software development on a parallel with other engineering endeavors. Software engineering courses give increasing focus to teaching students how to analyze software designs, emphasizing imbuing software with quality attributes such as performance, correctness, scalability, and security. Agent-oriented software engineering (AOSE) (Ciancarini & Wooldridge, 2001) has become an active research area. Agent-oriented methodologies, such as Tropos (Bresciani, Perini, Giorgini, Giunchiglia, & Mylopoulos, 2004), ROADMAP (Juan & Sterling, 2003), and RAP/AOR (Taveter & Wagner, 2005), use the notion of agent throughout the software lifecycle from analyzing the problem domain to maintaining the functional software system. An agent-oriented approach can be useful even when the resulting system neither consists of nor includes software agents. Some other proposed AOSE methodologies are Gaia (Wooldridge, Jennings, & Kinny, 2000), MESSAGE (Garijo, Gomez-Sanz, & Massonet, 2005), TAO (Silva & Lucena, 2004), and Prometheus (Padgham & Winikoff, 2004). Although none of the AOSE methodologies are yet widely accepted, AOSE is a promising area. The recent book by Henderson-Sellers & Giorgini (2005) contains a good overview of currently available agent-oriented methodologies. AOSE approaches loosely fall into one of two categories. One approach adds agent extensions to an existing objectoriented notation. The prototypical example is Agent UML (Odell, Van Dyke, & Bauer, 2001). The alternate approach builds a custom software methodology around agent concepts such as roles. Gaia (Wooldridge et al., 2000) was the pioneering example. In this article, we address the new paradigm of AOSE for developing both agent-based and traditional software systems.


Author(s):  
Xavier Ferre ◽  
Natalia Juristo ◽  
Ana M. Moreno

Usability has become a critical quality factor in software systems, and it has been receiving increasing attention over the last few years in the SE (software engineering) field. HCI techniques aim to increase the usability level of the final software product, but they are applied sparingly in mainstream software development, because there is very little knowledge about their existence and about how they can contribute to the activities already performed in the development process. There is a perception in the software development community that these usability-related techniques are to be applied only for the development of the visible part of the UI (user interface) after the most important part of the software system (the internals) has been designed and implemented. Nevertheless, the different paths taken by HCI and SE regarding software development have recently started to converge. First, we have noted that HCI methods are being described more formally in the direction of SE software process descriptions. Second, usability is becoming an important issue on the SE agenda, since the software products user base is ever increasing and the degree of user computer literacy is decreasing, leading to a greater demand for usability improvements in the software market. However, the convergence of HCI and SE has uncovered the need for an integration of the practices of both disciplines. This integration is a must for the development of highly usable systems. In the next two sections, we will look at how the SE field has viewed usability. Following upon this, we address the existing approaches to integration. We will then detail the pending issues that stand in the way of successful integration efforts, concluding with the presentation of an approach that might be successful in the integration endeavor.


Author(s):  
Bharavi Mishra ◽  
K. K. Shukla

In the present time, software plays a vital role in business, governance, and society in general, so a continuous improvement of software productivity and quality such as reliability, robustness, etc. is an important goal of software engineering. During software development, a large amount of data is produced, such as software attribute repositories and program execution trace, which may help in future development and project management activities. Effective software development needs quantification, measurement, and modelling of previous software artefacts. The development of large and complex software systems is a formidable challenge which requires some additional activities to support software development and project management processes. In this scenario, data mining can provide a helpful hand in the software development process. This chapter discusses the application of data mining in software engineering and includes static and dynamic defect detection, clone detection, maintenance, etc. It provides a way to understand the software artifacts and processes to assist in software engineering tasks.


Sign in / Sign up

Export Citation Format

Share Document