You are on page 1of 2

Thitiwat Yuwakittisit

Assignment 1 CSC-580

Is Software Engineering Engineering? Programmer is accepted only as a mathematician and scientist. Its definition is still far from the meaning of engineer. Although computer engineering has been recognized as the science of architecture and design of computing machine that uses engineering practices, but the design and construction of software is not identified as engineering. Software engineering is considered to be more like a researcher or artist work not essentially using a rigorous engineering practice. However, the fact that the success of design and build software depends on the ability to manage complexity in software systems has contributed greatly to the debate over whether the design and implementation of reliable, dependable and affordable software need strict engineering process. Engineers make thing work by selectively applying theories, methods, and tools through requirements, specifications, prototypes, and testing. Generally, they have to do these things repeatedly in order to succeed in achieving solution for the problem after trying for a long time. In software engineering, there are several forms of the process model. They represent a software process which includes several activities such as specification, design and implementation, validation, and evolution. Nonetheless following these process models is not enough for the production of a bug-free software. Software engineers need some practices that can help them less suffer from lacking of engineering disciplines, in other words creating better software. For example, they should much more focus on reducing unpredictable outcomes, using design metrics in calculations of risk, examining and testing the solutions for failure modes, separating design from implementation, compromising trade-offs between conflicting constraints, and learning how to adapt to rapidly changing environments. In addition, because the system is a complex mixture of hardware, software and environment, a good understanding of the software system can influence the quality of the software directly. Finally, the ability to effectively create and manage the software team is an important topic that has been improved a lot and taught in a software engineering course. This is highly beneficial to software engineering. Software development: What is the software? Writing and maintaining software are not engineering activities. Writing software is similar to teaching people how to do a task. Teaching and learning are more artistic than scientific. They do not use the particular method to find out a solution for a problem. In order to reach the correct answer, the instructions do not need to be effective or precise. This is especially true for maintaining software, too. The maintenance staff need to learn about what the computer hardware was programmed to do and then modify these codes. If software developers do not have the ability of teaching and learning well, it will be much difficult for them to understand how the whole system works after it was reinvented or rewrote many times. Instead of using only numbers to make a decision without comprehension of the real problem, software developers can make better decisions based on incomplete

1|P a ge

Thitiwat Yuwakittisit

Assignment 1 CSC-580

information or by learning from their mistakes. This approach can be applied to software management, too. Given current market conditions, the production of a perfect software without any bugs is almost not possible for practical reasons. A mediocre software becomes the norm in the eyes of customers. Customers play a significant role in determining the quality of the software. However, they should accept only the software that really meets their needs. Compare and contrast these opposing views These two papers present how software engineering currently is and how it should be improved by using opposing views. The first paper Is Software Engineering Engineering? supposed that software engineering is far from the definition of engineering because it is overly less focusing on engineering processes. So as to make software engineering closely resemble to engineering, it needs more six engineering practices mentioned in the first section above. The second paper Software development: What is the software? inversely supposed that software engineering is already adhering to an engineering activity because it emphasizes the importance of numbers. In order to make software engineering more effective, it should give significance to teaching and learning abilities. In my opinion, software engineering has both engineering part and a teaching/artistic part in itself. I believe that rigorous engineering process in software engineering will definitely be an important part that help delivering reliable, dependable, and affordable software. Because software is intangible and its efficiency is difficult to be measured, the adoption of the effective engineering processes can convert an intangible thing to a tangible thing. For example, the engineering practices will produce more predictable outcomes or design metrics used in calculation of risk and balancing conflict between several constraints. In other words, the engineering approaches change intangible thing to numbers. However, the engineering part is not enough for building a perfect software because there is still some intangible things that cannot convert to numbers. Sometimes software engineer, software developer, and software manager have to encounter the situation that is composed of incomplete information. Then they are required to make a decision in that situation. They have to learn from their previous mistakes that happened in the similar situation and avoid repeating it again. Software engineers are responsible for the analysis, design, development, testing, and deployment of the computer software. Sometimes team management is included in the job of software engineer, too. Software engineers have to know more than writing a code. Most of their works are involved in the entire software development life cycle. While software developer is closely related to software engineer, but they are primarily responsible for coding and maintaining software.

2|P a ge

You might also like