This can be a complicated situation because every employer handles things very differently.
My advice would be to approach it from two directions:
1) learn as much about how your company handles compensation as possible
2) try to determine your market rate
Once you are armed with the information from #1 an #2, then you can proceed to have a conversation with your boss.
Details on the above:
1) while most companies handle this differently, most companies determine how to fairly pay an employee by diving jobs into levels and then having pay ranges within these levels. If your company has different levels of software engineer, then there are likely pay ranges associated with each of these levels. Finding out about compensation levels can be somewhat tricky, so asking around initially is probably not advised. However, if you can determine your level and where you rank within that level, then you can at least begin to determine where you fall within the range. Opening conversations you could have would be asking for direct feedback on what you could do to reach the next level as well as what you need to work on. You can also ask if your manager thinks you'd be a candidate for a promotion to the next level and when promotions occur. Some companies promote throughout the year, while others promote only at certain times of the year. This is an important detail because if it is the latter, you need to realize that your manager's hands may be tied until the next promotion period. There can also be different types of compensation adjustments. Sometimes companies offer "cost of living" adjustments. If they do, then sometimes managers may have more discretion to offer this at any time (again, all companies are different) If your manager isn't interested in giving you feedback or doesn't appear to be interested in helping you get to the next level, then it may be a good indication that it's time to look elsewhere for growth. It's also helpful to know if the manager thinks you're performing well. If they don't, then you probably shouldn't expect a raise.
2) what is the market rate for your position and skill level? This can also be tricky as there are usually many aspects to total compensation: base, bonus, stock, etc. So, when looking at sites that advertise salary, take this with a grain of salt. Also, since software can be highly specialized, there can be a lot of ranges for pay. Another approach would be to attend local meetups and once you've met people you feel comfortable with, ask them what the typical salary ranges are for their company (obviously tread lightly here since it can be a sensitive topic). One way to approach this would be to ask them what kind of offers they've been seeing lately in the market. Sometimes this level of indirection can be helpful in breaking the ice. Everyone is curious, but it can be difficult to engage in the topic since it is somewhat taboo.
Once you're armed with the data in #1 and #2 AND you feel comfortable enough with your manager to broach the topic, then spend some time laying out your argument for why you should receive a raise. For example, if you know that your manager thinks you're performing well, you know that you're eligible for promotion, and the informal market research you've done suggests that you are a candidate for a raise, then you can go in and have the conversation. Explain your case and ask your manager what their thoughts are. Remember never to get emotional or visibly angry. Listen as much as possible and ask clarifying questions. Remember that it may take several conversations before you have a breakthrough. If you like your current position, then I would advise against taking in a competing offer initially. Instead, try to have the fact based conversation first. Make sure to listen very closely to everything your manager says as it will give clues as to how internal compensation works. If you have another manager you're friends with, ask them for details on how the compensation works. The more you know about the compensation structure, the more you'll be able to structure your argument.
Also, remember to be patient. Realize that it will likely take several conversations and remember to listen as much as possible. Make sure you make your intentions and expectations as clear as possible to your manager. The more they know about what you expect, the more they can help you.
This is never an easy topic to broach, so be as prepared as possible and make sure to keep the conversation amiable.
Best of luck!