Cleanroom Engineering
During SENG 613, this technique was covered as a requirements engineering tool. Somewhat more formal than I would typically feel is warraneted for most of my work, but it can be useful in certain situations. (Since: 2001)
Concept Maps
This useful tool was covered during my SENG 611 class. It's use for requirements elicitation from non-technical clients and users was highlighted. Tool support for concept mapping was also discussed. (Since: 2001)
Distributed Computing

I gained design experience in Java distributed computingduring the WebCPR project at ARC. Using the Remote Method Invocation (RMI) toolkit, I designed an image viewing and uploading subsystem. The design took threading and security issues into account. (Since: 1999)
Enterprise Messaging Services

I led the design and implementation of an enterprise messaging-based system at Pason Systems. I gained extensive experience in the best practices of design using asynchronous communications. The system I designed provided high-reliability and redundancy while still providing high performance. My choice of a Java Message Service (JMS) based system ensured vendor independence. (Since: 2003)
eXtreme Programming (XP)

This development methodology is a refreshing twist on many conventional approaches to software development. While I haven't had an opportunity to do true pair programming, I have adopted the "test first" and "travel light" philosophies. I hope to increase my experience in XP in future projects. (Since: 2002)
Formal Specifications
The use of this mathematically rigourous tool was covered in my SENG 611 class. I have not had a need, nor do I forsee a need, to use this technique during requirements gathering on my projects. However, the technique can pay dividends in certain situations. (Since: 2001)
Interviews
Based on techniques gained during my SENG 611 class, I have performed both formal and informal interviews for my commercial projects. (Since: 2001)
Joint Application Design
An interesting technique pioneered by IBM. This was covered during SENG 613 and I look forward to have an opportunity to try this out in industry. (Since: 2001)
JUnit

A fantastic tool from the refactoring guru, Martin Fowler. I now use JUnit extensively in all my Java applications and consider automated unit testing to be a critical tool for design, implementation, and maintenance of a product. (Since: 2002)
N-tier architectures

My work with Java distributed computing and Microsoft's ASP web application platform allowed me to gain expertise in designing three-tiered applications. This architecture provides a number of benefits over the previous two-tiered or 'fat client' model. (Since: 2000)
Quality Function Deployment
This was the topic of my groups's research paper and presetnation for SENG 613. It is an interesting technique, taken from the quality revolution of Japanese industry. It was adapted for software while I don't see myself using the entire technique, there are useful tools found within QFD. (Since: 2001)
Repertory Grids
A useful tool for requirements elicitation. This topic was discussed in my SENG 611 class. (Since: 2001)
Requirements Prioritization
My SENG 611 course covered a number of prioritization techniques includeing the Analytical Hierachy Process (AHP). Prioritazation is a critical componenet of successful requirements analysis. (Since: 2001)
Structured Analysis and Structured Design
An older approach utilizing tools common throughout the requirements engineering world such as Entity-Relation (ER) diagrams and dataflow digrams. Covered during SENG 613 (Since: 2001)
Unified Modeling Language

My Java work required that all designs be carefully diagramed and documented using the Unified Modelling Language (UML). As well, I wrote a project architecture document for the Landview/ARC project containing use cases as well as class, sequence, and deployment diagrams. (Since: 1999)
Unified Process (RUP)

After giving an in-depth report on the Unified Process for my SENG 623 class, I discovered that many of the steps that I unconciously do during development are covered in the RUP. The iterative and incremental lifecycle in particular has proven to be very effective. As well, I hope to make better use of use-case models in future development as a design driver. (Since: 2002)



















