Software engineering

Share This
« Back to Glossary Index

Software engineering is a specialized field of study that emerged in the 1960s, primarily concerned with the design and creation of software systems. The discipline experienced significant evolution due to the rapid advancements in hardware technology[2]. It gained global recognition after the term ‘software engineering’ was popularized at the 1968 NATO conference and further endorsed by Margaret Hamilton during her work on the Apollo program. Today, it encompasses a range of practices and specialties, including project management, system analysis, development, testing, and more. The education for this profession typically begins with a solid foundation in computer programming[1], often obtained through a university degree or vocational training, followed by continual learning outlined by resources like the Software Engineering Body of Knowledge (SWEBOK). Software engineers work across various sectors and can often choose to be freelancers. They may also pursue professional certifications to enhance their career prospects. Despite varying global regulations, the field adheres to codes of ethics published by professional organizations like the IEEE and ACM.

Terms definitions
1. computer programming. Computer programming is a crucial field within computer science, which involves the creation of instruction sets that computers execute to accomplish specific tasks. Originating with pioneers like Ada Lovelace, programming has evolved significantly over time. From primitive programmable devices in the 9th century to the advent of stored-program computers in the 1949, the discipline has seen tremendous growth. Various programming languages and tools, like machine code, assembly languages, and high-level languages, have been developed to simplify the coding process. Modern programming places emphasis on quality attributes such as reliability, robustness, usability, portability, and maintainability. It involves various concepts and techniques like readability of source code, algorithmic complexity, and software development methodologies. Besides coding, a programmer's skills encompass prototyping, debugging, documentation, and integration. The field also extends to related topics like computer networking and competitive programming. This discipline is not just about writing code, but understanding and building functional and efficient software systems.
2. technology. Technology, derived from the Greek words meaning craft and knowledge, is a broad term that refers to the tools, machines, and systems developed by humans to solve problems or fulfill objectives. Originating with primitive tools like stone axes and the discovery of fire, technology has evolved significantly throughout human history. It has been instrumental in different eras, from the invention of the wheel and advanced irrigation systems in ancient civilizations to the birth of universities and printing press during the medieval and Renaissance periods. The Industrial Revolution in the 18th century marked a significant shift in mass production and innovation, giving rise to modern technologies like electricity, automobiles, and digital communication platforms. Today, technology is integral to various aspects of life and society, driving economic growth and societal change, while also raising concerns about security, privacy, and environmental impacts. The future of technology is expected to bring even more advancements, with the rise of artificial intelligence predicted to have significant implications for the job market.

Software engineering is an engineering-based approach to software development. A software engineer is a person who applies the engineering design process to design, develop, test, maintain, and evaluate computer software. The term programmer is sometimes used as a synonym, but may emphasize software implementation over design and can also lack connotations of engineering education or skills.

Engineering techniques are used to inform the software development process, which involves the definition, implementation, assessment, measurement, management, change, and improvement of the software life cycle process itself. It heavily uses software configuration management, which is about systematically controlling changes to the configuration, and maintaining the integrity and traceability of the configuration and code throughout the system life cycle. Modern processes use software versioning.

« Back to Glossary Index
en_USEN
Scroll to Top