Articles

Good (and Bad) Reasons to Outsource Software Engineering

When asked why outsourcing is needed, the most common answer is that it's done to "cut cost.” Though this may be true, there are several other great reasons to do it. Furthermore, the cost savings are not always guaranteed – the devil is in details. In real life, botched outsourcing projects could actually cost you more money, lead to delays and missed opportunities, and be a source of massive headaches. There’s no free lunch: in many ways, successful outsourced projects require many of the same elements as building your own team (communication, organizational knowledge, processes). More..

Which Software Projects Can Be Outsourced?

The decision to outsource is tightly coupled with the consideration of WHAT to outsource. Although there is no "right" answer to this question, here are several "real life" examples that come to mind. More..

Comparison of ConcRT, OpenMP and TBB technologies for multi-core numeric computation

In order to compare ConcRT, OpenMP and TBB technologies, we implemented a few algorithms from different areas of numeric computation and compared their performance with C++ equivalents. Four functions were implemented.
The first two functions were taken from linear algebra. Function 1 computes determinant of a matrix with non-zero leading principal minors. Algorithm of this function is based on LU decomposition of the input matrix. The second function computes a conjugated transposed matrix from a complex input. Function 3 is taken from signal processing. It computes the convolution of two matrices. The algorithm explicitly implements the definition of 2D convolution. Finally, function four is a solution to a system of ordinary differential equations via implementation of the well-known N-body problem. More..

Adaptation of Image Processing Software for Windows Azure and HPC Cluster

In parallel computing systems computations are executed simultaneously, wholly or in part. This approach is based on the partitioning of a big task into smaller subtasks that can run in parallel. There are four basic forms of parallelization: bit-level, instruction-level, data and task levels. The first two belong to low-level programming. This article focuses on the higher "task" and "data" levels of parallelization. More..

Running Excel Models on an HPC Cluster

Mathematical modeling of complex problems is far more mainstream than it once was, and Excel has played a major role in making that happen. From linear programming to statistical models, Excel is used to implement many different modeling techniques. Built-in functions and custom worksheets significantly enhance Excel’s flexibility and suitability as the modeling tool of choice within existing customer-based applications.
Performance remains an important limiting factor in the expansion of Excel based modeling techniques. More..

Parallel computing techniques in CAD drawing analysis

Sketches obtained as a result of import or export from different CAD packages to DXF/DWG formats often contain broken geometry relations: broken tangent, broken horizontal or vertical relations, gaps between entities, etc. Broken sketches can create problems when creating 3D models, and in generating production manufacturing information.
Repairing broken sketches manually is not practical. The amount of data to be processed, especially for big complex documents, presents a problem even for automated solutions.
The goal of this article is to demonstrate that application of multiprocessor/multi-core technologies can significantly improve sketch repair process performance. More..