|
|
|
MacroExpressions specializes in development of original software
engineering tools and related services. From first-hand software development
experience and practical needs came several useful tools which complement the
common software development toolchains.
MacroExpressions
products,
Snob, Unimal, Maestra and C-SLang, supplement other tools by
patching omissions identified in optimization, reuse and maintainability
of software projects.
Interesting products! [...]
I think it could fulfill a need in certain areas!
Jack Ganssle
MacroExpressions products are
complemented by MacroExpressions services. They
include applications and/or customizing of the products.
Who should be
intrigued? [NEW!] C/C++
development teams which have to demonstrate unit test
completion along with a proof of code/branch coverage could find
MacroExpression's approach interesting. It provides a free framework with code
instrumentation. It can be an alternative to those expensive tool suites.
Embedded systems developers and project managers facing
maintainability problems in
"same-but-different" model-year or product line environment can put
Unimal to good use.
Engineers who design embedded devices and systems with
testability in mind will benefit from
using C-SLang.
Embedded devices manufacturing and quality
control personnel in particular will appreciate working with
C-SLang-enabled devices.
Companies distributing
their code in source or library form often want to hide the intellectual property in it from prying
eyes. Snob, the
Simple
Name OBfuscator, is a freely configurable
tool replacing meaningful names in the code with meaningless look-alike names
and thus making the code unreadable by
humans.
C-SLang and
Unimal will help developers concerned with
saving precious memory
resources.
Vendors and integrators of embedded development tools may find
it advantageous to include Unimal and C-SLang as parts of their
toolchains.
-
And anyone can benefit from reading the next
section...
Products: first
introduction
[NEW!] Maestra is a free reference
implementation of C/C++ unit test environment. It depends only on your compiler
to provide code instrumentation that may be used to prove code/branch
coverage.
Snob is an inexpensive software tool for
obfuscating meaningful names in your software project and for removing comments
and thus for making it incomprehensible by humans. Companies use name
obfuscation to protect intellectual property embodied in the distributable
source code.
Snob is a name obfuscator which is independent of the
project's programming language(s) and is simple yet as powerful as you care to
configure it. In particular, it is capable of handling projects written in
multiple programming languages, and it can preserve names or the whole files
designated as Application Programmer's Interface.
Unimal is a unified (that is, independent of the
target programming language) macro processor. It is designed to work wonders
with static compile-time or, more precisely, build-time initialization.
Unimal makes it possible:
- To make more data become
ROMable const data
- To reduce RAM, ROM (data and
code) footprint
- To make the application
launch faster
Moreover,
Unimal is an embedded software configuration
tool which equips programming languages with macro extensions greatly improving
embedded project maintainability. It promotes project scalability
and allows to automate, often to zero maintenance:
- Data production, such as
generating tabulated functions, lookup tables etc.
- Compile-time parameter
sharing across languages (e.g., making C array size visible to
Assembler)
- Data and access code
adjustments in model year and/or product line environment
C-SLang is a tiny Assembler-like script
language compiled into a virtual executable code by any ISO/ANSI C compiler: no
other tools needed. Its mission is to enable comprehensive testability of ROMable embedded
systems via downloadable test code modules and thus without ROM footprint
penalties. This technique, sometimes called off-board diagnostics, is independent of the processor architecture if
implemented with C-SLang, and allows to accumulate long lasting diagnostic code
assets for all phases of embedded projects:
- embedded design
validation,
- embedded manufacturing test,
including ECU test and end-of-line testing, when all external components are
attached,
- investigative testing,
diagnostics and analysis of field returns (failed units),
Moreover,
C-SLang
scripts can be linked in, which makes C-SLang useful for small tasks
for which ROM is at premium and execution time is not:
- on-board (built-in)
diagnostics,
- limited user
interface
- reactions to slow
events
- and more...
For more analysis, please, see
the white paper, "Solving testability problems of
resource-constrained embedded systems with interpreted languages", which is
also available in pdf.
To wrap it up,
- If you need to protect intellectual
property in the distributable source or library code,
- If you can
benefit from advanced project configuration
capabilities,
- if your
application requires sophisticated static
initialization,
- if your
project requires extensive testing during
manufacturing,
- if you need
to thoroughly verify that the software fits the
hardware,
- if you need
to manage multiple similar
projects
— then you may find
yourself interested in MacroExpressions
products.
An important Application Note 8 for Unimal 2.1
is released. It covers some complex string algorithms and Unimal techniques of
implementing them at compile time. Access the Note from Unumal page.
Unimal 2.1 is released. This release supports extending the command
line with the option files. It also adds the functionality of recursive macro
expansion and a few syntax improvements. More details are in
this news release and of course on
Unumal page.
Unimal 2.0c is released. This release supports defining strings and
numbers on the command line. It also adds Save and Restore operators for any
macro parameter. More details are in this news
release. This version is available to registered users.
A lightweght yet rigorous approach to unit testing has
been developed; more details are in this news
release. For description, documentation and free reference implementation
click here.
|