Main Points

History is Now

Programming has come a long way since the days when engineers plugged vacuum tubes into massive banks that would shatter under the excessive heat of performing basic addition operations. As computers became more sophisticated, hardware and software separated into separate disciplines; electronics engineers who built computers and software programmers who wrote programs. Programs have also become much more accessible; binary machine language gave way to low level assembly language and then more comprehensible higher level languages like FORTRAN, Pascal, and Cobol. The routine was introduced in the 1970s giving higher level organization to blocks of program instructions which previously had none.

Today an even higher level of organization has been introduced above routines – classes. Classes are recipes to make a digital representation called an object which is frequently a real world "object". Thus using classes (e.g. a "Customer" class) to create objects (e.g. "Customer" objects) has become known as object oriented programming (OOP). There are a number of modern languages which support sophisticated programming design and development by using classes that interact and are built out of routines; the primary workhorse OOP languages in use today are C++, Java, and C#.

Technology Wishlist

  • Technology Wishlist - I've also written a look into the near future of the technological development of programming and design based on the difficulties I've run into in design and development and some of the development challenges which need to be solved.

    [chroniclemaster1, 2011/06/28]

Full Software Development Life Cycle

Projects come in all shapes and sizes, some are not even technological problems. Yet the goal of problem solving is an evolving technical discipline with distinct frameworks, laws, heuristics, and methodologies. Even for technical projects, the origins of any project begin with very non-technical discussion and documentation. Even for non-technical projects, technological solutions may provide efficiencies when applied in either a limited or extensive manner depending on the situation. The goal of really solving problems, therefore, encompasses a wide range of tasks. Technically, this starts with general problem solving steps that come even before the SDLC itself, hence the term Full Software Development Life Cycle.

Problem Solving Phase

  • 1. Project Development - Performing process analysis and gap analysis. Crafting and prioritizing a project list.

    [chroniclemaster1, 2010/06/20]

  • 2. Requirements - Looking at a project from the outside in – in completely non-technical terms. What should it do and how should it react to us? Why?

    [chroniclemaster1, 2009/12/01]

Software Development Phase

Once you've completed project development you are ready to step into the formal SDLC. Project development was an important phase and one that is applicable to virtually any type of problem solving, not just software. In that sense, phase 1 of the SDLC, requirements, is also a generalized problem solving technique which is useful in many applications beyond software development. The SDLC follows a fairly well defined set of six steps. This is how applications really get developed.

  • 3. Architecture - Building both the physical and software architecture of the project.

    [chroniclemaster1, 2010/06/20]

  • 4. Design - Cracking open the black box; taking a requirements document and our basic architecture and determining how to get it done from the inside.

    [chroniclemaster1, 2010/06/20]

  • 5. Construction - Coding? You mean there's some coding to do in here somewhere?

    [chroniclemaster1, 2010/06/20]

  • 6. Deployment - Oh, yeah. We have to take it live. Deployment as a technique of progressing from theory to application.

    [chroniclemaster1, 2010/06/20]

  • 7. Maintenance - Did we mention that everything else was just a brief warm up to the real work?

    [chroniclemaster1, 2010/06/20]

    • 7 - 1. Iterative Development - Development by modules. Breaking one large project into many smaller projects to decrease the time we have to wait to enjoy completed functionality.

      [chroniclemaster1, 2010/06/20]

The first phase of the FSDLC are general problem solving steps that are useful in any systematic attempt to solve a problem. The last phase is a series of specific steps designed to provide consistent best practices for dealing with every step of creating and maintaining software.

OOP Best Practices

Object Oriented Programming is simple. It's entire purpose is to reduce complexity, and it has been such a revelation because the introduction of classes and objects are such powerful tools for reducing complexity. This does not mean that object oriented programming is easy. In order to do useful work, OOP must model and control real world situations which are anything but simple. This is why programming is so difficult. It is not a mathematical, but an artistic discipline; it is engineering, not science. Programmers don't use rules and guidelines, they use processes and heuristics that have no "right" answer. Writing a good program is like writing a great symphony; there are many right ways to do it... and unfortunately many wrong ones as well. Therefore, it's all the more important to discuss what practices make OOP really work.

Design Best Practices

XHTML (and HTML) are the foundation of all content on the internet. Whenever people discuss webpages, an XHTML is file is most directly what they are talking about. Various stylesheets, images, scripts, and other files are associated with (and typically called directly from) the webpage, but XHTML is at the heart of all web design and development. XHTML is the bedrock upon which CSS styling and Javascript behaviors are built upon. CSS is the critical means of extending XHTML, and web design is practically synonymous with the kinds of appearance-based concerns which CSS manages. In addition, Nicole Sullivan's new OO-CSS modules are a critical innovation that is redefining the usage of CSS.

  • OO - CSS - A description and background of OO - CSS, it's innovations, techniques and advantages.

    [chroniclemaster1, 2010/09/12]

Markup Structures

OO-CSS Gallery

  • OO - CSS Gallery - A gallery of OO - CSS components.

    [chroniclemaster1, 2010/09/05]

  • OO - CSS Gallery: Design Tools - A gallery of OO - CSS components for general use but which are aimed primarily at streamlining XHTML Prototyping.

    [chroniclemaster1, 2010/09/05]

  • Key CSS Techniques - A gallery of important CSS techniques / templates that no designer should be without.

    [chroniclemaster1, 2010/09/05]

XHTML Best Practices