Karla News

Responsibilities of a Software Engineer

Software Engineer, Software Engineering, Trial Software

I have a Bachelor of Science degree in Electrical Engineering. I worked as an embedded systems software engineer for 27 years. This article details the responsibilities I had as a software engineer. It is intended to give the reader some insight into the world of software engineering.

This article is set up in the following format. Each paragraph begins with a question. If the reader knows the answer to the question, the reader could skip that paragraph.

What are the four major areas of study for an embedded systems software engineer?
Reading and interpreting customer specifications
Designing and debugging software programs
Windows Programming
Local Area Networks
Internet compatible software.
Electronics (optional)

Exactly what is an embedded system? An embedded system is a system with a small microcontroller and memory.

What is a microcontroller? A microcontroller is literally a computer in a chip. It has memory for program storage, program data and it has “ports’ through which the program could access the outside world. The microcontroller executes a program that processes the inputs from internal switches, peripheral equipment or and/or local area network, performs a specified operation on the data inputted and displays the results in some fashion.

What is hardware? Hardware is the electronics inside the embedded system.

What is software? Software is the program that is executed by the microcontroller.

What is my experience? I designed software for systems fresh off the assembly line. The hardware had been tested but without any software installed. Usually the customer who ordered the system also detailed the required software functions in a specification.

What were my responsibilities? I’ll list my responsibilities in the order that I executed them.
I received a written software specification from the customer detailing the requirements of the software design. I studied the specification and noted any questions I had and any clarifications I needed. If any arose, I would have my boss arrange a conference call with the customer. During the conference call we would discuss the details of the specification and receive answers for our questions and clarification requests. If the customer was requesting a price quote, I would itemize all my tasks including documentation and list the required time for each task. Then I would give the price quote to my boss. The price quote would be submitted to the customer. If the customer accepted the price quote, I would start working on the general flow of the software. The general flow of the software is a diagram showing the order in which the software would accomplish each task detailed in the contract. It would show the general structure of the software. This “flowchart” was reviewed by other engineers to determine if it was satisfactory. Then I would design the software and test it in the system. After I debugged the software, a software review would take place. After the changes dictated by the software review were implemented, The software and system would be delivered to the customer.

See also  Manhattan, New York Employment Staffing Agencies

What does software debugging encompass? Most amateur programmers only test software for what it should do. However, software to be delivered to the customer must also be tested for what it should not do. The easiest example is a keyboard input. Lets take the case where the software is requesting one of two inputs: ‘y’ for yes or ‘n; for no. In school, a student might simply type the bare code and never check for any other input. In a system, this can cause problems. The software eengineer has to include code that catches any wrong key entry, responds with an error message and requests the entry again.
If the software reads a bunch of switch positions and displays information about each switch position, then debugging might involve rapidly changing several switch positions and insuring that the software correctly displays all switch positions.

What is efficient software? Efficient software is software that is executed in a minimum amount of time.

Are there any valid reasons for writing efficient software? Let’s suppose that the software will read a set of data, perform some operation on the set of data and display it. In this case, the customer specified that the maximum software execution time allowed to read and process one set of data will be 0.05 seconds and that the software shall read and process 100 sets of data per minute. This would require that the software operate efficiently.

That sums up the tasks of a software engineer. I hope it helps any student thinking about a career in software engineering.