- 25 years of software engineering experience spanning mobile, web, and desktop
- Ph.D. in Computer Science with a focus on software engineering and architecture (details)
- Award-winning research in the areas of changing software during runtime and software architecture
- 15 peer-reviewed publications, 12 patents issued, and 17 pending patents
Engineer, Care Zone Inc., 2012 to present
Principal, Dynamic Variable LLC, 2006 to present Engineering and legal consulting spanning web, mobile, and desktop systems.
Significant consulting projects:
Health123, 2011 I designed and implemented the web-based application, from wireframes to the friends-and-family launch.
A Story Before Bed, Jackson Fish Market, 2009-2011 I implemented significant new functionality for the website and iOS, including the ability to record stories on the iPad 2, synchronization of recordings with the website, and integration with Apple’s subscription system.
King of the Web, 2010 I designed and implemented significant components for their first public beta, including authentication, user profiles, the newsfeed, and user notifications.
Windows Live Mesh, Microsoft Corp., 2010 I was the principal engineer of the networking and cryptography components of the Macintosh Mesh client. Major facets of my work included: reviewing system design, implementing the security stack, implementing the peer-to-peer networking stack, and porting code from Windows to the Mac.
Decho, 2009 I designed and implemented a prototype web application and a Ruby library.
Windows Live Sync, Microsoft Corp., 2008 I was the principal engineer for the Macintosh version of Sync, a peer-to-peer file sharing application. Major facets of my work included: implementing the security stack, integrating with Microsoft LiveID, usability improvements, improving source code quality, and improving build automation tools.
XenAdmin, XenSource, 2007 My colleague and I were the principal designers and engineers of XenAdmin, XenSource’s principal tool for managing virtual-machine server clusters. Our work spanned scoping the project, to determining feature sets, to architecting and implementing several critical aspects of the product, and to hiring full-time engineers to take over the project once version 1.0 was complete.
Tafiti, Microsoft Corp. 2007 I implemented major aspects of Tafiti, which was an experimental user interface for Microsoft’s “Live” search engine built using “Silverlight”, a Flash-like technology. It featured a “carousel” to switch between search domains, a “shelf” for saving search results, and rich, fluid animations. Tafiti was one of the first real-world applications built with Silverlight.
Lead software engineer and technical lead, Microsoft Corp., 2001 to 2005
Windows Explorer As lead software engineer, I worked on communications and collaboration features for the Windows operating system to unify the hodgepodge of services providing presence, instant messaging, telephony, audio/video chat, file transfer and file sharing into a single, integrated user experience.
Microsoft Max As technical lead, I designed and implemented the product’s networking, spanning client and server components.
Senior software engineer, Endeavors Technologies, Inc., 2001
Rainier I designed and implemented a peer-to-peer search engine that supported a broad spectrum of topologies, from peers crawling and indexing their own content (i.e., fully decentralized) to a distinguished peer responsible for crawling and indexing the entire network (i.e., fully centralized).
Scales I designed and implemented a highly-componentized, message-based HTTP server for embedded systems that supported dynamic self-reconfiguration, enabling new protocols and extensions to be loaded on-the-fly. Scales initially ran on the Palm Pilot.
Co-founder and principal software engineer, KnowNow, Inc., 1999 to 2000 I designed and implemented a web-based platform for two-way, event-based communication in support of low-latency notifications. The service intelligently routed events to the most appropriate device based on numerous factors. I designed and implemented our initial proof-of-concept system and planned features and development schedules. Our business plan won First Place in Garage.com’s first annual PLANedu business plan competition.
Graduate student researcher, University of California at Irvine, 1995 to 2000 My research focused on using software architectural models as the basis for system design, analysis, code generation, system assembly and distribution, runtime monitoring and debugging, and runtime evolution. Member, Evolutionary Design of Complex Systems Project Member, Architecture-centric Dynamic Adaptation of Deeply Networked Embedded Systems Project Member, Proteus: Assessment and Adaptation through Dynamic Architecture Technology Project
Co-founder, Gamut Imaging, 1997 to 1999 I designed and implemented applications for the PhotoCD marketplace.
Research intern, Apple Computer, Summer 1995 I interned in Apple's Advanced Technology Research Group, where I studied multimedia scripting languages and language translation, and implemented a prototype translator between Apple’s SK8 multimedia authoring environment and Kaleida’s ScriptX platform.
Doctor of Philosophy (March 2000) University of California, Irvine School of Information and Computer Science Dissertation: Open-architecture Software: A Flexible Approach to Decentralized Software Evolution (details)
Master of Science (June 1995) University of California, Irvine School of Information and Computer Science
Bachelor of Science (June 1993) University of California, Irvine School of Information and Computer Science
Honors and Awards
Most Influential Paper Award, International Conference on Software Engineering, May 2008. The award recognized my 1998 paper, Architecture-based Runtime Software Evolution, for having the most influence on the theory or practice of software engineering ten years after its publication. As a result, my co-authors and I were invited to give a talk and submit a paper at the 2008 conference. [Details]
- 8,239,452 System and method for discovering and publishing of presence information on a network
- 8,204,937 Contact sidebar tile
- 7,730,134 Contact sidebar tile
- 7,730,131 Controlling publication of presence information
- 7,698,307 System and method for synchronizing between a file system and presence of contacts on a network
- 7,607,096 System and method for a user interface directed to discovering and publishing presence information on a network
- 7,593,988 Systems and methods for multiparty session invite
- 7,437,566 System and method for identity confirmation of a contact published on a network
- 7,433,920 Contact sidebar tile
- 7,379,963 Delivery of any type of information to anyone anytime anywhere
- 7,216,147 Controlling publication of presence information
- 7,185,285 User interface and content enhancements for real-time communication
- 20100235761 Contact Sidebar Tile
- 20090030998 Contact Sidebar Tile
- 20080189388 Delivery of Any Type of Information to Anyone Anytime Anywhere
- 20070165819 Controlling Publication of Presence Information
- 20060069727 System and method for synchronizing between an instant messenger client and a central contact store
- 20060047747 System and method for automatic selection of an instant messenger client
- 20050246636 System and method for a user interface that provides contact-based sharing of resources
- 20050246544 System and method for identity confirmation of a contact published on a network
- 20050246421 System and method for discovering and publishing of presence information on a network
- 20050246396 System and method for synchronizing between a file system and presence of contacts on a network
- 20050246369 System and method for a user interface directed to discovering and publishing presence information on a network
- 20050091314 Contact sidebar tile
- 20050091301 Systems and methods for multiparty session invite
- 20040193686 Controlling publication of presence information
- 20040172452 Service provider model for real-time services
- 20040162883 Prioritization of real-time communication addresses
- 20040162877 User interface and content enhancements for real-time communication
For a list of publications with citation counts, please see Google Scholar.
Refereed Journal Articles
Peyman Oreizy, Michael M. Gorlick, Richard N. Taylor, Dennis Heimbigner, Gregory Johnson, Nenad Medvidovic, Alex Quilici, David S. Rosenblum, and Alexander L. Wolf. “An architecture-based approach to self-adaptive software”. IEEE Intelligent Systems, vol. 14, no. 3, pages 54-62. May/June 1999.
Peyman Oreizy, Richard N. Taylor. “On the role of software architectures in runtime system reconfiguration”. IEE Proceedings—Software, vol. 145, no. 5, October 1998. This paper is a revised version of the ICCDS 1998 paper.
Roy T. Fielding, E. James Whitehead Jr., Kenneth M. Anderson, Gregory A. Bolcer, Peyman Oriezy, Richard N. Taylor. “Support for the Virtual Enterprise: Web-based Development of Complex Information Products”. Communication of the ACM, vol. 41, no. 8, pages 84-92. August, 1998.
Richard N. Taylor, Nenad Medvidovic, Kenneth M. Anderson, E. James Whitehead, Jr., Jason E. Robbins, Kari A. Nies, Peyman Oreizy, Deborah L. Dubrow. “A component- and message-based architectural style for GUI software”. IEEE Transactions on Software Engineering, vol. 22, no. 6, pages 390-406. June 1996.
Refereed Conference Publications
Richard N. Taylor, Nenad Medvidovic, Peyman Oreizy. “Architectural Styles for Runtime Software Adaptation”, Joint Working IEEE/IFIP Conference on Software Architecture 2009 & European Conference on Software Architecture 2009.
Peyman Oreizy, Nenad Medvidovic, Richard N. Taylor. “Architecture-based runtime software evolution”. Proceedings of the International Conference on Software Engineering 1998 (ICSE 1998), pages 177-186, Kyoto, Japan, April 19-25, 1998. This paper was awarded the “Most Influential Paper of ICSE 1998” ten years after its publication.
Peyman Oreizy. “Issues in Modeling and Analyzing Dynamic Software Architectures”. Proceedings of the International Workshop on the Role of Software Architecture in Testing and Analysis, Marsala, Sicily, Italy. June 30 - July 3, 1998.
Peyman Oreizy, Richard N. Taylor. “On the Role of Software Architectures in Runtime System Reconfiguration”. Proceedings of the Fourth International Conference on Configurable Distributed Systems (ICCDS 4), pages 61-70, Annapolis, Maryland, May 4-6, 1998.
Nenad Medvidovic, Peyman Oreizy, and Richard N. Taylor. “Reuse of Off-the-Shelf Components in C2-Style Architectures”. Proceedings of the 1997 Symposium on Software Reusability (SSR’97), pages 190-198, Boston, MA, May 17-19, 1997. Reprinted in Proceedings of the 1997 International Conference on Software Engineering (ICSE’97), pages 692-700, Boston, MA, May 17-23, 1997. Also reprinted in Software Engineering Notes, vol. 22, no. 3, pages 190-198.
Peyman Oreizy. “Decentralized software evolution”. Proceedings of the International Conference on the Principles of Software Evolution (IWPSE 1). Held in conjunction with ICSE’98. Kyoto, Japan. April 20-21, 1998.
Peyman Oreizy and Richard N. Taylor. “Coping with Application Inconsistency in Decentralized Software Evolution”. Proceedings of the Second International Conference on the Principles of Software Evolution (IWPSE 2). Fukuoka, Japan. July 16-17, 1999.
Nenad Medvidovic, Peyman Oreizy, Jason E. Robbins, and Richard N. Taylor. “Using Object-Oriented Typing to Support Architectural Design in the C2 Style”. Proceedings of the Fourth ACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE4), pages 24-32, San Francisco, CA, October 16-18, 1996. Reprinted in Software Engineering Notes, vol. 21, no. 6, pages 24-32, November 1996.
Peyman Oreizy, Nenad Medvidovic, Richard N. Taylor, David S. Rosenblum. “Software Architecture and Component Technologies: Bridging the Gap”. Proceedings of the OMG-DARPA Workshop on Compositional Software Architectures, Monterey, CA, January 6-8, 1998.
Richard N. Taylor, Nenad Medvidovic, and Peyman Oreizy. “Architectural Implications of Common Operator Interfaces” Proceedings of the Ground Systems Architectures Workshop (GSAW 98), El Segundo, CA, February 25-27, 1998.
Peyman Oreizy. “The WWW as an Enabling Technology for Software Engineering”. Workshop on Software Engineering and the World Wide Web, held in conjunction with the International Conference on Software Engineering (ICSE 1997), Boston, MA, May 19, 1997.
Peyman Oreizy, Nenad Medvidovic, Richard N. Taylor. “Runtime Software Adaptation: Framework, Approaches, and Styles”. Proceedings of the International Conference on Software Engineering 2008 (ICSE 2008), Leipzig, Germany, May 10-18, 2008. Invited paper.
Peyman Oreizy, Gail Kaiser. “The Web as Enabling Technology for Software Development and Distribution”. IEEE Internet Computing, Column on Collaborative Work, vol. 1, no. 6, pages 84-87, November/Decement 1997. This article is a revised and updated version of the workshop paper that appeared at the Workshop on Software Engineering and the World Wide Web.
Non-refereed Technical Reports
Peyman Oreizy , David S. Rosenblum, Richard N. Taylor, “On the Role of Connectors in Modeling and Implementing Software Architectures”, Technical Report UCI-ICS-98-04, Department of Information and Computer Science, University of California, Irvine, February 1998.
Peyman Oreizy. “Issues in the Runtime Modification of Software Architectures”, Technical Report UCI-ICS-96-35, Department of Information and Computer Science, University of California, Irvine, August 1996.
Roy T. Fielding, E. James Whitehead Jr., Kenneth M. Anderson, Gregory A. Bolcer, Peyman Oriezy, Richard N. Taylor. “Software Engineering and the WWW: The Cobbler’s Barefoot Children, Revisted”. UCI Technical Report 96-53. November 1, 1996.
Open-architecture Software: A Flexible Approach to Decentralized Software Evolution
- Richard N. Taylor, UC Irvine (chair)
- David S. Rosenblum, University College London
- David Notkin, University of Washington
My dissertation describes a novel way of constructing software systems that are easy for third-party developers to change. The crux of the technique is to expose the software system’s architectural model (i.e., its component parts, their interconnections, and the implementation mapping) as an explicit and malleable part of the software package. Third-parties can alter this model (by adding and removing components and altering their interconnections) -- thereby changing the corresponding implementation -- to adapt the system for their needs. My dissertation also describes a framework for comparing other such techniques, including APIs, plug-ins, open-source software, and event-based systems.
In 2008, Roy Fielding (of REST fame) gave a really nice keynote talk that discussed my dissertation work in the context of open-source software. You can watch a recording of Roy’s talk titled “Open Architecture”.
ArchStudio ArchStudio was the first software development environment to use software architectural models as the basis for system design, analysis, implementation and code generation, system assembly, runtime monitoring and debugging, and runtime evolution. ArchStudio was built as a team project, integrating several systems into an integrated environment. Programming done in Java.
ArchShell ArchShell pioneered the use of software architectures as the basis for runtime software evolution and dynamic adaptation (1996). By relating and deploying an application’s architectural model with its executable components, the tool enabled made changes to one representation to effect corresponding changes to the other. Programming done in Java.
Proteus: Assessment and Adaptation through Dynamic Architecture Technology, Richard N. Taylor, David S. Rosenblum, David F. Redmiles, Adriaan W. van der Hoek, Will Tracz, Peyman Oreizy. DASADA Program funded by the Defense Advanced Research Projects Agency (DARPA), 2000-2002, $1.31 million.
- Technical Expert, Dorsey and Whitney LLP, 2008
- Technical Advisor, Endeavors Technology Inc., purchased by Tadpole Technology Plc. in 2000
- IEEE Transactions on Software Engineering 1998-1999
- ACM Transactions on Software Engineering and Methodology 1997-1998
- Software - Practice & Experience 1999
- Association for Computing Machinery (ACM)
- ACM Special Interest Group on Software Engineering (SIGSOFT)
Last updated June 2010