It has a 'Ring/Silent' switch. If you're not familiar with last week's mute switch controversy, start with this post from John Gruber. Then read Andy Ihnatko's post. Finally, read Dan Benjamin's take.
I agree that you can't design around every edge case, and it's logical to assume that most people want alarms to make noise so important events are not missed (e.g., waking up in the morning). I am such a user. I typically leave silent mode engaged, but I rely on my phone to wake me up for work. That said, I'm sure that many users will naturally assume that the 'mute' button on the iPhone mutes. Everything. That's a logical assumption.
How can we satisfy the need to make our iPhones emit noise in some situations and to remain silent in others? Some have suggested introducing software controls so users can choose on a per-event basis. Others have envisioned an intelligent rules-based system based on GPS location (e.g. remain silent when at the coordinates of the Lincoln Center Plaza). I think both solutions are overly complicated.
Here's a simpler idea that would catch most user edge cases: leave the 'silent mode' functionality as is. When the phone is set to mute, the phone is silent except for events (alarms) that the user has explicitly set. Add, by default, one minute of vibration prior to sounding manually-set alarms when silent mode is engaged.
In most cases, users in concert halls and staff meetings will be physically alerted by their vibrating phone. They'll have time to pull the phone out and cancel the event before an audible alarm sounds. Sure, some users won't hear or feel the vibrating phone because it's buried in a jacket pocket hung behind a seat or stuffed in a purse. But most people will. They'll have time to react.