Friday, June 30, 2006

RowFixture Example in C# -- Fit

using System;

public class EmployeePayRecordsRowFixture : fit.RowFixture
public override Object[] Query()

EmployeePayRecord[] records = new EmployeePayRecord[2];
records[0] = new EmployeePayRecord(1, 1000);
records[1] = new EmployeePayRecord(2,2000);
return records;

public override System.Type GetTargetClass()
return typeof(EmployeePayRecord);

using System;
public class EmployeePayRecord
public int id;
private double salary;
public EmployeePayRecord(int id, double salary)
{ = id;
this.salary = salary;
public double pay()
return salary;

Monday, June 12, 2006

Nice interview questions found in a Job Posting

Subscribe to my youtube channel "Software Architecture Matters!!!"

Architecture - client requires at least rudimentary skills in these areas.
What is SOA? Benefits? SOA principles for WS?

Name standard architecture patterns you know

Design Patterns

What is a singleton class? Where one should use it and what is the advantage of using it?

What kind of UML diagrams do you know?

Explain how garbage collection works in .NET. How to properly release object resources?

How to expose COM dll to be reused in .NET?

How to use .NET dll in ASP 1.1?

Web Services - client requires expertise in these areas.

How to convert a class into a Web Service? Attributes to use?

When and how do you implement the asynchronous WS call? Does .NET have a support for this?

What is the transport protocol you use to call a Web service?

What does WSDL stand for?

How you make your WS discoverable?

What is WSE? What does it include?

AD- client requires at least rudimentary skills in these areas.
What is Active Directory?

What is Global Catalog?

User display name = Nick Kazanskiy, Container=users in OU=DolUsers. server= usatrame5101.staging.dmz.dtt. Write a LDAP connection string.

COM+ - client requires solid skills in these areas.

Explain transaction atomicity.

Explain consistency.

Explain integrity.

Explain durability.

Explain object pooling.

Explain JIT activation.

Explain role-based security

Explain queued components.

Explain loosely coupled events

Define scalability.
Define reliability.

Define availability.

Define security.

Define manageability.

Which namespace do the classes, allowing you to support COM functionality, are located?

How do you make a NET component talk to a COM component?.

XML- client requires solid skills in these areas.
What is XPath?

What is XSLT? And what's its use?

How to load XML in .NET? What methods and objects could be used?

How to search in XML using XPath if the namespace is defined in XML?

SQL Server – client requires some knowledge of these skills as it relates to development.
What are benefits of using views?

What kind of triggers exists?

What are restrictions on User defined functions?

What are partition views?

What does referential integrity (also called relational integrity) prevent?

What is denormalization and when would you go for it?

What's the difference between a primary key and a unique key?

Define candidate key, alternate key, and composite key.

What are defaults? Is there a column to which a default can't be bound?

What's the difference between DELETE TABLE and TRUNCATE TABLE commands?

What is an index? What are the types of indexes? How many clustered indexes can be created on a table? I create a separate index on each column of a table. what are the advantages and disadvantages of this approach?

What is replication? How many different types of replication exist?

ASP.NET - client requires solid skills in these areas.
Explain the differences between Server-side and Client-side code?

What type of code (server or client) is found in a Code-Behind class?

Should user input data validation occur server-side or client-side? Why?

What is the difference between Server.Transfer and Response.Redirect? Why would I choose one over the other?

What is the Global.asax used for?

What are the Application_Start and Session_Start subroutines used for?

Describe the role of inetinfo.exe, aspnet_isapi.dll andaspnet_wp.exe in the page loading process.

What’s the difference between Response.Write() and Response.Output.Write()?

What methods are fired during the page load?

What is ViewState?

What is the lifespan for items stored in ViewState?

What does the "EnableViewState" property do? Why would I want it on or off?

What are the different types of Session state management options available with ASP.NET?

When during the page processing cycle is ViewState available?

What is assembly? What are assembly components?

C#- client requires solid skills in these areas.
I was trying to use an “out int” parameter in one of my functions. How should I declare the variable that I am passing to it?

If I return out of a try/finally in C#, does the code in the finally-clause run? Describe how the try/catch block works and in what sequence the exceptions need to be processed.

What statement is used to synchronize the code execution?

What is the difference between a struct and a class in C#?

Is it possible to have different access modifiers on the get/set methods of a property?

Is there a way to force garbage collection?

How do you convert a string into an integer in .NET?

What is difference between Interface and Inheritance

Does .Net support Multiple Inheritance ? If not, what are alternatives?

Can you have private abstract methods?

What are the methods of object you should overwrite?

What is binary search algorithm?

What is difference between Value Types and Reference Types?

All types derive from which base type
Ans. System.Object

What is delegate

Eight Point Checks for Servicing Software -- Servicing Software Part 2

You as a part of Software Service Professional have been allocated to service software. User Interface Looks great and it has been meeting the existing business requirements. There has been complains of production problems, production down time and software slow to new business needs.

Point 1 Architectural Check #: Is there any Architecture in the system?
Observation : None. There is no logical layer or physical layer to separate the UI Layer, Business Layer, Data Layer
Consequence: Software Stays in Software Service Shop for a long time.
Action to be taken:
Step1: Understand the enemy. Just fix and learn the business knowledge and understand the code
Step2. Move the Data Logic and business logic to Middle Layer. No need to domain or CRC analysis at this stage.
Step3: Insert the new Architecture for new development.

Point 2 Automated Testability Check #: Is there factory layer or façade layer between UI and Middle Layer
Observation: None
Action to be taken:
Step 1: Create the factory layer for Middle Layer. Factory Layer provides high level abstraction

Point 3 Automated Tests Existence Check#: Do we have automated tests for factory layer or façade layer.
Observation: None
Step 1: Write the automated unit tests.

Point 4 Middle Tier Design Check#: Does Middle Layer Design maps to problem Domain?
Observation: None
Action to be taken:
Step1. Perform Domain Driven Design or CRC Analysis or Data Driven Design
Step2. Run automated unit tests.
Step3 Perform Continuous Integration (using NANT and CruiseControl or MSBuild)

Point 5 Logging Check#: Some behavior can be observed only during execution in production environment. Does system enable logging for that?
Observation: None.
Acton to be taken:
Step1: Writing your own logging routines
User Microsoft Application Blocks
User Log4net

Point 6 Exception Check#: Exceptions raised during production time are being logged
Observation: None
Action to be taken
Step1: Write your own Exception Mechanism
Use Exception Application Block

Advance Checks#
All or None scenario creating problem in production. Are components using transaction?
Observation: None
Action to be taken
Step 1: Implement Enterprise Service or ADO Transactions

Point 8 Design Patterns Checks#
Will Design Patterns’ injection make the maintenance easier?
Observation: Yes
Action to be taken
Step 1: Implement Design Patterns
Step 2: Run automated unit tests
Step 3: Run the daily build

Good Reads

Survic has written a nice post

Saturday, June 10, 2006

What if we can maintain our Software Systems like our cars ?

My Comment : World would be a a happy place to live.

I have come across a comment from software professionals that they know that some parts of their software oulived its utility. They would love to replace it with new parts but their business users would not allow it. Business users’ opinion is if they are not getting new functionality from software then they don’t want any change.

What if we have ‘Maintenance Check’ or ‘Overhauling” phases in our software life cycle? We allocate time and resources for maintenance check in our project plans. Qualifies Software Professionals would check software and see what parts are worn out or need oil and tuning. Worn software are removed with new, others are refactored and tuned.

Do I like paying for Car Service? No. Do I go for every car schedule to keep my car running? Yes. I think that it is a time to educate Business Users about Software servicing. They have choice to pay tens of thousand dollars for software servicing or million of dollars for software rewrite. Because Software System is going to die with
out service ultimately.

Till it happens, let us sneak changes as refactoring with next release.