Math:
Getting it Right
Whether you’re
baking Grandma’s favourite chocolate cake, or working on file encryption
routines, one principle stands out- get the math right. While some jobs are
satisfactory with an estimate, more often than not, it is a rigorous working
out of an algorithm that is vital to the success of the work. Intuitive
calculations do play a role in program design. But to get an accurate outcome
one must be able to code the algorithm with precision. We’ve all heard of GIGO.
And this holds true in program design and testing. Even if one has the latest
digital programmable calculator, or a robust 64-bit computer, the flow of program
instructions leaves no room for guesswork. For our purpose today we will talk
about the importance of accuracy in application development.
Application development, or, software development
holds at its core “solutions programming.” This means the process of
design and writing of programs that intends to solve a particular problem or
group of problems with a common purpose. This process oftentimes begins with
back-of-the-envelope notes and/or diagrams. Such notes may delineate the
program flow. Crucial to the flow of the program is the algorithm, input values,
and output characteristics. But before actual code is written, the developer or
team of developers must engage in program design. A classic tool for
this is flowcharting. Whether one uses flowcharting programs, or plastic layout
stencils (of previous years), the process is inherently similar. But let’s make
one thing clear: at the heart of an algorithm is a mathematical formula. It may
be a solution for an ordinary differential equation, or a character sorting
algorithm. Therefore, the requirements for a program, based on research and/or
market demand, must be well delineated before any design begins. In a competitive
world we must also be able to create a better
product than the competition. Of course, in a market based economy there’s room
for everybody. Nevertheless we must improve continuously or lay waste by the
wayside.
The choice
of computer language for the application will depend on several factors.
If the application is an extension of a preexisting system, the application
will be written in the language of that system. The application in this
scenario is usually called a module, or “add-in.” Some languages are better fit
for scientific programs. In this case, the language has a large library of
functions, and “calls” to the specific functions are easier to implement than
writing a function from scratch. Some mathematical software packages are used
by industrial, scientific, and engineering sectors. These packages are
available in commercial offerings and cost a major investment to an
organization. Examples of these offerings are Matlab, Maple, and Mathematica.
Sometimes these programs become the lingua franca of the industry. These
packages offer advantages easily adapted for a particular engineering problem.
Open-source programs have been developed for a wide array of applications as well. Like the commercial mainstream applications, these open-source applications are also extensible. These extensions may be available “off-the-shelf” or written by the particular industry team whose programmers are familiar with the engineering process. Whether the application is a “stand alone” program, or a module, the same principles of design are applicable.
Open-source programs have been developed for a wide array of applications as well. Like the commercial mainstream applications, these open-source applications are also extensible. These extensions may be available “off-the-shelf” or written by the particular industry team whose programmers are familiar with the engineering process. Whether the application is a “stand alone” program, or a module, the same principles of design are applicable.
Writing the
program once it is designed is a laborious process that can be undertaken by an
individual, or a coding team. If one
solitary author writes the code, he may be better able to tie the pieces of
code together. This may take a very long time though, since he has to check
everything him- or herself. This may be fine
for small- to medium- size projects. But large-scale programs are better
written by a team of developers, each responsible for a certain portion of the
program. The task of syncing the program sections or components is distributed among the program
writers. The project leader, or leaders, then checks and rechecks the code. The use of an IDE (Integrated Development Environment) facilitates both coding and checking your program. IDEs have been developed with the programmer in mind, and are available for specific languages and frameworks.The IDE is in itself a program for writing programs.
The integrity of the code is verified only
by rigorous testing. It is not just a question of whether the program runs, but
also if the code is optimized or tuned. Software testing is carried out by both, members of the programming team and the potential users. The question is then-does the program do its job and do it well? And this oftentimes differentiates
between a lackluster program and a beautifully coded and optimized application.
It is not a matter of adding unnecessary bells-and-whistles to a program, that in turn create bloatware. Not
only that- it can differentiate between your program and that of the
competition.
Both
software testing and application lifecycle management (ALM) are essential activities
of the software maker. In spite of the initial development of a good product, software
updates and upgrades are necessary and keep the program evolving. Needs change
and new needs arise. Software development
teams listen to market trends in order to deliver a relevant product. One frequently overlooked activity in software development is good documentation. This activity aims to assist the developer as well as the user. For the developer, good documentation keeps the project in focus. Also, it helps the software developer assist the user with regards to overall structure of the program as well as its functions.
Launching of
the product comes only after several cycles of testing in all operating conditions.
Whether one is a freelance programmer or a member of a software development
team, the rules of software maintenance are the same. Some teams or companies
release small frequent updates, or, upgrades with major improvements and features, with release dates somewhat far between. From designing to prototyping to actual
coding, the software author commits himself to a tough discipline. Whether one belongs to a Fortune 500 company,
a university biomedical statistics team, or a game-programming outfit, or even
an enthusiast web- or mobile- app designer, the stages of software development
are essentially the same. It is a creative process, with ups and downs. With writer’s block, and with free-flowing
moments; it is a craft, and an art.
In any case: get the math right.
Work smart.
Fernando Yaakov Lalana, M.D.
No comments:
Post a Comment