Softpanorama

May the source be with you, but remember the KISS principle ;-)
Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and  bastardization of classic Unix

Softpanorama defensive error diagnostic framework

News Softpanorama sysadmin utilities Recommended Links Softpanorama defensive diagnostic framework module Softpano.pm Defensive programming Conceptual Integrity Programming style
Software Prototyping Brooks law Conway Law A Note on the Relationship of Brooks Law and Conway Law Configuration Management Simplification and KISS Defensive programming in Perl
anti-OO Extreme programming as yet another SE fad CMM (Capability Maturity Model) Agile -- Fake Solution to an Important Problem Code Reviews and Inspections Project Management Literate Programming
 Architecture Unix Component Model Featuritis   The Mythical Man-Month Design patterns CMM
Bad Software Information Overload In-house vs. outsourced applications development OSS Development as a Special Type of Academic Research A Second Look at the Cathedral and Bazaar Labyrinth of Software Freedom Software Life Cycle Models
Program Understanding Git Software archeology Refactoring vs. Restructuring Software Testing   Managing Distributed Software Development
Distributed software development LAMP Stack Perl-based Bug Tracking Code Metrics Cargo cult programming Document Management Systems Testing
Programming as a profession Over 50 and unemployed Primitive views of the Software Design Beautifiers and Pretty Printers Neatbash -- a simple bash prettyprinter Neatperl -- a simple Perl prettyprinter  
Language Design and Programming Quotes SE quotes Health Issues Creative uses of rm Sysadmin Horror Stories Humor Etc

Many people independently came to the subset of ideas of Defensive programming so it is impossible to attribute this concept to a single author.

One of fundamental principles of defensive programming is that the program should always provide meaningful diagnostics and logging. Meaningful diagnostic is typically a weak spot of many Unix utilities, which were written when every byte of storage was a premium and the computer used to have just one 1M bytes of memory or less (Xenix -- one of the early Unixes worked well on 2MB IBM PCs)

If messages you get in case of errors or crashes are cryptic it typically takes a lot of efforts to relate the message to the root case. If you are the user of the program that you yourself have written that might be viewed as a case of "insult after injury" :-)

Here we strive to the quality of diagnostics that is typically demonstrated by debugging complier. Defensive programming also presume presence of a sophisticated logging infrastructure within the program. Logs should are easy to parse and filter for relevant information.

Softpanorama defensive diagnostic framework module Softpano.pm provides  the following functionality:

  1. All messages are produced with the line in which they occurred.
     
  2. Messages are generated using subroutine logme which has two parameters (error code and the text of the message). They are printed with the error code, which signify the severity and the line number at which logme subroutine was invoked. Four error levels levels are distinguished:
    1. Warnings: informational messages that do not affect the validly of the program output or any results of its execution. Still the situation that deserve some attention
    2. Errors: (correctable errors) Messages that something went wrong but the results execution of the program is still OK and/or output of the program most probably is still valid
    3. Severe errors (failures). Program can continue but the results are most probably a garbage and should be discarded. Diagnostic messages provides after this point might still have a value.
    4. Terminal or internal errors (called abends - abnomal ends). Those are unrecoverable errors. Program iether ontinue at this point ir the results are garabage. In Cans ethe program run as a cron job, for such abnormal situations you can even try to email the developer.

    To achieve this this level of functionality the programmed needs to have a special messages generation subroutine. which is waht we present in this project.

    For example, the subroutine logmes, which is the key part of Softpano.pm module is modeled after one used in compilers. The first parameter passes to this subroutines should be the one byte code of the error (or its number equivalent), the second is the test of dignostic message. The subroutine prints this message to consol and log  along with the line in which error was detected. 

    The errors codes used are as following

    NOTE: The abbreviated string for those codes has the mnemonic string WEST
     

  3. Terminal errors (abends) represent a special case, for which some additional diagnostic should be provided. They are invoked with a special subroutine (called abend), which can provide extended context for the error
     
  4. Output of those message is regulated by option verbosity (-v). The highest level is 3 which produces all errors. 
     
  5. There are also two types of informational messages that can be produced  (which are not suppressible):
  6. There is  a possibility to output of the summary of the messages at the end of execution of programs

Testing the Softpano.pm module

To test Softpano.pm module please use softpano_test.pl provided. This test re-implements basic functionality of cat command in Perl. Invocation is:

perl softpano_test.pl softpano_test.pl

The text of softpano_test.pl can serve as a user manual for the module.


Top Visited
Switchboard
Latest
Past week
Past month

NEWS CONTENTS

Old News ;-)

[Jun 04, 2021] Initial upload to Github

It provides the following functionality:

  1. All messages are produced with the line in which they occurred.
  2. Messages are generated using subroutine logme which has two parameters (error code and the text of the message). They are printed with the error code, which signify the severity and the line number at which logme subroutine was involved. Four levels are distinguished:
    • Warnings: informational messages that do not affect the validly of the program output or any results of its execution. Still the situation that deserve some attention
    • Errors: (correctable errors) Messages that something went wrong but the results execution of the program is still OK and/or output of the program most probably is still valid
    • Severe errors (failures). Program can continue but the results are most probably a garbage and should be discarded. Diagnostic messages provides after this point might still have a value.
    • Terminal or internal errors (abends). Program can't continue at this point and need to exit. In case of cron jobs, for such abnormal situations you can even try to email the developer.

    To achieve this one needs to write or borrow and adapt a special messages generation subroutine for example logmes, modeled after one used in compilers. One of the parameters passes to this subroutines should be the one byte code of the error (or its number equivalent) along with the line in which error was detected. For example

    • W -- warning -- the program can continue; most probably results will be correct, but in rare cases this situation can lead to incorrct or incomplete results.
    • E -- error -- continuation of the program possible and the result most probably will be correct (correctable errors)
    • S -- failure (serious error) -- continuation of program possible but the result most probably will be useless or wrong.
    • T -- internal error

    The abbreviated string for those codes has the mnemonic string WEST

  3. Terminal errors (abends) represent a special case, for which some additional diagnostic should be provided. They are invoked with a special subroutine (called abend), which can provide extended context for the error
  4. Output of those message is regulated by option verbosity (-v). The highest level is 3 which produces all errors.
  5. There are also two types of informational messages that can be produced (which are not suppressible):
    • "I" (informational) messages produced with the error code. They can be generated using logme subroutine
    • Regular output which is produced without error code, as is. They can be generated using out subroutine
  6. There is a possibility to output of the summary of the messages at the end of execution of programs

Testing the Softpano.pm module

To test Softpano.pm module please use softpano_test.pl provided. This test re-implements basic functionality of cat command in Perl. Invocation is:

perl softpano_test.pl softpano_test.pl

The text of softpano_test.pl can serve as a user manual for the module.

Recommended Links

Google matched content

Softpanorama Recommended

Top articles

Sites

Softpanorama defensive diagnostic framework module Softpano.pm

Enterprise PL-I for z-OS Messages and Codes



Etc

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D


Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to to buy a cup of coffee for authors of this site

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: June 04, 2021