Philosophy of Software Development
Our goal here at NRK is to keep the software development process customer driven. Often, customers do not truly know what they want until they see an initial embodiment of the general concepts of their particular application. The antiquated process of complete product specification prior to development serves only to encumber the innovation possible with the object-oriented paradigm. By developing solutions in small, iterative steps (or product life-cycles), we are able to craft our products to best meet and exceed customer expectations. We find this life-cycle approach to be particularly well suited to modern, object-oriented software development.
All NRK code is developed using Visual C++ and the associated suite of tools. Our code is fully object-oriented and makes extensive use of encapsulation, insulation, polymorphism and inheritance. This architecture makes our products reliable, maintainable, and easily adapted to changing customer needs. Given the large size of our code bases, we incorporate the large-scale software design concepts described by Lakos (1996).
Our method of writing code follows the “Industrial Strength Programming” paradigm described by Milewski (2001). Central to this concept is the small, cohesive development team approach. Instead of throwing an army of programmers at a software task, we precisely guide the development using a small team with extensive knowledge about all aspects of the code base. In addition, our staff has an engineering background, enabling us to understand the actual engineering challenges in addition to the software implementation issues.
Lakos, J., 1996, Large Scale C++ Software Design, Addison-Wesley, New York.
Milewski, B., 2001, C++ In Action: Industrial Strength Programming Techniques, Addison-Wesley, New York.