Analyzing requirements and defining .NET solution architectures