64 6.2.1 A tool to automatically rewrite the kernel ,
, Mapping to our proposition
, Example of Overlapping Applications of Semantic Patches, p.67
70 6.5.1 State of practice (apply) does not provide guarantees, vol.73 ,
, Conclusion : Overcoming Challenge C1
76 7.2.1 Context: Power-Consuming Practises in Android Applications, p.79, 20196-07. ,
, Overlapping of Energy Anti-patterns in Android Applications 81 7.2.5.1 Overlapping Anti-patterns
, , vol.86
89 7.3.3 Validation: Issues and Overlaps ,
,
,
2.2 Characterize black-box composition operators ,
, 2.4 Using algebraic properties to optimize a composition equation
, RUN Exec form: RUN commands have two syntaxes, one with brackets and one without. Interpretation of arguments differ from the two syntaxes. The one with brackets must be used
, Docker allows only a single service to be specified, therefore multiple CMD are useless since only the last one will be run
, Provides default to CMD: One has to provide default parameter via CMD to start a service. If an EntryPoint command is specified, CMD and EntryPoint commands should be specified in JSON format
, Variables in exec form of CMD: Variables used in CMD commands in its exec form are not interpreted, CMD
, Merge LABEL commands: When possible, merge labels commands
, Avoid apt-get upgrade: You should avoid RUN apt-get upgrade or distupgrade, as many of the "essential" packages from the base images will not upgrade inside an unprivileged container
, Combine install with update: Always combine RUN apt-get update with apt-get install in the same RUN statement. Ommiting this can lead to unexpected behaviour since apt-get update can be not run
, Packages, version pinning: Always fully specify the version of the package to install
, FROM
, CMD exec form: CMD commands have two syntaxes, one with brackets and one without. Interpretation of arguments differ from the two syntaxes. The one with brackets must be used if parameters are specified
, Prefer COPY: Although ADD and COPY are functionally similar, generally speaking
ADD <http> discouraged: Because image size matters, using ADD to fetch packages from remote URLs is strongly discouraged ,
, User root discouraged: You should avoid installing or using sudo since it has unpredictable. TTY and signal-forwarding behavior that can cause more problems than it solves
, As few USER commands as possible: To reduce layers and complexity, avoid switching USER back and forth frequently
, WORKDIR must have absolute path: For clarity and reliability, you should always use absolute paths for your WORKDIR
, Sort installation alphanumerically: Installation of multiple softwares must be written in alphanumerical order
, Add -no-install-recommend: Add -no-install-recommend when installing with apt-get, this will avoid installation not explicitly specified
, LEGO blocks and organ transplants, 2011.
Systems and software engineering -Vocabulary », International Organization for Standardization, 2017. ,
« A delta-oriented approach to support the safe reuse of black-box code rewriters », Journal of Software: Evolution and Process, vol.31, issue.8, 2019. ,
« Supporting Micro-services Deployment in a Safer Way: a Static Analysis and Automated Rewriting Approach, Symposium on applied Computing, 2018. ,
« A Delta-oriented Approach to Support the Safe Reuse of Black-box Code Rewriters, 17th International Conference on Software Reuse (ICSR'18), 2018. ,
, First international workshop on software engineering aspects of continuous development and new paradigms of software production and deployment, LASER foundation, 2018.
, , 1986.
« Ultra-large-scale systems: The software challenge of the future, 2006. ,
« On the role of scientific thought, Selected writings on computing: a personal perspective, vol.106, pp.60-66, 1982. ,
Unified Modeling Language Reference Manual, The, p.321245628, 2004. ,
« Package merge in uml 2: Practice vs. theory?, International Conference on Model Driven Engineering Languages and Systems, pp.185-199, 2006. ,
« The source code control system, IEEE transactions on Software Engineering, issue.4, pp.364-370, 1975. ,
On the criteria to be used in decomposing systems into modules, Communications of the ACM, vol.15, issue.12, pp.1053-1058, 1972. ,
, « Software engineering or methods for the multi-person construction of multi-version programs, IBM Germany Scientific Symposium Series, pp.225-235, 1974.
Griswold, « An overview of AspectJ, European Conference on Object-Oriented Programming, pp.327-354, 2001. ,
« DEPOSIT : an approach to model and deploy data collection policies on heterogeneous and shared sensor networks, 2017. ,
Introduction to Languages and the Theory of Computation, McGraw-Hill NY, vol.4, 1991. ,
Introduction to the Theory of Computation, Thomson Course Technology Boston, vol.2, 2006. ,
Minimization of Automata, 2010. ,
URL : https://hal.archives-ouvertes.fr/hal-01743468
, DFA minimization, 2019.
Docker Official website, 2019. ,
, Docker Official Numbers, 2019.
Git Official Numbers, 2019. ,
, Github Passes 100M Repositories, 2018.
Github, State of the Octoverse, 2019. ,
, 2017 Linux Kernel Report Highlights Developers' Roles and Accelerating Pace of Change, 2017.
Linux Official Repository, 2019. ,
Android Now Has 2 Billion Monthly Active Users, 2017. ,
ANDROID AT 10: THE WORLD'S MOST DOMINANT TECHNOLOGY, 2018. ,
, 2015 30th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp.236-247, 2015.
, Program Analysis and Transformation in Java », Inria, 2006.
, « Composing Feature Models », in Software Language Engineering, pp.62-81, 2010.
, Lessons from Europe for American business, pp.3-13, 1963.
« State of the art of QVT: A model transformation language standard, International Symposium on Applications of Graph Transformations with Industrial Relevance, pp.377-393, 2007. ,
Model to Text Transformation Language (OMG MOFM2T) Version 1.0 », Object Management Group, 2008. ,
, Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, pp.719-720, 2006.
ATRA -visual automated transformations for formal verification and validation of UML models, Proceedings 17th IEEE International Conference on Automated Software Engineering, pp.267-270, 2002. ,
« Practical declarative model transformation with Tefkat, International Conference on Model Driven Engineering Languages and Systems, pp.139-150, 2005. ,
« Requirements modeling with the aspect-oriented user requirements notation (AoURN): a case study, Transactions on aspect-oriented software development VII, pp.23-68, 2010. ,
« Semantic-based weaving of scenarios, Proceedings of the 5th International Conference on Aspect-Oriented Software Development, R. E. Filman, pp.27-38, 2006. ,
« The eclipse modeling framework », retrieved from, total, p.37, 2003. ,
Kompose: a generic model composition tool, 2005. ,
« Executable Aspect Oriented Models for Improved Model Testing, ECMDA workshop on Integration of Model Driven Development and Model Driven Testing, 2006. ,
« Theme: an approach for aspect-oriented analysis and design, Proceedings. 26th International Conference on Software Engineering, pp.158-167, 2004. ,
, « Merging Models with the Epsilon Merging Language (EML), vol.4199, pp.215-229, 2006.
« On the modularization provided by concern-oriented reuse, 2016. ,
Generic Weaver for Supporting Product Lines, International Workshop on Early Aspects at ICSE'08, 2008. ,
URL : https://hal.archives-ouvertes.fr/inria-00456485
« On the formalisation of GeKo: A generic aspect models weaver, 2012. ,
A Tool for Aspect-Oriented Modeling Based on Graph Transformation, Models in Software Engineering, pp.978-981, 2008. ,
« Mod-els@runtime to support dynamic adaptation, Computer, vol.42, issue.10, pp.44-51, 2009. ,
Software Engineering on Large-scale models: Requirements and Experience in Mod-elBus, 23rd Annual ACM Symposium on Applied Computing (SAC'08), pp.674-681, 2008. ,
A library for implementing analyses and transformations of Java source code, Software: Practice and Experience, vol.46, pp.1155-1179, 2016. ,
URL : https://hal.archives-ouvertes.fr/hal-01078532
, « Increasing Automation in the Backporting of Linux Drivers Using Coccinelle », ser. 11th European Dependable Computing Conference -Dependability in Practice, 2015.
Applying Enterprise JavaBeans: Component-Based Development for the J2EE Platform, p.201914662, 2003. ,
A Flexible and Efficient Framework for AOP in Java, Reflection, The Third International Conference on Metalevel Architectures and Separation of Crosscuting Concerns, 2001. ,
URL : https://hal.archives-ouvertes.fr/hal-01124645
, ). 2to3 -Automated Python 2 to 3 code translation, 2019.
Git Essentials: Create, merge, and distribute code with Git, the most powerful and flexible versioning system available, 2017. ,
« Software merge: Models and methods for combining changes to programs, pp.978-981, 1991. ,
« Software merge: Combining changes to decompositions », Journal of Systems Integration, vol.6, issue.1, pp.1573-8787, 1996. ,
A Categorical Theory of Patches, 2013. ,
URL : https://hal.archives-ouvertes.fr/hal-00904156
, Free Software Foundation, 1987.
« An empirical analysis of C preprocessor use, IEEE Transactions on Software Engineering, vol.28, issue.12, pp.1146-1170, 2002. ,
, Notes on structured programming, 1970.
, Term rewriting and all that, 1999.
, Term rewriting systems. Centrum voor Wiskunde en Informatica, 1990.
« Declaration-free Type Checking, Proceedings of the 12th ACM SIGACT-SIGPLAN Symposium on Principles of Programming Languages, ser. POPL '85, pp.7-21, 1985. ,
,
, Type Checking with Open Type Functions, vol.43, pp.362-1340, 2008.
,
« Term Rewriting with Traversal Functions, ACM Trans. Softw. Eng. Methodol, vol.12, issue.2, pp.152-190, 2003. ,
, Conflunt reductions: Abstract properties and applications to term rewriting systems, pp.30-45, 1977.
« Proving Confluence of Term Rewriting Systems Automatically, Rewriting Techniques and Applications, R. Treinen, pp.93-102, 2009. ,
« Automated Termination Proofs with AProVE, Rewriting Techniques and Applications, pp.210-220, 2004. ,
-Rewrite Systems », in Formal Models and Semantics, ser. Handbook of Theoretical Computer Science, pp.243-320, 1990. ,
« Termination of term rewriting using dependency pairs, Theoretical Computer Science, vol.236, issue.1, pp.304-3975, 2000. ,
, Proceedings of the 28th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp.81-92, 2001.
« Documenting and Automating Collateral Evolutions in Linux Device Drivers ,
, Syst. Rev, vol.42, issue.4, pp.247-260, 2008.
« Some properties of darcs patch theory, 2005. ,
« Type-correct changes-a safe approach to version control implementation, 2009. ,
« Detecting model inconsistency through operation-based model construction, 2008 ACM/IEEE 30th International Conference on Software Engineering, pp.511-520, 2008. ,
« Understanding Collateral Evolution in Linux Device Drivers, SIGOPS Oper. Syst. Rev, vol.40, issue.4, pp.163-5980, 2006. ,
, ASE -The 27th IEEE/ACM International Conference on Automated Software Engineering -2012, pp.160-169, 2012.
« Monitoring Energy Hotspots in Software », Journal of Automated Software Engineering, vol.22, issue.3, pp.291-332, 2015. ,
A Software Library to Monitor the Energy Consumed at the Process-Level, ERCIM News, Special Theme: Smart Energy Systems, vol.92, pp.43-44, 2013. ,
URL : https://hal.archives-ouvertes.fr/hal-00772454
, Proceedings of the Second ACM International Conference on Mobile Software Engineering and Systems, ser. MOBILESoft '15, pp.978-979, 2015.
« Finegrained and accurate source code differencing, ACM/IEEE International Conference on Automated Software Engineering, ASE '14, pp.313-324, 2014. ,
« Investigating the energy impact of Android smells, IEEE 24th Int. Conf. on Software Analysis, Evolution and Reengineering, pp.115-126, 2017. ,
« An empirical study of the performance impacts of Android code smells, Proceedings of the International Conference on Mobile Software Engineering and Systems, MOBILESoft '16, pp.59-69, 2016. ,
, Microservice Architecture: Aligning Principles, Practices, and Culture, 2016.
« Microservices architecture enables DevOps: migration to a cloud-native architecture, IEEE Software, vol.33, issue.3, pp.42-52, 2016. ,
, Container market adoption -Survey, 2016.
, « An Introduction to Docker for Reproducible Research, vol.49, pp.163-5980, 2015.
Lightweight Linux Containers for Consistent Development and Deployment », Linux J, vol.2014, issue.239, pp.1075-3583, 2014. ,
« Performance Evaluation of Container-Based Virtualization for High Performance Computing Environments, 2013 21st Euromicro International Conference on Parallel, Distributed, and Network-Based Processing, pp.233-240, 2013. ,
Docker Cluster Management for the Cloud -Survey Results and Own Solution », Journal of Grid Computing, vol.14, issue.2, pp.1572-9184, 2016. ,
Lightweight Virtualization: A Performance Comparison, Cloud Engineering (IC2E), 2015 IEEE International Conference on, pp.386-393, 2015. ,
« An updated performance comparison of virtual machines and Linux containers, Performance Analysis of Systems and Software (ISPASS), 2015 IEEE International Symposium on, pp.171-172, 2015. ,
, DockerCon16 -The Dockerfile Explosion and the Need for Higher Level Tools by Gareth Rushgrove, 2016.
Interview of Frank Herbert: 'Herbert's science fiction novels, 1969. ,
« A state-of-the-art survey on software merging, IEEE Transactions on Software Engineering, vol.28, issue.5, pp.449-462, 2002. ,
Semantics of Combining Changes to Programs, ACM Trans. Program. Lang. Syst, vol.16, issue.6, pp.1875-1903, 1994. ,
Diff: a tool for summarizing the effects of modifications, Proceedings 1994 International Conference on Software Maintenance, pp.243-252, 1994. ,
« Syntactic software merging », in Software Configuration Management, pp.978-981, 1995. ,
A differencing technique and tool for object-oriented programs, Automated Software Engineering, vol.14, pp.1573-7535, 2007. ,
« A category-theoretic approach to syntactic software merging, 21st IEEE International Conference on Software Maintenance (ICSM'05), pp.197-206, 2005. ,
« Balancing precision and performance in structured merge, Automated Software Engineering, vol.22, issue.3, pp.1573-7535, 2015. ,
Evaluating and Improving Semistructured Merge », OOPSLA, vol.1, pp.2475-1421, 2017. ,
Rethinking Merge in Revision Control Systems, Proceedings of the 19th ACM SIGSOFT Symposium and the 13th European Conference on Foundations of Software Engineering, ser. ESEC/FSE '11, pp.190-200, 2011. ,
« Indicators for merge conflicts in the wild: survey and empirical study, Automated Software Engineering, vol.25, issue.2, pp.1573-7535, 2018. ,
« Do Time of Day and Developer Experience Affect Commit Bugginess?, Proceedings of the 8th Working Conference on Mining Software Repositories, ser. MSR '11, pp.153-162, 2011. ,
« Understanding semi-structured merge conflict characteristics in open-source Java projects, Empirical Software Engineering, vol.23, issue.4, pp.1573-7616, 2018. ,
« How Do Centralized and Distributed Version Control Systems Impact Software Changes?, Proceedings of the 36th International Conference on Software Engineering, ser. ICSE, pp.322-333, 2014. ,
« Improving early detection of software merge conflicts, 2012 34th International Conference on Software Engineering (ICSE), pp.342-352, 2012. ,
A Machine Learning Based Approach to Predicting Merge Conflicts from Repository Metadata, 2017. ,
« On the Nature of Merge Conflicts: a Study of 2,731 Open Source Java Projects Hosted by GitHub, IEEE Transactions on Software Engineering, pp.1-1, 2018. ,
A domainspecific language for large scale management of feature models, Science of Computer Programming, vol.78, issue.6, pp.657-681, 2013. ,
URL : https://hal.archives-ouvertes.fr/hal-00767175
ExpRunA : a domain-specific approach for technology-oriented experiments », Software & Systems Modeling, pp.1619-1374, 2019. ,