Presentation done at the historic 20 yeras of C++ conference in Las Vegas 2005. This is also the first time I ever spoke on the topic of combing generative programming and C++ template metaprogramming
Ringkasan makalah ini adalah:
Makalah ini membahas tentang kompensasi (gaji dan upah) bagi sumber daya manusia, termasuk pengertian, tujuan, dan jenis-jenis kompensasi. Filosofi kompensasi didasarkan pada prinsip-prinsip keadilan dan kelayakan, sedangkan pendekatan kompensasi mempertimbangkan konsep 3P dan kinerja organisasi. Besaran gaji dipengaruhi oleh faktor permintaan ten
This document summarizes key aspects of workmen's compensation legislation in Malaysia. It discusses the Workmen's Compensation Act of 1952 which provides compensation for injuries sustained by employees during work. Only foreign workers are currently covered under this act. The minimum wage act of 2012 is also discussed, which sets minimum wages that employers must pay their employees. Developing a total compensation strategy involves assessing implications, mapping a strategy, implementing it, and reassessing periodically. Whole Foods is used as an example to illustrate strategic compensation decisions around internal alignment, external competitiveness, employee contributions, and management approach.
Proses penilaian kinerja menghasilkan evaluasi kinerja karyawan di masa lalu atau masa depan. Bagian penting dari proses ini adalah memberikan umpan balik kepada karyawan melalui wawancara evaluasi untuk meningkatkan kinerja. Berbagai bentuk kompensasi diberikan kepada karyawan sebagai imbalan atas kinerja.
The document discusses worker empowerment and participation in management. It defines empowerment as allowing workers to take responsibility for improving their jobs and contributing to organizational goals. Worker participation involves giving workers influence over managerial decision making through various forms such as joint councils, worker directors, works committees, and grievance procedures. Successful participation requires a cooperative relationship between management and workers with trust and a genuine desire to understand each other.
A job is a regular activity performed in exchange for payment that constitutes one's occupation or profession. Job analysis is the process of determining the duties, skills, and requirements of a job in order to understand what kind of person should be hired for the role. It results in a job description that outlines the key aspects of a job such as duties, responsibilities, reporting relationships, working conditions, and supervisory responsibilities. Job design is the process of organizing work into tasks required to perform a specific job and can take various forms such as work simplification, job enlargement, job rotation, job enrichment, and team-based job design.
Industrial relations involves the relationships between employees, employers, and the government within organizational settings. It covers all aspects of the employment relationship, including how employees and employers interact through collective bargaining, grievance procedures, and dispute resolution. Industrial relations aims to establish stable relationships between employers and labor unions while also promoting productivity, employment opportunities, and living standards.
Hubungan motivasi, kepuasan kerja, dan displin kerja terhadap kinerja karyawanErsha Amanah
Dokumen tersebut membahas hubungan antara motivasi, kepuasan kerja, dan disiplin kerja terhadap prestasi kerja karyawan perusahaan. Faktor-faktor tersebut dianggap berkontribusi besar terhadap peningkatan kinerja karyawan. Penelitian dilakukan pada dua perusahaan yaitu PT Sandang Asia Maju Abadi dan PT Inti Luhur Fuja Abadi untuk menganalisis pengaruh ketiga faktor tersebut terhadap prestasi kerja karyaw
Ringkasan makalah ini adalah:
Makalah ini membahas tentang kompensasi (gaji dan upah) bagi sumber daya manusia, termasuk pengertian, tujuan, dan jenis-jenis kompensasi. Filosofi kompensasi didasarkan pada prinsip-prinsip keadilan dan kelayakan, sedangkan pendekatan kompensasi mempertimbangkan konsep 3P dan kinerja organisasi. Besaran gaji dipengaruhi oleh faktor permintaan ten
This document summarizes key aspects of workmen's compensation legislation in Malaysia. It discusses the Workmen's Compensation Act of 1952 which provides compensation for injuries sustained by employees during work. Only foreign workers are currently covered under this act. The minimum wage act of 2012 is also discussed, which sets minimum wages that employers must pay their employees. Developing a total compensation strategy involves assessing implications, mapping a strategy, implementing it, and reassessing periodically. Whole Foods is used as an example to illustrate strategic compensation decisions around internal alignment, external competitiveness, employee contributions, and management approach.
Proses penilaian kinerja menghasilkan evaluasi kinerja karyawan di masa lalu atau masa depan. Bagian penting dari proses ini adalah memberikan umpan balik kepada karyawan melalui wawancara evaluasi untuk meningkatkan kinerja. Berbagai bentuk kompensasi diberikan kepada karyawan sebagai imbalan atas kinerja.
The document discusses worker empowerment and participation in management. It defines empowerment as allowing workers to take responsibility for improving their jobs and contributing to organizational goals. Worker participation involves giving workers influence over managerial decision making through various forms such as joint councils, worker directors, works committees, and grievance procedures. Successful participation requires a cooperative relationship between management and workers with trust and a genuine desire to understand each other.
A job is a regular activity performed in exchange for payment that constitutes one's occupation or profession. Job analysis is the process of determining the duties, skills, and requirements of a job in order to understand what kind of person should be hired for the role. It results in a job description that outlines the key aspects of a job such as duties, responsibilities, reporting relationships, working conditions, and supervisory responsibilities. Job design is the process of organizing work into tasks required to perform a specific job and can take various forms such as work simplification, job enlargement, job rotation, job enrichment, and team-based job design.
Industrial relations involves the relationships between employees, employers, and the government within organizational settings. It covers all aspects of the employment relationship, including how employees and employers interact through collective bargaining, grievance procedures, and dispute resolution. Industrial relations aims to establish stable relationships between employers and labor unions while also promoting productivity, employment opportunities, and living standards.
Hubungan motivasi, kepuasan kerja, dan displin kerja terhadap kinerja karyawanErsha Amanah
Dokumen tersebut membahas hubungan antara motivasi, kepuasan kerja, dan disiplin kerja terhadap prestasi kerja karyawan perusahaan. Faktor-faktor tersebut dianggap berkontribusi besar terhadap peningkatan kinerja karyawan. Penelitian dilakukan pada dua perusahaan yaitu PT Sandang Asia Maju Abadi dan PT Inti Luhur Fuja Abadi untuk menganalisis pengaruh ketiga faktor tersebut terhadap prestasi kerja karyaw
Human Resource Management, Ethics, Organizational CultureSumbal Noureen
Ethics and Employee rights and discipline
Ethics and fair treatment
Individual and organizational factors
Culture
HR methods to promote Ethics
Managing dismissal
Termination interview
The document discusses the major parties involved in industrial relations: employees, employers, government, and trade unions. It outlines the roles of each party. Employees seek to collectively bargain and improve their terms and conditions through trade unions. Employers associations represent employers in collective bargaining and provide advice to avoid disputes. The government establishes the legal framework and bodies like wage boards and courts to promote satisfaction among employers and employees.
Value congruence occurs when an employee's personal values align with the values of their organization. When value congruence exists, it enhances communication and trust between employees and the organization. This can lead to positive outcomes such as increased job satisfaction, stronger organizational identification, and higher intent for employees to remain with the company. Managers can work to increase value congruence during the hiring process by assessing applicant and organizational values. For current employees, managers should focus on building trust through honest and fair processes, and improving communication between all levels of the organization.
This document discusses job design and quality of work life. It defines key terms related to job design like job analysis, job description, and job specification. It then explains different methods of job design like job specialization, job enlargement, job rotation, and job enrichment. It also discusses how well-designed and poorly-designed jobs can impact productivity, satisfaction, and quality of work life. Finally, it defines quality of work life and discusses ways to measure and improve it through programs, job redesign, and quality circles.
The document discusses labour relations and labour unions. It defines a labour union as an organization formed by workers in related fields to work for their common interests and represent workers in issues related to wages, hours, and working conditions. It discusses collective bargaining between labour unions and management on issues like compensation, hours of work, working conditions, and job security. It also categorizes different labour laws in India and lists some important labour laws, and discusses differences in labour unions around the world.
The document discusses various factors to consider when determining employee pay rates, including compensation plans, legal requirements, and equity. It covers types of wages based on time or performance, exempt vs non-exempt employee classifications, key US labor laws, and how to align compensation with business strategy and maintain pay equity.
Pros & Cons of Contracting vs. Permanent EmploymentNewforceltd
Find Latest Contract & Permanent Jobs at newforce for experienced in top companies at preferred location. Register frees, search and apply to get job alerts.
This document provides an overview of key employment laws in India. It discusses labor legislation that was influenced by British law and aims to protect worker rights. The constitution gives powers around labor issues to both central and state governments. Several important acts are covered, including those related to trade unions, industrial disputes, wages, working hours/conditions, equality/empowerment of women, and social security. Laws like the Maternity Benefit Act and Equal Remuneration Act promote gender equality. Acts like ESI and EPF provide social security benefits to workers.
The document discusses various job evaluation methods, including ranking, classification, factor comparison, and point methods. It provides details on the advantages and disadvantages of each. It also provides an in-depth explanation of the Hay Guide Chart-Profile Method, including the three factors it uses (know-how, problem solving, and accountability) and how jobs are evaluated using questionnaires and a committee. The document outlines steps taken, such as periodic retraining and correlation studies, to ensure the Hay system is applied fairly. It explains how Hay points are used to determine salary ranges but do not directly impact individual salaries.
Organizational behaviour (OB) is concerned with understanding, describing and predicting the behaviour of individuals and groups in organizations. OB draws concepts from various behavioural sciences like psychology, sociology, anthropology and social psychology. OB aims to improve performance at the individual, group and organizational levels. Individual behaviour in organizations is influenced by personal factors like personality and abilities, psychological factors like attitudes and values, as well as environmental factors like organizational systems. Attitudes are expressions of favor or disfavor and are formed through experiences, conditioning, vicarious learning and social influences. Personality consists of inherited traits and acquired tendencies and can be of different types that impact work behaviour.
The document discusses discipline in the workplace. It defines discipline, outlines different types of discipline approaches like positive and negative discipline, and progressive discipline. It also discusses key aspects of an effective disciplinary system like training supervisors, centralized discipline policies, and documentation of disciplinary actions. The document emphasizes that discipline should aim to correct behavior, not punish employees, and notes management and unions generally agree to principles like avoiding unilateral actions and utilizing existing dispute resolution processes to ensure discipline in industry.
In these slides we will understand the Human Resources that we use in Management and after understanding it you will be able to use the Human Resources.
This document discusses compensation and benefits offered by firms. It includes a list of members, types of direct compensation such as salary, wage, base pay, merit pay, incentive pay, and deferred pay. It also discusses indirect compensation including protection programs, pay for time not worked, and services and perquisites. It provides examples of compensation and benefits offered by Wipro such as flexible benefits, medical assistance plans, group life insurance, and an education program for children of employees.
This chapter discusses emotions and moods in organizational behavior. It defines emotions as intense feelings directed at someone or something, while moods are less intense feelings that often lack a contextual stimulus. The chapter covers the aspects and sources of emotions and moods, including personality, time of day, weather, stress, and sleep. It also discusses external constraints like organizational and cultural influences, as well as emotional labor. Emotional intelligence is defined as one's ability to manage emotional information. The chapter applies concepts of emotions and moods to areas like selection, decision making, creativity, and customer service.
perencanaan SDM { ppt manajemen sumber daya manusia } joanrawung
Dokumen tersebut membahas perencanaan sumber daya manusia (SDM) yang bertujuan untuk mempertahankan dan meningkatkan kemampuan organisasi dalam mencapai tujuan melalui strategi pengembangan karyawan di masa depan, termasuk merencanakan dan memprediksi jabatan serta kebutuhan personel yang dibutuhkan.
Generative Programming In The Large - Applied C++ meta-programmingSchalk Cronjé
Digs into the details of effective generative programming in C++. Major focus on using meta-programming techniques to create efficient, low cyclomatic complexity in artefacts.
A Generative Programming Approach to Developing Pervasive Computing SystemsDamien Cassou
This document presents a generative programming approach to developing pervasive computing systems. It describes challenges in pervasive computing like heterogeneity, lack of structure, and dynamicity. It proposes addressing these through domain-specific languages to describe devices, architectures, and generate a programming framework and simulation support. This approach aims to guide development and ensure conformance while abstracting distributed aspects and supporting multiple expertise.
Human Resource Management, Ethics, Organizational CultureSumbal Noureen
Ethics and Employee rights and discipline
Ethics and fair treatment
Individual and organizational factors
Culture
HR methods to promote Ethics
Managing dismissal
Termination interview
The document discusses the major parties involved in industrial relations: employees, employers, government, and trade unions. It outlines the roles of each party. Employees seek to collectively bargain and improve their terms and conditions through trade unions. Employers associations represent employers in collective bargaining and provide advice to avoid disputes. The government establishes the legal framework and bodies like wage boards and courts to promote satisfaction among employers and employees.
Value congruence occurs when an employee's personal values align with the values of their organization. When value congruence exists, it enhances communication and trust between employees and the organization. This can lead to positive outcomes such as increased job satisfaction, stronger organizational identification, and higher intent for employees to remain with the company. Managers can work to increase value congruence during the hiring process by assessing applicant and organizational values. For current employees, managers should focus on building trust through honest and fair processes, and improving communication between all levels of the organization.
This document discusses job design and quality of work life. It defines key terms related to job design like job analysis, job description, and job specification. It then explains different methods of job design like job specialization, job enlargement, job rotation, and job enrichment. It also discusses how well-designed and poorly-designed jobs can impact productivity, satisfaction, and quality of work life. Finally, it defines quality of work life and discusses ways to measure and improve it through programs, job redesign, and quality circles.
The document discusses labour relations and labour unions. It defines a labour union as an organization formed by workers in related fields to work for their common interests and represent workers in issues related to wages, hours, and working conditions. It discusses collective bargaining between labour unions and management on issues like compensation, hours of work, working conditions, and job security. It also categorizes different labour laws in India and lists some important labour laws, and discusses differences in labour unions around the world.
The document discusses various factors to consider when determining employee pay rates, including compensation plans, legal requirements, and equity. It covers types of wages based on time or performance, exempt vs non-exempt employee classifications, key US labor laws, and how to align compensation with business strategy and maintain pay equity.
Pros & Cons of Contracting vs. Permanent EmploymentNewforceltd
Find Latest Contract & Permanent Jobs at newforce for experienced in top companies at preferred location. Register frees, search and apply to get job alerts.
This document provides an overview of key employment laws in India. It discusses labor legislation that was influenced by British law and aims to protect worker rights. The constitution gives powers around labor issues to both central and state governments. Several important acts are covered, including those related to trade unions, industrial disputes, wages, working hours/conditions, equality/empowerment of women, and social security. Laws like the Maternity Benefit Act and Equal Remuneration Act promote gender equality. Acts like ESI and EPF provide social security benefits to workers.
The document discusses various job evaluation methods, including ranking, classification, factor comparison, and point methods. It provides details on the advantages and disadvantages of each. It also provides an in-depth explanation of the Hay Guide Chart-Profile Method, including the three factors it uses (know-how, problem solving, and accountability) and how jobs are evaluated using questionnaires and a committee. The document outlines steps taken, such as periodic retraining and correlation studies, to ensure the Hay system is applied fairly. It explains how Hay points are used to determine salary ranges but do not directly impact individual salaries.
Organizational behaviour (OB) is concerned with understanding, describing and predicting the behaviour of individuals and groups in organizations. OB draws concepts from various behavioural sciences like psychology, sociology, anthropology and social psychology. OB aims to improve performance at the individual, group and organizational levels. Individual behaviour in organizations is influenced by personal factors like personality and abilities, psychological factors like attitudes and values, as well as environmental factors like organizational systems. Attitudes are expressions of favor or disfavor and are formed through experiences, conditioning, vicarious learning and social influences. Personality consists of inherited traits and acquired tendencies and can be of different types that impact work behaviour.
The document discusses discipline in the workplace. It defines discipline, outlines different types of discipline approaches like positive and negative discipline, and progressive discipline. It also discusses key aspects of an effective disciplinary system like training supervisors, centralized discipline policies, and documentation of disciplinary actions. The document emphasizes that discipline should aim to correct behavior, not punish employees, and notes management and unions generally agree to principles like avoiding unilateral actions and utilizing existing dispute resolution processes to ensure discipline in industry.
In these slides we will understand the Human Resources that we use in Management and after understanding it you will be able to use the Human Resources.
This document discusses compensation and benefits offered by firms. It includes a list of members, types of direct compensation such as salary, wage, base pay, merit pay, incentive pay, and deferred pay. It also discusses indirect compensation including protection programs, pay for time not worked, and services and perquisites. It provides examples of compensation and benefits offered by Wipro such as flexible benefits, medical assistance plans, group life insurance, and an education program for children of employees.
This chapter discusses emotions and moods in organizational behavior. It defines emotions as intense feelings directed at someone or something, while moods are less intense feelings that often lack a contextual stimulus. The chapter covers the aspects and sources of emotions and moods, including personality, time of day, weather, stress, and sleep. It also discusses external constraints like organizational and cultural influences, as well as emotional labor. Emotional intelligence is defined as one's ability to manage emotional information. The chapter applies concepts of emotions and moods to areas like selection, decision making, creativity, and customer service.
perencanaan SDM { ppt manajemen sumber daya manusia } joanrawung
Dokumen tersebut membahas perencanaan sumber daya manusia (SDM) yang bertujuan untuk mempertahankan dan meningkatkan kemampuan organisasi dalam mencapai tujuan melalui strategi pengembangan karyawan di masa depan, termasuk merencanakan dan memprediksi jabatan serta kebutuhan personel yang dibutuhkan.
Generative Programming In The Large - Applied C++ meta-programmingSchalk Cronjé
Digs into the details of effective generative programming in C++. Major focus on using meta-programming techniques to create efficient, low cyclomatic complexity in artefacts.
A Generative Programming Approach to Developing Pervasive Computing SystemsDamien Cassou
This document presents a generative programming approach to developing pervasive computing systems. It describes challenges in pervasive computing like heterogeneity, lack of structure, and dynamicity. It proposes addressing these through domain-specific languages to describe devices, architectures, and generate a programming framework and simulation support. This approach aims to guide development and ensure conformance while abstracting distributed aspects and supporting multiple expertise.
The document discusses practical generative programming. It defines generative programming as automatically manufacturing customized products from reusable components using configuration knowledge. It describes the key elements and steps of generative programming. It discusses strategies for implementing generative programming in C++, including using templates and traits classes to configure generic components. It provides an example of how to capture configuration metadata in XML to define attributes like port ranges and generate C++ code.
The document discusses various patterns for generative programming including parser generation. It describes using a context-free grammar as input to automatically generate a parser. The key steps are:
1. Define regular expressions for tokens and context-free productions for nonterminals
2. Generate code for the parser from the grammar
3. Write boilerplate code to execute the generated parser and feed it a token stream.
The overall approach is to specify language structure through a grammar and then generate artifacts like lexers and parsers that can recognize or operate on that language.
Generative Software Development. Overview and ExamplesEelco Visser
Generative software development is a system-family approach that focuses on automating the creation of system-family members. A given system can be automatically generated from a specification written in one or more domain-specific languages. Domain-specific languages are used to specify systems at a high level of abstraction in a particular problem domain, while mappings and solution components implement the specification in a lower-level solution space. This allows automatic generation of systems from concise, domain-focused specifications.
Seeking Enligtenment - A journey of purpose rather tan instructionSchalk Cronjé
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help boost feelings of calmness, happiness and focus.
The document discusses practical meta-programming using C++ templates. It explains how template specialization and partial specialization allow recursive instantiation of templates to transform types and data at compile-time in a functional programming-like manner. Examples are provided to demonstrate summing values, checking type traits, approximating mathematical functions, and creating heterogeneous tuples through recursive templates. SFINAE (substitution failure is not an error) is also introduced as a way to selectively overload functions based on type traits.
The document contains a programming guide in C++ that includes examples of:
- Printing text to the screen
- Calculating velocity using a formula
- Performing arithmetic operations
- Converting between Celsius and Fahrenheit temperatures
- Calculating student marks, totals, averages, and percentages
- Creating an ATM machine interface design
- Converting between time, length, and other units
This slide brushes up on the concepts of class and templates in C++. It introduces the different sections of the C++ Standard Library and talks about std::pair in further details.
This document provides an introduction to programming with C++, including the basic structure of a C++ program, how to open C++, and examples of variable types and programs to calculate the area of a square and sum of two numbers. The main parts of a C++ program include using #include to import headers, defining the main function, and writing code within the main block. Variables can be integer, decimal, character, or boolean types. Example programs show how to declare and assign variables, use input/output streams, and perform calculations.
This document contains instructions and examples for exercises in C++ programming lab 4. It includes exercises to print the square and square root of a number, calculate temperature at a given earth depth, calculate arithmetic, geometric, and harmonic means of two numbers, find the roots of a quadratic equation, and examples of if and else if statements.
The Triangle class lab involves creating a Triangle class that defines properties and methods for triangles. The Triangle class contains private data members for the three sides of the triangle. It includes public methods to calculate the area and perimeter of a triangle using the side lengths, get the side lengths, set the side lengths, determine the triangle type, and print triangle information. The main() function constructs a Triangle object and calls its methods to demonstrate the class functionality in 3 sentences or less.
This document is a lab manual for an introduction to computer programming course using C++. It contains 11 chapters that provide examples and exercises to help students learn programming concepts like variables, operators, control flow, functions, arrays, pointers, structures, and file input/output. Each chapter contains multiple programming questions and examples with the full code provided. The objective is to give students hands-on practice with programming to become familiar with design, coding, and problem solving in C++.
What is probabilistic programming? By analogy: if functional programming is programming with first-class functions and equational reasoning, probabilistic programming is programming with first-class distributions and Bayesian inference. All computable probability distributions can be encoded as probabilistic programs, and every probabilistic program represents a probability distribution.
What does it do? It gives a concise language for specifying complex, structured statistical models, and abstracts over the implementation details of exact and approximate inference algorithms. These models can be networked, causal, hierarchical, recursive, anything: the graph structure of the program is the generative structure of the distribution.
Who's interested? Cognitive scientists, statisticians, machine-learning specialists, and artificial-intelligence researchers.
AdaCore Paris Tech Day 2016: Jose Ruiz - QGen Tech Updatejamieayre
- QGen is a code generator that can generate code from Simulink models. It supports Processor-in-the-Loop testing, has multiple user interfaces, and is the basis for ongoing research focused on system and software integrity.
- It allows for customization at the block and arithmetic levels to reuse pre-certified code libraries. This is done through configuration files that specify functions or libraries to use.
- QGen has achieved a TQL-1 qualification which provides benefits like not needing to review generated code or create low-level tests. This qualification puts requirements on QGen development.
- A QGen debugger provides synchronized views of models, code, and assembly to help with model-level debugging.
Scripting experts from Inductive Automation cover general best practices that will help you add flexibility and customization to HMI, SCADA, IIoT, and other industrial applications. Some specific tips about using scripting in the Ignition platform will be included as well.
In this webinar, learn more about:
• Common scripting pitfalls and how to avoid them
• The best programming languages to use
• Things to consider before using scripting
• How scripting environments work
• Scripting timesavers
• And more
Scripting experts from Inductive Automation cover general best practices that will help you add flexibility and customization to HMI, SCADA, IIoT, and other industrial applications. Some specific tips about using scripting in the Ignition platform will be included as well.
In this webinar, learn more about:
• Common scripting pitfalls and how to avoid them
• The best programming languages to use
• Things to consider before using scripting
• How scripting environments work
• Scripting timesavers
• And more
'Effective node.js development' by Viktor Turskyi at OdessaJS'2020OdessaJS Conf
How to develop NodeJS apps effectively? I will tell you all details and share his personal experience on the whole process: from the very start and up to the production stage.
You will also learn more about Docker, SDLC and 12 Factor App. Save the date!
Have you ever wondered how to speed up your code in Python? This presentation will show you how to start. I will begin with a guide how to locate performance bottlenecks and then give you some tips how to speed up your code. Also I would like to discuss how to avoid premature optimization as it may be ‘the root of all evil’ (at least according to D. Knuth).
Viktor Turskyi "Effective NodeJS Application Development"Fwdays
For 15 years in development, I managed to take part in the creation of a large number of various projects. I have already made a number of talks on the working architecture of Web applications, but this is only part of the efficient development puzzle. We will consider the whole process from the start of the project to its launch in production. I’ll tell you how we approach the ideas of the “12 Factor App”, how we use the docker, discuss environment deployment issues, security issues, testing issues, discuss the nuances of SDLC and much more.
One of the main hindrances to teams being able to respond rapidly to new features are technical problems resulting from bad coding practices, also known as technical debt. Melissa and Brett will cover Agile tools and practices that help development teams write better code and increase maintainability. Topics that will be covered include:
Pair programming
Automated Unit Testing
Refactoring
Test-Driven Development
Agile Architecture
Pragmatic Optimization in Modern Programming - Ordering Optimization ApproachesMarina Kolpakova
This document provides an overview of pragmatic optimization approaches for modern programming. It discusses understanding code and algorithms, optimizing memory access patterns, minimizing operations, and shrinking critical paths. Hardware-specific optimizations and diving into assembly are also covered. The key lessons are to find and optimize critical code sections, gain knowledge of the code, compiler, and platform, and apply optimizations in an iterative process starting from high-level choices before making low-level changes. Recommended literature on computer architecture, optimization, and compiler engineering is provided.
The document discusses various topics related to embedded C programming including differences between operating systems and embedded systems, advantages of using C for embedded programming, differences between conventional C and embedded C, and tools used for embedded C development. Key points include: Embedded systems are closely tied to hardware and have limited memory and registers compared to operating systems. C is commonly used for embedded programming due to its familiarity, reliability, and portability. Embedded C requires a cross compiler to generate object code for the target microcontroller.
The sole purpose of sharing these slides are to educate the beginners of IT and Computer Science/Engineering. Credits should go to the referred material and also CICRA campus, Colombo 4, Sri Lanka where I taught these in 2017.
The document introduces the Loopback framework for rapidly building apps with Node.js. It discusses how Loopback allows developers to define models and relations, and then exposes CRUD APIs without writing additional code. Loopback also provides features like authentication, authorization, data integration, and client SDKs out of the box. While the documentation could be clearer and there are still some glitches, Loopback allows developers to deliver technical solutions much faster by writing less boilerplate code.
Vertex AI is a managed machine learning platform that helps you build, deploy, and scale machine learning models faster and easier.
GitHub: https://github.com/TrilokiDA/Vertex-AI/tree/main
Ultimate Guide to Microservice Architecture on Kuberneteskloia
This document provides an overview of microservice architecture on Kubernetes. It discusses:
1. Benefits of microservice architecture like independent deployability and scalability compared to monolithic applications.
2. Best practices for microservices including RESTful design, distributed configuration, client code generation, and API gateways.
3. Tools for microservices on Kubernetes including Prometheus for monitoring, Elasticsearch (ELK) stack for logging, service meshes, and event sourcing with CQRS.
This document discusses various techniques for optimizing computer code, including:
1. Local optimizations that improve performance within basic blocks, such as constant folding, propagation, and elimination of redundant computations.
2. Global optimizations that analyze control flow across basic blocks, such as common subexpression elimination.
3. Loop optimizations that improve performance of loops by removing invariant data and induction variables.
4. Machine-dependent optimizations like peephole optimizations that replace instructions with more efficient alternatives.
The goal of optimizations is to improve speed and efficiency while preserving program meaning and correctness. Optimizations can occur at multiple stages of development and compilation.
This document discusses the basics of RTL design and synthesis. It covers stages of synthesis including identifying state machines, inferring logic and state elements, optimization, and mapping to target technology. It notes that not everything that can be simulated can be synthesized. Good coding style reduces hazards and improves optimization. Examples are given of how logic, sequential logic, and datapaths can be synthesized. Pipelining is discussed as dividing complex operations into simpler operations processed sequentially.
This document discusses micro optimizations in C++ and their effectiveness. It begins by defining micro optimizations and noting that the real bottlenecks are often not within one's own code. It then discusses reasons both for and against micro optimizations, noting they can improve performance if used judiciously but also complicate code. The document covers measuring efficiency and complications that arise in C, C++ and higher-level languages. It emphasizes the importance of understanding what languages do behind the scenes and focusing optimizations on the "fast path" code used most frequently.
Anoushiravan Ghamsari, known as Anoush Ghamsari is a brilliant architect, the way he uses his creativity to create phenomenal concepts is beyond this world.
Deploy 22 microservices from scratch in 30 mins with GitOpsOpsta
- What do you need to deploy microservices?
- What is Docker, Kubernetes, Infrastructure, and GitOps?
- Why can GitOps help us to improve the DevOps process?
- Demo GitOps
Jirayut Nimsaeng
Founder & CEO
Opsta (Thailand) Co., Ltd.
Google DevFest 2022
The document discusses improving code quality through effective code review processes. It outlines common coding mistakes like redundant code, long or deeply nested functions, large modules, poor comments, and hardcoding. It recommends following best practices like coding guidelines, centralized server communication, and the single responsibility principle. The document also discusses measuring and reducing code complexity, avoiding memory leaks, optimizing images, static code analysis, and profiling to improve code quality.
Similar to Practical C++ Generative Programming (20)
What is DocuOps. How does Asciidoctor contribute? How to add it to your Maven & Gradle build. Tying all of the tech documentation together in a single project from commit to publish.
Seeking Enligtenment - A journey of purpose rather than instructionSchalk Cronjé
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
Introduction to Gradle in 45min as done at JBCN 2016. Covers the basics of Gradle for people familiar with other build tools. Includes building Java, Scala, Groovy & Kotlin projects
Cool Jvm Tools to Help you Test - Aylesbury Testers VersionSchalk Cronjé
This document summarizes a presentation about cool JVM tools for testing. It introduces the presenter and discusses tools like Spock and Geb for writing readable tests in Groovy. It also covers Ratpack for HTTP testing, Betamax for recording external API responses, and Gradle for running and integrating tests. The presentation provides code examples and outlines how these tools can help write effective tests more efficiently.
Using the Groovy Ecosystem for Rapid JVM DevelopmentSchalk Cronjé
Overviewing Ratpack, Geb, Spock & Gradle to help with rapid development on the JVM. Mentions of other Gr8 tools & libraries. Swift introduction to Groovy.
This document provides a 3 sentence summary of the presentation "Idiomatic Gradle Plugin Writing" by Schalk W. Cronjé:
The presentation discusses best practices for writing Gradle plugins, including using consistent and readable extensions to the Gradle DSL, supporting offline mode, testing plugins against multiple Gradle versions, and extending existing task types when needed rather than forcing users to use standard configurations. It provides examples of idiomatic ways to handle collections, maps, dependencies, and project extensions within Gradle plugins. The presentation aims to promote quality attributes like readability, consistency, flexibility and expressiveness in plugin authoring.
Beyond Estimates - Probability ManagementSchalk Cronjé
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive function. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
Documentation An Engineering Problem UnsolvedSchalk Cronjé
Following on from an idea of Dan Allan, this explores desires for authoring documentation from an engineering point of view. THhe second half looks at how Asciidoctor project is trying to address some of these desoires.
This document discusses using Gradle for building projects in multiple languages. Gradle's domain specific language is based on Groovy, which allows for concise syntax. Gradle supports building Java, C++, Ruby, and other languages through plugins. It can also be used to build documentation and publish artifacts to repositories. Migrating from other build systems like Ant, Maven, and Make to Gradle is also discussed.
This document discusses best practices for writing idiomatic Gradle plugins, including:
1. Making the plugin DSL readable, consistent, flexible and expressive.
2. Supporting the same Java versions as Gradle for compatibility.
3. Preferring methods over properties and using annotations properly.
4. Handling collections, maps, overriding dependencies, generated code, extensions and more idiomatically.
Asciidoctor is a document format and publishing tool that focuses on content over formatting. It allows embedding of diagrams and code snippets. It supports multiple output formats and has build integration. Asciidoctor is actively being developed and many open source projects use it for documentation.
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc
How does your privacy program stack up against your peers? What challenges are privacy teams tackling and prioritizing in 2024?
In the fifth annual Global Privacy Benchmarks Survey, we asked over 1,800 global privacy professionals and business executives to share their perspectives on the current state of privacy inside and outside of their organizations. This year’s report focused on emerging areas of importance for privacy and compliance professionals, including considerations and implications of Artificial Intelligence (AI) technologies, building brand trust, and different approaches for achieving higher privacy competence scores.
See how organizational priorities and strategic approaches to data security and privacy are evolving around the globe.
This webinar will review:
- The top 10 privacy insights from the fifth annual Global Privacy Benchmarks Survey
- The top challenges for privacy leaders, practitioners, and organizations in 2024
- Key themes to consider in developing and maintaining your privacy program
Let's Integrate MuleSoft RPA, COMPOSER, APM with AWS IDP along with Slackshyamraj55
Discover the seamless integration of RPA (Robotic Process Automation), COMPOSER, and APM with AWS IDP enhanced with Slack notifications. Explore how these technologies converge to streamline workflows, optimize performance, and ensure secure access, all while leveraging the power of AWS IDP and real-time communication via Slack notifications.
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
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.
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.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Speck&Tech
ABSTRACT: A prima vista, un mattoncino Lego e la backdoor XZ potrebbero avere in comune il fatto di essere entrambi blocchi di costruzione, o dipendenze di progetti creativi e software. La realtà è che un mattoncino Lego e il caso della backdoor XZ hanno molto di più di tutto ciò in comune.
Partecipate alla presentazione per immergervi in una storia di interoperabilità, standard e formati aperti, per poi discutere del ruolo importante che i contributori hanno in una comunità open source sostenibile.
BIO: Sostenitrice del software libero e dei formati standard e aperti. È stata un membro attivo dei progetti Fedora e openSUSE e ha co-fondato l'Associazione LibreItalia dove è stata coinvolta in diversi eventi, migrazioni e formazione relativi a LibreOffice. In precedenza ha lavorato a migrazioni e corsi di formazione su LibreOffice per diverse amministrazioni pubbliche e privati. Da gennaio 2020 lavora in SUSE come Software Release Engineer per Uyuni e SUSE Manager e quando non segue la sua passione per i computer e per Geeko coltiva la sua curiosità per l'astronomia (da cui deriva il suo nickname deneb_alpha).
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
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.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/building-and-scaling-ai-applications-with-the-nx-ai-manager-a-presentation-from-network-optix/
Robin van Emden, Senior Director of Data Science at Network Optix, presents the “Building and Scaling AI Applications with the Nx AI Manager,” tutorial at the May 2024 Embedded Vision Summit.
In this presentation, van Emden covers the basics of scaling edge AI solutions using the Nx tool kit. He emphasizes the process of developing AI models and deploying them globally. He also showcases the conversion of AI models and the creation of effective edge AI pipelines, with a focus on pre-processing, model conversion, selecting the appropriate inference engine for the target hardware and post-processing.
van Emden shows how Nx can simplify the developer’s life and facilitate a rapid transition from concept to production-ready applications.He provides valuable insights into developing scalable and efficient edge AI solutions, with a strong focus on practical implementation.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
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.
2. Even in this new millennium, many engineers will
still build components that have very little reuse
potential due to the inflexible way that they were
constructed.
This leads to excessive time required to adapt a
component for usage in another system.
4. Themes
• GP 101
• Building a team
• Building a single system
• Technical footwork
• Building multiple systems
• Integration & maintenance
5. Definition
It is a software engineering paradigm where the
aim is to automatically manufacture highly
customised and optimised intermediate or end-
products from elementary, reusable components
by means of configuration knowledge.
6. Automatic programming
• Generative programming is not automatic
programming.
• AP aims for highest level of automation
• GP acknowledges that there are potentialy
different levels of automation possible in a
complete system.
• AP usually involves some form of AI and high
amounts of domain knowledge.
• GP provides practical leverage of state-of-the art
software engineering practices.
7. Elements of Generative Programming
Problem space Solution space
Configuration
Knowledge
•Illegal feature
combinations
•Default settings &
dependencies
•Construction rules
•Optimisations
•Configured
Components
•Domain-specific
concepts
•Features
8. Benefits
• Economies of scope
● Less time and effort to produce variety of products
• Software quality improvement
● Reuse of proven components
• Scalability
● Can be applied to parts of a system or to whole
systems
• Optimisation at domain level
● Maximal combinability
● Minimal redundancy
● Maximum reuse
9. Steps
• Domain scoping
• Feature & concept modelling
• Common architecture design and
implementation technology identification
• Domain-specific notations
• Specify configuration knowledge (metadata)
• Implement generic components
• Apply configuration knowledge using generators
There is no specific order to these steps !
10. Configuration Knowledge vs
Metadata
• Configuration knowledge is the term preferred
by Czarnecki & Eisenecker
• Configuration knowledge can be considered the
holistic encapsulation of all knowledge related to
building all variants
• Metadata is probably a more codified form of
configuration knowledge.
• Some people find the term metadata easier to
grasp and less confusing than configuration
knowledge
• The rest of this presentation uses the term
metadata
11. Introducing GP into theProcess
• Start small !
● Use a pilot project or a small subset of an existing
system
● Experiential learning is important – learn to learn.
• Take an iterative and incremental approach to the
different GP steps.
• Don't worry too much about modelling up-front.
12. Building a Team
• Domain experts
● Require the ability to codify configuration knowledge
into a reusable form.
• Language experts
● Converting configuration knowledge in to
programming language representation.
• Guiding light
● One person whom understands GP well, ensures that
the development process stays on track and not
descend into maintenance hell.
13. Strategies for C++
• Templates are the C++ way to generic
programming
• Develop elementary components as generic
components
● Fully testable outside of the intended product
configuration
• Configure these components using generated
traits / policy classes
• Aim for zero cyclomatic-complexity in the
generated classes
14. Template Metaprogramming
• MPL is a key technology to build generic
components
● Best example is Boost C++ MPL
• MPL has been suggested as a domain-specific
language
● Metadata difficult to review to someone not familiar
with MPL
• MPL should rather be used as implementation
strategy
15. Example #1: Configuration system
Name: NetworkPort
Description: Unrestricted port on which a
service can be started
Type: uint16
Minimum Value: 1024
Maximum Value: 65535
16. Example #1: Configuration system
template <typename CfgAttr>
typename CfgAttr::value_type
get_config();
std::cout << “The network port we'll use is “ <<
get_config<NetworkPort>();
17. Example #1: A traits class
struct NetworkPort
{
typedef uint16_t value_type;
static const value_type const_min = 1024;
static const value_type const_max = 65535;
// ... rest to follow
};
18. Example #1: Alternative traits
Because other non-integral types cannot be
initialised inline, it might be more practical to use
the following alternative.
struct NetworkPort
{
typedef uint16_t value_type;
static value_type min_value() {return 1024;}
static value_type max_value() {return 65535;}
// ... rest to follow
};
19. Example #1: Basic generic function
std::string get_cfg_string( const char* name );
template <typename CfgAttr>
typename CfgAttr::value_type
get_config()
{
// Calls a basic configuration interface function
std::string tmp=get_cfg_string( CfgAttr::name() );
// Converts to appropriate type, throws exception
// on conversion failure
return boost::lexical_cast<typename
CfgAttr::value_type>(tmp);
}
20. Introducing run-time safety
• In order to protect the system against external
invalid data we need to add boundary checks.
● Use min_values(), max_value() from traits
● Add a default_value() to handle missing data
• Additional features could include:
● Throwing an exception, instead of defaulting, when
data is missing.
23. Capturing Configuration Knowledge
• Various methods have been used for codifying
metadata
● Text files
● Graphical Tools
● CASE Tools
• XML is a very convenient form for new projects
● Semi-human readable
● Text – Unrestricted source-control
● Easy to transform to other formats
• Includes non-code artefacts
● Custom editor can be created in Python or Java
24. Example #1: Configuration system
<ConfigSystem>
<Attr name=”NetworkPort” adt=”uint16”>
<Description>Unrestricted port on which a
service can be started</Description>
<Min>1024</Min>
<Max>65535</Max>
<Default>4321</Default>
</Attr>
</ConfigSystem>
25. Prefer ADTs
• Use abstract data types (ADTs)
• Use a XML lookup table to go from ADT to C++
type
• Underlying C++ representation can be changed
without changing any of the metadata
27. ADT Lookup Table
<Types>
<Type adt=”uint16” posix-type=”uint16_t” win32-
type=”WORD” embedded-type=”unsigned short”
quoted=”no”/>
<Type adt=”string” posixtype=”std::string” win32-
type=”std::string” embedded-type=”MyFixedString”
quoted=”yes”/>
<!--
adt: ADT name
win32-type: What type to use on a Win32 system
posix-type: Use this type on a POSIX system
embedded-type: Type for embedded systems.
quoted: Whether to quote the type in a traits class
-->
</Types>
28. Example #2
• Logging is an aspect of most systems that
crosscuts the architecture.
• There might be many requirements in your
system, on how logging and reporting is used.
● Loggable entities
● Levels of logging
● User display issues
● Localisation
• From a C++ point-of-view one important feature
is how logging is generated at logging points
• Using a GP approach it is possible to introduce
compile-time validation
29. Example #2: Legacy Logging
#define MINOR_FAILURE 1
#define MAJOR_PROBLEM 2
#define GENERAL_PANIC 3
void log_it( int id, const char* text );
// and then some smartie comes along
log_it(
MINOR_PROBLEM|GENERAL_PANIC,
”Voila!! An unsupported error”
);
30. Example #2: Logging Metadata
<Logging>
<Report id=”1” name=”MINOR_FAILURE”>
<Text>The projector's bulb needs replacing</Text>
</Report>
<Report id=”2” name=”MAJOR_PROBLEM”>
<Text>We're out of Belgium beer</Text>
</Report>
<Report id=”3” name=”GENERAL_PANIC”>
<Text>Elvis has left the building</Text>
</Report>
</Logging>
31. Example #2: Logging Function
template <typename Report>
void log_it( Report const&, const char* text );
log_it( 3,”My code” ); // compile error
log_it( MAJOR_PROBLEM, “Out of German beer too” );
log_it(
MINOR_FAILURE|MAJOR_PROBLEM,
“No way” ); // Compile error
32. Example #2: Logging ID Class
// Define type
class Reportable
{
public:
Reportable( unsigned id_ );
unsigned id() const;
};
// then do either, initialising MINOR_FAILURE in .cpp
extern const Reportable MINOR_FAILURE;
// or
namespace { const Reportable MINOR_FAILURE =
Reportable(1); }
33. Preventing Code-bloat
• Only instantiate what is needed
● For constant objects this is very easy using the MPL-
value idiom
• Due to ways some linkers work, concrete code might be
included in a final link even if the code is not used,
therefore only generate what is needed
● Control the config elements available to a specific
system from metadata
● Only generate the appropriate traits classes
• Cleanly separate common concrete class into a mixin
class
34. The MPL-value idiom
template <int V>
class A
{
public:
static const A<V> value;
private:
A();
};
template <int V>
static const A<V> A<V>::value;
36. Adding logging actions
• A user might want to specify that some reports can have
certain associated actions.
• For the logging example we might have
● GO_BUY
● MAKE_ANNOUNCEMENT
● CALL_SECURITY.
• As this is configuration knowledge we can add
this to the metadata and then generate
appropriate metacode.
39. Using SFINAE as validator
template <typename Report,typename Action>
void log_it( const char* text,
boost::enable_if<
boost::mpl::contains<
typename Report::valid_actions, Action
>::type::value
>*_= 0);
// Fails to compile
log_it<GENERAL_PROBLEM>( GO_BUY,”Bought Elvis beer”);
// OK,
log_it<MAJOR_PROBLEM>( GO_BUY,
”Imported some Hoegaarden”);
40. Multiple Systems
• Examples until now have shown the GP steps
for a configuration system and a logging system.
• The next step is to apply these to three systems:
● System 1 uses XML files for configuration and sends
logs to syslog.
● System2 uses INI files, and sends logs to NT Evlog
● System 3 keeps configuration in a binary format (read-
only) and sends logs via SNMP.
42. Building Multiple Systems
• Four generators can be applied to this product
metadata.
● Two of them we have already seen
● These will generate configurations and logging aspects
• Another generator looks at logging and
configurations and adds the appropriate
subsystems.
• A fourth generator looks at the functionality and
loads up all of the functional classes for the
system
● A creative exercise for the reader …
43. Testing
• Can tests be generated?
● There have been various argument around this topic.
• Validate metadata independently
• Test data can be generated from metadata
• DO NOT generate unit tests to validate that the
generated code is correct!
● How can you verify that the generated tests is correct?
44. Maintenance
• Long-tem maintenance requires upfront
investment in building quality generic
components
• Metadata might have to refactored into smaller
XML files or a tools should be developed to edit
the metadata.
• Refactoring components into more generic
components over time means that you will be
able to configure and customise products even
more.
45. Integration
• Many modern systems are multi-language /
multi-platform
• These techniques extend easily into other
programming languages / development
environments
• The same configuration knowledge remains the
driver
• Localisation data can be generated in various
formats
• Parts of technical documents can also be
generated.
47. In this new millennium, engineers can build high-
quality proven generic components with high reuse
potential and adaptively configure them.
This leads to decreased time required to use a
component in another domain and an increase in
the variety of products that can be assembled.
Did anyone mention competitive edge?