Instead of using an alternator to charge the battery, and a starter to start the engine, why not just put one electric motor which is always connected with the engine? When we want to start the motor, we supply electricity to it; and when the engine is started, it spins the motor to generate electricity and charge the battery.
One problem with generating electrical energy from a car engine is that the RPMs are constantly changing, and consequently the power output of an electrical generator would vary with engine speed. An alternator is very good at responding to these variations; the current in the rotor can be quickly adjusted to change the power output at a given RPM. I don't know how you would do the same with an electric motor as a generator, but I imagine that it would involve rejecting some of the surplus energy as waste, which would be inefficient.
Another thing to consider is that starting an engine and using it to generate electrical energy each require controlling very different amounts of electrical power. When starting the engine, a high amount of electrical power is needed, but only for a few seconds. When using the engine to generate power, typically only a small amount of power is needed, but it has to be generated continuously, as long as the engine is running. This means that the starter motor has to be built to withstand much higher current than the alternator, and the alternator has to be built to operate much longer than the starter.
It all comes down to the fact that the starter and the generator each have different design requirements. You could use one device that does the job of both, but it might be something of a "jack of all trades, master of none". The best solution for the time being seems to be the use of a separate starter and generator. That may change as technology advances though.