In general, these questions indicate a quite fundamental gap of knowledge in how science works. It is a pity that your coursework has not prepared you better for your thesis.
How do I know that the reference is valid?
There is no magic wand that tells you that. You will need to carefully read the papers, consider their limitations and threats to validity, and decide for yourself whether the paper is useful as a source to support your argument. That being said, as a first approximation you can look at the venue that the paper has been published in (is the journal or the conference very good?), and how often the paper has been cited by others (you can see that in Google Scholar). However, again, keep in mind that all of this is just supporting data - ultimately you need to decide yourself whether a given piece of research is valid and useful.
Where is the best place to find references? (For my case it's about software-development)
There are three common strategies for finding literature:
- Searching a digital library (in your case e.g., IEEEXplorer or the ACM DL), searching through DBLP, or using Google Scholar. In all of these cases, you can investigate a lot of different journals and conference proceedings at the same time, but you need to be aware of the right keywords to search for.
- Browsing journal back issues or conference proceedings. That is, after you have identified important journals and conferences in your field (for you ICSE might be a starting point), go over previous iterations and look over all paper titles and abstracts. The most convenient way in computer science to do this is via the aforementioned DBLP.
- Once you have a few good papers as starting point, start following the chain of references. Look at both, the papers that your papers are citing, but also which papers cite the papers you already found (Google Scholar has a feature for this).
You can find a summary of this also in a presentation I recently did as part of my own seminar.