Microsoft's to-do list in the software development space includes continued or new investments in multiple areas, including cloud computing, the Web, parallel computing, devices, and agile and distributed development, a company executive said in a blog entry on Tuesday.
In setting its investment priorities, Microsoft is being mindful of an increasing number of choices developers have in programming styles, said S. Somasegar, senior vice president of the Microsoft Developer Division, in a blog entitled, "Key Software Development Trends."
"More than ever before, today's developers are open to considering and using multiple technologies to enable them to build solutions smoothly and deliver them to their customers quickly," Somasegar said.
With cloud computing, Microsoft has "committed to bringing the best cloud computing platform and services to the Windows ecosystem," he said. Microsoft's cloud platform, while not specifically named in the blog, is Windows Azure. "The cloud is just one example of a virtualised computing platform and the next generation of developer tools must enable developers to build software that deploys and performs well in cloud and other virtual environments," Somasegar said.
"Developers are increasingly choosing the web as their platform of choice for software and software development. Increasingly, developers and designers are using tools that offer a rich development, debugging and profiling experience designed for the web," said Somasegar.
In parallel computing, Somasegar said Moore's Law, in which CPU performance doubles every 18 months, now is being fulfilled by adding more processor cores rather than boosting single core performance. "Today, a small handful of programmers have the skills to write code that performs well in multicore and many-core environments," Somasegar said. "In the future, parallel libraries, debugging, profiling and diagnostic tools will enable more developers to take advantage of parallel computing resources." Prior parallel computing efforts at Microsoft have included the company's Concurrency Runtime, offering a scheduling layer to control application resources.
To accommodate the proliferation of devices, Microsoft is evolving its software to take advantage of new user interface paradigms such as speech-, camera-, and touch-based solutions, said Somasegar.
"Windows 7 provides great support for touch-enabled applications in the platform. Silverlight and WPF (Windows Presentation Foundation) have embraced camera-based interactions and multi-touch, as has MFC (Microsoft Foundation Class Library). I expect user interface paradigms to continue to evolve and become more intuitive and powerful," Somasegar said.
Recognizing the trend toward use of agile development methodologies, which allow for more iterative development, Microsoft will make accommodations for agile in the upcoming Visual Studio 2010 IDE due in April, Somasegar said. The IDE supports agile processes such as unit testing and iteration planning, he said. "Within Microsoft, many teams have integrated elements of agile development practices to their process," Somasegar said.
In the distributed development space, Somasegar said the experience of teams working across time zones and borders should equal the experience of a single developer, but also include cloud-based development activities such as code reviews and remote paired programming. "Great distributed team development tools will enable developers to build the next generation of software, leveraging the worldwide talent pool," Somasegar said.
He asked blog readers to note other important trends for Microsoft to consider.