0% found this document useful (0 votes)
46 views4 pages

Chap 1

Uploaded by

harismasood012
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
46 views4 pages

Chap 1

Uploaded by

harismasood012
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

The term software engineering is composed of two words, software and engineering.

Software is more than just a program code. A program is an executable code, which serves
some computational purpose. Software is considered to be a collection of executable
programming code, associated libraries, and documentation. Software, when made for a
specific requirement is called a software product.
Engineering on the other hand, is all about developing products, using well-defined, scientific
principles and methods systematically and syntactically.
So, we can define software engineering as an engineering branch associated with the
development of software product using well-defined scientific principles, methods and
procedures. The outcome of software engineering is an efficient and reliable software product.

IEEE defines software engineering as:


The application of a systematic, disciplined, quantifiable approach to the development,
operation and maintenance of software that is application of engineering to software and the
study of approaches as in.

NEED OF SOFTWARE ENGINEERING


The need of software engineering arises because of higher rate of change in user requirements
and environment on which the software is working.

• Large software - It is easier to build a wall than to a house or building, likewise, as the size of
software become large engineering has to step to give it a scientific process.

• Scalability- If the software process were not based on scientific and engineering concepts, it
would be easier to re-create new software than to scale an existing one.

• Cost- As hardware industry has shown its skills and huge manufacturing has lower down the
price of computer and electronic hardware. But the cost of software remains high if the proper
process is not adapted.

• Dynamic Nature- The always growing and adapting nature of software hugely depends upon
the environment in which the user works. If the nature of software is always changing, new
enhancements need to be done in the existing one. This is where software engineering plays a
good role.

• Quality Management- Better process of software development provides better and quality
software product.
Software Development VS Software Engineering
Software development primarily focuses on writing code, testing, and implementing software
applications or systems. It involves tasks like coding, debugging, and ensuring that the software
meets specified requirements. Developers are primarily concerned with the technical aspects of
creating software solutions. It is the subset of software engineering
On the other hand, software engineering encompasses a broader set of activities. While it
includes software development, it also emphasizes systematic approaches to the entire
software development lifecycle. This includes requirements engineering, design patterns,
architecture, testing strategies, and project management. It is the comparative analysis of
software with complete documentation.

What Is a Software Product?

A software product is a software that has been developed and maintained for the benefit of a
user base and often to satisfy a need in the market.
Software Products are nothing but software systems delivered to the customer with
documentation that describes how to install and use the system.

Types of Software Products


Software products fall into two broad categories:
1. Generic products: Generic products are stand-alone systems that are developed by a
production unit and sold on the open market to any customer who can buy them.

• Less expensive.
• More reliable.
• Immediate installation.
• More user-friendly.
• User requirement not completely satisfied.
• Can not accommodate future changes.
• Responsibility is of the user.
• Can take feedback from users.
• Available resources are used.
• If software fails it is recovered in less time (reliable).
2. Customized Products: Customized products are the systems that are commissioned
by a particular customer. Some contractor develops the software for that customer.

• More expensive.(because of user requirements)


• Less reliable.(no extensive testing)
• Delay due to high development time.( changes all features)
• Less user-friendly.(more windows or pages like sign-in / extensive app)
• User is completely satisfied.
• Can easily accommodate future changes.
• For a particular customer.
• No personal changes.
• User can give access to anyone.

Essential all for good software:

1. Maintainability: Any software application must be capable of getting enhanced with


new capabilities. It must be able to undergo evolution to adapt to changing requirements
without affecting the user experience. Users should have assurance that they are getting
good support through its features. The software is easy to change and update, and it is
well-documented, so that it can be understood and modified by other developers.
2. Dependability and security: The dependability of a system reflects the user’s
degree of trust in that system. It reflects the extent of the user’s confidence that it will
operate as users expect and that it will not ‘fail’ in normal use. Dependability covers the
related systems attributes of reliability, availability, and security. These are all
interdependent.
3. Efficiency: Efficiency in software development refers to the ability of a system to
maximize performance and productivity while minimizing resource usage. It's crucial in
creating software that not only runs smoothly and quickly but also conserves memory,
processing power, and energy.
4. Acceptability: Acceptance testing is software testing that evaluates whether a
system meets its business and user requirements. It is the final testing stage before a
system is released to production. The main purpose of acceptance testing is to verify
that a system: Meets all of its functional and non-functional requirements

Importance of software engineering:

1. Reduce complexity: Dealing with big Software is very complicated and challenging.
Thus, to reduce the complications of projects, software engineering has great solutions.
It simplifies complex problems and solves those issues one by one.
2. To minimize cost: Minimizing software engineering costs involves smart resource use,
lean practices, and affordable tech choices. Streamline development, manage risks, and
outsource non-core tasks wisely. Monitor expenses closely and encourage team
knowledge sharing. These steps ensure cost control and quality software delivery.
3. To decrease time: If you don't follow the right procedures, it can waste a lot of time.
Developing complex software requires running a lot of code which takes time if not
managed properly. However, if you use the correct software engineering methods, it can
save you time by reducing the workload.
4. Handling big projects: Big projects need lots of patience, planning, and management,
which you never get from any company. The company will invest its resources;
therefore, it should be completed within the deadline. It is only possible if the
company uses software engineering to deal with big projects without problems.
5. Reliable software: The Software will be reliable if software engineering, testing, and
maintenance are given. As a software developer, you must ensure that the Software
is secure and will work for the period or subscription you have agreed upon.
6. Effectiveness. Effectiveness in software engineering is achieved through various
strategies and practices that ensure the successful delivery of high-quality software
solutions.

Ethics:

• Confidentiality: Confidentiality in software engineering means keeping sensitive


information private and secure. It involves using passwords, encryption, and secure
channels to protect data from unauthorized access or disclosure.
• Competence: Competence in software engineering means having the skills and
knowledge to do software tasks well. It includes knowing programming, testing,
problem-solving, and working with others.
• Intellectual property rights: Intellectual property rights (IPR) are like rules that protect
creative ideas, such as software programs or designs. Copyright covers how ideas are
expressed, patents protect new inventions, trademarks identify brands and trade
secrets keep important information private
• Computer misuse: computer misuse refers to the unauthorized use of computer
resources like hardware, networks, software, and data. It involves disrupting services or
breaking laws and regulations.

You might also like