Thursday, November 3, 2011

It's All Software anyway


Over the course of the last thirteen years of my life I've seen many CASE tools; most of which have been Integrated Development Environments. IDE's are language specific CASE tools that include debuggers, memory monitors, compilers if it's a complied language like C/C++ or Delphi or runtime environments with integrated development for organizations that use interpreted languages such as Python or J2EE standards which usually include Eclipse and the enterprise JDK from Oracle; The Oracle RBDMS as the Database with Swing or the SpringSource framework as my application stack running on Apache-Tomcat or BEA weblogic, but I digress. When I was writing my previous module for Programming the Internet; I used Bluefish as an Editor and my IDE consisted of a LAMP stack on a Virtual machine for rapid application testing where I could test my changes “in situ” thus following the Agile standard whilst developing a web-site using XML and Web 2.0 standards on LAMP in PHP, on my trusty work station HAL(2.0). I conducted some rudimentary work in Eclipse for JAVA functions on the website, but I loathe Java. One of the more common IDE's today is the Visual Studio from Microsoft, Visual Studio .NET has some very interesting functions and support C# and the .NET framework which I hear is inc readably efficient but according to the language popularity from DedaSys LLC it falls far behind Java and PHP for web-development. C/C++ still reigns king in the world of systems and application development. (DedaSys LLC, April 13th 2011)i They even state the highest demand for work is in PHP and LAMP, this is due to the popularity of that platform, it runs over 60% of the websites used everyday.

My first real job was when I was in high school, in Ontario it's called secondary school and I worked with a startup that conducted RLC based power design in electronics for communications companies I was only 17 at the time, not bad for a high school job it did however pay like fast food. My first introduction to procedural programing was working with the MIPS environment from Microchip Inc. I was tasked with programming a PIC 16F84 as a fan controller for a project we were consulting on; needless to say it was a trial by fire but any programming in a junior career usually is. After the firm hit a major crisis with the local telecommunications industry meltdown in 2000 our path was changed and venture capitol was obtained from the same group that founded MosAid. We went from a consulting firm specializing in power systems design to an ASIC design firm specializing in power control ASIC's to fill a void in the components market in north America. last I heard they had a few plasma television manufactures interested in their products and the company had been sold to Powi Systems. I was laid off before the first chip completed design, To add insult to injury this was less than three months after the passing of my mother; but as always compassion and business rarely mix. It was a bit of a blessing in disguise as I began working as a network and systems consultant there after and I have not looked back ever since.

Working as a Lan Wan administrator I knew enough about the sun solars systems that were purchased to support the Verilog IDE's that were on them; from that experience I know now that all Hardware design is in fact software code; All transistors and accompanying rlc based circuits on any chip are really just a function described in a high level design language such as Verilog or VHDL. Ever since Carver Meade published his tomes on VLSI design (Meade, 1978)ii, Hardware electronics are designed in EDA (electronic design automation) suites that resemble IDE's with native drawing interfaces, you compile your circuits and test them with applications using a SPICE simulator (Nagel, 1971)iii: everything from the printed circuit board to the circuits and schematics are all rendered in software and tested months before any prototype is ever built. This is primarily due to the sheer cost of prototyping both chips and circuits. We have been using computers and CASE tools in an iterative fashion to design better computers to achieve Moores Law: The standards are maintained by a consortium of software houses including AMD, INTEL, IBM and Motorola, companies such as NEC and others have some input to the standard but the bulk of most software design work still occurs in North America both in Silicon Valley in California and here in Ontario; An interesting side note ATI got started in Toronto and has offices in Waterloo and Mississauga; Matrox is still based out of Montreal; Now the ATI offices work for AMD but the design offices are still here: We also have a large Monolithic Microwave Integrated Circut (MMIC) design as well as GaAs (Gallium Arsenide), and InP (Indium Phosphide) tech sector that still survives here in Ottawa but only as boutique desgin firms like Xwave; not as the previously glorious houses that created innovation on crystal substrates that would make any communications engineer envious. Every single technological product ever developed from now on exists on a computer in a virtual environment in it's entirety before the decision is made to build or scrap; we can even calculate the market pressures to build said device before hand using automated ERP based econometrics programs.

Now how does JAD help organizations maintain competitive advantages in the IS and IT world where moors law rules king and Brooks (Brooks, 2006)iv and Zawinski's Laws of software bloat ensure that the next version of software will bring whatever it is you use now to it knees with third order (O^3) out of sequence calls used in objects that are three times less efficient than what you use now; boils down to one simple thing; The software design life cycle.

Software is only useful for a given amount of time; This property is the usable life. the hardware is only good for five to seven years, that's what it's designed to last to; this also includes every single super computer on the planet. The software running on the hardware is directly responsible for achieving your business office functions, if your organizations business is developing software than your development methodologies, software supportability and maintainability and your organizations efficiencies of object re-use, testing, bug fixes and design considerations directly determine your bottom line; In short you live or die by the quality of the software your organization produces; and this is your competitive advantage within this economy. As Lehman stated in 1980, the usable life of a given piece of software is about 5 to 7 years before it requires a complete rewrite due to environmental changes. (Lehman, IEEE 1980)v The adoption of the Agile and other such Rapid Application Development methodologies as defined by Highsmith result in code of a greater quality. (Highsmith, 2000)vi He also states that daily compiles are necessary to achieve this level of quality to reduce overall project risk. As Galin states (Galin, 2004)vii:

As software errors are the cause of poor software quality it is important to investigate the causes of these errors in order to prevent them.

Thus in an IS or design oriented organization where Joint Application Development methodologies are not being used or no use of SDLC can be seen we may assume that the software produced will contain many errors and not be sustainable in nature. It will be of a relatively poor quality. If the business is not producing sustainable software than it itself is unsustainable and may fail due to the burgeoning costs of maintenance of their software after it is sold or implemented in some poor organizations production environment: either by contractual obligation or loss of users and customers. Software and Security fixes are far cheaper when implemented in the design and architecture phases regardless of the methodologies used, by choosing to adopt an Agile rapid application development environment and methodologies such as SDLC and PCDA cycles an organization is effectively committing to reality testing all of its produced software frequently. As the old proverb states, failure to commit is committing to failure.

in.a. (DedaSys LLC, April 13th 2011) Language Popularity [Online] World Wide Web, Available from: http://langpop.com/ (Accessed on November 2nd 2011)
iiMeade, C; Conway, L (PaloAlto, Xerox Corporation, California Institute of Technology, 1978) Introduction to VLSI Systems [Online] PDF Document Available from: http://ai.eecs.umich.edu/people/conway/VLSI/VLSIText/PP-V2/V2.pdf (Accessed on November 3nd 2011)
iiiNagel L. W.; Rohner R. A. (IEEE, Journal of Solid State Circuts, August 1971) Computer Analisys of Non-linear Circuts Exclusion Radiation [Online] PDF Document, Available From: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1050166 (Accessed on November 2nd 2011)
ivBrooks, Fredrick (Addison Wesley, 2006) The mythical man month P. 53 ISBN: 0-201-83595-9
vLehman, Meir M. (IEEE, Proceedings, Volume 68, Number 9, September 1980) Progams, Life Cycles, and Laws of Software Evolution [Online] PDF Document, Available from: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.116.3108&rep=rep1&type=pdf (Accessed on November 2nd 2011)
viHighsmith, Jim (Cutter Consortium, 2000) Extreme Programming [Online] PDF Document, Available from: http://www.cutter.com/content-and-analysis/resource-centers/agile-project-management/sample-our-research/ead0002/ead0002.pdf (Accessed on November 2nd 2011)
viiGalin, Daniel (Pearson Addison Wesley, 2010) Sofware Quality Assurance From theroy to Impllementation P.19 ISBN: 978-0-201-70945-2