Siegfried Heintze's engagements with Nokia mobile phones May to November of 1999.


Siegfried delivered ten days of instruction to Nokia QA engineers: a course on Object-Oriented Analysis and Design (OOAD) and C++/COM programming. Most of the students were electrical engineers whose focus had been automating the testing instrumentation using the C programming language. This made the OOAD class both the most difficult and most valuable class they had ever attended.


During many visits to the manufacturing plant I guided the object-oriented analysis and design efforts. This took the form of many group meetings where the team modelled the new system using the Rational Rose products with an overhead projector. During this time we greatly reduced the number of classes.


Minimizing Vender Dependence: A plethora of existing brands from UNIX, Windows, Oracle databases to BEA application servers and Microsoft COM components had to work in concert together. With such an assortment of vendors it was clear that writing vendor independent code was not possible. However, we were to try to minimize our use of any vendor specific features. This meant avoiding Visual Basic or MFC/C++. Since we could not avoid Micrsoft's COM some team members had been contemplating Microsoft's J++. I guided the team to use a more appropriate technology (2 years later we learn that Microsoft is abandoning Java and J++).

Encapsulating the Database: Management had mandated that the database should be completely seperate. It was to be designed and implemented by a different team that was to design an API to access that information.

Mangement adopted my recommendation that the two projects be integrated, and put into the added role of database design.

Prototyping the User Interface: The team had made several previous attempts at implementing the complex user interface. Displaying the plethora many-to-many relationships and still shielding the user from SQL was challenging. I developed and demonstrated for the team several web browser based prototypes that would display the complex relationships. These prototypes used COM, C++ and javascript to implement a very friendly and intuitive approach that drastically reduced the amount of implementation code by reusing some very flexible key components over and over again. (C++ and COM were acceptable because we had to manipulate third party COM objects anyway).

Planning the Implementation

After having identified the major components and sub-systems, I guided the team to identify the human and silicon constraints for each component and choose from Java, C++/COM and Javascript. While the team had not originally anticipated using web technology, they discovered that this could greatly simplify the implementation.

After identifying the optimal technology to implement each component new teams of two or three engineers were formed. I facilitated the assignment of these new smaller teams to various aspects of the developement effort according to their skills.

Back to résumé.

Home ||| Courseware ||| Course Listing ||| Instruction
Philosophy ||| Clients ||| Publications ||| Résumé