Computational Statistics of Data Science for Secured Software Engineering

Author(s):  
Raghavendra Rao Althar ◽  
Debabrata Samanta

The chapter focuses on exploring the work done for applying data science for software engineering, focusing on secured software systems development. With requirements management being the first stage of the life cycle, all the approaches that can help security mindset right at the beginning are explored. By exploring the work done in this area, various key themes of security and its data sources are explored, which will mark the setup of base for advanced exploration of the better approaches to make software systems mature. Based on the assessments of some of the work done in this area, possible prospects are explored. This exploration also helps to emphasize the key challenges that are causing trouble for the software development community. The work also explores the possible collaboration across machine learning, deep learning, and natural language processing approaches. The work helps to throw light on critical dimensions of software development where security plays a key role.

2012 ◽  
pp. 1215-1236 ◽  
Author(s):  
Farid Meziane ◽  
Sunil Vadera

Artificial intelligences techniques such as knowledge based systems, neural networks, fuzzy logic and data mining have been advocated by many researchers and developers as the way to improve many of the software development activities. As with many other disciplines, software development quality improves with the experience, knowledge of the developers, past projects and expertise. Software also evolves as it operates in changing and volatile environments. Hence, there is significant potential for using AI for improving all phases of the software development life cycle. This chapter provides a survey on the use of AI for software engineering that covers the main software development phases and AI methods such as natural language processing techniques, neural networks, genetic algorithms, fuzzy logic, ant colony optimization, and planning methods.


Author(s):  
Franco Zambonelli ◽  
Nicholas R. Jennings ◽  
Michael Wooldridge

The multi-agent system paradigm introduces a number of new design/development issues when compared with more traditional approaches to software development and calls for the adoption of new software engineering abstractions. To this end, in this chapter, we elaborate on the potential of analyzing and architecting complex multi-agent systems in terms of computational organizations. Specifically, we identify the appropriate organizational abstractions that are central to the analysis and design of such systems, discuss their role and importance, and show how such abstractions are exploited in the context of the Gaia methodology for multi-agent systems development.


Author(s):  
Farid Meziane ◽  
Sunil Vadera

Artificial intelligences techniques such as knowledge based systems, neural networks, fuzzy logic and data mining have been advocated by many researchers and developers as the way to improve many of the software development activities. As with many other disciplines, software development quality improves with the experience, knowledge of the developers, past projects and expertise. Software also evolves as it operates in changing and volatile environments. Hence, there is significant potential for using AI for improving all phases of the software development life cycle. This chapter provides a survey on the use of AI for software engineering that covers the main software development phases and AI methods such as natural language processing techniques, neural networks, genetic algorithms, fuzzy logic, ant colony optimization, and planning methods.


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):  
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.


2020 ◽  
Vol 17 (9) ◽  
pp. 4635-4642
Author(s):  
Mudita ◽  
Deepali Gupta

Software Engineering is the fundamental methodology used in the process of developing the software. Software Development Life Cycle (SDLC) is the backbone of software engineering. SDLC is emerging in several forms to support software development at different phases. SDLC plays as a role of guide for engineers that are involved from traditional desktop application development to much trending development. The new emerging technologies accelerate the process of software engineering, resulting in saving time and resources and enhance the quality of software systems. This paper focuses on technologies used to accelerate the process of software engineering in solving problems associated with its phases. The first section of this paper contains an introduction to Software Engineering (SE) and Artificial Intelligence (AI). The next section describes the aspects of emerging technologies in software engineering. After this, the role of AI in SE is discussed followed by a conclusion in the last section.


Author(s):  
Anas AL-Badareen

    Abstract— Since the idea of software reuse appeared in 1968, software reuse has become a software engineering discipline. Software reuse is one of the main techniques used to enhance the productivity of software development, which it helps reducing the time, effort, and cost of developing software systems, and enhances the quality of software products. However, software reuse requires understanding, modifying, adapting and testing processes in order to be performed correctly and efficiently. This study aims to analyze and discuss the process of software reuse, identify its elements, sources and usages. The alternatives of acquiring and using software assets either normal or reusable assets are discussed. As a result of this study, four main methods are proposed in order to use the concept of reuse in the software development process. These methods are proposed based on the source of software assets regardless the types of software assets and their usages.


Sign in / Sign up

Export Citation Format

Share Document