Improving modularity and reusability are two key objectives in object-oriented programming. These
objectives are achieved by applying several key concepts, such as data encapsulation and inheritance. A
class in an object-oriented system is the basic unit of design. Assessing the quality of an object-oriented
class may require flattening the class and representing it as it really is, including all accessible inherited
class members. Thus, class flattening helps in exploring the impact of inheritance on improving code
quality. This paper explains how to flatten Java classes and discusses the relationship between class
flattening and some applications of interest to software practitioners, such as refactoring and indicating
external quality attributes.
A Multiple Classifiers System For Solving The Character Recognition Problem I...Randa Elanwar
In this paper we proposed a multiple classifiers system for handwritten Arabic alphabet recognition to investigate if it will really achieve a remarkable increase in the recognition accuracy compared to a single feature-based classifier system result
Reusability Metrics for Object-Oriented System: An Alternative ApproachWaqas Tariq
Object-oriented metrics plays an import role in ensuring the desired quality and have widely been applied to practical software projects. The benefits of object-oriented software development increasing leading to development of new measurement techniques. Assessing the reusability is more and more of a necessity. Reusability is the key element to reduce the cost and improve the quality of the software. Generic programming helps us to achieve the concept of reusability through C++ Templates which helps in developing reusable software modules and also identify effectiveness of this reuse strategy. The advantage of defining metrics for templates is the possibility to measure the reusability of software component and to identify the most effective reuse strategy. The need for such metrics is particularly useful when an organization is adopting a new technology, for which established practices have yet to be developed. Many researchers have done research on reusability metrics [2, 9, 3, 4]. In this paper we have proposed four new independent metrics Number of Template Children (NTC), Depth of Template Tree (DTT) Method Template Inheritance Factor (MTIF) and Attribute Template Inheritance Factor (ATIF), to measure the reusability for object-oriented systems.
Chapter 2 The Object Model
2.1 The Evolution of the Object Model
2.2 Foundations of the Object Model
2.3 Elements of the Object Model
2.4 Applying the Object Model
A Multiple Classifiers System For Solving The Character Recognition Problem I...Randa Elanwar
In this paper we proposed a multiple classifiers system for handwritten Arabic alphabet recognition to investigate if it will really achieve a remarkable increase in the recognition accuracy compared to a single feature-based classifier system result
Reusability Metrics for Object-Oriented System: An Alternative ApproachWaqas Tariq
Object-oriented metrics plays an import role in ensuring the desired quality and have widely been applied to practical software projects. The benefits of object-oriented software development increasing leading to development of new measurement techniques. Assessing the reusability is more and more of a necessity. Reusability is the key element to reduce the cost and improve the quality of the software. Generic programming helps us to achieve the concept of reusability through C++ Templates which helps in developing reusable software modules and also identify effectiveness of this reuse strategy. The advantage of defining metrics for templates is the possibility to measure the reusability of software component and to identify the most effective reuse strategy. The need for such metrics is particularly useful when an organization is adopting a new technology, for which established practices have yet to be developed. Many researchers have done research on reusability metrics [2, 9, 3, 4]. In this paper we have proposed four new independent metrics Number of Template Children (NTC), Depth of Template Tree (DTT) Method Template Inheritance Factor (MTIF) and Attribute Template Inheritance Factor (ATIF), to measure the reusability for object-oriented systems.
Chapter 2 The Object Model
2.1 The Evolution of the Object Model
2.2 Foundations of the Object Model
2.3 Elements of the Object Model
2.4 Applying the Object Model
Adaptive User Feedback for IR-based Traceability RecoveryAnnibale Panichella
Traceability recovery allows software engineers to understand the interconnections among software artefacts and, thus, it provides an important support to software maintenance activities. In the last decade, Information Retrieval (IR) has been widely adopted as core technology of semi-automatic tools to extract traceability links between artefacts according to their textual information. However, a widely known problem of IR-based methods is that some artefacts may share more words with non-related artefacts than with related ones. To overcome this problem, enhancing strategies have been proposed in literature. One of these strategies is relevance feedback, which allows to modify the textual similarity according to information about links classified by the users. Even though this technique is widely used for natural language documents, previous work has demonstrated that relevance feedback is not always useful for software artefacts. In this paper, we propose an adaptive version of relevance feedback that, unlike the standard version, considers the characteristics of both (i) the software artefacts and (ii) the previously classified links for deciding whether and how to apply the feedback. An empirical evaluation conducted on three systems suggests that the adaptive relevance feedback outperforms both a pure IR-based method and the standard feedback.
AN ENVIRONMENT FOR NON-DUPLICATE TEST GENERATION FOR WEB BASED APPLICATIONecij
Web applications quality, portability, consistency, interoperability and dependability are main parameters because software could block completely business. Internet based applications are very complex and heterogeneous also based on different kind of modules which can be implemented in a specific language, so testing is very much require. This paper represents the object oriented based environment. Web applications consist of Web related documents, class and objects and some different kinds of server like HTML, DHTML, and JAVA SCRIPT etc. This paper presents three kinds of layers of test: unit testing, integration testing and system testing. This paper also discusses the different techniques. This paper also
based on the reverse engineering techniques which can be used to analyze the software which is probably connected with a model. It also consists a method of generate the test cases. This paper also describes software used to perform some results.
FOR MORE CLASSES VISIT
tutorialoutletdotcom
Project 4
1. Specification
This programming project involves writing a program to manage a student database. The interface to the program
should be a Swing based GUI that looks similar to the following: A combo box should allow the user to select one of the four database actions shown.
Comprehensive Testing Tool for Automatic Test Suite Generation, Prioritizatio...CSCJournals
Testing has been an essential part of software development life cycle. Automatic test case and test data generation has attracted many researchers in the recent past. Test suite generation is the concept given importance which considers multiple objectives in mind and ensures core coverage. The test cases thus generated can have dependencies such as open dependencies and closed dependencies. When there are dependencies, it is obvious that the order of execution of test cases can have impact on the percentage of flaws detected in the software under test. Therefore test case prioritization is another important research area that complements automatic test suite generation in objects oriented systems. Prior researches on test case prioritization focused on dependency structures. However, in this paper, we automate the extraction of dependency structures. We proposed a methodology that takes care of automatic test suite generation and test case prioritization for effective testing of object oriented software. We built a tool to demonstrate the proof of concept. The empirical study with 20 case studies revealed that the proposed tool and underlying methods can have significant impact on the software industry and associated clientele.
In this session you will learn:
Declarations and Access Control
Class Modifiers
Access Modifiers for Members
Non-Access Modifiers for Members
More Member Modifiers
Modifiers for Inner Classes
Class Declarations
Interface Declarations
Implementing an Interface
main() Method
Extra points to remember
For more information, visit this link: https://www.mindsmapped.com/courses/software-development/online-java-training-for-beginners/
TECHNIQUES FOR COMPONENT REUSABLE APPROACHcscpconf
To find out best reusable component is a difficult task for the user. The keyword based approach
does not provide accurate result, which is largely used in descriptive methods for component
retrieval. The keyboard based procedure is used for descriptive procedure broadly, it produces
the result is too formless. For retrieval approach of component, to make them as reusable smart
environment is used. In keyword search region, this will list out the components, the user must
select appropriate component manually. The class diagram provides the information about
structural description and contents of class effectively. That is class name, attributes, relationships, behavior operations and generalization etc. Repository is used for this information; this search result is better and produces high accuracy whenever it is compared with keyboard based search procedure
DETECTION AND REFACTORING OF BAD SMELL CAUSED BY LARGE SCALEijseajournal
Bad smells are signs of potential problems in code. Detecting bad smells, however, remains time
consuming for software engineers despite proposals on bad smell detection and refactoring tools. Large
Class is a kind of bad smells caused by large scale, and the detection is hard to achieve automatically. In
this paper, a Large Class bad smell detection approach based on class length distribution model and
cohesion metrics is proposed. In programs, the lengths of classes are confirmed according to the certain
distributions. The class length distribution model is generalized to detect programs after grouping.
Meanwhile, cohesion metrics are analyzed for bad smell detection. The bad smell detection experiments of
open source programs show that Large Class bad smell can be detected effectively and accurately with this
approach, and refactoring scheme can be proposed for design quality improvements of programs.
DevLabs Alliance Top 20 Software Testing Interview Questions for SDET - by De...DevLabs Alliance
DevLabs Alliance Software Testing Interview Questions for SDET will help SDETs to prepare for their interviews. Learn top 20 questions with their answers for Software Testing which are majorly asked in interview for SDET role.
20 most important java programming interview questionsGradeup
These questions are prepared by Java Programming Experts and solutions to these programs are asked during job interviews. Knowing solution to these questions helps you in getting a job.
Mark Richards is a serial entrepreneur who loves helping other turn their ideas into real products or services. One thing is particularly fascinated by is the development of these ideas. Where do they come from? How can we continue coming up with good ideas?
Adaptive User Feedback for IR-based Traceability RecoveryAnnibale Panichella
Traceability recovery allows software engineers to understand the interconnections among software artefacts and, thus, it provides an important support to software maintenance activities. In the last decade, Information Retrieval (IR) has been widely adopted as core technology of semi-automatic tools to extract traceability links between artefacts according to their textual information. However, a widely known problem of IR-based methods is that some artefacts may share more words with non-related artefacts than with related ones. To overcome this problem, enhancing strategies have been proposed in literature. One of these strategies is relevance feedback, which allows to modify the textual similarity according to information about links classified by the users. Even though this technique is widely used for natural language documents, previous work has demonstrated that relevance feedback is not always useful for software artefacts. In this paper, we propose an adaptive version of relevance feedback that, unlike the standard version, considers the characteristics of both (i) the software artefacts and (ii) the previously classified links for deciding whether and how to apply the feedback. An empirical evaluation conducted on three systems suggests that the adaptive relevance feedback outperforms both a pure IR-based method and the standard feedback.
AN ENVIRONMENT FOR NON-DUPLICATE TEST GENERATION FOR WEB BASED APPLICATIONecij
Web applications quality, portability, consistency, interoperability and dependability are main parameters because software could block completely business. Internet based applications are very complex and heterogeneous also based on different kind of modules which can be implemented in a specific language, so testing is very much require. This paper represents the object oriented based environment. Web applications consist of Web related documents, class and objects and some different kinds of server like HTML, DHTML, and JAVA SCRIPT etc. This paper presents three kinds of layers of test: unit testing, integration testing and system testing. This paper also discusses the different techniques. This paper also
based on the reverse engineering techniques which can be used to analyze the software which is probably connected with a model. It also consists a method of generate the test cases. This paper also describes software used to perform some results.
FOR MORE CLASSES VISIT
tutorialoutletdotcom
Project 4
1. Specification
This programming project involves writing a program to manage a student database. The interface to the program
should be a Swing based GUI that looks similar to the following: A combo box should allow the user to select one of the four database actions shown.
Comprehensive Testing Tool for Automatic Test Suite Generation, Prioritizatio...CSCJournals
Testing has been an essential part of software development life cycle. Automatic test case and test data generation has attracted many researchers in the recent past. Test suite generation is the concept given importance which considers multiple objectives in mind and ensures core coverage. The test cases thus generated can have dependencies such as open dependencies and closed dependencies. When there are dependencies, it is obvious that the order of execution of test cases can have impact on the percentage of flaws detected in the software under test. Therefore test case prioritization is another important research area that complements automatic test suite generation in objects oriented systems. Prior researches on test case prioritization focused on dependency structures. However, in this paper, we automate the extraction of dependency structures. We proposed a methodology that takes care of automatic test suite generation and test case prioritization for effective testing of object oriented software. We built a tool to demonstrate the proof of concept. The empirical study with 20 case studies revealed that the proposed tool and underlying methods can have significant impact on the software industry and associated clientele.
In this session you will learn:
Declarations and Access Control
Class Modifiers
Access Modifiers for Members
Non-Access Modifiers for Members
More Member Modifiers
Modifiers for Inner Classes
Class Declarations
Interface Declarations
Implementing an Interface
main() Method
Extra points to remember
For more information, visit this link: https://www.mindsmapped.com/courses/software-development/online-java-training-for-beginners/
TECHNIQUES FOR COMPONENT REUSABLE APPROACHcscpconf
To find out best reusable component is a difficult task for the user. The keyword based approach
does not provide accurate result, which is largely used in descriptive methods for component
retrieval. The keyboard based procedure is used for descriptive procedure broadly, it produces
the result is too formless. For retrieval approach of component, to make them as reusable smart
environment is used. In keyword search region, this will list out the components, the user must
select appropriate component manually. The class diagram provides the information about
structural description and contents of class effectively. That is class name, attributes, relationships, behavior operations and generalization etc. Repository is used for this information; this search result is better and produces high accuracy whenever it is compared with keyboard based search procedure
DETECTION AND REFACTORING OF BAD SMELL CAUSED BY LARGE SCALEijseajournal
Bad smells are signs of potential problems in code. Detecting bad smells, however, remains time
consuming for software engineers despite proposals on bad smell detection and refactoring tools. Large
Class is a kind of bad smells caused by large scale, and the detection is hard to achieve automatically. In
this paper, a Large Class bad smell detection approach based on class length distribution model and
cohesion metrics is proposed. In programs, the lengths of classes are confirmed according to the certain
distributions. The class length distribution model is generalized to detect programs after grouping.
Meanwhile, cohesion metrics are analyzed for bad smell detection. The bad smell detection experiments of
open source programs show that Large Class bad smell can be detected effectively and accurately with this
approach, and refactoring scheme can be proposed for design quality improvements of programs.
DevLabs Alliance Top 20 Software Testing Interview Questions for SDET - by De...DevLabs Alliance
DevLabs Alliance Software Testing Interview Questions for SDET will help SDETs to prepare for their interviews. Learn top 20 questions with their answers for Software Testing which are majorly asked in interview for SDET role.
20 most important java programming interview questionsGradeup
These questions are prepared by Java Programming Experts and solutions to these programs are asked during job interviews. Knowing solution to these questions helps you in getting a job.
Mark Richards is a serial entrepreneur who loves helping other turn their ideas into real products or services. One thing is particularly fascinated by is the development of these ideas. Where do they come from? How can we continue coming up with good ideas?
A STRUCTURAL APPROACH TO IMPROVE SOFTWARE DESIGN REUSABILITYcscpconf
Software reuse become a very promising area that has many benefits such as reducing costs,
time, and most importantly, increasing quality of software. However, the concept of reuse is not
only related to implementation level, in fact, it can be included in the earlier stages of the
software development life cycle such as design stage. Adopting reuse at this stage provides
many benefits such as increasing productivity, saving time and reducing cost of software
development.
Accordingly, this paper presents the concept of reuse at design level in more details. As well as,
it proposes an approach to improve the reusability of software design using the directed graph
concept. This leads to produce a design to be considered as reusable components which can be
adapted in many software systems.
We explained about important concepts such as OOPs, Data types, Variables, Constants, Constructors, Interfaces, Packages, Exceptional handling, Applets, Streams, Serialization, Multithreading, Collection Frameworks, Network Programming, Design Patterns, String handling and JVM.
Effective Feature Selection for Feature Possessing Group Structurerahulmonikasharma
Feature selection has become an interesting research topic in recent years. It is an effective method to tackle the data with high dimension. The underlying structure has been ignored by the previous feature selection method and it determines the feature individually. Considering this we focus on the problem where feature possess some group structure. To solve this problem we present group feature selection method at group level to execute feature selection. Its objective is to execute the feature selection in within the group and between the group of features that select discriminative features and remove redundant features to obtain optimal subset. We demonstrate our method on data sets and perform the task to achieve classification accuracy.
Object Oriented Programming For Engineering Students as well as for B.Tech -IT. Covers Almost All From The Basics.
For more:
Google Search:: Prabhaharan Ellaiyan
IJRET : International Journal of Research in Engineering and Technology is an international peer reviewed, online journal published by eSAT Publishing House for the enhancement of research in various disciplines of Engineering and Technology. The aim and scope of the journal is to provide an academic medium and an important reference for the advancement and dissemination of research results that support high-level learning, teaching and research in the fields of Engineering and Technology. We bring together Scientists, Academician, Field Engineers, Scholars and Students of related fields of Engineering and Technology
International Journal of Engineering Research and Applications (IJERA) is an open access online peer reviewed international journal that publishes research and review articles in the fields of Computer Science, Neural Networks, Electrical Engineering, Software Engineering, Information Technology, Mechanical Engineering, Chemical Engineering, Plastic Engineering, Food Technology, Textile Engineering, Nano Technology & science, Power Electronics, Electronics & Communication Engineering, Computational mathematics, Image processing, Civil Engineering, Structural Engineering, Environmental Engineering, VLSI Testing & Low Power VLSI Design etc.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Building RAG with self-deployed Milvus vector database and Snowpark Container...Zilliz
This talk will give hands-on advice on building RAG applications with an open-source Milvus database deployed as a docker container. We will also introduce the integration of Milvus with Snowpark Container Services.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Full-RAG: A modern architecture for hyper-personalizationZilliz
Mike Del Balso, CEO & Co-Founder at Tecton, presents "Full RAG," a novel approach to AI recommendation systems, aiming to push beyond the limitations of traditional models through a deep integration of contextual insights and real-time data, leveraging the Retrieval-Augmented Generation architecture. This talk will outline Full RAG's potential to significantly enhance personalization, address engineering challenges such as data management and model training, and introduce data enrichment with reranking as a key solution. Attendees will gain crucial insights into the importance of hyperpersonalization in AI, the capabilities of Full RAG for advanced personalization, and strategies for managing complex data integrations for deploying cutting-edge AI solutions.
Essentials of Automations: The Art of Triggers and Actions in FMESafe Software
In this second installment of our Essentials of Automations webinar series, we’ll explore the landscape of triggers and actions, guiding you through the nuances of authoring and adapting workspaces for seamless automations. Gain an understanding of the full spectrum of triggers and actions available in FME, empowering you to enhance your workspaces for efficient automation.
We’ll kick things off by showcasing the most commonly used event-based triggers, introducing you to various automation workflows like manual triggers, schedules, directory watchers, and more. Plus, see how these elements play out in real scenarios.
Whether you’re tweaking your current setup or building from the ground up, this session will arm you with the tools and insights needed to transform your FME usage into a powerhouse of productivity. Join us to discover effective strategies that simplify complex processes, enhancing your productivity and transforming your data management practices with FME. Let’s turn complexity into clarity and make your workspaces work wonders!
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
How and when to flatten java classes
1. International Journal of Computer Science, Engineering and Information Technology (IJCSEIT), Vol. 4, No.2, April 2014
DOI : 10.5121/ijcseit.2014.4207 73
HOW AND WHEN TO FLATTEN JAVA CLASSES?
Jehad Al Dallal
Department of Information Science, P.O. Box 5969, Safat 13060, Kuwait
ABSTRACT
Improving modularity and reusability are two key objectives in object-oriented programming. These
objectives are achieved by applying several key concepts, such as data encapsulation and inheritance. A
class in an object-oriented system is the basic unit of design. Assessing the quality of an object-oriented
class may require flattening the class and representing it as it really is, including all accessible inherited
class members. Thus, class flattening helps in exploring the impact of inheritance on improving code
quality. This paper explains how to flatten Java classes and discusses the relationship between class
flattening and some applications of interest to software practitioners, such as refactoring and indicating
external quality attributes.
KEYWORDS
Object-oriented design, inheritance, internal quality attribute, external quality attribute, class flattening
1. INTRODUCTION
Object-oriented programming paradigm forces the implementation of several key features, such
as data encapsulation and inheritance. Properly implementing these two object-oriented concepts
results in high-quality systems [1]. A class in an object-oriented system is the basic unit of design,
and it encapsulates a set of attributes and methods. Data encapsulation refers to packing the
strongly related attributes and methods within an object of a class and enforcing accessibility
restrictions to these attributes and methods. Inheritance is a mechanism that allows for
implementing the is-a relationship. Instead of redefining the attributes and methods that are
included in other classes, a class can inherit these attributes and methods and only implement its
unique attributes and methods, which results in reducing code redundancy and improving code
testability and maintainability [2]. Representing a class with its inherited attributes and methods is
called class flattening [3].
Researchers have divided class quality attributes into internal and external categories [4]. External
quality attributes are attributes that indicate the quality of the class based on factors that cannot be
measured using only knowledge of the software artifacts. For example, class maintainability
cannot be measured unless the class is actually maintained. Similarly, class reusability cannot be
measured unless the class is actually reused. It is difficult to anticipate the number of classes that
will reuse the class in the future or to measure the effort that is required to maintain the class. On
the other hand, internal class quality attributes, such as size, coupling, and cohesion, are attributes
that can be measured based on only the knowledge of class artifacts. The internal quality
attributes are not of interest for software practitioners unless they are used to indicate external
quality attributes or perform activities of interest, such as refactoring [4].
2. International Journal of Computer Science, Engineering and Information Technology (IJCSEIT), Vol. 4, No.2, April 2014
74
Researchers have identified several external quality attributes, such as adaptability, reusability,
understandability, maintainability, testability, and completeness, as somehow related to internal
quality attributes [5]. Adaptability refers to the extent to which software or part of it adapts to
change in environments other than those for which it was specifically designed. Reusability refers
to the ease with which a component can be used in building other components. Understandability,
maintainability, and testability refer to the ease with which a given piece of software can be
understood, maintained, and tested, respectively. Completeness refers to the extent to which a
piece of software is complete, in terms of capabilities.
In the context of this paper, we are concerned with whether a software engineer must consider
class flattening before using size, cohesion, and coupling metrics to indicate the adaptability,
reusability, understandability, maintainability, testability, and completeness of a subclass. We
explain how to perform class flattening for Java classes. Our explanation considers the related key
concepts of object-oriented programming, such as data encapsulation, overriding, and
overloading. In addition, we discuss whether it is better to apply the class flattening process when
using the metrics that measure the internal quality attributes in applications of interest for
software practitioners, including refactoring and indicating external quality attributes. As a result,
the paper answers the following two research questions:
RQ1: How to flatten java classes?
RQ2: When to flatten Java classes?
This paper is organized as follows. Section 2 reviews related work. Section 3 explains how to
flatten Java classes. Section 4 discusses the applications of class flattening. Finally, Section 5
concludes the paper and discusses future work.
2. RELATED WORK
Bieman and Kang [6] proposed three options for inherited methods and attributes when
performing cohesion analysis. The options are (1) including both, (2) excluding both, and (3)
including attributes and excluding methods. Briand et al. [7] added the fourth option, which is
excluding attributes and including methods. Some authors [6, 7, 8, 9] theoretically addressed the
influence of inheritance on their proposed metrics and discussed whether to consider inheritance
in the calculation of cohesion. However, they left the empirical investigation of this issue open for
further research. Beyer et al. [3] studied the impact of inheritance on class size, cohesion, and
coupling. However, their study has several limitations. First, they used relatively small numbers
of classes in their empirical study, which reduces the confidence in their results. Second, they
examined only one option of inheritance, which is including both inherited attributes and
methods. Third, they considered the impact of inheritance on only five quality metrics. Fourth,
they did not discuss the impact of class flattening on the applications of interest for software
practitioners, such as refactoring and indicating external quality attributes. Chhikara et al. [10]
represented a more limited analysis for the impact of inheritance on quality attributes. They
considered four different designs of an artificial class example, measured the quality of each
design using the six metrics proposed by Chidamber and Kemerer [11], and compared the
obtained quality values. They found that the design with the best inheritance architecture has the
best quality values. Several researchers empirically explored the impact of internal quality
attributes on external ones [12, 13, 14, 15, 16, 17, 18, 19, 20]. This paper extends our conference-
based paper [21] by providing more details regarding the methodology required to perform the
class flattening and elaborating more on the class flattening applications.
3. International Journal of Computer Science, Engineering and Information Technology (IJCSEIT), Vol. 4, No.2, April 2014
75
3. HOW TO FLATTEN JAVA CLASS
This section is related to RQ1 and it explains how to consider Java semantics when performing
class flattening process. Inheritance is a key concept in object-oriented programming.
Implementing this concept implies distributing the features among the classes that have
inheritance relations. Generally, a subclass inherits the members of its direct and transitive
superclasses. The members of a class are its attributes and methods. A subclass c1 transitively
inherits a superclass c2 when the subclass c1 directly inherits a superclass c3 that directly or
transitively inherits the superclass c2. Syntactically, Java reserves the keyword extends to indicate
the inheritance relation and allows for single inheritance only. By default, a class without a
declared superclass inherits the Object class. Flattening a class refers to the process of
representing the class as it really is, which means considering all of its inherited attributes and
methods [3]. Java has some semantics that must be accounted for when performing class
flattening. These semantics are related to data encapsulation, overriding, overloading, and
dynamic binding concepts.
3.1. Inheritance Related Concepts in Java
Java provides four accessibility levels for class members: public, package, protected, and private.
A subclass can directly access its superclass members for any accessibility level except for
private. Private members in a class can only be directly accessed within the class in which they
are declared. Typically, developers are advised to declare the attributes to be private and make
them accessible only through access methods (i.e., setters and getters). In this paper, we refer to
the private attributes and methods as invisible attributes and methods. The rest of the attributes
and methods are visible.
In Java, attribute overriding occurs when an attribute of a subclass has the same name as an
attribute in the direct or transitive superclass, regardless of the types of the two attributes. In this
case, the subclass can access the superclass attribute either indirectly through the access methods
of the attribute or directly by using the keyword super (given that the superclass attribute is not
declared private). Method overriding occurs when a method in the subclass and a method in the
superclass have identical signatures (i.e., method name and types, number, and ordering of the
parameters). Similar to the overridden attributes, overridden methods can be accessed indirectly
by calling a method (in the superclass) that invokes the overridden method or by using the
keyword super. It is important to note that Java does not allow overriding an attribute when the
attribute is declared static in either the subclass or the superclass. That is, both of the attributes
must be similarly declared as either static or nonstatic. The same constraint applies for method
overriding. Final attributes and methods cannot be overridden.
Overloading refers to the existence of two or more methods with the same names but different
numbers, types, or ordering of parameters. The methods can be within the same class or in
different classes with inheritance relations. In other words, Java allows for a method in a subclass
to overload a method in a superclass. Dynamic method binding refers to resolving the references
to subclass methods at runtime. The class flattening considered in this paper does not consider
dynamic method binding because our analysis is performed statically, whereas studying the
impact of dynamic method binding requires analyzing the classes dynamically. In the following,
we will discuss the impact of considering these Java concepts on attribute and method flattening.
Attribute flattening refers to the process of pulling down the attributes of the superclass to the
subclass during the class flattening process. Similarly, method flattening refers to the process of
pulling down the methods of the superclass to the subclass during the class flattening process. In
case a chain of superclasses exists, class flattening is applied for each pair of subclass and
4. International Journal of Computer Science, Engineering and Information Technology (IJCSEIT), Vol. 4, No.2, April 2014
76
superclass, starting from the subclass that inherits the superclass with no declared superclass. For
example, if class c1 inherits class c2, which in turn inherits class c3, then class flattening will be
applied for class c2 first. The resulting flattened version of class c2 will be used in the class
flattening process of class c1.
3.2. Attribute Flattening
Nonoverridden attributes can be either visible or invisible. In the attribute flattening process, the
nonoverridden attributes that are visible must be pulled down from the superclass to the subclass
because these attributes are accessible through the subclass. A nonoverridden attribute that is
invisible can be either accessed by some methods in the superclass or not. In the former case, the
attribute must be pulled down to the subclass in the flattening process unless none of the methods
that access the attribute in the superclass are pulled down to the subclass in the method flattening
process. A compilation error will result if the invisible attribute is not pulled down to the
subclass, and, at the same time, a method that accesses the attribute is pulled down to the subclass
in the flattening process. In the flattening process, the nonoverridden attribute that is declared
private will not be pulled down to the subclass if the attribute is not accessed by any of the
methods in the superclass. Such an attribute is invisible and inaccessible. The existence of such an
attribute is syntactically correct but meaningless.
Regardless of its visibility, an overridden attribute must be renamed and pulled down to the
subclass if it is accessed by some methods that are pulled down to the subclass in the flattening
process; otherwise, the flattened class will have a compilation error. The pulled down methods
that access the pulled down attribute and the original subclass code that accesses the pulled down
attribute using the super keyword must be modified to refer to the new name of the attribute.
Otherwise, the pulled down methods or the subclass code will be incorrectly accessing the
overriding attributes instead of the overridden ones. On the other hand, if the overridden attribute
is visible and it is not accessed by any of the methods in the superclass, then the attribute must be
renamed and pulled down to the subclass. In this case, the attribute is pulled down because it was
allowed to use the keyword super to access the attribute in the original version of the subclass.
The attribute is renamed to avoid a naming conflict, which causes a compilation error. The
subclass code that accesses the pulled down attribute must be modified to refer to the new name
of the attribute. Finally, an overridden attribute that is invisible will not be pulled down to the
subclass if the attribute is not accessed by any of the methods that are pulled down during the
flattening process. As discussed above, this attribute is invisible and inaccessible, and its
existence in the superclass indicates an anomaly case.
In summary, unless the attribute is invisible and not accessed by any of the superclass methods
that are pulled down during the flattening process, the attribute must be pulled down to the
subclass during the flattening process. The pulled down overridden attributes must be renamed,
and the corresponding code must be modified.
3.3. Method Flattening
The above discussion regarding attribute flattening is also applicable for the superclass methods
considered in the method flattening process. That is, invisible methods that are not accessed by
any of the visible methods of the superclass must not be pulled down to the subclass during the
class flattening process. These methods are meaningless. All of the other visible and invisible
methods must be pulled down to the subclass for the same reasons mentioned above regarding the
attributes. Pulled down overridden methods must be renamed, and the corresponding code must
5. International Journal of Computer Science, Engineering and Information Technology (IJCSEIT), Vol. 4, No.2, April 2014
77
be modified. The diagram given in Figure 1 summarizes the different possibilities, discussed
above, and the corresponding flattening actions.
Figure 1. The different possibilities of the attribute or method cases and the corresponding flattening
actions
4. WHEN TO APPLY CLASS FLATTENING
This section is related to RQ2 and it discusses whether class flattening must be performed before
assessing class quality. The considered quality attributes include adaptability, reusability,
understandability, maintainability, completeness, and testability. In addition, we discuss whether
class flattening must be performed before applying several refactoring activities.
A subclass cannot be moved alone to a new environment. Instead, all of the direct and indirect
superclasses must be also moved with the subclass to the new environment. Therefore, when
studying the adaptability of a subclass, the code of the direct and indirect superclasses must be
considered as well. Similarly, the reusability of the direct and indirect superclasses must be
considered when reusing a subclass. A subclass cannot be understood and maintained unless the
direct and indirect superclasses are inspected and analyzed. A subclass is not complete by itself
without the inherited code. Therefore, studying the completeness of a subclass must include
exploring the completeness of the code of the subclass and its superclasses altogether. As a result,
none of these applications requires solely analyzing or exploring the code within the subclass;
they also require the analysis and exploration of the direct and indirect superclasses. Therefore, it
is expected that if the internal quality metrics are applied on the subclasses without considering
the inherited attributes and methods, then the obtained quality values will provide incorrect
indications for the external quality attributes. However, empirical studies are required to approve
or disapprove this expectation.
Object-oriented testing is performed at several levels. At the class level, the code within the class
is tested. At the cluster level, the relations between related classes are tested. Therefore, we
expect that when applying the internal quality metrics to the subclasses without being flattened,
the values obtained can be somehow used to indicate the class testability. To indicate the
testability of classes with inheritance relations (i.e., testing at the cluster level), software
engineers must consider the flattened versions of the subclasses.
6. International Journal of Computer Science, Engineering and Information Technology (IJCSEIT), Vol. 4, No.2, April 2014
78
Refactoring is an application of interest for software practitioners. It refers to the process of
restructuring software source code to enhance its quality without affecting its external behavior
[22]. Fowler [22] identified several refactoring scenarios such as Extract Class, Extract Subclass,
Extract Superclass, and the Move Method. In the Extract Class refactoring activity, a class with
the association relation to the original class is extracted. In the Extract Subclass refactoring
activity, a subclass is created to include a subset of the features of the original class. In the Extract
Superclass refactoring activity, a superclass is created to include the common features of several
classes. In the Move Method refactoring activity, a method is moved to the class that uses the
method the most. Several techniques are proposed in the literature to identify the refactoring
opportunities and to perform the refactoring activities. Some of these techniques are based on
measuring the code’s internal quality attributes [23, 9]. It is expected that these techniques will
not function properly if the flattened version of the classes are considered. For example, assume
that a software engineer would like to test whether a class c1 is in need of Extract Subclass
refactoring and that this class of interest is a subclass of another class c2. The flattened version of
class c1 will almost completely include the code of both classes c1 and c2 (with the constraints
discussed in Section 3). Therefore, if the software engineer applies the technique that indicates
whether class c1 is in need of refactoring on the flattened version of c1, then the technique will
incorrectly indicate that the class is in need of Extract Subclass refactoring. As a result, when
using refactoring techniques that are based on assessing the internal quality attributes, the
software engineer must pay attention to the impact of class flattening on the intended refactoring
activity. Otherwise, incorrect refactoring decisions will be taken.
5. CONCLUSIONS AND FUTURE WORK
This paper demonstrates how to flatten Java classes and explains which of the superclass
attributes and methods must be considered in class flattening. It shows how to perform attribute
and method flattening to obtain different views of the class that inherits other classes. We argued
that it is better to measure the internal quality attributes using the flattened versions of the classes
when using the resulting quality values to indicate the class adaptability, reusability,
understandability, and maintainability. In contrast, it is better to use the original versions of the
classes when using the resulting quality values in class refactoring processes or to indicate the
class testability. To prove or disapprove our theoretically based expectations, in the future, we
plan to empirically study the impact of class flattening when using the internal quality attributes
to indicate the external quality attributes.
ACKNOWLEDGEMENTS
The author would like to acknowledge the support of this work by Kuwait University Research
Grant QI02/13.
REFERENCES
[1] M. Fayed & M. Laitinen, (1998) “Transition to Object-Oriented Software Development”, John Wiley
& Sons, 1st edition.
[2] F. Sheldon, K. Jerath, & H. Chung, (2002) “Metrics for maintainability of class inheritance
hierarchies”, Journal of Software Maintenance and Evolution: Research and Practice, Vol. 14, No. 3,
pp 147-160
[3] D. Beyer, C. Lewerentz , & F. Simon, (2001) “Impact of inheritance on metrics for size, coupling, and
cohesion in object oriented”, The 10th International Workshop on Software Measurement: New
Approaches in Software Measurement, Berlin, pp 1-17.
7. International Journal of Computer Science, Engineering and Information Technology (IJCSEIT), Vol. 4, No.2, April 2014
79
[4] S. Morasca,(2009) “A probability-based approach for measuring external attributes of software
artifacts”, The 3rd International Symposium on Empirical Software Engineering and Measurement,
Florida, USA.
[5] M. Alshayeb, (2009) “Empirical investigation of refactoring effect on software quality”, Information
and Software Technology, Vol. 51, No. 9, pp1319-1326.
[6] J. Bieman & B. Kang, (1995) “Cohesion and reuse in an object-oriented system”, Proceedings of the
1995 Symposium on Software reusability, Seattle, Washington, United States, pp 259-262.
[7] L. Briand, J. Daly, & J. Wüst, (1998) “A unified framework for cohesion measurement in object-
oriented systems”, Empirical Software Engineering - An International Journal, Vol. 3, No.1, pp 65-
117.
[8] J. Al Dallal & L. Briand, (2010) “An object-oriented high-level design-based class cohesion metric”,
Information and Software Technology, Vol. 52, No. 12, pp 1346-1361.
[9] J. Al Dallal & L. Briand, (2012) “A Precise method-method interaction-based cohesion metric for
object-oriented classes”, ACM Transactions on Software Engineering and Methodology (TOSEM),
Vol. 21, No. 2, pp 8:1-8:34.
[10] A. Chhikara, R. Chhillar, & S. Khatri, (2011) “Evaluating the impact of different types of inheritance
on the object oriented software metrics”, International Journal of Enterprise Computing and Business
Systems, Vol. 1, No. 2, pp 1-7.
[11] S. Chidamber & C. Kemerer, (1994) “A Metrics suite for object Oriented Design”, IEEE Transactions
on Software Engineering, Vol. 20, No. 6, pp 476-493.
[12] J. Al Dallal, (2011) “Improving the applicability of object-oriented class cohesion metrics”,
Information and Software Technology, Vol. 53, No. 9, pp 914-928.
[13] J. Al Dallal, (2011) “Measuring the discriminative power of object-oriented class cohesion metrics”,
IEEE Transactions on Software Engineering, Vol. 37, No. 6, pp 788-804.
[14] J. Al Dallal, (2012) “The impact of accounting for special methods in the measurement of object-
oriented class cohesion on refactoring and fault prediction activities”, Journal of Systems and
Software, Vol. 85, No. 5, pp 1042-1057.
[15] J. Al Dallal, (2012) “Fault prediction and the discriminative powers of connectivity-based object-
oriented class cohesion metrics”, Information and Software Technology, Vol. 54, No. 4, pp 396-416.
[16] J. Al Dallal, (2012) “The impact of inheritance on the internal quality attributes of Java classes”,
Kuwait Journal of Science and Engineering, Vol. 39, No. 2A, pp 131-154.
[17] J. Al Dallal, (2012) “Constructing models for predicting extract subclass refactoring opportunities
using object-oriented quality metrics”, Information and Software Technology, Vol. 54, No. 10, pp
1125-1141.
[18] J. Al Dallal, (2013) ‘Incorporating transitive relations in low-level design-based class cohesion
measurement”, Software: Practice and Experience, Vol. 43, No. 6, pp 685-704.
[19] J. Al Dallal, (2013) “Object-oriented class maintainability prediction using internal quality attributes”,
Information and Software Technology, Vol. 55, No. 11, pp 2028-2048.
[20] J. Al Dallal & S. Morasca, (2012) “Predicting object-oriented class reuse-proneness using internal
quality attributes”, Empirical Software Engineering, in press.
[21] J. Al Dallal, (2014) “Flattening Java classes: methodology and applications”, 4th World Conference
on Innovation and Computer Sciences (INSODE2014), Rome, Italy.
[22] M. Fowler, (1999) “Refactoring: improving the design of existing code”, Addison-Wesley Longman
Publishing Co., Inc., Boston, MA.
[23] Y. Kosker, B. Turhan, & A. Bener, (2009) “An expert system for determining candidate software
classes for refactoring”, Expert Systems with Applications, Vol. 36, No. 6, pp 10000-10003.
Author
Jehad Al Dallal received his PhD in Computer Science from the University of Alberta in Canada and was
granted the award for best PhD researcher. He is currently working at Kuwait University in the
Department of Information Science as an Associate Professor and Department Chairman. Dr. Al Dallal
has completed several research projects in the areas of software testing, software metrics, and
communication protocols. In addition, he has published more than 80 papers in reputable journals and
conference proceedings. Dr. Al Dallal was involved in developing more than 20 software systems. He
also served as a technical committee member of several international conferences and as an associate
editor for several refereed journals.