TechTorch

Location:HOME > Technology > content

Technology

Software Engineering: Understanding Its True Engineering Nature and Impact on Cybersecurity

March 11, 2025Technology3474
Do You Consider Software Engineering to Be a True Engineering Professi

Do You Consider Software Engineering to Be a True Engineering Profession?

The term engineer is often misused when referring to individuals working in the software industry. This confusion underscores the distinct differences between software engineering and traditional engineering disciplines like electrical or mechanical engineering. While both involve problem-solving and innovation, software engineering lacks some of the stringent standards and certifications that traditional engineering fields adhere to.

The Variance in Software Engineering

One of the main issues in software engineering is the vast variance in quality among professionals. In fields such as electrical engineering, a pool of experienced and certified engineers ensures a high standard of work. These engineers are rigorously trained and hold relevant certifications, making their opinions valuable and legally binding. In contrast, the software engineering field has a larger pool of developers, many of whom lack the same level of formal education and certification. This variance leads to significant disparities in the quality of work produced.

Micro Aspects of Software Engineering

Software engineering is more than just programming; it involves the engineering of data, much like how traditional engineering disciplines deal with the properties of materials. Data forms the 'material' in software, and its structure must be carefully engineered. This is where C and other languages fall short. Despite the language's popular use, its syntax for handling scalar data types lacks the precision required for true data engineering.

The C Example: A Case Study in Data Engineering Failure

The Stack Overflow question involving a C union with bit fields exemplifies the issues in software engineering. The problem arises from the fact that the C language syntax does not allow for the precise engineering of scalar data types. Without this capability, software faces cybersecurity vulnerabilities, especially when dealing with bit fields that span byte boundaries.

The Ada Language as a Paradigm of Engineering Data

The Ada programming language provides a robust framework for data engineering, offering features that precisely define the placement and range of scalar data types. This example demonstrates how engineering these fundamental data types can lead to more reliable and secure software.

Ada Example: Engineering Bit Fields in C

The following Ada code snippet illustrates how data can be precisely engineered:

with Ada.Text_IO use Ada.Text_IO;procedure Main is   type bit_3 is range 0 .. 23 - 1 with      Size  3;   type bit_1 is range 0 .. 1 with      Size  1;   type bit_2 is range 0 .. 3 with      Size  2;   type bit_7 is range 0 .. 27 - 1 with      Size  7;   type bit_fields is record      field1 : bit_3;      field2 : bit_3;      field3 : bit_1;      field4 : bit_2;      field5 : bit_7;   end record;   for bit_fields use record      field1 at 0 range 0 .. 2;      field2 at 0 range 3 .. 5;      field3 at 0 range 6 .. 6;      field4 at 0 range 7 .. 8;      field5 at 0 range 9 .. 15;   end record;   type unint_8 is range 0 .. 28 - 1 with      Size  8;   package unint_io is new Integer_IO unint_8;   use unint_io;   type two_bytes is array Positive range 1 .. 2 of unint_8;   foo : two_bytes;   bar : bit_fields with      Address  foo'Address;begin   foo : (1669, 1);   for value of foo loop      Put(Item > value, Base > 2);      Put(" ");   end loop;   New_Line;end Main;

The Ada program precisely engineers the data structure, ensuring that each field is placed and sized correctly. This approach aligns software engineering more closely with the precision of traditional engineering disciplines.

Conclusion

Software engineering must aspire to the same level of precision and reliability as traditional engineering fields. By carefully engineering data, minimizing vulnerabilities, and adhering to strict standards, software engineers can ensure that their work meets the same high standards as those in other engineering professions.