SALT in Skagit (Part 1)

POSTED BY: GUNNAR KUDRJAVETS, MSS Software Design Engineer

Welcome to the world of software backwards compatibility! When we started working on a Microsoft Speech Server (MSS) 2007 (code name “Skagit”) our goal from day one was to ensure that SALT applications developed for previous versions, MSS 2004 and MSS 2004 R2 (code names “Kokanee” and “Lynnwood”), will work with a minimum number of changes required or no changes at all.

There have been some interesting technical challenges to make all this happen. Internally we re-architected our product, removed some dependencies and acquired some new ones, changed a number of internal interfaces, introduced new programming models etc. The usual stuff software developers like to do ;-)

In cases like this there are usually two basic ways to approach the problem of making applications developed for the previous version of a product to work on a new version:

  1. Start re-architecting and rewriting everything; there’s long period of time when nothing will work, and then you gradually start making things function again.
  2. Go from working solution to working solution or in agile software development terms –continuously refactor (https://www.refactoring.com/) your code. Every step of the way you’ll know where you are and you’ll notice immediately if you’ve broken any features or fixed some bugs.

Well, as none of us in MSS Runtime development team are much into gambling with the product’s quality, we chose the second approach. During previous versions of MSS our test team has developed thousands of test cases which exercise different aspects of the SALT standard (https://www.saltforum.org/) and different speech controls (https://msdn.microsoft.com/library/default.asp?url=/library/en-us/sasdk_salt/html/ST_Programmers_Reference.asp). For performance and stress purposes we have also developed internally a number of complex speech applications utilizing SALT and speech controls.

Therefore from the software engineering point of view the problem becomes making sure that all the applications and test cases which worked at the end of the previous MSS release will work exactly the same way during the upcoming release, no new bugs are introduced, and performance and stress capabilities are the same or better than the previous release. Looking back at the last 1.5 years I would have to admit that it’s been quite a challenge, but as a developer I had kilotons and kilotons of fun doing it. All the cool refactoring techniques I always wanted to try, all the unit testing you may ever wish for, and of course the mock objects ;-) In addition to all that, there’s also the necessity of having to be intimately familiar with code from all the versions of MSS. Like a kid in a candy shop ;-)

Next time: Minor changes we’ve made to SALT, a list of common problems you may encounter while porting your SALT applications over, and an introduction to the new SaltInterpreterActivity class which blends SALT applications into our workflow-based approach for MSS 2007.

Comments

  • Anonymous
    May 02, 2006
    It must have been really tough not to break the old SALT code.

    My plan is to migrate everything away from SALT with 2007. I never really liked the separation of client and server side code that the SALT interpreter imposed on me. I am comfortable with it and have learned to do what I need to do but I never really liked it. Now that something better such as managed code and ???? have come along I won't be looking back.

    You guys have done great work though and it is appreciated.
  • Anonymous
    May 02, 2006
    Marshall,

    First of all, thank you for the words of encouragement! In case you’ll start rewriting your existing SALT application(s) then it’ll be probably beneficial for all the other MSS users and MSS team to learn about your experiences (blog?) ;-) and get some external feedback about the ease of moving from one paradigm to another.

    In any case, feedback, suggestions, bug reports etc. are always very welcome!

    GK
  • Anonymous
    May 03, 2006
    So, when do those of us still waiting for a copy of MSS 2007 get to hear about the "?????" that Marshall is so excited about?  Managed code is great, but nothing that will get my VoiceXML customers to consider switching platforms...
  • Anonymous
    May 05, 2006
    Jeff,

    Aren't you in the beta?

    Just be patient and you will get to see everything soon :-)