DSLR Camera Software
Conclusion
Systems with multiple function types - in this case, interfacing with physical components and data processing elements - often need to rely on the use of multiple architectural styles to create the most robust and efficient design. In the case of embedded systems, certain limitations exist regarding processing power and memory which must be accounted for as well. For a system as varied in function as a DSLR camera - and other embedded systems - it would be unreasonable to assume that all functions could be completed effectively and efficiently by one overarching architectural style. Because of this, we chose our overarching architectural style to be an Event-Driven design to coordinate certain events with physical component interaction, as well as software functions. Within the hardware module of the system (Equipment Operator), a Process Control design was used to account for the myriad changing variables in the environment in order to produce an optimal image in automatic mode. Within the software module of the system (Image Processor), an Object-Oriented design was used to apply a consistent structure to the processed images, as well as to allow for interchangeability of certain image processing features such as noise-reduction. By combining these various architectural styles, our overall system design is one that is efficient, responsive, and well-suited to an embedded system environment.