Developing applications for mobile devices
Software engineering is rapidly evolving. A huge amount of the software that is developed today is produced as a set of so-called applications for App Stores.
Only in the Apple App store there is currently more than 300,000 applications available [ref] . When we take into account the Android market (170,000), the Windows phone market, the Nokia market and all the emerging platforms for mobile devices [ref], this corresponds to a huge software production silo. This is happening very rapidly since in July 2008 there were only 500 applications in the Apple App Store. The development curve on the Wikipedia site looks exponential.
I have several questions about this rapid evolution, and among them:
- What are the programming languages used for these development? Java? Objective-C?
- What is the average size (in LOC or in number of classes) of an application?
- What are the methods (if any) used to develop these applications?
- Are formal methods used?
- Are the requirements explicitly represented?
- How is the maintenance of these applications organized?
- What does the total development effort of all these applications represent in the total software development effort in the world?
- What is the status of the application developers (employees of big companies, individual programmers, etc.)?
I do not know the answers to these questions, but I have the impression that this phenomenon is going to deeply impact the way we consider software production. I know several companies (in the bank domain for example) that are already changing the vision of their information system architecture to integrate this. They are looking at their old legacy application portfolio to see how this could evolve to accommodate new applications written for mobile platforms. The old client-server organization is impacted by the mobile-equipped client. The way they internally produce software or acquire software (applications) from external vendors after adequate testing is also impacted.
We have already seen several interesting projects in the Eclipse modeling area targeting the production of mobile applications. Of course this is mainly Android since Apple forbid such practices (applications have apparently to be developed natively in Objective-C and cannot be generated).
One interesting observation is that the universities that have always been in advance in the domain of software engineering are today recognizing that the application production for mobile devices requires different skills and different methods. As a consequence they are rapidly opening specific courses for mobile application development. If we want to see which universities are most innovative, most open on their environment, most adaptive, we may look at those that are opening such courses. Apparently the first to take such initiative was Stanford university. Today they are sometimes offering free online courses. And they seem to have a lot of success as reported by many Twitters:
I would also be interested by other answers, like:
- Are these courses targeting only iOS, or Android or are some of them platform-agnostic?
- What are the universities that are opening such courses?