While architecting the system, often you have to choose the appropriate technologies to be used for every module. What are the different parameters to be considered while choosing the technologies/frameworks? How those parameters can affect the project quality, schedule, expense? Can anybody please explain in detail.
Note that there are few technical considerations that really matter C#, Python and Java (for example) all work perfectly. The choice is usually political or experience more than anything else. Having talked to a lot of CIO's and development directors, the politics of the situation matter more than almost anything else.
Quality is a matter of doing things properly. Right Design. Right Requirements. Right Budget. Right Testing. Right Attitude. etc. Technology doesn't matter.
Schedule is a matter of having the right people doing the right things at the right time. Technology doesn't matter.
Expense is a function of licensing and schedule. The technology choices are irrelevant.
Most -- not all -- most technology choices are based on experience. "Go with what you know." You build highest quality most quickly with familiar tools.
[I prefer the rare cases of choosing something new. However, after 30 years in this business, I've seen most decisions based on experience and going with something well-known.]
I once heard of a company who gave a fake advertise that they want to hire some developers. The selection criteria was to plan a project (the one they were actuly starting to working on). You had to chose the technology and how many people would work on it etc.
Then they just picked the technology that was mentioned most of the times:)
I don't recomend this but I just had to share this short story:)
Some broad criteria may include:
1-Type of application (Web, ETL, etc.)
2-Expertise of development team and whether the gap is could be crossed
5-User Requirements and usability needs - Compare each competitive technology for that. This is very broad point. You need to examine every known requirement against the selected stack/platform.
6-Ease of finding knowledgeably support people (if you plan to live with the product)
7-Software licensing style (per user, server, etc.)
8-Interface compatibility between the platform/tools and the existing systems
9-Localization support (in some countries where English is not the first language)
It's a broad question, but one thing you should keep in mind is the balance between new technology and routine. It's a trade-off in my eyes and you have to choose a value between close to outdated but well known, tested and understood by experienced programmers and bleeding edge, interesting to learn, doing more things for you than the previous version.
My experience is focused on a team size of 5-7 programmers and I tend to say that you shouldn't introduce more than one entirely new technology per project if noone in the team has worked with it before.
As for choosing the appropriate technology, vertical prototyping can help a lot so you understand how the new framework affects the rest of the technology stack you're using.