Sunday, 28 September 2014
Thursday, 18 September 2014
Introduction to ISO/IEC/IEEE IT StandardsWhen it comes to IT Documentation and Governance one of the best sources for compliance is the ISO/IEC/IEEE standards. They provide both standards and best practices, for a successful IT project and business. Experts from around the world contribute to the standards so they provide their experiences and insight to assist businesses provide their IT project goals.
ISO (International Organization for Standardization)
ISO http://www.iso.org is an independent, non-governmental membership organization and the world's largest developer of voluntary International Standards.
IEEE (Institute of Electrical and Electronics Engineers)
IEEE http://www.ieee.org is the world's largest professional association dedicated to advancing technological innovation and excellence for the benefit of humanity. IEEE and its members inspire a global community through IEEE's highly cited publications, conferences, technology standards, and professional and educational activities.
ISO and IEEE have partnered together to provide new opportunities to adopt and jointly develop international standards to serve the global marketplace.
The following is a summary of the ISO/IEC/IEEE standards that are currently applicable to the IT Industry with links to their respective websites:
Quality ManagementISO/IEC 9001:2015 Quality management systems — Requirements (Part of the ISO 9000) Family Quality Management Guidelines - Software Engineering
ISO/IEC 90003:2008 Software engineering — Guidelines for the application of ISO 9001:2008 to computer software
Software QualityISO/IEC 9126-1:2000 Information Technology — Software Product Quality — Quality Model
ISO/IEC 9126-2:2000 Information Technology — Software Product Quality — External Metrics
ISO/IEC 9126-3:2000 Information Technology — Software Product Quality — Internal Metrics
ISO/IEC 9126-4:2000 Information Technology — Software Product Quality — Quality In Use
Metrics Software Process Assessment aka SPICE (Software Process Improvement and Capability dEtermination)ISO/IEC 15504-1:2008 Information Technology — Software Process Assessment — Concepts and introductory guide
ISO/IEC 15504-2:2008 Information Technology — Software Process Assessment — A reference model for processes and process capability
ISO/IEC 15504-3:2008 Information Technology — Software Process Assessment — Performing an assessment
ISO/IEC 15504-4:2008 Information Technology — Software Process Assessment — Guide to performing assessments
ISO/IEC 15504-5:2008 Information Technology — Software Process Assessment — An assessment model and indicator guidance
ISO/IEC 15504-6:2008 Information Technology — Software Process Assessment — Guide to competency of assessors
ISO/IEC 15504-7:2008 Information Technology — Software Process Assessment — Guide for use in process improvement
ISO/IEC 15504-8:2008 Information Technology — Software Process Assessment — Guide for use in determining supplier process capability
ISO/IEC 15504-9:2008 Information Technology — Software Process Assessment — Vocabulary
Software Life cycle processesISO/IEC 12207 Systems and software engineering — Software life cycle processes
Systems Life cycle processesISO/IEC 15288 Systems and software engineering — Systems life cycle processes
Systems and Software Engineering
Systems and Software Quality Requirements and Evaluation (SQuaRE)ISO/IEC 2500n Quality Management Division
ISO/IEC 2501n Quality Model Division
ISO/IEC 2502n Quality Measurement Division
ISO/IEC 2503n Quality Requirements Division
ISO/IEC 2504n Quality Evaluation Division
ISO/IEC 25000:2014 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Guide to SQuaRE
ISO/IEC 25001:2007 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Planning and management
ISO/IEC 25010:2011 Systems and Software Quality Requirements and Evaluation (SQuaRE) — System and software quality models
ISO/IEC 25012:2008 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Data quality model
ISO/IEC 25020:2007 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Measurement reference model and guide
ISO/IEC 25021:2012 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Quality measure elements
ISO/IEC 25022 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Measurement of quality in use (in development)
ISO/IEC 25023 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Measurement of system and software product quality (in development)
ISO/IEC 25024 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Measurement of data quality (in development)
ISO/IEC 25030:2007 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Quality requirements
ISO/IEC 25040:2011 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Evaluation process
ISO/IEC 25041:2012 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Evaluation guide for developers, acquirers and independent evaluators
ISO/IEC 25045:2010 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Evaluation module for recoverability
ISO/IEC 25051:2014 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Requirements for quality of Ready to Use Software Product (RUSP) and Instructions for testing
ISO/IEC 25062:2006 Systems and Software Quality Requirements and Evaluation (SQuaRE) — Common Industry Format (CIF) for usability test reports
Software TestingISO/IEC/IEEE 29119-1:2013 Software and systems engineering — Software testing — Concepts & Definitions
ISO/IEC/IEEE 29119-2:2013 Software and systems engineering — Software testing — Test Processes
ISO/IEC/IEEE 29119-3:2013 Software and systems engineering — Software testing — Test Documentation
ISO/IEC/IEEE 29119-4:2014 Software and systems engineering — Software testing — Test Techniques
ISO/IEC/IEEE 29119-5:2015 Software and systems engineering — Software testing — Keyword Driven Testing
User Documentation - Agile EnvironmentISO/IEC/IEEE 26511:2011 Systems and software engineering—Requirements for managers of user documentation
ISO/IEC/IEEE 26512:2011 Systems and software engineering—Requirements for acquirers and suppliers of user documentation
ISO/IEC/IEEE 26513:2009 Systems and software engineering—Requirements for testers and assessors of user documentation
ISO/IEC/IEEE 26514:2008 Systems and software engineering—User documentation requirements for documentation designers and developers
ISO/IEC/IEEE 26515:2011 Systems and software engineering—Developing user documentation in an agile environment
Monday, 15 September 2014
When I have worked in the past one of the services I am offering is IT Documentation and Governance an area which I believe is extremely lacking in today's modern technology world.
Sadly to say I find in most IT projects that IT Documentation gets the least amount of attention and is rarely updated when the project changes. In most cases whenever you ask a programmer or systems administrator to document their work they reluctantly produce a document that has no standard and is rarely proof read/verified.
Yet I regularly see organisations left vulnerable when documentation is lacking. Usually the staff member(s) involved in the project have moved on to other projects both within or externally. This places the business in a vulnerable situation. Because if there is a need to support and/or provide enhancement it is unlikely someone else can fill this position with minimal downtime or disruption.
Documentation is the key communication tool used by management for business continuity. It allows any key stake holder i.e. staff member, customer, vendor to understand the system and provides better relations. Also it allows you to scale the communication from 1:1 to 1:many correspondents.
As more and more businesses interact with other businesses and the need for key stake holders to be spread across multiple locations there is a need to formalize the knowledge transfer. This is where documentation becomes important.
The importance of using ISO/IEC Standards for documentation becomes paramount for an organization as it provides best practices and is ideal to act as a reference guide for both strategies and processes. We understand the importance of having a standardized documentation thus ensuring that it is compliant to the ISO standards for maximum return on investment.
I plan to blog further in this area as I see it is an area that is lacking in the IT community.
In the meantime please visit www.microangelo.com.au or email firstname.lastname@example.org to discuss your documentation needs.
Wednesday, 10 September 2014
In this blog entry I thought I would start by describing a new direction in my IT career that I am embarking on. Whilst I will never quit programming and will engage on small contracts I am also embarking on providing IT consultancy services with my company Microangelo. Please visit my website developed using Umbraco at http://www.microangelo.com.au/. One of the services I will be offering is Backup and Recovery and how it is neglected in modern businesses across the country.
Sadly we have become so dependent on technology so much so that modern businesses cannot function without the use of technology. The thought of it failing is rarely considered by business users as most businesses have a complacent approach to failure. This is alarming considering the dependence on IT systems when conducting business.
Surprisingly enough most businesses are geared towards setting themselves up and being profitable. However once a business is successful, consideration should be placed to keep it that way. That’s why a disaster recovery and backup plan is a necessity for business continuity. So that in the event when disaster strikes, your business is prepared and all those involved can respond to it with minimal downtime. The best way to respond when disaster strikes is to have a disaster recovery and backup plan.
With cloud technology this is now becoming easier to implement and affordable. Using cloud technology, your business can have a complete backup of you IT infrastructure which can be restored in minutes when necessary. Because the cloud computing is managed by 3rd party experts you are guaranteed 99.9% SLA (guaranteed by Microsoft, Google, Amazon), as well as utilizing the very latest in technology.
Please visit my website and I will continue blogging as usual. In the meantime I include a couple of photos of a phone I use as backup in case my smartphone dies on me circa 2001.
Tuesday, 22 April 2014
Creating Performance Counters in Azure Worker Roles
I have written a number of work roles and wanted to monitor these roles. Using the ms-windows framework the best approach is to create a custom performance counters. That’s fine for a windows hosted service but how do I do this in an Azure worker role. Plus how do I provide the performance counters metrics in the azure monitor page.
This blog will explain how.
Now the first bit of code is the performance counter creation. Seeing as though this is a custom performance counter we will need to create it on the OnStart method. I created a method called InstallPerformanceCounters and here is the code below.
public bool InstallPerformanceCounters()
logger.Info("ALAzurePerformanceCounter performance counter category does not exist.");
CounterCreationDataCollection counters = new CounterCreationDataCollection();
// 1. counter for counting totals: PerformanceCounterType.NumberOfItems64
CounterCreationData totalMessageCounts = new CounterCreationData();
totalMessageCounts.CounterName = "MessageCount";
totalMessageCounts.CounterHelp = "Total number of messages processed";
totalMessageCounts.CounterType = PerformanceCounterType.NumberOfItems64;
// create new category with the counters above
logger.Info("Creating ALAzurePerformanceCounter performance counters");
PerformanceCounterCategory.Create("ALAzurePerformanceCounter", "ALAzurePerformanceCounter Worker Role", PerformanceCounterCategoryType.MultiInstance, counters);
logger.Info("Created ALAzurePerformanceCounter performance counters");
The second bit of code updates the diagnostic configuration so we can view the performance counter in the azure portal.
private static void ConfigureDiagnostics()
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString"));
var roleInstanceDiagnosticManager = CloudAccountDiagnosticMonitorExtensions.CreateRoleInstanceDiagnosticManager(
var roleDiagnosticMonitorConfiguration = roleInstanceDiagnosticManager.GetCurrentConfiguration();
// Copy settings from configuration.
if (!double.TryParse(RoleEnvironment.GetConfigurationSettingValue(WorkerRolePeriodName), out workerRolePeriod))
Trace.WriteLine("WebRole environment diagnostics error: " + WorkerRolePeriodName + " parse failed.");
// Set the default to one minute.
workerRolePeriod = 1d;
// Transfer diagnostic information once every webRolePeriod minutes.
TimeSpan transferPeriod = TimeSpan.FromMinutes(workerRolePeriod);
roleDiagnosticMonitorConfiguration.PerformanceCounters.ScheduledTransferPeriod = transferPeriod;
if (!double.TryParse(RoleEnvironment.GetConfigurationSettingValue(WorkerRoleSampleRateName), out workerRoleSampleRate))
Trace.WriteLine("WorkerRole environment diagnostics error: " + WorkerRoleSampleRateName + " parse failed.");
// Set the default to ten seconds.
workerRoleSampleRate = 10d;
CounterSpecifier = @"\ALAzurePerformanceCounter(azure)\MessageCount",
SampleRate = TimeSpan.FromSeconds(workerRoleSampleRate)
catch (RoleEnvironmentException rex)
// The connection string was missing.
Trace.WriteLine("WorkerRole environment diagnostics error: " + rex.Message);
catch (InvalidOperationException iox)
// Parse of the connection string failed.
Trace.WriteLine("WorkerRole environment diagnostics error: " + iox.Message);
The final code is the OnStart and OnRun whereby the OnStart is the first method called on initialisation and calls the above methods whilst the OnRun executes in a loop until shutdown. The OnRun updates the performance counter in this case it’s a counter.
public override bool OnStart()
// Set the maximum number of concurrent connections
ServicePointManager.DefaultConnectionLimit = 12;
// Setup to handle service configuration changes at runtime.
// For information on handling configuration changes
// see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.
// Not Implemented in this case.
//-RoleEnvironment.Changing += this.RoleEnvironmentChanging;
//-RoleEnvironment.Changed += this.RoleEnvironmentChanged;
// This is a sample worker implementation. Replace with your logic.
DiagnosticMonitorConfiguration diagnosticConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
// Transfer diagnostic information once every minute.
TimeSpan transferPeriod = TimeSpan.FromMinutes(1d);
diagnosticConfig.PerformanceCounters.ScheduledTransferPeriod = transferPeriod;
// Set the diagnostic monitor configuration.
catch (Exception exc)
public override void Run()
// This is a sample worker implementation. Replace with your logic.
logger.Info("PerformanceCounter entry point called");
string Instance = "azure";
System.Diagnostics.PerformanceCounter _perfMessageCount = new System.Diagnostics.PerformanceCounter();//"ALAzurePerformanceCounter", "MessageCount", Instance, false);
if (!PerformanceCounterCategory.InstanceExists(Instance, "ALAzurePerformanceCounter"))
_perfMessageCount.CategoryName = "ALAzurePerformanceCounter";
_perfMessageCount.InstanceName = Instance;
_perfMessageCount.CounterName = "MessageCount";
_perfMessageCount.MachineName = ".";
_perfMessageCount.InstanceLifetime = PerformanceCounterInstanceLifetime.Global;
_perfMessageCount.ReadOnly = false;
catch (Exception exc)
For this demonstration the C# code above is sufficient to illustrate the usage of the performance counter for the worker role.
Now we need to modify the azure worker role configuration.
1: We need to set the azure worker role to at a higher privileges.
2: We need to configure the azure diagnostic storage to an azure storage account. The azure monitor page diagnostics will look at the storage to retrieve the data.
3: We need to configure the diagnostic configuration to include the performance counter that we want to monitor
4: Set Azure Diagnostic to verbose in the Azure Portal.
Azure Worker Role Configuration
<ServiceDefinition name="ALPerformanceCounter" xmlns="" schemaVersion="2014-01.2.3">
<WorkerRole name="PerformanceCounter" vmsize="Small">
<Runtime executionContext="elevated" />
Modify ServiceConfiguration.Cloud.cscfg to include the diagnostic azure storage. Make sure you use https!!!
<Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=alperformance;AccountKey=XXXXX” />
Modify diagnostics.wadcfg to include the performance counter
<?xml version="1.0" encoding="utf-8"?>
<DiagnosticMonitorConfiguration configurationChangePollInterval="PT1M" overallQuotaInMB="4096" xmlns="http://schemas.microsoft.com/ServiceHosting/2010/10/DiagnosticsConfiguration">
<IISLogs container="wad-iis-logfiles" />
<CrashDumps container="wad-crash-dumps" />
<Logs bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M" scheduledTransferLogLevelFilter="Error" />
<PerformanceCounters bufferQuotaInMB="512" scheduledTransferPeriod="PT1M">
<PerformanceCounterConfiguration counterSpecifier="\ALAzurePerformanceCounter(azure)\MessageCount" sampleRate="PT1M" />
<WindowsEventLog bufferQuotaInMB="1024" scheduledTransferPeriod="PT1M"scheduledTransferLogLevelFilter="Error">
<DataSource name="Application!*" />
This can also be done in visual studio.
Edit the project worker role.
Inside the Azure portal. Ensure the monitoring level is verbose.
Add the metric in the dashboard.
View the performance counter in the monitor page
Select the performance counter to create a rule.
This allows you to alert the support desk if there is an issue.