Software engineering complete course free tutorial | Learn easy with quiz door| Part 4
◽Difference between Computer Science and Software Engineering
◾There are many engineering fields like electrical, mechanical and civil engineering. All these branches of engineering are based on physics.
◾Physics itself is not engineering but the use of physics in making buildings, electronic devices and machines is engineering.
◾When we use physics in constructing buildings then it is called civil engineering.
◾When we use physics in making machines like engines or cars then it is called mechanical engineering.
And when we apply the knowledge of physics in developing electronic devices then the process is called electrical engineering.
◾The relation of computer science with software engineering is similar as the relation of physics with the electrical, mechanical or civil engineering or for that matter the relation of any basic science with any engineering field”.
So in this context we can define software engineering as:
◾Computer Science is concerned with theory and fundamentals; whereas software engineering is concerned with the practicalities of developing and delivering useful software.
◾Computer science theories are currently insufficient to act as a complete support for software engineering.
◾Some knowledge of computer science is essential for software engineers in the same way that some knowledge of physics is essential for electrical engineers.
◾Computer science theory, however, is often most applicable to relatively small programs, but cannot always be applied to large, complex problems that require a software solution.
♦ Difference between Computer Engineering & Software Engineering
◾Computer Engineering teaches you how to design systems that include both computer hardware and software.
◾Computer Engineering teaches how computer hardware works and how to build a computer.
◾Computer Engineering emphasis on hardware-related software such as device drivers and operating systems.
◾Computer engineering courses are taught by faculty from both the computer science and the electrical engineering departments.
◾Computer engineers design computers and the basic software that runs both personal computers and the "embedded" computer systems that use in cars, aircraft, videogames, etc.
So:
◾System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process.
◾System engineering are involved in system specification, architectural design, integration and deployment (organization).
Whereas:
◾Software Engineering focuses on how to design and build software in teams.
◾You will take many of the same courses as you would in computer science, but you will take additional courses that teach you about topics like requirements engineering, software architecture, software testing, and software deployment.
◾You will learn about working with people (communication, management, working with non-technical customers), processes for developing software, and how to measure and analyze the software product and the software process.
♦ Software Engineering Diversity
Software engineering is a systematic approach to the software production. There are no universal software engineering methods and techniques that are suitable for all systems and all companies. However, the methods and techniques depend upon the type of application that is being developed. There are many different types of application including:
🔹Stand-alone Applications
🔹Interactive Transaction-based applications
🔹Batch Processing Systems
🔹Entertainment/Games
🔹Embedded systems
🔹Data collection Systems
Etc.
♦Software Engineering Fundamentals That Apply to All Types of Software System:
Different software engineering techniques are used for each type of system because the software has quite different characteristics. For example, an embedded control system in an automobile is quite different from web-based system. Nevertheless, there are software engineering fundamentals that apply to all types of software system:
🔹Almost all types of systems use a managed and understood development process. The development process has clear ideas of what will be produced and when it will be completed. Of course, different processes are used for different types of software.
🔹Dependability and performance are important for all types of systems. The system should perform efficiently and should not waste resources.
🔹Understanding and managing the software specification and requirements (what the software should do) are important. A useful system should be delivered within budget and to schedule as expectation.
🔹You should make as effective use of existing resources (software, hardware) as possible.
♦ Software Engineering Ethics
He should normally respect the confidentiality of his employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.
Competence (Proficiency):
He should not misrepresent your level of competence. He should not knowingly accept work that is outside your competence.
Copy Rights Laws:
He should be aware of copy rights laws. He should be careful to ensure that the intellectual property of employers and clients is protected.
Computer Misuse:
He should not use his technical skills to misuse other people’s computers. Computer misuse ranges from playing games on an employer’s machine to dissemination of viruses etc.
◾There are many engineering fields like electrical, mechanical and civil engineering. All these branches of engineering are based on physics.
◾Physics itself is not engineering but the use of physics in making buildings, electronic devices and machines is engineering.
◾When we use physics in constructing buildings then it is called civil engineering.
◾When we use physics in making machines like engines or cars then it is called mechanical engineering.
And when we apply the knowledge of physics in developing electronic devices then the process is called electrical engineering.
◾The relation of computer science with software engineering is similar as the relation of physics with the electrical, mechanical or civil engineering or for that matter the relation of any basic science with any engineering field”.
So in this context we can define software engineering as:
“This is the process of utilizing our knowledge of computer science in effective production of software systems”
◾Computer science theories are currently insufficient to act as a complete support for software engineering.
◾Some knowledge of computer science is essential for software engineers in the same way that some knowledge of physics is essential for electrical engineers.
◾Computer science theory, however, is often most applicable to relatively small programs, but cannot always be applied to large, complex problems that require a software solution.
♦ Difference between Computer Engineering & Software Engineering
◾Computer Engineering teaches you how to design systems that include both computer hardware and software.
◾Computer Engineering teaches how computer hardware works and how to build a computer.
◾Computer Engineering emphasis on hardware-related software such as device drivers and operating systems.
◾Computer engineering courses are taught by faculty from both the computer science and the electrical engineering departments.
◾Computer engineers design computers and the basic software that runs both personal computers and the "embedded" computer systems that use in cars, aircraft, videogames, etc.
So:
◾System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process.
◾System engineering are involved in system specification, architectural design, integration and deployment (organization).
Whereas:
◾Software Engineering focuses on how to design and build software in teams.
◾You will take many of the same courses as you would in computer science, but you will take additional courses that teach you about topics like requirements engineering, software architecture, software testing, and software deployment.
◾You will learn about working with people (communication, management, working with non-technical customers), processes for developing software, and how to measure and analyze the software product and the software process.
♦ Software Engineering Diversity
Software engineering is a systematic approach to the software production. There are no universal software engineering methods and techniques that are suitable for all systems and all companies. However, the methods and techniques depend upon the type of application that is being developed. There are many different types of application including:
🔹Stand-alone Applications
🔹Interactive Transaction-based applications
🔹Batch Processing Systems
🔹Entertainment/Games
🔹Embedded systems
🔹Data collection Systems
Etc.
♦Software Engineering Fundamentals That Apply to All Types of Software System:
Different software engineering techniques are used for each type of system because the software has quite different characteristics. For example, an embedded control system in an automobile is quite different from web-based system. Nevertheless, there are software engineering fundamentals that apply to all types of software system:
🔹Almost all types of systems use a managed and understood development process. The development process has clear ideas of what will be produced and when it will be completed. Of course, different processes are used for different types of software.
🔹Dependability and performance are important for all types of systems. The system should perform efficiently and should not waste resources.
🔹Understanding and managing the software specification and requirements (what the software should do) are important. A useful system should be delivered within budget and to schedule as expectation.
🔹You should make as effective use of existing resources (software, hardware) as possible.
♦ Software Engineering Ethics
Software engineer has wider responsibility than an ordinary skilled man. He must behave in an ethical and morally responsible way. He should uphold normal standards of honesty and integrity. He should not use his skills and abilities to behave in a dishonest way or in a way that will bring disrepute to the software engineering profession. Some of these areas are:
Confidentiality (Privacy):He should normally respect the confidentiality of his employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.
Competence (Proficiency):
He should not misrepresent your level of competence. He should not knowingly accept work that is outside your competence.
Copy Rights Laws:
He should be aware of copy rights laws. He should be careful to ensure that the intellectual property of employers and clients is protected.
Computer Misuse:
He should not use his technical skills to misuse other people’s computers. Computer misuse ranges from playing games on an employer’s machine to dissemination of viruses etc.