O Que É Engenharia de Software?

Have you ever heard of Software Engineering? In this video, I'll show you what software engineering is, a more systematic and controlled approach to software development. Let's talk about this very important science, but largely neglected in today's world of professional software development. What Is Software Engineering? Compared to Civil Engineering, Software Engineering is still in its infancy. And for this reason, there are still many changes and controversies surrounding this science. Mainly because software is something intangible (non-physical), many approaches that make sense in other engineering disciplines don't apply to software. For example, in Civil Engineering, one of the first things to be built is the foundation. On top of it, we can build the rest of the building. We're dealing with physical things. In Software Engineering, this approach was used for many years, until Agile Methodologies came along to try to break this paradigm: In an analogy, we can build the roof of the building BEFORE the foundation. First, What Is Engineering? According to the Michaelis dictionary, engineering is 1. The art of applying scientific knowledge to the invention, improvement, or use of industrial technology in all its aspects. 2. The science or art of civil, military, and naval construction. A Little History From Wikipedia: Software Engineering (SE) emerged in the mid-1970s in an attempt to circumvent the software crisis and provide an engineering approach (more systematic and controlled) to the development of complex software systems. A complex software system is characterized by a set of abstract software components (data structures and algorithms) encapsulated in the form of procedures, functions, modules, objects, or agents interconnected with each other, composing the software architecture, which must be executed in computer systems. Military applications have always been a major catalyst for technological change. The software development process has been a major contribution to this field. Process control is essential for this type of application. Imagine software inside an intercontinental missile. Was it properly tested? What happens if the program fails after release? And What Is Software Engineering? The definition of software engineering, according to IEEE (1992): Software engineering is the application of a systematic, disciplined, and quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. Software Engineering is a science that seeks to systematize software development/maintenance. The main motivation for this discipline is the production of professional software. Within it, we have several areas of study, including: • Configuration management: For commercial applications, version control alone is not enough. In addition to controlling changes to the source code, we also need to know which version of the IDE was developed, which framework versions were used, etc. All this control is not simple, and most companies don't do it. • Testing: White-box testing, black-box testing. Testing software is much more than accessing every screen of the application and clicking every button. There are techniques and processes that guide us in this highly undervalued yet crucial phase for the quality of our projects. • Requirements management: What techniques can we use to interview the user/client to extract what they really need with maximum detail and clarity? The requirements gathering phase has always been one of the main points of failure in software projects. • Measurement and improvement: Metrics are one of the key aspects of Software Engineering, because through measurements we can determine whether we are being productive, estimate how long and how much a development will take, etc. As Joseph Juran said: "If you don't measure, you don't manage." Final Words Software engineering is a very broad subject; it's impossible to cover everything in just one video. There are many other topics within Software Engineering, such as Structured Analysis, RUP (Rational Unified Process), CMMI (Capability Maturity Model - Integration), Scrum, XP (eXtreme Programming)... And that's all for today! And if you want to learn how to develop skills for Alexa, keep following me! If you liked this video, give it a like and subscribe to the channel. Don't forget to turn on notifications to receive notifications when new videos are published. And until next time! Follow me here ⤵⤵ 💻 Blog: https://celsokitamura.com.br 💻 Instagram:   / celsokitamura   🎥 YouTube:    / celsokitamura   🔵 Facebook:   / celsokitamura   #WhatIsSoftwareEngineering #I'mAppDev