What is a Harmonic Software System?


A Harmonic Software System is the product of a software process that involves a balanced, cohesive combination of documentation, development and testing, that has been honed through successive iterations of working, functional software, and that has had the highest quality standards applied throughout every facet of the development process.

Or, to put it another way:

Harmonic Software Systems logo

 

DOCUMENT

DEVELOP

TEST


 

 

 

The logo depicts a dynamic software development cycle, where software is designed and documented, developed and then tested, and where balance and harmony exists between these phases. It represents an approach, a philosopy, a mindset for the software engineer who is striving to create a software system which meets the requirements of the customer and which is delivered on time as a working system.

This approach does not allow for control structures, such as the V-model of software development, to be rigidly adhered to. Rather, it requies a flexible, dynamic approach to software development. It is not a methodology, or a tool, it is a concept.

These phases are incorperated into the logo of Harmonic Software Systems:

DOCUMENTATION (Creative)
The start of the cycle, where the system is designed and explicitly defined, as to WHAT it will do, and HOW it will do it. A sizeable project must include:

  • Requirement Specification
  • Design Document utilising UML and reusable design patterns as necessary
  • Project Plan
  • Testing Documents
  • User Guides for the api/system, tools and hardware
  • ONE set of coding standards
  • Risk assessment


DOCUMENTATION/DEVELOPMENT (Creative/Growth)
Embedded within the Documentation is the possibility that some initial development may be required - usually a feasibility study or some sort of simulation to get a feel for the behaviour of the system, before development starts in earnest.


DEVELOPMENT (Growth)
Where the ideas created in the design are implemented under controlled conditions, utilising:

  • Source Code Control System, with graphical branching and merging e.g. Clearcase
  • Regular code reviews to enforce coding standards
  • Culture of quality e.g. NO build warnings or hacks, clean makefiles, clear directory structure, good comments
  • Build config method using config headers and task allocation tables
  • Update docs as detail is created, the design is tweaked and as the project progresses


DEVELOPMENT/TESTING (Growth/Solidification)
Embedded within the Development is an element of on-going unit and integration testing, through the use of custom built test harnesses and debug scripts.


TESTING (Solidification)
The end of the cycle, where the software is evaluated to see how close it is to the requirements. The following testing types are necessary:

  • Unit testing - performed during development
  • Integration testing - most of this performed during development
  • System testing - wide ranging tests of functionality using standard test vectors
  • Stress testing - to determine system limits
  • Acceptance testing - for customer satisfaction, to ensure the system is delivered as expected


TESTING/DOCUMENATION (Solidification/Creative)
Embedded within the testing is the documenting of the results of the tests. The cycle may repeat as additional innovation is required to tweak the system to meet the specifications, to fix bugs or to move towards a new release or project.

 

Related Items

Contact Us

Contact Us to Discuss your query