Tag Archives: Software Sagacity

The Importance of Wireframing in Software Development

SculptureAt each stage of software development, from design, to development, to deployment, there is opportunity for either keeping the status quo, falling behind, or achieving glory.  Wireframing plays a crucial role in helping software projects achieve glory, as opposed to simply meeting goals.

First, a quick overview on the nature of wireframing.  Similar to CAD drawings or blueprints, wireframes of a software project provide a skeleton outline of how key elements of the system will be laid out on the screen.  The wireframing stage generally does not consist of finalized, high-end graphics or pixel-perfect positioning, but is rather focused on the general position of fields, elements, and user interface buttons.

Wireframes can be drawn on paper, however it is more effective to use a software tool such as Balsamiq, Axure, or Visio for the drawings.  These design tools can make it easy to implement changes, duplicate repetitive content, and handle versioning.  Balsamiq has achieved its own special standing among UI development tools with its quick rise to fame and popularity.  Instead of depicting clean lines and elegant results, Balsamiq makes the entire drawing look especially “sketchy”, so that project stakeholders have no illusion that they are looking at a final product.  Instead, Balsamiq produces wireframes more akin to something that would be sketched on a whiteboard, as opposed to an elegant CAD drawing.  This lets viewers focus on the layout and general concept, instead of on the design elements that may be subject to future change.  Regardless of the wireframing software, the end result will be a set of documents that provide a high-level view of the user interface and software functionality.

The key benefit of wireframing is how it provides a bridge between concept and creation.  Before wireframing, the software is a fuzzy amalgamation of database entities and software architecture components.  Once the wireframes are created, the software takes shape.  Similar to sculpting, that first set of blows to “rough out” the software design are often the most critical.  Not only do they define the final form of the application, they also provide the opportunity to implement creative ideas or enhancements.  While the system is still in the wireframing stage, interesting concepts or UI paradigms can be added relatively easily.  Once the system has progressed from wireframing into development, the UI is generally fixed and requires significant rework for any enhancements.

With all the benefits of wireframing, it can still be a challenging task to execute.  Out of all the development tasks, wireframing takes the most creativity and inertia.  Hewing the system out of rough stone, the architect or UI designer needs to bring everything together: the database, design, layout, and programming workflow.  For sizable systems, this is the task that separates the master from the apprentice, and brings the software to life.

RSS Twitter LinkedIn Facebook Email

License to Code

LicenseWith the recent string of high-profile software project failures, from the Healthcare.gov website to the Target / Home Depot data breaches – in many cases caused by a lack of planning, understaffed teams, or underperforming project managers and architects, the field is ripe for creation of a regulatory body to provide guidance and ensure compliance to development standards. While the actual implementation of a wide-reaching government-sponsored regulatory system is still at least a decade away, the early stages of such a system are already becoming apparent in both business and technology.
Continue reading

RSS Twitter LinkedIn Facebook Email

Hot Algorithms – The Fourier Transform

AlgoirthmJust like certain clothes never seem to go out of style, there are algorithms that prove their mettle year after year, decade after decade. Chief among these is the Fourier Transform – a mathematical brilliance that is as resilient as it is useful.
Continue reading

RSS Twitter LinkedIn Facebook Email

SQL Server Database Techniques – Using Arrays in TSQL

Custom Database ProgrammingPrior to SQL Server 2008, there was no straightforward way to pass arrays in TSQL. While programming languages such as Perl, C# and Ruby adopted array map functions as the lifeblood of the language, SQL Server’s TSQL stayed behind. Fortunately, the functionality is now present in most SQL Server instances, and can be leveraged for interesting new SQL constructs.
Continue reading

RSS Twitter LinkedIn Facebook Email

Can Epidemic Modeling Software Be Applied to Big Data Marketing Analytics?

health_care_shieldA recent paper by Keith R. Bisset and his team at Virginia Tech offers an exciting new software engine for modeling epidemics. Named “Indemics” (Interactive Epidemic Simulation), the software enables public health policy analysts and epidemiologists to analyze the spread of diseases throughout the population. While a noteworthy accomplishment in and of itself, the software could also be used for interactive simulation of a marketing campaigns for a national brand.
Continue reading

RSS Twitter LinkedIn Facebook Email

Improving Rendering Speed in the C# PictureBox

.NET DevelopmentWindows Forms’ most versatile control is arguably the PictureBox. By overriding the OnPaint method, the PictureBox can be used to recreate the functionality of most other controls. One challenge, however, is using the PictureBox for animations or graphics applications that require a quick frame rate. Below are a few methods for pulling the maximum possible FPS from the C# PictureBox control.
Continue reading

RSS Twitter LinkedIn Facebook Email

Bad Code Good Code

Software DevelopmentIn the previous series on database design principles, we discussed potential pitfalls in software development and ways to solve common database design mistakes. In the past week, while revamping an ASP.NET software application developed by another company, I have had the opportunity to see many of these rules come to life, and see their malpractice wreak havoc on the enhancements.
Continue reading

RSS Twitter LinkedIn Facebook Email

When Optimization Breaks Software

LightningIt’s well known that most of the code we write is not what the computer actually runs. When writing a program, the compiler or runtime will take the code and perform a process called “optimization,” where various methods are applied to make the code more efficient so that it will execute faster.
Continue reading

RSS Twitter LinkedIn Facebook Email

Database Design Principles – Part 5: Isolate Semantically Related Multiple Relationships

Custom Database ProgrammingIn the previous database design post, we discussed isolating independent multiple relationships. The goal was to find relationships in the database that were independent, yet incorrectly bound to the same row. This last and final database design principle helps us find data that is too flexible, and can instead be combined to help reduce database size and optimize speed.
Continue reading

RSS Twitter LinkedIn Facebook Email

Database Design Principles – Part 4: Isolate Independent Multiple Relationships

Custom Database ProgrammingIn part 4 of this 5-part series on database design principles, we review Independent Multiple Relationships.  By isolating relationships so that the database structure is fully hierarchical, the software will be more adaptable to future user needs, and require less reprogramming when the requirements will inevitably change in the future.
Continue reading

RSS Twitter LinkedIn Facebook Email