This document discusses methodologies for exploring object-oriented software design for embedded systems. It introduces a two-part methodology: 1) Method exploration optimizes method implementations by automatically selecting software/hardware components to match application requirements. 2) Object exploration explores object organization by transforming dynamic allocations to static to reduce overhead while maintaining low memory costs. Experimental results on an MP3 player show this design space exploration can provide solutions optimized for performance, energy use, and memory footprint.
A FRAMEWORK STUDIO FOR COMPONENT REUSABILITYcscpconf
The deployment of a software product requires considerable amount of time and effort. In order
to increase the productivity of the software products, reusability strategies were proposed in the
literature. However effective reuse is still a challenging issue. This paper presents a framework
studio for effective components reusability which provides the selection of components from framework studio and generation of source code based on stakeholders needs. The framework studio is implemented using swings which are integrated onto the Net Beans IDE which help in faster generation of the source code.
PROGRAMMING REQUESTS/RESPONSES WITH GREATFREE IN THE CLOUD ENVIRONMENTijdpsjournal
Programming request with GreatFree is an efficient programming technique to implement distributed polling in the cloud computing environment. GreatFree is a distributed programming environment through which diverse distributed systems can be established through programming rather than configuring or scripting. GreatFree emphasizes the importance of programming since it offers developers the opportunities to leverage their distributed knowledge and programming skills. Additionally, programming is the unique way to construct creative, adaptive and flexible systems to accommodate various distributed computing environments. With the support of GreatFree code-level Distributed Infrastructure Patterns, Distributed Operation Patterns and APIs, the difficult procedure is accomplished in a programmable, rapid and highly-patterned manner, i.e., the programming behaviors are simplified as the repeatable operation of Copy-Paste-Replace. Since distributed polling is one of the fundamental techniques to construct distributed systems, GreatFree provides developers with relevant APIs and patterns to program requests/responses in the novel programming environment.
Industry - Evolution and migration - Incremental and Iterative Reengineering ...ICSM 2011
Paper: Incremental and Iterative Reengineering towards Software Product Line: An Industrial Case Study
Authors: Gang Zhang, Liwei Shen, Xin Peng, Zhenchang Xing and Wenyun Zhao
Session: Industry Track Session 3: Evolution and migration
This document discusses approaches to calculating reusability in source code using metrics. It proposes a way to identify reusable modules in source code by taking the code as input and using metrics to determine which software components should be reused. Previous work on measuring reusability based on size of reused code is discussed. Attributes that affect a software module's reusability, like complexity, interface complexity, size, and dependencies are outlined. The conceptual model for estimating module reusability is presented, defining reusability as a product of functionality and applicability. Functionality is defined as the number of situations a module can be used based on its specification, while applicability measures the percentage of situations it can be reused in.
The Role of (Software) Languages in the Socio-Technical Coordination (Oct., 2...Benoit Combemale
The document discusses the role of software languages in socio-technical coordination. It argues that domain-specific modeling languages (DSMLs) are key for bridging the problem and solution spaces, and providing cognitive support for social coordination. However, DSMLs are often developed independently, making it difficult to reason across models from different domains. The document calls for "globalizing" modeling languages by supporting coordinated use of multiple DSMLs to facilitate work across different domains of expertise.
Leveraging mobile devices to enhance the performance and ease of programming ...IJITE
Programming simple robots allows teachers to reinforce unified science, technology, engineering, and
math (STEM) concepts. However, for many educators, the cost and computer requirements for robotics kits
are prohibitive. As mobile devices have become increasingly ubiquitous, low cost, and powerful, they may
prove to be an attractive means of coding for, controlling, and enhancing the capabilities of low-cost
mobile robots. This study looks into the viability of using LEGO Mindstorms NXT and Google Android
devices by using Bluetooth to establish a link between the two. This allows for the exchange of live data
remotely for use in various applications with the hope of creating a low-cost mobile programming
environment. The mobile applications developed were able to successfully exchange data with NXT
hardware via Bluetooth and show evidence that mobile devices can be used as a tool to assist in robotic
programming in education.
This document discusses DevOps and outlines some challenges and solutions. It reviews cultural challenges between developers and operators, and outlines DevOps principles of developing against production-like systems, iterative deployments using reliable processes, and continuous monitoring. It then summarizes strategies around standardizing environments, planning and tracking changes collaboratively, managing changes through automation, and providing feedback.
An introductory lecture on Context-Oriented Programming, part of the course LINGI2252 “Software Maintenance and Evolution”, given by Prof. Kim Mens at UCL, Belgium. This particular lecture was made by Dr. Sebastian Gonzalez in close collaboration with Prof. Kim Mens.
A FRAMEWORK STUDIO FOR COMPONENT REUSABILITYcscpconf
The deployment of a software product requires considerable amount of time and effort. In order
to increase the productivity of the software products, reusability strategies were proposed in the
literature. However effective reuse is still a challenging issue. This paper presents a framework
studio for effective components reusability which provides the selection of components from framework studio and generation of source code based on stakeholders needs. The framework studio is implemented using swings which are integrated onto the Net Beans IDE which help in faster generation of the source code.
PROGRAMMING REQUESTS/RESPONSES WITH GREATFREE IN THE CLOUD ENVIRONMENTijdpsjournal
Programming request with GreatFree is an efficient programming technique to implement distributed polling in the cloud computing environment. GreatFree is a distributed programming environment through which diverse distributed systems can be established through programming rather than configuring or scripting. GreatFree emphasizes the importance of programming since it offers developers the opportunities to leverage their distributed knowledge and programming skills. Additionally, programming is the unique way to construct creative, adaptive and flexible systems to accommodate various distributed computing environments. With the support of GreatFree code-level Distributed Infrastructure Patterns, Distributed Operation Patterns and APIs, the difficult procedure is accomplished in a programmable, rapid and highly-patterned manner, i.e., the programming behaviors are simplified as the repeatable operation of Copy-Paste-Replace. Since distributed polling is one of the fundamental techniques to construct distributed systems, GreatFree provides developers with relevant APIs and patterns to program requests/responses in the novel programming environment.
Industry - Evolution and migration - Incremental and Iterative Reengineering ...ICSM 2011
Paper: Incremental and Iterative Reengineering towards Software Product Line: An Industrial Case Study
Authors: Gang Zhang, Liwei Shen, Xin Peng, Zhenchang Xing and Wenyun Zhao
Session: Industry Track Session 3: Evolution and migration
This document discusses approaches to calculating reusability in source code using metrics. It proposes a way to identify reusable modules in source code by taking the code as input and using metrics to determine which software components should be reused. Previous work on measuring reusability based on size of reused code is discussed. Attributes that affect a software module's reusability, like complexity, interface complexity, size, and dependencies are outlined. The conceptual model for estimating module reusability is presented, defining reusability as a product of functionality and applicability. Functionality is defined as the number of situations a module can be used based on its specification, while applicability measures the percentage of situations it can be reused in.
The Role of (Software) Languages in the Socio-Technical Coordination (Oct., 2...Benoit Combemale
The document discusses the role of software languages in socio-technical coordination. It argues that domain-specific modeling languages (DSMLs) are key for bridging the problem and solution spaces, and providing cognitive support for social coordination. However, DSMLs are often developed independently, making it difficult to reason across models from different domains. The document calls for "globalizing" modeling languages by supporting coordinated use of multiple DSMLs to facilitate work across different domains of expertise.
Leveraging mobile devices to enhance the performance and ease of programming ...IJITE
Programming simple robots allows teachers to reinforce unified science, technology, engineering, and
math (STEM) concepts. However, for many educators, the cost and computer requirements for robotics kits
are prohibitive. As mobile devices have become increasingly ubiquitous, low cost, and powerful, they may
prove to be an attractive means of coding for, controlling, and enhancing the capabilities of low-cost
mobile robots. This study looks into the viability of using LEGO Mindstorms NXT and Google Android
devices by using Bluetooth to establish a link between the two. This allows for the exchange of live data
remotely for use in various applications with the hope of creating a low-cost mobile programming
environment. The mobile applications developed were able to successfully exchange data with NXT
hardware via Bluetooth and show evidence that mobile devices can be used as a tool to assist in robotic
programming in education.
This document discusses DevOps and outlines some challenges and solutions. It reviews cultural challenges between developers and operators, and outlines DevOps principles of developing against production-like systems, iterative deployments using reliable processes, and continuous monitoring. It then summarizes strategies around standardizing environments, planning and tracking changes collaboratively, managing changes through automation, and providing feedback.
An introductory lecture on Context-Oriented Programming, part of the course LINGI2252 “Software Maintenance and Evolution”, given by Prof. Kim Mens at UCL, Belgium. This particular lecture was made by Dr. Sebastian Gonzalez in close collaboration with Prof. Kim Mens.
Presentation SIG, Green IT Amsterdam workshop Green Software 12 apr 2011, Gre...Jaak Vlasveld
This presentation discusses green software and energy efficiency at the application level. It provides background on the Software Improvement Group, which analyzes over 90 systems annually and provides management advisory services and software quality certification. The presentation introduces a taxonomy of green aspects of software, including computational efficiency, algorithmic efficiency, data structures, and functional necessity. It discusses approaches to optimizing some of these aspects, like energy-aware coding of algorithms and data structures. The presentation also notes challenges like the currently energy-oblivious nature of most software development.
This document provides an overview of EJB in J2EE architecture and EJB design patterns. It discusses the key characteristics of using EJB in J2EE architecture, including supporting multiple clients, improving reliability and productivity, supporting large scale deployment, developing transactional applications, and implementing security. It also outlines several EJB design patterns, such as client-side interaction patterns, EJB layer architectural patterns, inter-tier data transfer patterns, and transaction/persistence patterns.
This document discusses behavioral design patterns and J2EE design patterns. It provides descriptions and class diagrams for several behavioral patterns, including Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, and Visitor. It also defines what a J2EE design pattern is and notes that J2EE patterns are categorized into the presentation, business, and integration tiers of an enterprise application.
The document discusses the five main phases of program development:
1) Problem analysis phase where the programmer identifies the client's needs.
2) Program design phase where the programmer designs a flowchart representing the client's needs.
3) Coding phase where the programmer performs coding.
4) Testing and debugging phase where the program is tested by users and errors are debugged.
5) Documentation phase where the programmer completes documentation including a user manual and program listing.
Introduction to Android Programming by Dr.M.Pyingkodi-kongu engineering c...pyingkodi maran
Android is an open-source software platform based on the Linux kernel that is used for mobile devices. It is developed by Google and the Open Handset Alliance. The document discusses Android's architecture including its software stack from applications down to the Linux kernel. It also covers Android development tools and the building blocks of an Android application like activities, services, and content providers.
The increasing use of digital video has put into perspective the storage requirements for a large number of video files. Different qualities of videos are available and each of these requires different storage areas. Different variety of devices having different pixel densities uses these files and accordingly has varying video processing capabilities. This paper presents a novel multimedia video encoding/decoding algorithm which is responsive to the device and responds to the device capabilities. This involves a light-weight, multi-layered approach whereby the video streams are divided into different layers and these are differentially loaded as per the quality requirements. This differential loading involves the progressive decoding algorithm for the video stream and henceforth a single file to be used vary the bit rate depending on several factors like the device processing capabilities, available memory, screen width and pixel density for different quality requirements. By in cooperating this method to WebRTC framework, the quality of video can be varied according to the network congestions. Our analysis reveals that this method is far more efficient than transcoding-on-air method which is used by multimedia servers which require special hardware support. For normal servers which use HTML5 for playback of video, this method reduces the total bandwidth required and saves a lot of storage space which results in smooth streaming over the web. This new approach makes the video files adaptive to the different devices on which they are running.
MILEPOST GCC: machine learning based research compilerbutest
The document describes MILEPOST GCC, a machine learning-based compiler that automatically adjusts its optimization heuristics to improve program performance on different architectures. It uses an interactive compilation interface and program features to gather training data, which is then used to build machine learning models that can predict good optimization strategies. Preliminary experiments show it was able to improve execution time of benchmarks by 11% on a range of platforms without manual tuning.
This document discusses design patterns and provides examples of structural and behavioral design patterns. It describes the adapter, bridge, composite, decorator, facade, flyweight, proxy, chain of responsibility, and command patterns. Structural patterns are concerned with relationships and responsibilities between objects, while behavioral patterns focus on communication between objects. Examples of UML diagrams are provided to illustrate how each pattern can be modeled.
Pavan Kumar T N is a highly skilled Software Engineer with over 3.5 years of experience in IT. He has expertise in SAN, NAS, Java, C, C++ and storage testing. He is seeking a role as a Software Engineer and has experience working on projects for EMC Data Storage Systems including SMI-S automation and testing, CLAR OSL testing and development, and SRDFCE. He has a Bachelor's degree in Electronics and Communications Engineering and a Master's degree in Networking and Internet Engineering.
The document discusses Java 2 Enterprise Edition (J2EE) application security. It covers security threat assessment, the Java 2 security model, and Java security APIs. The Java 2 security model provides access controls and allows downloading and running applications securely. It uses techniques like cryptography, digital signatures, and SSL. The Java Cryptography Extensions API provides methods for encrypting data, generating keys, and authentication.
Interoperability of Reconfiguring System on FPGA Using a Design Entry of Hard...IDES Editor
For a long ago, world of digital design has spread
out in the many major and a lot of logics, approaches, and
theories has been proposed. The digital emerges as a solution
of a daily-life need and applicable on such technology from
the developing devices until software-based. All of the designs
has a significant point on the spesification, integration, and
optimization. The designers have been trying to make a good
designs on both hardware and software, latest both
combinations have been known as the basic idea of hardware/
software co-design. The state-of-the art computer is very
interesting to research because of its implementation can
make changes of the cycle of reconfigurable objects. This paper
presents a comparison of the two role plays in reconfigurable
devices especially FPGA-based, i.e. Altera and Xilinx. The
idea is that of a simple compiler has a good performance designs
for synthesizing Very high speed integrated circuit Hardware
Description Language (VHDL) code as well as the other
complexity software that more powerful. So, this paper
proposes such method as interoperability for reconfiguring
devices to get the point why few of the standard VHDL code
can’t be synthesised in the different compiler of VHDL code
between Xilinx and Altera. The project of compiler softwares
that is observed from Xilinx is ISE and from Altera is Max+Plus
II. Max+Plus II is a low-cost software than ISE Xilinx, although
both Xilinx and Altera devices have a different structure each
other.
A multimedia production team consists of various roles including a project manager, subject matter expert, graphic artist, audio/video technician, instructional designer, and programmer. The project manager defines the project scope and coordinates the team. Each role contributes different elements - the subject matter expert provides content, the graphic artist develops visual elements, the audio/video technician records and edits sound/video, the instructional designer plans educational strategies, and the programmer codes the program. The team goes through various phases from analysis to design, implementation, testing, evaluation, and publishing to produce high-quality multimedia applications.
This document discusses EJB technology and provides summaries of key concepts:
1. It defines the EJB container model and describes features like security, distributed access, and lifecycle management.
2. It compares the lifecycles of stateless session beans, stateful session beans, entity beans, and message-driven beans.
3. It contrasts stateful and stateless session beans and discusses differences in client state, pooling, lifecycles, and more. It also compares session beans and entity beans in terms of representing processes versus data.
FOSS STHLM Android Cloud to Device MessagingJohan Nilsson
The Android Cloud to Device Messaging framework allows third-party servers to send lightweight messages to Android applications. It uses existing Google services connections to deliver messages even if the app is not active. Developers must integrate intent receivers and services, register apps with Google, and implement messaging on the server side using registration IDs and authorization tokens.
High-Performance Timing Simulation of Embedded SoftwareMr. Chanuwan
This paper presents a hybrid approach for high-performance timing simulation of embedded software. The approach combines static execution time analysis and back-annotation of timing information into a SystemC model. In the first step, static timing analysis determines the cycle count for each basic block using processor models. This timing information is then back-annotated into SystemC. Dynamic effects like branches and caches are handled by instrumentation code. The generated code can be simulated with 90% of the speed of untimed software. This hybrid approach aims to achieve fast and accurate timing simulation of embedded software.
Android Cloud to Device Messaging Framework at GTUG StockholmJohan Nilsson
The document discusses the Android Cloud to Device Messaging (C2DM) framework. It allows application servers to send lightweight messages to Android apps. Key points:
- C2DM notifies apps of new data to fetch rather than sending large amounts of content. It makes no guarantees about message delivery or order.
- Apps can receive messages even when not running by using intent broadcasts. C2DM only passes raw message data.
- Apps must register with C2DM to receive messages and can unregister. Registration requires Android 2.2+ with the Market app installed.
- The app server sends messages via HTTP using a registration ID and authorization token. C2DM handles storing and delivering messages when
High performance operating system controlled memory compressionMr. Chanuwan
This document describes a new software-based online memory compression algorithm that can increase available memory for applications by 150% without modifying applications or hardware. The algorithm, called pattern-based partial match (PBPM), explores frequent patterns within memory words and exploits similarities between words to achieve high compression ratios comparable to Lempel-Ziv compression but with half the runtime. An adaptive memory management technique is also presented to pre-allocate memory for compressed data, further increasing available memory by up to 13%. Experimental results found these techniques effective at doubling the usable memory for a wide range of applications on an embedded portable device.
The document discusses various causes of memory leaks in .NET applications, including circular references, rooted references that prevent garbage collection, excessively large lists/dictionaries, type initializers, leaking stack/unmanaged memory, and finalizers. It provides examples of each type of leak and recommends identifying whether a leak exists, determining if it is in managed or unmanaged memory, and analyzing object heaps to find what is being kept alive unintentionally. The document also lists various tools and references for analyzing memory usage and leaks.
This document discusses using multithreading in Java with LEJOS to control a line following robot. It presents the original single-threaded code and then improves it using two threads - one for line following and one for obstacle detection. The main program starts each thread and uses a DataExchange class to allow the threads to communicate and coordinate the robot's behavior. When no obstacles are detected, the line following thread controls the motors to follow a black line. When an obstacle is detected within 25cm, the obstacle detection thread stops the line following behavior.
Automated Java Code Generation (ICDIM 2006)IT Industry
Rule based Production Systems for Automatic Code Generation in Java
This document describes a system that can automatically generate UML diagrams and code from natural language requirements. It analyzes text written in English to extract objects, classes, attributes and methods. It then generates UML class, activity, sequence and use case diagrams based on the analysis. Finally, it produces code in languages like Java, C# and VB.NET corresponding to the diagrams. The system aims to save time and costs by automating modeling and a significant portion of coding based on input requirements. It provides a more efficient alternative to traditional manual modeling and coding approaches.
Presentation SIG, Green IT Amsterdam workshop Green Software 12 apr 2011, Gre...Jaak Vlasveld
This presentation discusses green software and energy efficiency at the application level. It provides background on the Software Improvement Group, which analyzes over 90 systems annually and provides management advisory services and software quality certification. The presentation introduces a taxonomy of green aspects of software, including computational efficiency, algorithmic efficiency, data structures, and functional necessity. It discusses approaches to optimizing some of these aspects, like energy-aware coding of algorithms and data structures. The presentation also notes challenges like the currently energy-oblivious nature of most software development.
This document provides an overview of EJB in J2EE architecture and EJB design patterns. It discusses the key characteristics of using EJB in J2EE architecture, including supporting multiple clients, improving reliability and productivity, supporting large scale deployment, developing transactional applications, and implementing security. It also outlines several EJB design patterns, such as client-side interaction patterns, EJB layer architectural patterns, inter-tier data transfer patterns, and transaction/persistence patterns.
This document discusses behavioral design patterns and J2EE design patterns. It provides descriptions and class diagrams for several behavioral patterns, including Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, and Visitor. It also defines what a J2EE design pattern is and notes that J2EE patterns are categorized into the presentation, business, and integration tiers of an enterprise application.
The document discusses the five main phases of program development:
1) Problem analysis phase where the programmer identifies the client's needs.
2) Program design phase where the programmer designs a flowchart representing the client's needs.
3) Coding phase where the programmer performs coding.
4) Testing and debugging phase where the program is tested by users and errors are debugged.
5) Documentation phase where the programmer completes documentation including a user manual and program listing.
Introduction to Android Programming by Dr.M.Pyingkodi-kongu engineering c...pyingkodi maran
Android is an open-source software platform based on the Linux kernel that is used for mobile devices. It is developed by Google and the Open Handset Alliance. The document discusses Android's architecture including its software stack from applications down to the Linux kernel. It also covers Android development tools and the building blocks of an Android application like activities, services, and content providers.
The increasing use of digital video has put into perspective the storage requirements for a large number of video files. Different qualities of videos are available and each of these requires different storage areas. Different variety of devices having different pixel densities uses these files and accordingly has varying video processing capabilities. This paper presents a novel multimedia video encoding/decoding algorithm which is responsive to the device and responds to the device capabilities. This involves a light-weight, multi-layered approach whereby the video streams are divided into different layers and these are differentially loaded as per the quality requirements. This differential loading involves the progressive decoding algorithm for the video stream and henceforth a single file to be used vary the bit rate depending on several factors like the device processing capabilities, available memory, screen width and pixel density for different quality requirements. By in cooperating this method to WebRTC framework, the quality of video can be varied according to the network congestions. Our analysis reveals that this method is far more efficient than transcoding-on-air method which is used by multimedia servers which require special hardware support. For normal servers which use HTML5 for playback of video, this method reduces the total bandwidth required and saves a lot of storage space which results in smooth streaming over the web. This new approach makes the video files adaptive to the different devices on which they are running.
MILEPOST GCC: machine learning based research compilerbutest
The document describes MILEPOST GCC, a machine learning-based compiler that automatically adjusts its optimization heuristics to improve program performance on different architectures. It uses an interactive compilation interface and program features to gather training data, which is then used to build machine learning models that can predict good optimization strategies. Preliminary experiments show it was able to improve execution time of benchmarks by 11% on a range of platforms without manual tuning.
This document discusses design patterns and provides examples of structural and behavioral design patterns. It describes the adapter, bridge, composite, decorator, facade, flyweight, proxy, chain of responsibility, and command patterns. Structural patterns are concerned with relationships and responsibilities between objects, while behavioral patterns focus on communication between objects. Examples of UML diagrams are provided to illustrate how each pattern can be modeled.
Pavan Kumar T N is a highly skilled Software Engineer with over 3.5 years of experience in IT. He has expertise in SAN, NAS, Java, C, C++ and storage testing. He is seeking a role as a Software Engineer and has experience working on projects for EMC Data Storage Systems including SMI-S automation and testing, CLAR OSL testing and development, and SRDFCE. He has a Bachelor's degree in Electronics and Communications Engineering and a Master's degree in Networking and Internet Engineering.
The document discusses Java 2 Enterprise Edition (J2EE) application security. It covers security threat assessment, the Java 2 security model, and Java security APIs. The Java 2 security model provides access controls and allows downloading and running applications securely. It uses techniques like cryptography, digital signatures, and SSL. The Java Cryptography Extensions API provides methods for encrypting data, generating keys, and authentication.
Interoperability of Reconfiguring System on FPGA Using a Design Entry of Hard...IDES Editor
For a long ago, world of digital design has spread
out in the many major and a lot of logics, approaches, and
theories has been proposed. The digital emerges as a solution
of a daily-life need and applicable on such technology from
the developing devices until software-based. All of the designs
has a significant point on the spesification, integration, and
optimization. The designers have been trying to make a good
designs on both hardware and software, latest both
combinations have been known as the basic idea of hardware/
software co-design. The state-of-the art computer is very
interesting to research because of its implementation can
make changes of the cycle of reconfigurable objects. This paper
presents a comparison of the two role plays in reconfigurable
devices especially FPGA-based, i.e. Altera and Xilinx. The
idea is that of a simple compiler has a good performance designs
for synthesizing Very high speed integrated circuit Hardware
Description Language (VHDL) code as well as the other
complexity software that more powerful. So, this paper
proposes such method as interoperability for reconfiguring
devices to get the point why few of the standard VHDL code
can’t be synthesised in the different compiler of VHDL code
between Xilinx and Altera. The project of compiler softwares
that is observed from Xilinx is ISE and from Altera is Max+Plus
II. Max+Plus II is a low-cost software than ISE Xilinx, although
both Xilinx and Altera devices have a different structure each
other.
A multimedia production team consists of various roles including a project manager, subject matter expert, graphic artist, audio/video technician, instructional designer, and programmer. The project manager defines the project scope and coordinates the team. Each role contributes different elements - the subject matter expert provides content, the graphic artist develops visual elements, the audio/video technician records and edits sound/video, the instructional designer plans educational strategies, and the programmer codes the program. The team goes through various phases from analysis to design, implementation, testing, evaluation, and publishing to produce high-quality multimedia applications.
This document discusses EJB technology and provides summaries of key concepts:
1. It defines the EJB container model and describes features like security, distributed access, and lifecycle management.
2. It compares the lifecycles of stateless session beans, stateful session beans, entity beans, and message-driven beans.
3. It contrasts stateful and stateless session beans and discusses differences in client state, pooling, lifecycles, and more. It also compares session beans and entity beans in terms of representing processes versus data.
FOSS STHLM Android Cloud to Device MessagingJohan Nilsson
The Android Cloud to Device Messaging framework allows third-party servers to send lightweight messages to Android applications. It uses existing Google services connections to deliver messages even if the app is not active. Developers must integrate intent receivers and services, register apps with Google, and implement messaging on the server side using registration IDs and authorization tokens.
High-Performance Timing Simulation of Embedded SoftwareMr. Chanuwan
This paper presents a hybrid approach for high-performance timing simulation of embedded software. The approach combines static execution time analysis and back-annotation of timing information into a SystemC model. In the first step, static timing analysis determines the cycle count for each basic block using processor models. This timing information is then back-annotated into SystemC. Dynamic effects like branches and caches are handled by instrumentation code. The generated code can be simulated with 90% of the speed of untimed software. This hybrid approach aims to achieve fast and accurate timing simulation of embedded software.
Android Cloud to Device Messaging Framework at GTUG StockholmJohan Nilsson
The document discusses the Android Cloud to Device Messaging (C2DM) framework. It allows application servers to send lightweight messages to Android apps. Key points:
- C2DM notifies apps of new data to fetch rather than sending large amounts of content. It makes no guarantees about message delivery or order.
- Apps can receive messages even when not running by using intent broadcasts. C2DM only passes raw message data.
- Apps must register with C2DM to receive messages and can unregister. Registration requires Android 2.2+ with the Market app installed.
- The app server sends messages via HTTP using a registration ID and authorization token. C2DM handles storing and delivering messages when
High performance operating system controlled memory compressionMr. Chanuwan
This document describes a new software-based online memory compression algorithm that can increase available memory for applications by 150% without modifying applications or hardware. The algorithm, called pattern-based partial match (PBPM), explores frequent patterns within memory words and exploits similarities between words to achieve high compression ratios comparable to Lempel-Ziv compression but with half the runtime. An adaptive memory management technique is also presented to pre-allocate memory for compressed data, further increasing available memory by up to 13%. Experimental results found these techniques effective at doubling the usable memory for a wide range of applications on an embedded portable device.
The document discusses various causes of memory leaks in .NET applications, including circular references, rooted references that prevent garbage collection, excessively large lists/dictionaries, type initializers, leaking stack/unmanaged memory, and finalizers. It provides examples of each type of leak and recommends identifying whether a leak exists, determining if it is in managed or unmanaged memory, and analyzing object heaps to find what is being kept alive unintentionally. The document also lists various tools and references for analyzing memory usage and leaks.
This document discusses using multithreading in Java with LEJOS to control a line following robot. It presents the original single-threaded code and then improves it using two threads - one for line following and one for obstacle detection. The main program starts each thread and uses a DataExchange class to allow the threads to communicate and coordinate the robot's behavior. When no obstacles are detected, the line following thread controls the motors to follow a black line. When an obstacle is detected within 25cm, the obstacle detection thread stops the line following behavior.
Automated Java Code Generation (ICDIM 2006)IT Industry
Rule based Production Systems for Automatic Code Generation in Java
This document describes a system that can automatically generate UML diagrams and code from natural language requirements. It analyzes text written in English to extract objects, classes, attributes and methods. It then generates UML class, activity, sequence and use case diagrams based on the analysis. Finally, it produces code in languages like Java, C# and VB.NET corresponding to the diagrams. The system aims to save time and costs by automating modeling and a significant portion of coding based on input requirements. It provides a more efficient alternative to traditional manual modeling and coding approaches.
Visual Programming and Program Visualization – Towards an Ideal Visual Softwa...IDES Editor
There has been a great interest recently in systems
that use graphics to aid in the programming, debugging, and
understanding of computer systems. The ‘’Visual
Programming’’ and ‘’Program Visualization’’ are exciting
areas of active computer science research that show promise
for improving the programming process, for this they have
been applied to these systems. This article attempts to provide
more meaning to these terms by giving precise definitions,
and then surveys a number of systems that can be classified as
providing Visual Programming or Program Visualization.
These systems are organized by classifying them into two
different taxonomies. The paper also gives a brief description
of our approach that concentrated on both Visual Programming
and Program Visualization for an Ideal Visual Software
Engineering System. We consider it as a new promising trend
in software engineering.
PROGRAMMING REQUESTS/RESPONSES WITH GREATFREE IN THE CLOUD ENVIRONMENTijdpsjournal
Programming request with GreatFree is an efficient programming technique to implement distributed polling in the cloud computing environment. GreatFree is a distributed programming environment through which diverse distributed systems can be established through programming rather than configuring or scripting. GreatFree emphasizes the importance of programming since it offers developers the opportunities to leverage their distributed knowledge and programming skills. Additionally, programming is the unique way to construct creative, adaptive and flexible systems to accommodate various distributed computing environments. With the support of GreatFree code-level Distributed Infrastructure Patterns,
Distributed Operation Patterns and APIs, the difficult procedure is accomplished in a programmable, rapid and highly-patterned manner, i.e., the programming behaviors are simplified as the repeatable operation of Copy-Paste-Replace. Since distributed polling is one of the fundamental techniques to construct distributed systems, GreatFree provides developers with relevant APIs and patterns to program requests/responses in the novel programming environment.
PROGRAMMING REQUESTS/RESPONSES WITH GREATFREE IN THE CLOUD ENVIRONMENTijdpsjournal
Programming request with GreatFree is an efficient programming technique to implement distributed
polling in the cloud computing environment. GreatFree is a distributed programming environment through
which diverse distributed systems can be established through programming rather than configuring or
scripting. GreatFree emphasizes the importance of programming since it offers developers the
opportunities to leverage their distributed knowledge and programming skills. Additionally, programming
is the unique way to construct creative, adaptive and flexible systems to accommodate various distributed
computing environments. With the support of GreatFree code-level Distributed Infrastructure Patterns,
Distributed Operation Patterns and APIs, the difficult procedure is accomplished in a programmable,
rapid and highly-patterned manner, i.e., the programming behaviors are simplified as the repeatable
operation of Copy-Paste-Replace. Since distributed polling is one of the fundamental techniques to
construct distributed systems, GreatFree provides developers with relevant APIs and patterns to program
requests/responses in the novel programming environment.
Improved Strategy for Distributed Processing and Network Application Developm...Editor IJCATR
The complexity of software development abstraction and the new development in multi-core computers have shifted the burden of distributed software performance from network and chip designers to software architectures and developers. We need to look at software development strategies that will integrate parallelization of code, concurrency factors, multithreading, distributed resources allocation and distributed processing. In this paper, a new software development strategy that integrates these factors is further experimented on parallelism. The strategy is multidimensional aligns distributed conceptualization along a path. This development strategy mandates application developers to reason along usability, simplicity, resource distribution, parallelization of code where necessary, processing time and cost factors realignment as well as security and concurrency issues in a balanced path from the originating point of the network application to its retirement.
Improved Strategy for Distributed Processing and Network Application DevelopmentEditor IJCATR
The complexity of software development abstraction and the new development in multi-core computers have shifted the
burden of distributed software performance from network and chip designers to software architectures and developers. We need to
look at software development strategies that will integrate parallelization of code, concurrency factors, multithreading, distributed
resources allocation and distributed processing. In this paper, a new software development strategy that integrates these factors is
further experimented on parallelism. The strategy is multidimensional aligns distributed conceptualization along a path. This
development strategy mandates application developers to reason along usability, simplicity, resource distribution, parallelization of
code where necessary, processing time and cost factors realignment as well as security and concurrency issues in a balanced path from
the originating point of the network application to its retirement.
SBGC provides IEEE software projects for students in various domains including Java, J2ME, J2EE, .NET and MATLAB. It offers two categories of projects - projects with new ideas/papers and selecting from their project list. They ensure projects are implemented satisfactorily and students understand all aspects. SBGC provides latest 2012-2013 projects for various engineering and technology students as well as MBA students. It offers project support including abstracts, reports, presentations and certificates.
IRJET- An Efficient Hardware-Oriented Runtime Approach for Stack-Based Softwa...IRJET Journal
This document discusses an efficient hardware-oriented runtime approach for detecting stack-based buffer overflow attacks during program execution. The approach automatically archives and compares the original and modified information of static variables in the program to detect any changes from the compiler-generated object code. This is done transparently to programmers without requiring any source code modifications. By leveraging the hardware of the CPU pipeline, the approach can identify buffer overflows during runtime to prevent security vulnerabilities from being exploited. The approach aims to provide protections against runtime attacks while having low performance and memory overhead.
The document discusses several topics related to improving software cost estimation including investigating new sizing techniques based on requirements and design phases, analyzing complexity, assessing risk and return on investment, and evaluating existing models like function points. It also notes challenges like lack of standardized processes and unstable technologies. More research cooperation between academia and industry is needed to develop trusted models.
POLYLAB: A CUSTOMIZED MULTI-LANGUAGE DEVELOPMENT ENVIRONMENT FOR COMPUTER SCI...IRJET Journal
This document describes the development of PolyLAB, a customized multi-language development environment for computer science students in Nigerian polytechnics. PolyLAB supports nine programming languages taught in Nigerian polytechnics and allows students to write and run code from a single interface. It also allows lecturers to post course materials for students. The system aims to reduce the financial and technical burden of setting up individual development environments for each language. It was developed using an agile methodology and its features include code editing, user authentication, and a content management system for lecturers to share materials.
Mounika Sushma D has over 2 years of experience in data warehousing technologies and ETL development using AbInitio. She has extensive experience in all phases of the software development lifecycle including requirements analysis, design, development, testing and production support. She has worked on multiple projects for clients like Allstate, FedEx, and Syntel. Her roles have included migrating code from Unix to Linux, performance tuning, and working on the FedEx COINS and ICMS projects. She is proficient with technologies like Oracle, SQL, C/C++ and has certifications in Oracle SQL, Java and .NET. She is looking for a position that utilizes her skills and experience in data warehousing and
Ashish Kumar Singh is seeking a position that allows him to develop his technical and management skills. He has over 2 years of experience in embedded software development. His skills include C, C++, C#, Linux, Windows, networking, databases, and quality control tools like JIRA and HP Quality Center. He has worked on projects for Visteon, HP, and completed an academic project involving mobile solutions for farmers.
International Journal of Engineering and Science Invention (IJESI)inventionjournals
This document discusses adopting aspect-oriented programming (AOP) in enterprise-wide computing. It provides a brief history of AOP, from its inception at Xerox PARC in the 1990s to the development of AspectJ in the late 1990s. It then reviews related work studying the benefits and challenges of using AOP, such as improved modularity and separation of concerns but also increased complexity. Many studies found quantitative benefits to maintenance from AOP but challenges in adoption. The document concludes by discussing uses of AOP in enterprises, noting both benefits like modularizing cross-cutting concerns, but also challenges such as difficulties aspectizing concurrency and failures.
Atmel - Next-Generation IDE: Maximizing IP Reuse [WHITE PAPER]Atmel Corporation
Atmel® Studio 6 is the integrated development platform (IDP) for developing and debugging Atmel ARM® Cortex™-M and Atmel AVR® microcontroller- (MCU-) based applications. The Atmel Studio 6 IDP gives you a seamless and easy-to-use environment to write, build and debug your applications written in C/C++ or assembly code.
Atmel Studio 6 is free of charge and is integrated with the Atmel Software Framework (ASF)—a large library of free source code with 1,600 ARM and AVR project examples. ASF strengthens the IDP by providing, in the same environment, access to ready-to-use code that minimizes much of the low-level design required for projects. Use the IDP for our wide variety of AVR and ARM Cortex-M processor-based MCUs, including our broadened portfolio of Atmel SAM3 ARM Cortex-M3 and M4 Flash devices.
With the introduction of Atmel Gallery and Atmel Spaces, Atmel Studio 6 further simplifies embedded MCU designs to reduce development time and cost. Atmel Gallery is an online apps store for development tools and embedded software. Atmel Spaces is a cloud-based collaborative development workspace allowing you to host software and hardware projects targeting Atmel MCUs.
For more information, please visit http://www.atmel.com/Microsite/atmel_studio6.
Follow along on Twitter at http://www.twitter.com/Atmel and 'Like' Atmel on Facebook at http://www.facebook.com/atmelcorporation.
The document discusses a proposed reusability framework for cloud computing. The framework, called the Cloud Computing Reusability Model (CCR), aims to enable reusability in cloud computing through component-based development. The CCR model is validated using CloudSim, and experimental results show that the reusability-based approach can minimize costs and reduce time to market. The document also reviews related work on reusability and cloud computing, and analyzes challenges of the cloud computing platform for software development.
the project is aimed to develop a crime file for maintain a computerized record of all the F.I.R against
crime .The system is desktop application that can be access throughout the police department. This system can be used
as an application for the crime file of the police department to manage the records of different activity of related to
first information report .In such desktop Crime file system we will manage all such activities (like registration of the
complaint updating information, search of particular viewing of the respective reports of crimes) that will save time,
manpower. This software is for police station which provides facility for reporting crimes, complaints, FIR, charge
sheet, prisoner records, and show most wanted criminal’s details.
This system will provide better prospective for the enhancement of organization regarding to quality and transparency
The article proposes a new model for optimizing software effort and cost estimation based on code reusability. The model compares new projects to previously completed, similar projects stored in a code repository. By searching for and retrieving reusable code, functions, and methods from old projects, the model aims to reduce effort and cost estimates for new software development. The model is described as being based on the concept of estimation by analogy and using innovative search and retrieval techniques to achieve code reuse and thus decreased cost and effort estimates.
This document provides an overview of software engineering concepts covered in lecture notes. It discusses the software development life cycle (SDLC) which includes key stages like requirements gathering, design, coding, testing, integration and maintenance. The SDLC framework aims to develop software efficiently using a well-defined process. Software engineering principles like abstraction and decomposition are used to reduce complexity when developing large programs.
A Cost-Effective Integrated Solution for Backup and Disaster Recoveryxmeteorite
This document discusses a cost-effective integrated solution for backup and disaster recovery provided by InMage Systems. The solution combines application and data recovery into a single platform that can be used for disaster recovery, local backup and restore, and automated application failover and recovery. It leverages continuous data protection and replication technologies to minimize data loss and recovery times. The solution supports applications like Microsoft Exchange, SQL, SharePoint, Oracle, and SAP in a heterogeneous environment.
Similar to Object and method exploration for embedded systems (20)
High level programming of embedded hard real-time devicesMr. Chanuwan
This document describes a new Java virtual machine called Fiji VM that targets real-time embedded systems. The Fiji VM ahead-of-time compiles Java bytecode to C code to run on embedded hardware with minimal overhead. Evaluation shows the Fiji VM can achieve throughput close to C for a collision detection benchmark on a LEON3 processor, while still meeting hard real-time deadlines through the use of a concurrent, real-time garbage collector.
Runtime performance evaluation of embedded softwareMr. Chanuwan
The document describes a system for measuring runtime performance of embedded software. The system makes minor changes to the real-time kernel to enable measuring execution times of processes and programs without significantly impacting performance. It was used to evaluate a real-time garbage collector and provided valuable debugging information. The system assigns unique IDs to processes and interrupts and calls an output function on certain events to log identification numbers for external analysis of timing and scheduling.
Performance testing based on time complexity analysis for embedded softwareMr. Chanuwan
The document discusses performance testing of embedded software based on time complexity analysis. It presents a method to:
1) Statically analyze software modules and compute their time complexity based on architecture design.
2) Collect runtime data from modules during testing to compare actual vs expected time complexity and detect abnormalities.
3) Experiments on an embedded human-machine interface project showed the method can find inconsistencies between design and implementation.
Performance and memory profiling for embedded system designMr. Chanuwan
1. Memtrace is a profiling tool that provides fast and accurate performance and memory access analysis of embedded systems.
2. It analyzes memory accesses and timing of applications running on an instruction set simulator without needing instrumentation code.
3. Memtrace generates detailed profiling results for each function and variable that can be used to optimize software, design hardware accelerators, and schedule system tasks.
Application scenarios in streaming oriented embedded-system designMr. Chanuwan
This document introduces the concept of application scenarios for streaming-oriented embedded system design. It defines application scenarios as sets of similar operation modes grouped by their resource usage. The document outlines a three-step methodology for incorporating application scenarios into the design process: 1) discovering scenarios by identifying and clustering similar operation modes, 2) deriving predictors to determine the active scenario, and 3) exploiting scenarios to optimize design aspects like energy efficiency. It also discusses different ways to classify and discover scenarios, and provides examples of how previous works have used scenarios to optimize memory usage, voltage scaling, and multi-task scheduling.
Software performance simulation strategies for high-level embedded system designMr. Chanuwan
This document discusses software performance simulation strategies for high-level embedded system design. It introduces instruction set simulators (ISSs), which are accurate but slow. It also discusses binary-level simulation (BLS) and source-level simulation (SLS), which are faster approaches based on native execution. The document proposes a new approach called intermediate source code instrumentation based simulation (iSciSim) that aims to achieve high accuracy, speed, and low complexity for system-level design space exploration.
A system for performance evaluation of embedded softwareMr. Chanuwan
The document proposes a performance evaluation system for embedded software. The system consists of a code analyzer, testing agents, data analyzer, and report viewer. The code analyzer inserts additional code into the source code and compiles it. Testing agents execute performance tests on the target system. The data analyzer translates raw test results into APIs. The report viewer provides graphical reports using the APIs. The system aims to help developers easily and intuitively analyze software performance without additional hardware.
Embedded architect a tool for early performance evaluation of embedded softwareMr. Chanuwan
The tool Embedded Architect provides a way to evaluate software performance early in the design process for embedded systems. It allows specifying an "evaluation scenario" based on representative control flows extracted from software source code. This scenario serves as the context for estimating execution time on different candidate architectures. The tool automates much of the scenario specification process and generates performance estimates based on architecture mappings and component parameters.
Performance prediction for software architecturesMr. Chanuwan
The document proposes an approach called APPEAR for predicting software performance in component-based systems. APPEAR uses both structural and statistical modeling techniques. It consists of two main parts: (1) calibrating a statistical regression model by measuring performance of existing applications, and (2) using the calibrated model to predict performance of new applications. Both parts are based on a model that describes relevant execution properties in terms of a "signature". The method supports flexible choice of parts modeled structurally versus statistically. It is being validated on two industrial case studies.
Model-Based Performance Prediction in Software Development: A SurveyMr. Chanuwan
This document provides a survey of model-based approaches for predicting software performance early in the development lifecycle. It reviews approaches that use queueing networks, stochastic Petri nets, and other models. The approaches are evaluated based on how integrated the software and performance models are, how early performance analysis can be done in the lifecycle, and the level of automation support. The survey finds that while progress has been made, fully integrated solutions spanning the entire lifecycle are still needed. Promising future work includes approaches with more semantic integration of models and higher degrees of automation.
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.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
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.
How to Get CNIC Information System with Paksim Ga.pptxdanishmna97
Pakdata Cf is a groundbreaking system designed to streamline and facilitate access to CNIC information. This innovative platform leverages advanced technology to provide users with efficient and secure access to their CNIC details.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Introducing Milvus Lite: Easy-to-Install, Easy-to-Use vector database for you...Zilliz
Join us to introduce Milvus Lite, a vector database that can run on notebooks and laptops, share the same API with Milvus, and integrate with every popular GenAI framework. This webinar is perfect for developers seeking easy-to-use, well-integrated vector databases for their GenAI apps.
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
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
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.
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Object and method exploration for embedded systems
1. Object and Method Exploration for Embedded Systems
Applications
Júlio C. B. Mattos Luigi Carro
Federal University of Rio Grande do Sul Federal University of Rio Grande do Sul
Informatics Institute Informatics Institute
Porto Alegre - RS - Brasil Porto Alegre - RS - Brasil
julius@inf.ufrgs.br carro@inf.ufrgs.br
ABSTRACT Embedded systems are heterogeneous systems that cover a broad
The growing complexity of embedded systems has claimed for range of algorithms implemented on hardware and software. In
more software solutions in order to reduce the time-to-market. the past, hardware configurations dominated the field while today
However, while this software decrease the development time of most of the applications are implemented in a mixed
the embedded system functionalities , it must at the same time configuration where software constitutes the main part [1,2].
help the handling of the embedded systems tight constraints, like Probably in the future even more products will have most of their
energy, power and memory availability. Object orientation is now characteristics developed in software. In many cases software is
a common technique to write maintainable code, but its preferred to a hardware solution because it is more flexible, easier
application to the embedded systems domain is withhold by the to update and can be reused. Hence, software is more and more
overhead in terms of memory, performance and code size. This becoming the major cost factor for embedded devices [3, 4].
paper introduces a methodology to explore object-oriented Over the years, embedded software coding has been traditionally
embedded software improving different levels in the software developed in assembly language, since there are stringent memory
design, while dealing with different embedded systems and performance limitations [5]. On the other hand, the best
requirements (power, memory area and performance). The software technologies use large amounts of memory, layers of
proposed approach transforms the original OO code into an abstraction, elaborate algorithms, and these approaches are not
optimized code allowing the automatic configuration of a solution directly applicable in embedded systems [5]. However, hardware
for a specific application. Experimental results with an MP3 capabilities have been improved, and the market demands more
player show a large design space exploration with different elaborate products, increasing software complexity. Thus, the use
solutions in terms of performance, energy and memory. of better software methodologies is clearly required, for example
object orientation. Nevertheless these abstract software techniques
Categories and Subject Descriptors require a high price in the embedded domain, and the problem of
C.3 [Special-Purpose and Application-Based Systems]: Real- embedded software development for this market still exists.
time and embedded systems; D.1.5 [Programming Techniques]: One of the main stream software methodologies is the object-
Object-oriented Programming. oriented paradigm. In the last decades the object-oriented
mechanism has become the dominant programming paradigm.
General Terms Object-oriented programming scales very well, from the most
Languages, Measurement, Performance. trivial problems to complex ones. In spite of object orientation
advantages, the acceptance in the embedded world has been slow,
since embedded software designers are reluctant to employ these
Keywords techniques due the memory and performance overhead [6, 7, 8].
Embedded Software, Object-Oriented, Design Space Exploration.
Moreover, over the past few years embedded developers have
embraced Java, because this technology can provide high
1. INTRODUCTION portability and code reuse for their applications [9, 10, 11]. In
Nowadays, the embedded system market does not stop growing,
addition, Java has features such as efficient code size and small
and new products with different applications are available. These
memory footprint, that stand out against other programming
systems are everywhere, for example, mobile telephones, cars,
languages, which makes Java an attractive choice as the
videogames and so on. In embedded applications, requirements
specification and implementation language of embedded systems.
like performance, reduced power consumption and program size,
However, developers should be free to use any object oriented
among others, must be considered. Moreover, the embedded
coding style and the whole package of advantages that this
systems complexity is increasing in a considerable way.
language usually provides. In any case, one must also deal with
Permission to make digital or hard copies of all or part of this work for the limited resources of an embedded system.
personal or classroom use is granted without fee provided that copies are
As mentioned, the existing software methodologies are not
not made or distributed for profit or commercial advantage and that
copies bear this notice and the full citation on the first page. To copy
adequate for embedded software development, because embedded
otherwise, or republish, to post on servers or to redistribute to lists, software development should address different constraints from
requires prior specific permission and/or a fee. desktop software. In this way, this paper introduces a
SBCCI’07, September 3–6, 2007, Rio de Janeiro, Brazil. methodology to explore object-oriented embedded software
Copyright 2007 ACM 978-1-59593-816-9/07/0009…$5.00. improving different tasks in the system design. Our approach is
318
2. divided into two main parts where the embedded software objects in immortal memory can be created and accessed without
exploration methodology can be improved. GC delay, but there is no mechanism for freeing those objects
during the application execution. This approach is similar to our
The first part, called method exploration level, aims to improve
strategy of transforming dynamic objects into static ones.
the methods implementation (the algorithms that implement these
However, it is necessary to use the RTSJ (during application
methods). This exploration phase introduces a mechanism for the
code) and modify the virtual machine to adopt this technique.
automatic selection of software and hardware IP components for
embedded applications, which is based on a software IP library There are other approaches to improve memory behavior of Java
and a design space exploration tool. programs, for example [21]. However, these techniques improve
the data locality during the execution time. Another paper [22]
The second part, called object exploration level, aims to explore
proposes a region analysis and transformation for Java programs.
the object organization to improve the dynamic memory
But, in this approach, the code must be modified and it is
management through the use of a design space exploration tool to
necessary to extend the virtual machine to support region
allow an automatic selection of the best object organization. This
annotations and to provide region run-time support.
approach is also compliant with classical OO techniques and
physical embedded systems requirements. The overall goal is to Shaham [23] presents a similar strategy. But, our proposed
provide high level object orientation support, while at the same approach starts from a more radical point of view. Instead of
time support optimized memory, power and performance for trying just to improve the code written by the programmer, we try
embedded systems. to automatically transform as many dynamic objects into static
ones, in the goal to reduce execution time, while maintaining
Moreover, the tools here presented (one based on method and
memory costs as low as possible. Thus, it provides a large design
another based on object exploration) are mutually orthogonal, that
space exploration for a given application.
is, their execution is independent. The designer can first use the
method exploration tool and after the object exploration tool or
vice-versa. Since the optimizations performed by each tool are 3. DESIGN SPACE EXPLORATION OF OO
orthogonal, this makes the complexity of the exploration simple. EMBEDDED SOFTWARE
This paper is organized as follows. Section 2 discusses related This section shows the two main parts that our methodology is
work in the field of embedded software optimization. Section 3 divided. The first part, called method exploration level, aims to
presents our approach to design space exploration of object improve the method implementation (the algorithms that
oriented embedded software. Section 4 presents some results implement these methods). The second part, called object
using a case study. Finally, section 6 draws conclusions and exploration level, aims to explore the object organization to
introduces future work. improve the dynamic memory management.
3.1 Method exploration level
2. RELATED WORK This section shows the method exploration approach. The main
Our method approach is similar to [12], but instead of aiming at a idea is to explore different algorithm solutions (method
partitioning between software and hardware, it concentrates on implementations) for a certain application according to the
algorithmic variations of software routines that are commonly embedded system requirements. This approach consists in the use
found in a wide range of embedded applications. This way, it of a software library, a set of different processor cores (but with
provides design space exploration for given platforms. the same instruction set), and a design space exploration tool to
allow an automatic software and hardware IP selection. The
The optimizations (in method and object level) that we proposed
software IP library contains alternative algorithmic
are different from most of studies. Most approaches on embedded
implementations for routines commonly found in embedded
software optimization are based on traditional compilation
applications, whose implementations are previously characterized
optimization. There are lots of works that deal with compilation
regarding performance, power, and memory requirements for
optimizations concerning performance, memory, energy [13, 14,
each processor core.
15]. Our approach differs from these, because our approach
intends to improve the code before the compiler optimization. We In our approach, the designer receives the application
believe that design decisions taken at higher abstraction levels can specification and after coding it in Java language using the
lead to substantially superior improvements. software IP library, he/she submits the application to the design
space exploration tool. This methodology is compliant with the
There are several works that agree with our statement that object-
component-based development, where a component is a self-
orientation and Java produce huge overhead [6, 7, 16]. However,
contained part or subsystem that can be used as a building block
these papers only measure this overhead. The main problem with
in a larger system. Using component-based development style, the
Java is the overhead produced by memory management. In this
reuse become easier and increase the software productivity.
way, there are lots of works that proposed software and hardware
solutions to reduce the overhead as well to make the CG more The software IP library contains different algorithmic versions of
predicable [17, 18, 19]. These strategies are very different from the same function thus supporting design space exploration.
ours. Our object exploration level works before the execution – Considering a certain core (HW IP) and for each algorithmic
when the memory management and garbage collector act. implementation of the library functions, it measures the
performance, the memory usage, and energy and power
The Real-Time Specification for Java (RTSJ) [20] introduces the
dissipation. This way, the characterization of the software library
concept of immortal memory to improve real-time aspects. The
is performed according to physical related aspects that can be
319
3. changed at an algorithmic abstraction level. On hardware level, In the exploration tool, before the search begins, the user may
this approach uses different implementations of the same determine the application requirements (weights for power, delay
Instruction Set Architecture providing range solutions on and memory optimization). The tool automatically explores the
performance, power and memory area. design space and finds the optimal or near optimal mapping for
that configuration. In the final step (code generation phase), the
Thus, this methodology allows the automatic selection of software
tool links the algorithm calls to their implementation according to
and hardware IPs to better match the application requirements.
the results obtained in exploration phase.
Moreover, if the application constraints might change, for
example with tighter energy demands or smaller memory Problem Complexity
footprint, a different set of SW and/or HW IPs might be selected.
The design space to be explored can be large. The number of
Using this methodology, the space design exploration has several solutions is function of the number of the processor cores (HP
options to provide a final solution using a different combination IPs) and the number of the routines (SW IPs) that are available.
of SW IPs and HW IPs. Using only a single core and different
The equation of the problem complexity can be obtained as
algorithmic versions of the same function, the designer has a good
follows. There is a program with m different methods that use the
set of alternatives. However, when multiple cores are used, the
IP library. Each method can be implemented by r different
range of solutions is hugely increased.
algorithmic solutions. The IP library was characterized into p
Figure 1 shows the design flow of this embedded SW exploration. processor cores. Thus, each method can be implemented by one
After coding the application using de IP library, the designer of the r*p options. Finally, if there are m different methods in the
submits the application to design exploration tool. The design program, the exploration tool should evaluate several options
exploration tool maps the routines of an embedded program to an given by equation:
implementation using instances of the software IP library, so as to
fulfill given system requirements. The user program is modeled as m
(r * p)
a graph, where the nodes represent the routines, while the arcs
determine the program sequence. The weight of the arcs where r is the number of different implementations of the same
represents the number of times a certain routine is instantiated. In routine, p is the number of the available processor cores and m is
our approach, different threads are modeled as parallel structures the number of different method that uses the IP library in the
and can be mapped to different processor cores. program.
Application Requirements Application
3.2 Object exploration level
This section shows the software exploration approach to improve
XML Java Application
the dynamic memory management. The main idea in this level is
to explore the organization of the objects of the application
Software Library according the requirements. Our approach is composed by a
Graph Extractor
design space exploration tool that allows an automatic selection of
the best object organization. When a programmer uses an object-
Graph Extractor Phase
XML Package
oriented design paradigm, the application objects can be statically
or dynamically allocated. When the programmer uses static
Graph
Thread1
1
Thread2
1
allocation the memory footprint is known at compilation time.
sin 2 5 5 4 Hence, in this approach, normally, the memory size is big, but
XML
10 15 15 76 imdct
100 sin
there is a lower execution overhead while dealing with the
5
dynamic allocation (produced by the memory manager). On the
other hand, when the programmer uses a dynamic allocation,
Exploration
there is an overhead in terms of performance, but the memory size
Tool decreases because the garbage collector removes the unreachable
Exploration Phase
objects.
Method Configuration
The related work and our experimental results [24] shown that,
for some OO applications, the largest part of the execution time is
XML
taken just by memory management. However, if the designer
allocates memory in a static fashion, the price to be paid is a
much larger memory than it is actually needed, with obvious
Code Generation Phase
Code Tool problems in cost, area and static and dynamic power dissipation.
This tool is divided into three main parts: analysis phase,
transformation phase and design space exploration phase. Figure
Final Application
2 shows the design flow. The methodology starts with the original
application analysis and stores the results on a database.
Class Files
Afterwards, the tool transforms, in an automatic way, each
allocation instruction that allocated objects dynamically to a static
Figure 1. Method Exploration Level Design Flow. way memory reservation. Afterwards, the tool analyzes each
modified application and stores the results on the database. This
320
4. task is done to the whole allocation instructions. The final step the database results, the exploration tool searches for the best
does the design space exploration. Based on application object organization that fulfills the requirements. The output is a
requirements provided by the designer, the tool tries to search the list of allocation instructions that should be transformed into static
best object organization (objects allocated dynamically or allocation. This list is used as input of the transformation step to
statically). make the final application.
In analysis phase, the tool extracts the results from one Our problem is very similar to the 0-1 Knapsack Problem [25].
application. The results are based on: object results: these results The problem consists in searching the best combination of
show the number of allocated objects for some instance execution, performance and memory of a set of objects transformations. We
and the number of allocation instructions, object time life, number implemented our algorithm using dynamic programming [26].
of accesses per object and object size, etc; memory results: these Application Application Requirements
results show the total dynamic memory allocated during the
application execution, the maximum memory utilization and a Class Files XML
memory usage histogram; performance results: these show the
performance results in terms of executed instructions and the
overhead caused by GC. Analysis Tool
Transformation Exploration
The analysis phase provides the object, memory and performance Tool Tool
results and stores these results in a database that will be used by
Transformation Phase
Application
the exploration phase. This task analysis is done to the whole
Exploration Phase
Modified Application Final Configuration
allocation instructions, one by one, after the transformation step. Instrumented Class Files
Class Files XML
This phase aims to transform the object that has been previously
Java VM
dynamically allocated into statically allocated objects. The idea
assumes that objects allocated dynamically produce more
overhead in terms of performance, because of the memory Results
Analysis Phase
management, while objects allocated statically produce less
overhead in terms of performance, but cause memory overhead, DAT File Code Tool
since there must be extra memory space while the application is
Code Generation Phase
Results Storage
executing. The tool transforms the dynamically allocated objects Results
Processing
into static ones by manipulating the Java bytecodes. XML
Final Application
In the exploration phase, the tool does the design space Class Files
exploration. Based on the application requirement provided by the
designer, the tool tries to search for the best object organization
(objects allocated dynamically or statically). The main goal of
Figure 2. Object Exploration Level Design Flow.
this phase is to search, based on the original application, which
objects will be changed into static ones. One of the inputs of the
tool is a set of results (the database generated during the analysis 4. EXPERIMENTAL RESULTS
phase) that shows: the allocation instruction number This section presents the results of our approach to explore
(identification number), the performance improvement object-oriented embedded software. The case study application,
(instructions) and the memory overhead (bytes). The other input target platform and results are presented in the following.
is the application requirements.
4.1 Application
Problem Complexity MPEG-Audio is an international standard for digital high quality
This problem has a large design space to be explored. The number sound compression. Generally speaking, the standard takes a
of combinations that the tool should search is function of the digital audio file and reduces its size, while maintaining the
number of allocation instructions that can be changed to static quality of the recording. Our application code is based on a
allocation. Thus, the exploration tool should evaluate several description freely available on the Internet [27]. All the MP3 code
options given by equation: was written in Java but obeying certain constraints of our
architecture. An example constraint is the use of integer arrays
2n instead of floating-point arrays because there is no such unit
available in the processor.
where n is the number of allocation instructions that can be
changed. This equation can be obtained as follows. For example, 4.2 Target Platform
in OO program, there are n allocation instructions. All of these We use a platform composed by different core implementations of
instructions can be converted to static ones. Each allocation the same ISA. The platform is based on different implementations
instruction can be dynamic or static, thus there are 2n possible of a Java processor, called FemtoJava [28, 29]. This processor
combinations. Each combination is composed by a set of implements an execution engine for Java in hardware through a
allocation instructions that allocates in dynamic or static way. stack machine compatible with Java Virtual Machine (JVM)
specification. In this work, we use the multicycle version and the
The solution to the proposed problem needs a heuristic algorithm pipeline version.
because of its complexity. Based on application requirements and
321
5. 4.3 Results The figure 4 shows the results in terms of power versus the
This section shows the results of our approach. First, we increase of memory usage. As one can see, the different
summarize the results concerning method exploration level and processors dissipate different amounts of power (about 23-24mW
object exploration level on a MP3 application. in the pipeline processor and about 6-7mW in the multicycle
version). However, solutions based in the same processor
The method exploration level is based on software IP library and implementation present similar results in terms of dissipated
a set of cores (Java processors) that uses a tool for automatic power.
design space exploration and SW and HW IP selection. The
complete explanation of the library and its characterization was 25
presented in [30]. This software IP library contains different
algorithmic versions of the same function, like sine, table search, 20
square root, IMDCT, thus supporting design space exploration.
Power (mW)
Considering a certain core (HW IP) and for each algorithmic 15
implementation of the library functions, it measures performance,
memory usage (for data and instruction memories), and energy 10
and power dissipation.
5
In the object exploration level, the tool tries to transform, in an
automatic way, as many dynamic objects to static ones, in the 0
goal to reduce execution time, while maintaining memory costs as 22.500 32.500 42.500 52.500 62.500 72.500
low as possible. This idea is based on fact that a small part of the Memory (bytes)
code creates most part of the objects. For example, during the
MP3 execution 46,068 objects were created by only 101 Figure 4. MP3 Power vs. Memory Design Space.
allocation instructions, and hence some allocation instructions
created more than one object.
Finally, figure 5 shows the results in terms of energy. Based on
Figures 3, 4 and 5 show the design space exploration of the MP3 these solutions the exploration tool tries to find the best method
application that can be explored by the tools. There is a large implementation and the best object organization for certain
design space exploration. The number of solutions is defined by application and certain application requirements. For example, the
the number of method that can explored by the tool and the square solution presented in the three figures (pointed by an
number of allocation instructions that can be transformed. The arrow) represents a good solution in terms of performance. But it
plots in the figures show only a small part of possible solutions. has an overhead in terms of power.
The figures show different points: the black points represent
solutions running in the pipeline version of the processor. On the
7
other hand, the gray points represent the solutions running in the
6,5
multicycle one.
6
5,5
Energy (J)
470.000.000 5
420.000.000 4,5
Performance (cycles)
370.000.000 4
3,5
320.000.000
3
270.000.000
2,5
220.000.000 2
22.500 32.500 42.500 52.500 62.500 72.500
170.000.000
Memory (bytes)
120.000.000
70.000.000
22.500 32.500 42.500 52.500 62.500 72.500
Figure 5. MP3 Energy vs. Memory Design Space.
Memory (bytes)
Figure 3. MP3 Performance vs. Memory Design Space. 5. CONCLUSIONS AND FUTURE WORK
This paper introduces a methodology to explore object-oriented
embedded software, improving different tasks in the system
In the figure 3, the performance versus the increase of memory design. This design space exploration is divided into different
usage caused by the transformation of the dynamic objects to phases: the method exploration level and the object exploration
static ones is presented. The figure shows the corner cases (the level.
circle and the square). The black circle is the solution with worst
performance and minimum memory overhead and the black Experimental results have confirmed the hypothesis that there is a
square is the application with best performance and maximum large space to be explored based on decisions taken at higher
memory overhead. The black solutions present better results in levels of abstraction, much before compiler intervention.
terms of performance because uses the pipeline processor. Selecting the right algorithm, right architecture or right object
organization might give orders of magnitude of gain in terms of
322
6. physical characteristics like memory usage, performance, and Minimization. In: IEEE Transactions on Very Large Scale
power dissipation. Moreover, not only is this approach very Integration (VLSI) Systems, vol. 2, n. 4, Dec. 1994.
simple, but it can also lead to substantial gains. [15] Panda, P. R.; et al. Data and memory optimization
As a future work, we plan to evaluate the whole methodology techniques for embedded systems. ACM Trans. Des. Autom.
with more applications. Electron. Syst. 6, 2 (Apr. 2001), 149-206.
[16] El-Kharashi, M. W.; Elguibaly, F.; Li, K. F. A quantitative
6. REFERENCES study for Java microprocessor architectural requirements.
[1] Balarin, Felice; et al. Synthesis of Software Programs for Part II: High-level language support," Microprocessors and
Embedded Control Applications. IEEE Transactions on CAD Microsystems, vol. 24, no. 5, pp. 237-250, Sept. 1, 2000.
of Integrated Circuits and Systems, New York, June 1999. [17] Jones, Richard; Lins, Rafael D. Garbage Collection:
[2] Shandle, Jack; Martin, Grant. Making Embedded Software algorithms for automatic dynamic memory management.
reusable for SoCs. March, 01 2002. Chichester: John Wiley, 1996.
http://www.eetimes.com/news/design/features/showArticle.j [18] Lin, C.; Chen, T. Dynamic memory management for real-
html?articleID=16504598. time embedded Java chips. In Proceedings of Seventh
[3] Graaf, B., Lormans, M., Toetenel, H. Embedded Software International Conference on Real-Time Computing Systems
Engineering: The State of the Practice. IEEE Software, and Applications, 2000.
Nov./Dec. 2003, 61-69. [19] Ritzau, Tobias. Hard Real-Time Reference Counting without
[4] Embedded Systems Roadmap 2002. External Fragmentation In Proc. of the JOSES Workshop
http://www.stw.nl/progress/ESroadmap/index.html. Genoa, Italy, 2001.
[5] Lee, Edward. What’s Ahead for Embedded Software ?. IEEE [20] Bollella, G.; et al. The Real-TimeSpecification for
Computer, New York, p.18-26, Sept. 2000. Java.Addison-Wesley, June 2000.
[6] Detlefs, David L.; Dosser, Al; Zorn, Ben. Memory Allocation [21] Kistler, T.; Franz, M. Continuous program optimization: A
Costs in Large C and C++ Programs. Software Practice and case study. ACM Trans. Program. Lang. Syst. 25, 4 (Jul.
Experience, 24(6):527--542, June 1994. 2003), 500-548.
[7] Chatzigeorgiou, A.; Stephanides, G. Evaluating Performance [22] Cherem, S.; Rugina, R. Region analysis and transformation
and Power of Object-Oriented vs. Procedural Programming for Java programs. In Proceedings of the 4th international
in Embedded Processors. In Proceedings of 7th Ada-Europe Symposium on Memory Management, October, 2004. ISMM
International Conference on Reliable Software Technologies. '04. ACM Press, New York, NY, 85-96.
LNCS 2361. Springer-Verlag, 2002. 65-75. [23] Shaham, R.; Kolodner, E.; Sagiv, M. Heap profiling for
[8] Bhakthavatsalam, Sumithra; Edwards, Stephen H. Applying space-efficient Java. In Proceedings SIGPLAN Conf. on
object-oriented techniques in embedded software design. Prog. Lang. Design and Impl., ACM Press, 2001. 104-113.
CPES 2002 Power Electronics Seminar and NSF/Industry [24] Mattos, Júlio C. B.et al. Making Object Oriented Efficient
Annual Review, April, 2002. for Embedded System Applications.. In 18th Brazilian
[9] Lawton, G. Moving Java into Mobile Phones, IEEE Computer, Symp. Integrated Circuit Design (SBCCI 2005), Sep. 2005.
vol. 35, n. 6, 2002, 17-20. New York: ACM Press, 2005. p.104-109.
[10] Strom, Oyvind; Svarstad, Kjetil; Aas, Einar J. On the [25] Martello, Silvano; Toth, Paolo. Knapsack Problems:
Utilization of Java Technology in Embedded Systems, Algorithms and Computer Implementations. Chichester:
Design Automation for Embedded Systems, vol. 8, n. 1, John Wiley & Sons, 1990.
March 2003, 87-106. [26] Horowitz, Ellis; Sahni; Sartaj. Fundamentals of Computer
[11] Lanfear, Christopher; Ballaco, Sthepen. The Embedded Algorithms. Computer Science Press, 1978.
Software Strategic Market Intelligence: Java in Embedded [27] MP3, http://www.mp3-tech.org/, 2006.
Systems. July, 2003. http://www.vdc-corp.com/embedded/
[28] Ito, S. A.; Carro, L.; Jacobi, R. Making Java Work for
/white/03/03esdtvol4.pdf.
Microcontroller Applications, IEEE Design & Test, vol. 18,
[12] Reyneri, L.M.; et al. A Hardware/Software Co-design Flow no. 5, Sep-Oct, pp. 100-110.
and IP Library Based on Simulink. DAC’01 - Design
[29] Beck, A.C.S., Carro, L. “Low Power Java Processor for
Automation Conference, Proceedings, ACM, 2001.
Embedded Applications”. In: IFIP 12th International
[13] Dutt, N., et al. New Directions in Compiler Technology for Conference on Very Large Scale Integration, Germany,
Embedded Systems. In: Asia-Pacific Design Automation December, 2003.
Conference, Jan. 2001. Proceedings, IEEE Computer Society
[30] Mattos, Júlio C. B.et al. Design Space Exploration with
Press (2001).
Automatic Generation of IP-Based Embedded Software. In:
[14] Tiwari, V.; Malik, S.; Wolfe, A. Power Analysis of IFIP Conference on Distributed and Parallel Embedded
Embedded Software: a First Step Towards Software Power Systems, Boston: Kluwer Publishers, 2004. p.237-246.
323