A Quick Way to Identify Code with Low Testability

Following is a quick way to identify code with low testability and hence low maintainability: Take any specific public method of the class Count for number of decision points such as following: – If – For – While – Switch – Inline ifs If the number of decision points in a method is more than 15 or so, it could be taken as indication that it may get difficult to write unit tests covering all possible flows. Thus, the code will have lower testability. The number of decision points in a method is also used to define/measure cyclomatic complexity of the method, or more specifically, McCabe Cyclomatic Complexity. Thus, mathematically …

Continue reading

Posted in Maintainability, Software Quality, Unit Testing. Tagged with .

5 Things to Consider while Gathering Requirements from your Customers

Most of the time, software engineers are primarily interested in understanding requirements only from functionality perspective or, more simply speaking, understanding the stated needs. However, many a times, the delighting experience is missed due to absence of one or more of following 5 software quality characteristics in software coding stage: Efficiency: This is also termed as “performance requirements” at the time of requirement analysis stage. This goes unspecified as customers are also not very much knowledgeable about how to specify efficiency requirements. Efficiency requirements include consideration of time and memory usage associated with the requirement. Security: Most of the times, software engineers are not very aware of various different security …

Continue reading

Posted in Software Quality.

How to Write Re-usable Code

In my software quality sessions, one of my favorite questions had been “how to write re-usable code”. The most common answer has been following: Once one identified the re-usable components based on the functionality, once can write the components accordingly such that it can be reused. However, this argument required one to identify the reusable components at the design time. The question still remained. How would one write a code that can be termed as re-usable even if the component is not required to be reused at the moment? Another question that I ask is if it is possible to look at the code and say if this is a …

Continue reading

Posted in Maintainability, Reusability, Software Quality. Tagged with .

Top 5 Software Code Quality Concerns Your Customers May Have

If you want to delight your customer with great software code quality or avoid software code quality concerns of your customer, following are top 5 areas you may want to take care of: Functionality Suitability: Following are three different areas your software code should address: Correctness Completeness Appropriateness Out of above, correctness and completeness can directly be monitored and measured using bug tracking mechanisms. And, it is responsibility of both, developers and testers to make sure that these sub characteristics are complied. Developers achieve it by writing good unit tests, and test engineers achieve it by doing various different form of testing. From metrics perspectives, defect density is the area …

Continue reading

Posted in Software Quality. Tagged with .

Software Quality Review – Scribe OAuth Library

Scribe OAuth Library helps you do quick OAuth based integration with some of the following web applications: Google Facebook Twitter LinkedIn and many more. You could find further details on following page on github. Following will present information on different perspectives: Structure   Maintainability The duplication percentage isn’t very high. Duplication is one of the key criteria that reflects on the maintainability of the code. Higher the duplication, difficult is the code to maintain. Duplication is also considered as one of the code smells. Also, due to unavailability of unit tests in the source code bundle, I could not find the test coverage. Otherwise, test coverage depicts the testability of …

Continue reading

Posted in Maintainability, Metrics, Operability, Review, Software Quality. Tagged with .

Different Kind of Architects

Are you one of them who get confused about what are different kind of architects? If yes, keep reading! Following are different kind of architects: Solution Architect: They are the people who architect business solutions to solve a set of business problems. They need to have in-depth knowledge about business in general. They also need to be very much aware of functioning of different strategic business units (SBU) in order to architect integrated solutions that may cut across different SBUs to solve the particular problem. They deal with business processes while working on the solution and a descriptive business process diagram is one of their key deliverables. They may be …

Continue reading

Posted in Architecture.

Test-Along Development (TAD): Unit testing technique

While talking to one of the client stakeholder, I came across this interesting term as Test-Along Development. Following are two different techniques I came across as common way of writing unit test: Test-driven development where we write unit tests first and then write enough code to make unit tests pass Write unit tests at the end once you are done with the development. Both of the above techniques presented enough challenges to the software developers. Some of them are following: Test-driven development: In agile development, in 2 week sprints, the design took much longer than 2-3 days. Thus, doing test-driven development was found to lead carry-overs for sprint given on …

Continue reading

Posted in Maintainability, Software Quality, Unit Testing. Tagged with , , .

They confuse between Module & Component

Ask software developers about what do they mean by a module and a component and, what is the difference between them? Ask them about how would they represent module or a component in their daily development activities? Most of the time the answer is quite confusing. Although they use these two words interchangeably, they remain confused on their actual meanings. Module can be defined as following: Represents a functionality Can be represented as a set of components Can have manifest file representing component configuration One or more modules make an application. Technically, a package can be termed as a module. There is something called as module oriented programming as well. …

Continue reading

Posted in Maintainability. Tagged with , .

How to Configure XDebug Debugger for Zend Studio

I have tried to configure many a times, Zend studio with XDebug due to various reasonss, most common being my computer getting crashed. And, everytime, I found myself reinventing the wheel after I got exhausted to figure out if I noted the configurations somewhere. This blog is for me to refer back whenever my laptop crashes again and I have to reconfigure Zend Studio, PHP and XDebug. Following entities will change: Downloading of XDebug DLL and placing the same in ext folder of php installation PHP INI file Zend Studio Debug Preferences Lets go over each one of them in detail: Download relevant XDebug dll from thos page. http://xdebug.org/download.php. The …

Continue reading

Posted in Debugging. Tagged with , , , .

Software Quality Review: JActor

Overall Software Quality Rating: High (from Maintainability & Usability perspective) We reviewed JActor (http://sourceforge.net/projects/jactor/ ) in our software quality lab. Following is the overall structure of the software: The evaluation was done using manual and automated techniques. We were able to get findings related with following software quality characteristics: Maintainability: As per the available data, this has been measured in terms of duplications, and rules compliance. Ideally, test coverage would also have helped to determine the testability of the code. Our rating: High Maintainability Refer to the data below retrieved from Sonar code analysis:     Note the duplications value of 0.4%. This is outstanding. Also, there were no blocker …

Continue reading

Posted in Review, Software Quality.

Multiple Classes with Single responsibility VS Single Class with Multiple Responsibilities

While taking a session with a set of mobile developers, one of them asked a question that made many of them curious. Why multiple classes when single class can do? The main reasoning for single class was that one would be able to save some lines of code. Also, one would be required to create just one object for multiple functionalities. Lets look at some of the key advantages of multiple classes, each one of them having single functionality. High in cohesion, and hence reduced coupling. This tends to make the class reusable. Lesser costly to change than single class. Following explains the cost structure related with a change: Let’s …

Continue reading

Posted in Maintainability, Software Quality. Tagged with , , , .

How to estimate effort for unit testing?

Is that a right question to ask at all during effort estimation stage? When taking workshop with software developers involved SCRUM methodology, I came across some of the following answers in relation with effort estimation vis-a-vis unit testing: No task was created for unit tests and hence, no effort was estimated. Thus, we didn’t write any unit tests. We had to deliver and we were running short of time; hence, we skipped unit testing? There are effort estimation done for functional tests by QA engineers; Then, why unit tests? Interestingly, some stakeholders on client end said about of software developers on offshore side not asking for tasks to be estimated …

Continue reading

Posted in Uncategorized. Tagged with , .

Unit Tests & What do they say?

Ask software developers about what do they mean by unit testing, and if they believe in it? And, the answer you get are some of the following: Unit testing is about writing tests for each of the method of the class. It is written only when you get some extra time after the code completion? Unit testing is done only when we are asked by our customers. Unit testing takes additional time and hence, done only if time permits. Test-driven development… What is that? Not sure if there are any benefits by writing unit tests? Test coverage… What is that? Why do we write unit tests when we are software …

Continue reading

Posted in Software Quality. Tagged with , , .

What are Functional & Non-Functional Requirements?

When gathering requirements for software application/module development, requirements gathering remain as one of the key challenges for stakeholders at different levels including project manager, tech lead, software developers and test engineers. Interestingly, due to inefficient requirement gathering, most of the project fails. Following is definition of functional requirements as per wikipedia: In software engineering, a functional requirement defines a function of a software system or its component. A function is described as a set of inputs, the behavior, and outputs (see also software). Functional requirements may be calculations, technical details, data manipulation and processing and other specific functionality that define what a system is supposed to accomplish. Read further here. …

Continue reading

Posted in Software Quality. Tagged with , .

ISO/IEC Standards for Software Quality Compliance

What are various different ISO/IEC standards related with software quality compliance? ISO/IEC have published a set of standards useful for Software QUAlity Requirements and Evaluation also termed as SQUARE. SQuaRE is a series of International Standards (25000-25099) edited by the ISO/IEC organisation and related to Systems and Software Quality. Following are different ISO/IEC standards under SQUARE umbrella: ISO/IEC 25000 — Guide to SQuaRE ISO/IEC 25001 — Planning and management ISO/IEC 25010 — System and software quality models ISO/IEC 25012 — Data quality model ISO/IEC 25020 — Measurement reference model and guide ISO/IEC 25021 — Quality measure elements ISO/IEC 25030 — Quality requirements ISO/IEC 25040 — Evaluation process ISO/IEC 25045 — …

Continue reading

Posted in ISO Standards, Software Quality. Tagged with , .

Source code complexity: Operability Indicator

The complexity of source code can be used to represent the operability of source code. Before we look into various different techniques to measure code complexity, lets briefly understand the operability of source code. Operability is also one of the key characteristic of software quality requirements and evaluation standards (SQUARE). What is Source Code Operability The operability of source code can be defined in terms of ease of understandability and learn ability of the code. That, in turn, can represented in terms of how complex the code is, or, simply speaking, the code complexity. In another words, if the code is complex, it is difficult to understand & learn and …

Continue reading

Posted in Operability, Software Quality. Tagged with .