Crucial Concepts of Software Engineering

09 May 2024

In the software engineering class I took at UH Manoa this semester I learned an extensive amount of concepts in the field of software development and engineering. While the majority of the practical application of the material I was able to gather from the semester related to the web development project I completed, the crucial ideas I learned stretch beyond the field of web development. This essay will analyze a few key concepts I learned and their application to the vast world of software engineering.

Configuration Management

One major concept that I studied was configuration management. The Computer Security Resource Center defines configuration management as, “A collection of activities focused on establishing and maintaining the integrity of information technology products and information systems, through control of processes for initializing, changing, and monitoring the configurations of those products and systems throughout the system development life cycle.” Essentially, configuration management is the process of managing and monitoring the different stages a product has in its production to ensure the integrity of the product. In the field of software engineering, this usually manifests itself in the management of different versions of code.

Github

One configuration management tool that I have utilized is Github. Github offers configuration management abilities such as version control, branching and merging, code reviews, and issue tracking. These capabilities allowed me and my team of developers to have access to many versions of our project and revert changes as needed. Overall, Github and other configuration management tools give software developers a multitude of tools to effectively oversee updates and development of code both in web development and beyond.

Coding Standards

Another concept that stood out to me was coding standards. Simply put, coding standards create a standard. These standards generate consistency and are extremely helpful when keeping, maintaining, and debugging code. Additionally, they make collaboration much easier and more efficient.

Coding standards create a consistent standard by which multiple software engineers can adhere. This prevents the strenuous task of each coder spending countless hours understanding the format or lack thereof of his fellow programmers. Not only do coding standards create consistency, they also greatly increase code readability. Code readability is very important for writing maintainable programs, especially if more than one programmer must simultaneously work on the same project. Code readability also helps the original author. Overall, having a coding standard will increase the readability of the code.

ESLint

When maintaining coding standards for programs, manually checking to ensure compliance with the standards is neither efficient nor effective. Instead, some form of tool should be used to check that the code is following the standards. Many such tools are available and could even be used to fix issues of noncompliance quickly. One such tool available for Javascript is ESLint. I have used ESLint before and it will generate errors in the program when the code is not in compliance with the coding standards it has been given. At first, it was a bit tedious making sure that every line of code was following the standards but after a while I realized how useful the tool is. ESLint guarantees conformity to the coding guidelines and makes it much simpler to have the readable and easily maintainable code that comes with enforcing coding standards.

These concepts of configuration management and coding standards are just a couple of the many important topics I retained and utilized during the software engineering course I took this semester. I hope to apply these crucial concepts as I progress in my education and career in programming and software engineering.

*This essay used ChatGPT to list the capabilities of GitHub that are useful for configuration management.