AndroLib is a search-based approach for recommending libraries for Android apps. It uses NSGA-II to generate a set of non-dominated library recommendation solutions based on three objectives: maximizing recommended library co-usage, maximizing library functional diversity, and maximizing reuse from successful apps. This addresses limitations of existing approaches which do not customize recommendations for Android or consider libraries together. An evaluation compares AndroLib to state-of-the-art techniques to show it achieves more accurate recommendations.
Lessons Learned: Scala and its EcosystemPetr Hošek
This presentation is motivated by the continuous growth of Scala language popularity thanks to many new concepts it offers. Therefore, it makes a perfect sense to take a further insight on this language. Beside the language itself, its ecosystem is also very important. That is why I will focus on the Scala ecosystem in this presentation.
Continuous delivery with jenkins pipelines @devopsdays cairoRoman Pickl
This talk demonstrates how a continuous delivery deployment pipeline can be set up harnessing jenkins 2’s Pipeline as Code features as well as its new Blue Ocean User Experience.
Lessons Learned: Scala and its EcosystemPetr Hošek
This presentation is motivated by the continuous growth of Scala language popularity thanks to many new concepts it offers. Therefore, it makes a perfect sense to take a further insight on this language. Beside the language itself, its ecosystem is also very important. That is why I will focus on the Scala ecosystem in this presentation.
Continuous delivery with jenkins pipelines @devopsdays cairoRoman Pickl
This talk demonstrates how a continuous delivery deployment pipeline can be set up harnessing jenkins 2’s Pipeline as Code features as well as its new Blue Ocean User Experience.
Architecting the Future: Abstractions and Metadata - STL SilverLiningsDaniel Barker
Kubernetes and Docker are two of the top open source projects, and they’re built around abstractions and metadata. These two concepts are the key to architecting in the future. Come with me as I dig a little deeper into these concepts within k8s and Docker and provide some examples from my own work on Deployment Pipelines.
Solum - OpenStack PaaS / ALM - Austin OpenStack summitdevkulkarni
Solum is a native Platform-as-a-service for OpenStack providing capabilities for application lifecycle management (testing, building, deploying, scaling).
This presentation is motivated by the continuous growth of Scala language popularity thanks to many new concepts it offers. Therefore, it makes a perfect sense to take a further insight on this language. Beside the language itself, its ecosystem is also very important. That is why I will focus on the Scala ecosystem in this presentation.
Continuous delivery with jenkins pipelines @devops pro moscow Roman Pickl
This talk demonstrates how a continuous delivery deployment pipeline can be set up harnessing jenkins 2’s Pipeline as Code features as well as its new Blue Ocean User Experience.
When the daily duty of delivering working software is done with ease, and also secondary tasks like working tests are done well, there’s always more work waiting at the ‘nice to have’ priority level. Things like code style, valid Composer files, updated dependencies or various other meta data that isn’t at all mission critical, but always provides a certain level of annoyance if not maintained properly.
I’ll show you our way how to deal with such a situation when maintaining about 140 distinct repositories with PHP software. At this scale automation is the only choice, and we not only do it for testing, but for these maintenance tasks as well. We have created a single point of attack from where we can influence all our repositories and it’s code, and we do it in a way that is not as intrusive as pre-commit or pre-receive hooks, by using pull requests.
Triple E class DevOps with Hudson, Maven, Kokki/Multiconf and PyDevWerner Keil
At Maersk Line, not only the world's biggest container ships, the 'Triple-E' class vessels were built. Continuous Integration and Delivery on a similar scale using Hudson, Maven and tools like Kokki (similar to Puppet or Chef, but written in Python) are also practiced there.
This session is going to give a brief overview of Multi-Configuration (Matrix) job types used in most projects at Maersk around the globe.
Things are being built and deployed in a heterogenous environment, otherwise probably found only at very large vendors of Public Cloud services like Google or Amazon. Provisioning of various OS is automated through Vagrant.
Management and Planning of all tasks and 'Sprints' is following Agile principles, especially DevOps style Kanban. Where possible planned and controlled by Eclipse-based tools such as Mylyn Connectors accessing planning tools like TeamConcert, Xplanner or Mantis. While feature projects use Eclipse for Java or Scala/Play!, the DevOps teams use PyDev for Jython/WSTL or Python development.
Architecting the Future: Abstractions and Metadata - CodeStockDaniel Barker
Kubernetes and Docker are two of the top open source projects, and they’re built around abstractions and metadata. These two concepts are the key to architecting in the future. Come with me as I dig a little deeper into these concepts within k8s and Docker and provide some examples from my own work on Deployment Pipelines.
Embedded Webinar #12 “GloDroid or Boosting True Open Source Android Stack Dev...GlobalLogic Ukraine
This webinar by Roman Stratiienko (Architect, Technology, GlobalLogic) was delivered at Embedded Community Webinar #12 on May 26, 2021.
Imagine that you have the latest version of Android, a single-board computer and a whole year of free time to experiment. What would you do? Would you try to run Android on it? And now imagine that this has already been done: we present to your attention GloDroid! This is a safe (no backdoor) and inexpensive open source solution that works right out of the box without any additional manipulation. GloDroid is a project to port and adapt open source Android applications to work on widely available single-board computer platforms.
More details and presentation: https://www.globallogic.com/ua/about/events/embedded-community-webinar-12/
Migration Spring Boot PetClinic REST to Quarkus 1.2.0Jonathan Vila
In this presentation I will introduce Quarkus and also show which were the steps followed to migrate Spring PetClinic application to Quarkus using the standard libraries : resteasy, microprofile metrics, hibernate, openapi, .... GraalVM
You may think that an efficient versioning, branch and merge solution is all that we need to manage our DITA source files and releases effectively. There are subtle differences however, between configuration management (versioning, branch and merge) and release management.
After a thorough analysis of our requirements for DITA release management, the presenter will share his knowledge of software release management and identify the methods and tools that are widely used by software developers and that are as equally applicable in the information development world.
Fifteen minutes will be reserved at the end or the webinar for questions and to discuss your own release management challenges with Frank Shipley, Componize Chief Technical Officer.
We still have a lot to learn about DITA release management, so why not start by learning from people who have been doing something similar, successfully, for years!
Translating Apereo Software: A Case Study using Sakai and Transifexyuji tokiwa
Web based translation support systems such as Crowdin and Transifex make it easy for
regional Sakai communities to collaborate globally in translation. In the fall and winter of
2014, Spanish Sakai community and Japanese Sakai community are collaborating in
translation of Sakai 10 using Transifex as a common translation platform. This
collaboration brought a lot of things to two communities. For instance, to develop a tool to
import resource bundle files to Transifex in a specific manner, we can have an ease of use
platform to translate modular designed software such as Sakai. And this platform will be
extended for every regional community and for every project in Apereo community. During
this session we will talk about followings; (1) Overview (2) Benefits for Apereo
community (3) Context dependent translation by gettext Portable Object (4) Community
translation strategy in Sakai Spanish Users (S2U) (5) Automatized process by Jenkins
Architecting the Future: Abstractions and Metadata - STL SilverLiningsDaniel Barker
Kubernetes and Docker are two of the top open source projects, and they’re built around abstractions and metadata. These two concepts are the key to architecting in the future. Come with me as I dig a little deeper into these concepts within k8s and Docker and provide some examples from my own work on Deployment Pipelines.
Solum - OpenStack PaaS / ALM - Austin OpenStack summitdevkulkarni
Solum is a native Platform-as-a-service for OpenStack providing capabilities for application lifecycle management (testing, building, deploying, scaling).
This presentation is motivated by the continuous growth of Scala language popularity thanks to many new concepts it offers. Therefore, it makes a perfect sense to take a further insight on this language. Beside the language itself, its ecosystem is also very important. That is why I will focus on the Scala ecosystem in this presentation.
Continuous delivery with jenkins pipelines @devops pro moscow Roman Pickl
This talk demonstrates how a continuous delivery deployment pipeline can be set up harnessing jenkins 2’s Pipeline as Code features as well as its new Blue Ocean User Experience.
When the daily duty of delivering working software is done with ease, and also secondary tasks like working tests are done well, there’s always more work waiting at the ‘nice to have’ priority level. Things like code style, valid Composer files, updated dependencies or various other meta data that isn’t at all mission critical, but always provides a certain level of annoyance if not maintained properly.
I’ll show you our way how to deal with such a situation when maintaining about 140 distinct repositories with PHP software. At this scale automation is the only choice, and we not only do it for testing, but for these maintenance tasks as well. We have created a single point of attack from where we can influence all our repositories and it’s code, and we do it in a way that is not as intrusive as pre-commit or pre-receive hooks, by using pull requests.
Triple E class DevOps with Hudson, Maven, Kokki/Multiconf and PyDevWerner Keil
At Maersk Line, not only the world's biggest container ships, the 'Triple-E' class vessels were built. Continuous Integration and Delivery on a similar scale using Hudson, Maven and tools like Kokki (similar to Puppet or Chef, but written in Python) are also practiced there.
This session is going to give a brief overview of Multi-Configuration (Matrix) job types used in most projects at Maersk around the globe.
Things are being built and deployed in a heterogenous environment, otherwise probably found only at very large vendors of Public Cloud services like Google or Amazon. Provisioning of various OS is automated through Vagrant.
Management and Planning of all tasks and 'Sprints' is following Agile principles, especially DevOps style Kanban. Where possible planned and controlled by Eclipse-based tools such as Mylyn Connectors accessing planning tools like TeamConcert, Xplanner or Mantis. While feature projects use Eclipse for Java or Scala/Play!, the DevOps teams use PyDev for Jython/WSTL or Python development.
Architecting the Future: Abstractions and Metadata - CodeStockDaniel Barker
Kubernetes and Docker are two of the top open source projects, and they’re built around abstractions and metadata. These two concepts are the key to architecting in the future. Come with me as I dig a little deeper into these concepts within k8s and Docker and provide some examples from my own work on Deployment Pipelines.
Embedded Webinar #12 “GloDroid or Boosting True Open Source Android Stack Dev...GlobalLogic Ukraine
This webinar by Roman Stratiienko (Architect, Technology, GlobalLogic) was delivered at Embedded Community Webinar #12 on May 26, 2021.
Imagine that you have the latest version of Android, a single-board computer and a whole year of free time to experiment. What would you do? Would you try to run Android on it? And now imagine that this has already been done: we present to your attention GloDroid! This is a safe (no backdoor) and inexpensive open source solution that works right out of the box without any additional manipulation. GloDroid is a project to port and adapt open source Android applications to work on widely available single-board computer platforms.
More details and presentation: https://www.globallogic.com/ua/about/events/embedded-community-webinar-12/
Migration Spring Boot PetClinic REST to Quarkus 1.2.0Jonathan Vila
In this presentation I will introduce Quarkus and also show which were the steps followed to migrate Spring PetClinic application to Quarkus using the standard libraries : resteasy, microprofile metrics, hibernate, openapi, .... GraalVM
You may think that an efficient versioning, branch and merge solution is all that we need to manage our DITA source files and releases effectively. There are subtle differences however, between configuration management (versioning, branch and merge) and release management.
After a thorough analysis of our requirements for DITA release management, the presenter will share his knowledge of software release management and identify the methods and tools that are widely used by software developers and that are as equally applicable in the information development world.
Fifteen minutes will be reserved at the end or the webinar for questions and to discuss your own release management challenges with Frank Shipley, Componize Chief Technical Officer.
We still have a lot to learn about DITA release management, so why not start by learning from people who have been doing something similar, successfully, for years!
Translating Apereo Software: A Case Study using Sakai and Transifexyuji tokiwa
Web based translation support systems such as Crowdin and Transifex make it easy for
regional Sakai communities to collaborate globally in translation. In the fall and winter of
2014, Spanish Sakai community and Japanese Sakai community are collaborating in
translation of Sakai 10 using Transifex as a common translation platform. This
collaboration brought a lot of things to two communities. For instance, to develop a tool to
import resource bundle files to Transifex in a specific manner, we can have an ease of use
platform to translate modular designed software such as Sakai. And this platform will be
extended for every regional community and for every project in Apereo community. During
this session we will talk about followings; (1) Overview (2) Benefits for Apereo
community (3) Context dependent translation by gettext Portable Object (4) Community
translation strategy in Sakai Spanish Users (S2U) (5) Automatized process by Jenkins
Escaping Dependency Hell: A deep dive into Gradle's dependency management fea...Roberto Pérez Alcolea
Have you been in the situation where your project builds as expected but a few hours later it won’t anymore? Does this include symptoms such as ClassNotFoundError or NoSuchMethodError exceptions? Well, you are not alone, you probably are or have been in ‘Dependency Hell’ and believe me, we all have been there.
It doesn’t matter if you are about to start a green field project or touching an existing one, most likely you will suffer from this at some point in your career. Unfortunately, compilation issues are not the only symptoms of being in ‘Dependency Hell’, another problems are (and not limited to):
- Intentional and unintentional Breaking API changes in libraries
- Multiple components depending on the same module but with different, incompatible, APIs.
- Multiple libraries providing the same feature (multiple logging libraries).
- Incompatible versions of a runtime.
- Misaligned dependencies of a component
- Depending on transitive dependencies that eventually disappear from our projects
This list can be extensive and overwhelming! As a developer I just want my build to work!
Fortunately, Gradle Build Tool Team has heavily invested engineering efforts for many years in their Dependency Management machinery to address these issues from both sides, the consumer of modules but more importantly, better software modeling for library producers.
In this session we will navigate, as library consumers, how we can influence the dependency resolution machinery in Gradle to keep your build in good state and reproducible. In addition, we will explore a few Gradle features to do better software modeling in order to publish good metadata that benefits consumers of our libraries.
Some familiarity with Gradle is recommended but not required.
Repository with examples can be found in https://github.com/rpalcolea/escaping-dependency-hell-talk-demos-2023
About our speaker
Roberto is an experienced software engineer with focus in the JVM ecosystem and developer productivity He has several years of experience using technologies for the JVM.
He's an active maintainer of Netflix Nebula Plugins and occasional contributor to the Gradle Build tool
Currently works at Netflix in the JVM ecosystem team. The JVM Ecosystem Team provides the user experience for JDK lifecycle, dependency management, building, packaging, and publishing JVM-based libraries and applications through providing tools, automation, and guidance to thousands of engineers at Netflix
What java developers (don’t) know about api compatibilityJens Dietrich
The results of a survey aimed to find out what Java developers know about source, binary and behavioural API compatibility. The questions are based on the deployment puzzlers set of questions.
Have you found yourself wondering how to take advantage of what you have developed in the past for current or future projects? Are you tired of copying/pasting then adapting from your previous projects to the new ones? Start developing for the future and contribute to others by developing libraries and sharing them for use. Where do you start? You’ll be guided through this tutorial step by step to include security, tests and all the factors you need to consider when building a library.
If you want to grow up as a DevOps developer you must have to know about these top 10 best DevOps tools in 2020 that will help you to boost your DevOps skills. check out these Top 10 Best Tools in 2020.
Nicholas Gustilo "Clean Android: building great mobile apps"IT Event
Presentation on how to create apps using Clean Architecture (based on real examples).
Including:
- Goals of a clean architecture.
- Use of packages (folder) and naming conventions.
- List of tools and libraries used.
- Use and benefits of using RXJava when developing android application (with examples).
- Use and advantages of model-view-presenter pattern (with examples).
A Tool for Optimizing Java 8 Stream Software via Automated RefactoringRaffi Khatchadourian
Streaming APIs are pervasive in mainstream Object-Oriented languages and platforms. For example, the Java 8 Stream API allows for functional-like, MapReduce-style operations in processing both finite, e.g., collections, and infinite data structures. However, using this API efficiently involves subtle considerations like determining when it is best for stream operations to run in parallel, when running operations in parallel can actually be less efficient, and when it is safe to run in parallel due to possible lambda expression side-effects. In this paper, we describe the engineering aspects of an open source automated refactoring tool called Optimize Streams that assists developers in writing optimal stream software in a semantics-preserving fashion. Based on a novel ordering and typestate analysis, the tool is implemented as a plug-in to the popular Eclipse IDE, using both the WALA and SAFE frameworks. The tool was evaluated on 11 Java projects consisting of ~642 thousand lines of code, where we found that 36.31% of candidate streams were refactorable, and an average speedup of 1.55 on a performance suite was observed. We also describe experiences gained from integrating three very different static analysis frameworks to provide developers with an easy-to-use interface for optimizing their stream code to its full potential.
Porting the NetBeans Java 8 Enhanced For Loop Lambda Expression Refactoring t...Raffi Khatchadourian
Java 8 is one of the largest upgrades to the popular language and framework in over a decade. However, the Eclipse IDE is missing several key refactorings that could help developers take advantage of new features in Java 8 more easily. In this paper, we discuss our ongoing work in porting the enhanced for loop to lambda expression refactoring from the NetBeans IDE to Eclipse. We also discuss future plans for new Java 8 refactorings not found in any current IDE.
Guidelines for Working with Contract Developers in Evergreenloriayre
Slides from presentation on Application Development from Evergreen International Conference 2012. Jed Moffitt also participated in the presentation but he had no slides so these are just the slides from Lori Ayre's portion. Handouts included a sample Development Plan and contract (http://www.slideshare.net/loriayre/development-contract-sample)
This presentation about DevOps will help you understand what is DevOps, how is DevOps different from traditional IT, benefits of DevOps, the lifecycle of DevOps and tools used in DevOps processes. DevOps is one of the most trending IT jobs. It is a collaboration between development and operation teams which enables continuous delivery of applications and services to our end users. However, if you want to become a DevOps engineer, you must have knowledge of various DevOps tools (like Git, Maven, Selenium, Jenkins, Docker, Ansible, Nagios etc.) to achieve automation at each stage which helps in gaining Continuous Development, Continuous Integration, Continuous Testing and Continuous Monitoring in order to deliver a quality product to the client at a very fast pace. Now, let us get started and understand DevOps and does the various DevOps tools work.
Below are the topics explained in this DevOps presentation:
1. What is DevOps?
2. Benefits of DevOps
3. Lifecycle of DevOps
4. Tools in DevOps
Why learn DevOps?
Simplilearn’s DevOps training course is designed to help you become a DevOps practitioner and apply the latest in DevOps methodology to automate your software development lifecycle right out of the class. You will master configuration management; continuous integration deployment, delivery, and monitoring using DevOps tools such as Git, Docker, Jenkins, Puppet, and Nagios in a practical, hands-on and interactive approach. The DevOps training course focuses heavily on the use of Docker containers, a technology that is revolutionizing the way apps are deployed in the cloud today and is a critical skillset to master in the cloud age.
After completing the DevOps training course you will achieve hands-on expertise in various aspects of the DevOps delivery model. The practical learning outcomes of this Devops training course are:
An understanding of DevOps and the modern DevOps toolsets
The ability to automate all aspects of a modern code delivery and deployment pipeline using:
1. Source code management tools
2. Build tools
3. Test automation tools
4. Containerization through Docker
5. Configuration management tools
6. Monitoring tools
Who should take this course?
DevOps career opportunities are thriving worldwide. DevOps was featured as one of the 11 best jobs in America for 2017, according to CBS News, and data from Payscale.com shows that DevOps Managers earn as much as $122,234 per year, with DevOps engineers making as much as $151,461. DevOps jobs are the third-highest tech role ranked by employer demand on Indeed.com but have the second-highest talent deficit.
1. This DevOps training course will be of benefit the following professional roles:
2. Software Developers
3. Technical Project Managers
4. Architects
5. Operations Support
6. Deployment engineers
7. IT managers
8. Development managers
Learn more at https://www.simplilearn.com/cloud-computing/devops-practitioner-certification-training
Understanding Globus Data Transfers with NetSageGlobus
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxrickgrimesss22
Discover the essential features to incorporate in your Winzo clone app to boost business growth, enhance user engagement, and drive revenue. Learn how to create a compelling gaming experience that stands out in the competitive market.
Exploring Innovations in Data Repository Solutions - Insights from the U.S. G...Globus
The U.S. Geological Survey (USGS) has made substantial investments in meeting evolving scientific, technical, and policy driven demands on storing, managing, and delivering data. As these demands continue to grow in complexity and scale, the USGS must continue to explore innovative solutions to improve its management, curation, sharing, delivering, and preservation approaches for large-scale research data. Supporting these needs, the USGS has partnered with the University of Chicago-Globus to research and develop advanced repository components and workflows leveraging its current investment in Globus. The primary outcome of this partnership includes the development of a prototype enterprise repository, driven by USGS Data Release requirements, through exploration and implementation of the entire suite of the Globus platform offerings, including Globus Flow, Globus Auth, Globus Transfer, and Globus Search. This presentation will provide insights into this research partnership, introduce the unique requirements and challenges being addressed and provide relevant project progress.
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planet’s largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Listen to the keynote address and hear about the latest developments from Rachana Ananthakrishnan and Ian Foster who review the updates to the Globus Platform and Service, and the relevance of Globus to the scientific community as an automation platform to accelerate scientific discovery.
A Comprehensive Look at Generative AI in Retail App Testing.pdfkalichargn70th171
Traditional software testing methods are being challenged in retail, where customer expectations and technological advancements continually shape the landscape. Enter generative AI—a transformative subset of artificial intelligence technologies poised to revolutionize software testing.
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTier1 app
Even though at surface level ‘java.lang.OutOfMemoryError’ appears as one single error; underlyingly there are 9 types of OutOfMemoryError. Each type of OutOfMemoryError has different causes, diagnosis approaches and solutions. This session equips you with the knowledge, tools, and techniques needed to troubleshoot and conquer OutOfMemoryError in all its forms, ensuring smoother, more efficient Java applications.
Enterprise Resource Planning System includes various modules that reduce any business's workload. Additionally, it organizes the workflows, which drives towards enhancing productivity. Here are a detailed explanation of the ERP modules. Going through the points will help you understand how the software is changing the work dynamics.
To know more details here: https://blogs.nyggs.com/nyggs/enterprise-resource-planning-erp-system-modules/
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
top nidhi software solution freedownloadvrstrong314
This presentation emphasizes the importance of data security and legal compliance for Nidhi companies in India. It highlights how online Nidhi software solutions, like Vector Nidhi Software, offer advanced features tailored to these needs. Key aspects include encryption, access controls, and audit trails to ensure data security. The software complies with regulatory guidelines from the MCA and RBI and adheres to Nidhi Rules, 2014. With customizable, user-friendly interfaces and real-time features, these Nidhi software solutions enhance efficiency, support growth, and provide exceptional member services. The presentation concludes with contact information for further inquiries.
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...informapgpstrackings
Keep tabs on your field staff effortlessly with Informap Technology Centre LLC. Real-time tracking, task assignment, and smart features for efficient management. Request a live demo today!
For more details, visit us : https://informapuae.com/field-staff-tracking/
Check out the webinar slides to learn more about how XfilesPro transforms Salesforce document management by leveraging its world-class applications. For more details, please connect with sales@xfilespro.com
If you want to watch the on-demand webinar, please click here: https://www.xfilespro.com/webinars/salesforce-document-management-2-0-smarter-faster-better/
Cyaniclab : Software Development Agency Portfolio.pdfCyanic lab
CyanicLab, an offshore custom software development company based in Sweden,India, Finland, is your go-to partner for startup development and innovative web design solutions. Our expert team specializes in crafting cutting-edge software tailored to meet the unique needs of startups and established enterprises alike. From conceptualization to execution, we offer comprehensive services including web and mobile app development, UI/UX design, and ongoing software maintenance. Ready to elevate your business? Contact CyanicLab today and let us propel your vision to success with our top-notch IT solutions.
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns
Unlocking Business Potential: Tailored Technology Solutions by Prosigns
Discover how Prosigns, a leading technology solutions provider, partners with businesses to drive innovation and success. Our presentation showcases our comprehensive range of services, including custom software development, web and mobile app development, AI & ML solutions, blockchain integration, DevOps services, and Microsoft Dynamics 365 support.
Custom Software Development: Prosigns specializes in creating bespoke software solutions that cater to your unique business needs. Our team of experts works closely with you to understand your requirements and deliver tailor-made software that enhances efficiency and drives growth.
Web and Mobile App Development: From responsive websites to intuitive mobile applications, Prosigns develops cutting-edge solutions that engage users and deliver seamless experiences across devices.
AI & ML Solutions: Harnessing the power of Artificial Intelligence and Machine Learning, Prosigns provides smart solutions that automate processes, provide valuable insights, and drive informed decision-making.
Blockchain Integration: Prosigns offers comprehensive blockchain solutions, including development, integration, and consulting services, enabling businesses to leverage blockchain technology for enhanced security, transparency, and efficiency.
DevOps Services: Prosigns' DevOps services streamline development and operations processes, ensuring faster and more reliable software delivery through automation and continuous integration.
Microsoft Dynamics 365 Support: Prosigns provides comprehensive support and maintenance services for Microsoft Dynamics 365, ensuring your system is always up-to-date, secure, and running smoothly.
Learn how our collaborative approach and dedication to excellence help businesses achieve their goals and stay ahead in today's digital landscape. From concept to deployment, Prosigns is your trusted partner for transforming ideas into reality and unlocking the full potential of your business.
Join us on a journey of innovation and growth. Let's partner for success with Prosigns.
Software Engineering, Software Consulting, Tech Lead.
Spring Boot, Spring Cloud, Spring Core, Spring JDBC, Spring Security,
Spring Transaction, Spring MVC,
Log4j, REST/SOAP WEB-SERVICES.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
Into the Box Keynote Day 2: Unveiling amazing updates and announcements for modern CFML developers! Get ready for exciting releases and updates on Ortus tools and products. Stay tuned for cutting-edge innovations designed to boost your productivity.
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdfJay Das
With the advent of artificial intelligence or AI tools, project management processes are undergoing a transformative shift. By using tools like ChatGPT, and Bard organizations can empower their leaders and managers to plan, execute, and monitor projects more effectively.
Enhancing Project Management Efficiency_ Leveraging AI Tools like ChatGPT.pdf
Third-Party Software Library Reuse : From Adoption to Migration
1. Third-Party Software Library Reuse :
From Adoption to Migration
1 ETS Montreal, University of Quebec, Montreal, QC, Canada
2 Rochester Institute of Technology, Rochester, NY, USA
3 Microsoft Corporation, WA, USA
International Conference on Software and Systems Reuse (ICSR), 1-4 December 2020
Ali Ouni 1 Mohamed Wiem Mkaouer 2 Hussein AlRubaye 2,3
2. ● Associate Professor, ETS Montreal, University of Quebec, QC, Canada
● He received his PhD degree from the University of Montreal in 2015
● Software Technology and Intelligence (STI) Research Group: https://ouniali.github.io/
● Research interests
○ Software Re-engineering and modernization
○ Software Maintenance and Evolution
○ Software Quality
○ Empirical Software Engineering
○ Search-based Software Engineering
○ Application of AI to Software Engineering
Who is Ali Ouni?
3. ● Assistant Professor in the Software Engineering Department, Rochester Institute of
Technology, NY, USA.
● He received his PhD in 2016 from the University of Michigan-Dearborn.
● His research interests include
○ software quality
○ systems refactoring
○ model-driven engineering
○ software testing
○ Use computational search and evolutionary algorithms to address several software
engineering problems
Who is Mohamed Wiem Mkaouer?
4. ● Senior Software Engineer at Microsoft Corporation.
● PhD from Rochester Institute of Technology, 2020
● He has 8 successful apps in Google and iOS stores with millions of users who
are using his apps.
● He is working as software developer for 9 years with .NET, C++, and web security
● He have a successfully paid tutorial in Udemy.
● He got Microsoft Most Valuable Professional.
● He is working on research to build tools and algorithms that automate the
process of API Migration.
Who is Hussein AlRubaye?
5. ● What is third party software library?
● Software library adoption
● Software library update
● Software library migration
● Demonstration: Recommending library migration
● Summary and challenges
Outline
5
6. In 1995, . . ., 2018, 2019, 2020, somewhere out there …
A developer is in need of a function, feature ...
My code
My code without
Third-party
libraries
[Credit to @Raula Gaikovina Kula]
6
7. Why write code when you can use a library?
Library
Dependencies
Source Code
Library/package
manager
7
[Credit to @Raula Gaikovina Kula]
8. What is a library API?
Application Program Interface (API) : a set of commands, functions, and
protocols, offered by third-party libraries, which programmers can (re)use
when building software
8
9. Libraries are…
● Useful
○ provide useful services
● Open
○ intended for open-ended set of diverse projects
● Stable
○ provide stability across multiple releases
● Growing
○ evolve from release to release to better meet client needs
Characteristics of libraries
9
Slide reference: https://www.unit5.org
10. ● The Java standard class library is part of any Java development environment
● Its classes are not part of the Java language per se, but we rely on them heavily
● Various classes we've already used (System , Scanner, String) are part of the Java standard class library
● Other class libraries can be obtained through third party vendors, or you can create them yourself
Example: J2SE
Package
java.lang
java.applet
java.awt
javax.swing
java.net
java.util
javax.xml.parsers
Purpose
General support
Creating applets for the web
Graphics and graphical user interfaces
Additional graphics capabilities
Network communication
Utilities
XML document processing
10
Slide reference: https://www.unit5.org
11. ● Consider L the set of libraries, each library 𝑙 ∈ 𝐿 is a standalone library with multiple versions, each version is
implemented and made available for use through function(s). These functions are publicly available in the form
of an API. Let F be the set of functions provided by the interface. i.e., for each 𝑙 ∈ 𝐿, there exist a set of functions
𝑓 ∈ 𝐹 such that 𝑎𝑝𝑖 𝑙 = 𝑓.
Library
11
Slide reference: https://www.unit5.org
12. ● It serves the purpose of providing unique identifiers to libraries. In this
chapter, we study the evolution of libraries that are managed by Apache
Maven, so we adopt its naming scheme:
< 𝐺𝑟𝑜𝑢𝑝𝐼𝐷 >. < 𝐴𝑟𝑡𝑖𝑓𝑎𝑐𝑡𝐼𝐷 >. < 𝑉𝑒𝑟𝑠𝑖𝑜𝑛 >
● e.g., org.apache.maven.1.0.1
● Versioning varies from one organization to another, for instance, Maven uses
the following strategy:
< 𝑚𝑎𝑗𝑜𝑟 >. < 𝑚𝑖𝑛𝑜𝑟 >. < 𝑝𝑎𝑡𝑐ℎ > −< 𝑡𝑦𝑝𝑒 >−< 𝑎𝑡𝑡𝑒𝑚𝑝𝑡 >
Naming Scheme
12
13. ● Let D be the set of dependencies and calls of all functions belonging to F and linking L to the software S. Formally,
for 𝑙 ∈ 𝐿, we define a set of functions 𝑓 ∈ 𝐹 such that, if 𝑙 𝑝 is used by 𝑠 𝑞 (p and q are arbitrary numbers
representing respectively the library and software versions) then we define a set of dependencies 𝑑 ∈ 𝐷 | 𝐷 ⊆
𝐹 | 𝑑𝑒𝑝 𝑙 𝑝, 𝑠 𝑞 = 𝑑 where dep(𝑙 𝑝, 𝑠 𝑞) returns the set of dependencies of 𝑙 𝑝 in 𝑠 𝑞. Note that we assume that a
software 𝑠 𝑞 depends on a library 𝑙 𝑝 if there exists at least one function, offered by 𝑙 𝑝, which is called by 𝑠 𝑞.
Dependency
13
14. ● Changing the library version, with another, typically more recent, one of the same library. Typically, a newer version of a library
maintains its core functionality while extending it by either updating its existing functions or/and by adding new functions. For a
given software S, let 𝑙 𝑝 ∈ 𝐿 be a library belonging to the version 𝑠 𝑞, the upgrade, denoted 𝑙 𝑝 → 𝑙 𝑝+1 requires that all functions of
𝑙 𝑝 are located 𝑙 𝑝+1 unless deprecated. Formally: if 𝑓𝑝 (respectively 𝑓𝑝+1) the functions offered by 𝑙 𝑝 (respectively 𝑙 𝑝+1) then 𝑓𝑝 ,
𝑓𝑝+1 ∈ 𝐹 | 𝑓𝑝 ⊆ 𝑓𝑝+1, expect for when some functions from 𝑓𝑝 might be deprecated or merged.
● 2 Methods:
○ Incremental. The library’s upgrade is reflected by incrementing its version.
○ Repackaging. Just like any regular Java project, libraries are subject to design improvement. This process includes
restructuring class files into multiple packages based on various criteria including their coupling and cohesion, semantic
similarity, collaboration in the functionality.
Library Upgrade
14
15. Incremental
Incremental. Upgrading log4j from 1.2.13 to 1.2.15 in the docx4j project [1].
[1] https://github.com/plutext/docx4j/commit/d1e28e6fbb3b5ed8974572920c0899254abbd49b 15
16. Repackaging
Upgrading jetty-all library in the Apache hive project[1].
[1] https://github.com/apache/hive/commit/191302cf4f9eae5ef51964bdab8d8e859292aa17
16
17. ● Defines the act of replacing one existing library with another newly introduced one(s). During the
migration, all the functions of the retired library are removed or replaced. For a given software S,
let 𝑙 𝑝 ∈ 𝐿 be a library belonging to the software version 𝑠 𝑞 to be replaced by another library 𝑙′ 𝑟 ∈
𝐿 in the next version 𝑠 𝑞+1. The migration process, denoted 𝑙 𝑝 → 𝑙′ 𝑟, is defined by the following
condition:
𝑑𝑒𝑝 𝑙 𝑝, 𝑠 𝑞 ≠ ∅ ∧ 𝑑𝑒𝑝 𝑙′ 𝑟, 𝑠 𝑞 = ∅ ∧ 𝑑𝑒𝑝 𝑙 𝑝, 𝑠 𝑞 ≠ ∅ ∧ 𝑑𝑒𝑝 𝑙′ 𝑟, 𝑠 𝑞 = ∅.
● 2 Methods:
○ Instant. The migration process is considered instant if the replacing library is added and
replaced library is removed simultaneously.
○ Delayed. The migration is considered delayed if, in contrast with the instant migration, the
retired library remains in the project POM file even if it no longer contributes to the
project.
Library Migration
17
18. Instant
Migrating from junit to testng and fest-assert-core in the ps2-parser project[1].
[1] https://github.com/ssindelar/ps2-parser/commit/4e76b35f32011159db321e8a1540d03e004d25e8
18
19. Instant
Replacing junit functions by fest-assert-core functions in the ps2-parser project.
Replacing junit functions by to testng functions in the ps2-parser project.
[1] https://github.com/ssindelar/ps2-parser/commit/4e76b35f32011159db321e8a1540d03e004d25e8
19
21. • Evolving with frameworks is costly
– Struts 2.0.9 and 2.2.3.1
• Upgrading an authentication framework
• A whole week of work
– Linux Debian Distribution
• Upgrading Perl from 5.10 to 5.12 took
• Seven weeks to complete
API Evolution Challenges
Raemaekers et al. (ICSM 2012)
● Once API is released there’s no going back
● Breaking changes are bad news
● Either extend API in next release
● Or provide improved API alongside old API
21
25. Breaking
Changes
Elements removal
Method signature changes
Changes in deprecated elements
Elements addition
Elements deprecationField changes
(Dig and Johnson, ICSM, 2006)
Non Breaking
Changes
API Evolution challenges: Platform API
25(Dig and Johnson, ICSM, 2006)
26. Third-party Software Library reuse life-cycle
Adoption
How to find a useful
library to your
current software
system?
Update
Libraries are in
constant evolution.
How do developers
update their library
dependencies?
Migration
Other competing
libraries can take
the place of a given
library
Retirement
At a given point in time,
some libraries are no
longer maintained and
evolved by its original
devlopers
26
27. Libraries.io monitors 5.5 millionopen source packages
across 37 different package managers (Dec. 2020)
30. Android
3.04 million Android apps available on
Google Play store
>1k apps published everyday
>1.5 billion apps downloaded every
month
https://www.statista.com [Malavolta et al.]
32. Android Arsenal : 7026 free libraries for Android
Android apps development!
32
60% of code in Android apps constitutes sub-
packages from external libraries
90% of Android apps use 5 libraries or more
Android Arsonal
[Q. He et al., TSE 2020]
33. High user expectations
New feature requests
Rapid technology changes
Continuous feedback
Why finding efficient Android libraries is so important?
33
34. ● LibRec (Thung et al., 2013)
○ Association rule mining and collaborative filtering
○ Historic software artifacts usage to determine commonly used libraries
● LibFinder (Ouni et al., 2017)
○ Search-based approach by leverage libraries usage and source code semantic similarity
● LibCUP (Saied et al., 2018)
○ Clustering technique to mine and recommend library co-usage patterns
● CrossRec (Nguyen et al., 2020)
○ Collaborative filtering by relying on the set of dependenciesincluded in the project being developed
● LibSeek (He et al., 2020)
○ Collaborative filtering based on adaptive weighting mechanism to predict Android libraries by
leveraging information about similar third-party libraries and systems.
How researchers tackled this?
34
35. Limitations – problem statement
Not customized
for Android
Despite being good in finding
libraries in desktop software
systems, existing techniques
are not adapted to mobile apps
Individual
recommendations
The main limitation
of these existing
approaches resides in the
fact that libraries are
recommended individually
Library poularity
dilema!
A small fraction of popular
libraries dominates the market while
most other libraries are ill-served. No
chance for new emerging libraries to
be recommended!
✗
35
36. How would you address this problem?
?
? ? ?
?
??
?
?
? ? ??
?
?
?
?
37. OSS Android Apps
& Third-Party Libraries
AndroLib
Data Encoding
Module Library Recommendation Module Libraries Ranking
Module
Android developer
Multi-objective Search-based
Library Recommendation
(NSGA-II)
A B C
AndroLib: proposed approach
37
38. Search algorithm: NSGA-II adaptation
• Encoding of candidate solutions
• Definition of fitness function
• Definition of genetic operators
• Generate initial population
• NSGA-II: Non-dominated Sorting Genetic Algorithm (K. Deb et al., 2002)
38
40. Three objective functions
1. Maximize Recommended Library Co-Usage (RLC)
○ Discover third-party libraries that are commonly used together by other Android apps
2. Maximize Library Functional Diversity (LFD)
○ Diversify the recommended libraries in terms of their functionality based on the library
categories, e.g., image loader, animation, graphics, advertisement, camera, etc.
3. Maximize Reuse from Successful Apps (RSA)
○ Increase the chance of recommending commonly used libraries in apps having high user
rating, while decreasing the chance to recommend those from low rated apps.
Fitness function
40
41. RQ1 (State-of-the-art comparison) How does AndroLib compare with the
state-of-the-art approaches in terms of recommendation accuracy?
Experimental dataset : https://doi.org/10.6084/m9.figshare.9366341
State-of-the-art comparison
● CrossRec (Nguyen et al., 2020): Collaborative filtering and relying on library dependencies
● LibCUP (Saied et al., 2018) : Clustering technique to mine and recommend library co-usage
patterns
● LibRec (Thung et al., 2013) : Association rule mining and collaborative filtering
Evaluation
Statistics Value
# of Android apps 2,752
# of third-party libraries 979
# of library categories 76
Average number of libraries per app 4.62
41
42. ● Ground truth: the experimental dataset
○ 10 fold cross-validation
○ for each testing app, a half of its libraries are randomly taken out and saved as
ground truth data.
● Evaluation method for RQ1: state-of-the art comparison
Success rate
○ SuccessRate@k: at least one of recommended library is part of the ground truth
Accuracy
○ Precision@k
○ Recall@k
Evaluation method and metrics (RQ1)
42
43. Results for RQ1: Success rate and Accuracy
43
AndroLib correctly recommends Android
libraries with an average of 78%
of precision and 81% of recall
45. Third-party Software Library reuse life-cycle
Adoption
How to find a useful
library to your
current software
system?
Update
Libraries are in
constant evolution.
How do developers
update their library
dependencies?
Migration
Other competing
libraries can take
the place of a given
library
Retirement
At a given point in time,
some libraries are no
longer maintained and
evolved by its original
devlopers
46.
47. ● Large dataset
○ 4,600 software projects from Github (Java)
○ 2,700 library dependencies from Maven Central Repository
Empirical study on Maven Central Repository
47
48. Library migration in practice
48
RQ1: To what extent are developers updating their library dependencies?
“Systems are less likely to upgrade
their library dependencies, with 81.5%
of systems remaining with a popular
older version”.
“Although system heavily depend
on libraries, most systems rarely
update their libraries”
49. Effectiveness of Awarness Mechanisms
49
RQ2: What is the Response to Important Awareness Mechanisms such as a New
Release Announcement and a Security Advisory on Library Updates?
★ 3 new releases of popular libraries
★ 5 security vulnerabilities
“New release of a popular library there
exist :
(i) patterns of consistent migration, and
(ii) patterns where an older popular
library version is still preferred.”
“For a security advisory disclosure we find
cases of developer non responsiveness to
security advisory disclosure, which is
sometimes due to an incomplete patch or a
latent security advisory.”
50. Library tracking model
Simple example of the LU-based
metrics.
We show the Peak LU at time t1,
current LU at time t2 and library
residue (Peak LU / Current LU).
51. Visualization of Library Usage
A Library Migration Plot. In this example, the
release of a related security advisory CVE-2014-
0114 (black dashed line) that affects beanutils
versions 1.9.1 (marked with crossbones).
52. Effectiveness of Awarness Mechanisms
52
RQ3: Why are developers non responsive to a security advisory?
★ Vulnerable projects contacted for feedback
★ Understand feedback
“69% of developers were unaware of
their vulnerable dependencies and
proceeded to immediately migrate to
a safer dependency.”
★ Developers evaluate based on project
specific priorities.
★ Developers cite migration as a practice
that requires extra effort and added
responsibility.
54. New mechanisms for library dependency security
54
https://snyk.io/
R. G. Kula et al, 2018]
55. Third-party Software Library reuse life-cycle
Adoption
How to find a useful
library to your
current software
system?
Update
Libraries are in
constant evolution.
How do developers
update their library
dependencies?
Migration
Other competing
libraries can take
the place of a given
library
Retirement
At a given point in time,
some libraries are no
longer maintained and
evolved by its original
devlopers
56. ● Migrate to new library offer better services and price?
● Need to replace old library with new library “API Migration”
● Ex, json -> gson, testing->junit.
● Developer face problems .
● Ex, how this process could be done manually.
Library API Migration
json gson
57. Solution
Methods Of Library A Function Mapping
- String toJSONString()
+ String toString()
- void add( String)
+ void add(String, JsonElement)
- String get(int)
+ long getAsLong()
- String getString(String)
+ String getAsString()
- String toJSONString()
- String getString(String)
- void add( String)
- String get(int)
+ String toString()
+ String getAsString()
+ void add(String, JsonElement)
+ long getAsLong()
Solution
Methods Of Library B
60. Third-party Software Library reuse life-cycle
Adoption
How to find a useful
library to your
current software
system?
Update
Libraries are in
constant evolution.
How do developers
update their library
dependencies?
Migration
Other competing
libraries can take
the place of a given
library
Retirement
At a given point in time,
some libraries are no
longer maintained and
evolved by its original
devlopers
66. Third-Party Software Library Reuse : From Adoption to Migration
Ali Ouni 1 Mohamed Wiem Mkaouer 2 Hussein AlRubaye 2,3
Thank you!
Question? Discussion? Suggestions?
ali.ouni@etsmtl.ca mwmvse@rit.edu hat6622@rit.edu
1 ETS Montreal, University of Quebec, Montreal, QC, Canada
2 Rochester Institute of Technology, Rochester, NY, USA
3 Microsoft Corporation, WA, USA