Bridging the Gap between Software and Non-Software Engineers
Tracy P. Jong, Esq., Patent and
Trademark Attorney
Cheng-Ning Jong, P.E., B.S., M.S.,
Registered Patent Agent
Course Outline
This course presents the process by which a line of code translates into machine action. It will introduce basic concepts utilized in software design, including a brief comparison between object oriented programming and non-object oriented programming. Common hardware and software issues that create inefficiencies or machine failures will be introduced, including sampling frequency and real time control systems. The schematic expression of software design and operation will be discussed, including Unified Modeling Language. Widely used software applications are introduced, including Computer Aided Design and Finite Element Analysis. These software packages assist in simulating and testing software and hardware applications during the design and development processes. Understanding the basic approaches of the applications, such as parametrics and modeling will better enable the engineer to maximize their utility and productivity.
This course includes
a multiple choice quiz at the end,
Learning Objective
This course will provide the following specific knowledge and skills
Intended Audience
This course is intended for practicing engineers of any industries whose daily work involves interactions with software engineers or professionals but have little or no practical experience in software design and implementation.
Benefit to Attendees
Attendees of this course will learn how to become an effective member of a multi-discipline project team by (1) actively participating in a project’s early concept and design stages, (2) designing hardware that is best suited for particular software applications and (3) writing better engineering requirements for software implementers. Attendee will learn about various software design aspects that can be implemented and exploited, as well as pitfalls to avoid in order to create reliable software that can be efficiently upgraded and expanded to meet future demands.
Course Introduction
The days of pure mechanical devices are quickly fading. When you look around, every device seems to be automated in some fashion. Even the old fashioned hammer and screwdriver have popular electric versions! You probably own one yourself.
The simplest of devices often interfaces with systems running on software or contains microcontrollers which have software running on them. As computer use has become widespread, the cost of incorporating software into control systems, analysis, project tracking and management systems continues to decrease. Software has become more complex, however and user interfaces have become increasingly user-friendly as computing power increases.
Every product that we use began its life in a manufacturing environment. Let’s look at the dynamics involved in manufacturing a simple electronic device. No man is an island. Today, a typical product project team comprises
The addition of software component in a product requires a team approach to product development and production. There must be effective communication between software engineers and hardware, electrical and other non-software engineers. The hardware, electrical and other non-software engineers generally provide the “requirements” to the software engineers. Only with effective communication between these parties will software engineers be able to develop and implement reliable software.
Good software engineers focus on the opportunity to minimize “rework” in future product iterations and upgrades. Well-written software code often contains generic features and maximizes opportunities to reuse and re-factor without complete redevelopment of the code content and algorithms. However, some applications do not lend themselves to generic coding and requirement owners should not be easily swayed when confronted by the pressure to conform to such generic coding. Understanding the basics of software will enable the software developers and requirement owners to effectively develop coding applications.
In this lesson, you are required to download and study the following course content in PDF format:
Bridging the Gap between Software and Non-Software Engineers
Please click on the above underlined hypertext to view, download or print the document for your study. Because of the large file size, we recommend that you first save the file to your computer by right clicking the mouse and choosing "Save Target As ...", and then open the file in Adobe Acrobat Reader. If you still experience any difficulty in downloading or opening this file, you may need to close some applications or reboot your computer to free up some memory.
Course Summary
To produce reliable software, it is critical to design the application rather than to conglomerate a group of ad hoc subsystem modules with no inherent interrelationship. Without a design, one module may have unintended or unrecognized effects on other parts of the system, creating unreliability and system problems that can take time to detect and resolve.
The following design issues should be considered in the design of control system software:
Software can be written and implemented via object oriented programming or non-object oriented programming. Several distinct benefits of an object oriented programming are:
Software design and operation may be schematically expressed via a variety of Unified Modeling Language diagrams to enhance communication between software engineers and non-software engineers.
Computer Aided Design and Finite Element Analysis assist in simulating and testing software and hardware applications during the design and development processes. In considering modeling software, the user should consider whether the software contains parametric capability. In considering numerical analysis software, the user should consider whether a numerical solution is required.
Quiz
Once you finish studying the above course content, you need to take a quiz to obtain the PDH credits.