Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 26

1.What is software engeering why it is needed?

Explain four attributre of


software engeering?

What is Software Engineering?

The Software Engineering branch of engineering focuses on developing


software products utilizing various scientific principles, techniques, and
procedures. Software engineering leads to a product that is efficient and
reliable.

Software Engineering is the combination of two words, Software, and


engineering. The Software comprises integrated programs designed carefully
with organized instructions and codes. And engineering refers to inventing,
designing, building, maintaining, and improving devices and processes using
scientific and practical knowledge.

Importance of Software Engineering

The importance of software engineering lies in the fact that a specific piece of
Software is required in almost every industry, every business, and purpose. As
time goes on, it becomes more important for the following reasons.

1. Reduces 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. 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.

3. To Minimize Software Costs


Software engineers are paid highly as Software needs a lot of hard work and
workforce development. These are developed with the help of a large number
of codes. But programmers in software engineering project all things and
reduce the things which are not needed. As a result of the production of
Software, costs become less and more affordable for Software that does not
use this method.

4. To Decrease Time

If things are not made according to the procedures, it becomes a huge loss of
time. Accordingly, complex Software must run much code to get definitive
running code. So, it takes lots of time if not handled properly. And if you
follow the prescribed software engineering methods, it will save your precious
time by decreasing it.

5. Effectiveness

Making standards decides the effectiveness of things. Therefore, a company


always targets the software standard to make it more effective. And Software
becomes more effective only with the help of software engineering.

6. 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.

Why do we Need Software Engineering?

Most people don't give a second thought to new technologies as they make
their life easier and more comfortable to drive. We need software engineering
because software engineering is important in daily life. We have technology
like Alexa only because we have software engineering. It has made things
possible which are always beyond our imagination. Let's explore some points
to answer why we need software engineering:

1. The rise of technology

The rise of technology has catapulted software engineering to the leading


edge of the enterprise world and made it pretty critical. As technology
continues to seep into each component of our lives, we can need software
program improvement more, and it will become even more vital. From
working manually and on an analog basis, engineers have automated every
aspect of life by nurturing software development as an industry.

2. Adding structure

Without software engineering, we have people who can code. But software
engineering methodology has a structure to everything and makes the
lifecycle and business process easy and reliable.

3. Preventing issues

The software development process has now been formalized to prevent the
software project from running over budget, mismanagement, and poor
planning. The process of quality assurance and user testing is vital as it helps
prevent future issues at lower costs. And this is only possible due to software
engineering. For the success of projects, it becomes vitally important.

4. Huge Programming

Huge programming is possible because of software engineering as it


becomes the extensive one that has steps to give them a scientific process.

5. Automation & AI

Currently, Automation and AI are hot subjects in the IT industry. Because of


software development, the manufacturing industry is overhauled by
automation. The quantity of humans operating on manufacturing unit flooring
continues to decrease as automation software improves. As this fashion
continues, maximum engineering disciplines will probably rely upon software
improvement in a few ways.

6. Research

Through research and development, only new technology arises from the
industry. It is possible today because software engineering is at the forefront
of new technology research and development. Through each step forward,
other parts of the industry can flourish as we stand on the shoulders of giants.

Enroll in a Full Stack Developer certification course and certify your


software development skills.

Benefits of Software Engineer

Software engineering has structured the code world and allowed generations
to increase. We ought to also understand the benefits of software program
engineering:

1. Best Practices

It provided us with the best practices being the consent of software


engineering. To gain experience, some practices include KISS, Testing code,
Refactoring code, Version control, readability, etc. But the best practice is
that which delivers simple code with effective work.

2. Maintainability

With the maintainability of codebases, software engineering has become


mature. The maintenance is all about corrections and modifications to drive
smoothly.

3. Scalability

Scalability is everything in the world of web development and SaaS products.


And such products are built to work under varying loads only because
software engineering has made it so.

4. Accessibility and Usability


Now accessibility is more important than ever. The internet wouldn't be
accessible today to many disabled people without the help of software
engineers. Their work has been crucial in ensuring that the internet is open to
everyone.

5. Security

Software engineering has become more significant than at any other time
since individuals can get to your applications from any device and area. It
implies many moving parts and developing a security strategy that is
sufficiently strong to confront the test as significant. Security lapses can have
devastating effects on big companies, so we need software engineers to help
us safeguard our systems.

6. Testing

Testing has become unbelievably significant as there has been a tremendous


drive in the industry for incrementing standards. And this is the reason for the
further development testing. There are different kinds of tests. The most
vigorous are end-to-end tests that test how an application coordinates and unit
tests that assess specific functionality.

What is the Importance of Software engineering in Software Engineering?

Software engineering is important because we have software engineers who


play an important role in developing Software that makes our life easy.
Software engineers are important members of IT firms whether they are full-
time staff, part-time, vendors, or contracted workers. With the software
engineering principle, their job as software engineers is to design, develop,
maintain, test, and evaluate the Software.

Despite their knowledge of the software development process, software


engineers require input from IT leaders regarding software requirements and
the result. If we analyze the importance of software engineering today is only
due to the hard work and effective approaches of software engineers. Without
a software engineer, software engineering is not important in software
development.
Importance of Software Engineering in Computer Science

Through computer science, a software engineer can develop the industry of


software engineering. It is the platform where they can learn the proper use
of programming languages and architectures to develop computer games,
network control systems, etc.
Software engineering ethics:
Discuss the ACM/IEEE Code of Ethics and its principles?
Define and explain System types that are used in case studies?
Explain an insulin pump control system case study with diagram(hardware
architecture & activity model diagram)
Software process
A software process is a set of related activities that leads to the
production of a software system.
many different software processes, they all must include the four
fundamental software engineering activities
 Specification – defining what the system should do.
 Design and implementation – defining the organization of the
system and implementing the system.  Validation – must be
validated to ensure that it does what the customer wants.
 Evolution – The software must evolve to meet changing customer
needs
Types of process models:

Water fall model:


The stages of the waterfall model directly reflect the fundamental software
development activities:
1. Requirements analysis and definition :
The system’s services, constraints, and goals are established by consultation
with system users. They are then defined in detail and serve as a system
specification.
2. System and software design The systems design process allocates the
requirements to either hardware or software systems. It establishes an overall
system architecture. Software design involves identifying and describing the
fundamental software system abstractions and their relationships.
3. Implementation and unit testing During this stage, the software design is
realized as a set of programs or program units. Unit testing involves verifying
that each unit meets its specification
4. Integration and system testing The individual program units or programs are
integrated and tested as a complete system to ensure that the software
requirements have been met. After testing, the software system is delivered to
the customer.
5. Operation and maintenance Normally, this is the longest life-cycle phase. The
system is installed and put into practical use. Maintenance involves correcting
errors that were not discovered in earlier stages of the life cycle, improving the
implementation of system unit
Advantages of the Classical Waterfall Model
.
 Easy to Understand: Classical Waterfall Model is very simple and
easy to understand.
 Individual Processing: Phases in the Classical Waterfall model are
processed one at a time.
 Properly Defined: In the classical waterfall model, each stage in the
model is clearly defined.
 Clear Milestones: Classical Waterfall model has very clear and
well-understood milestones.
 Properly Documented: Processes, actions, and results are very well
documented.
 Reinforces Good Habits: Classical Waterfall Model reinforces good
habits like define-before-design and design-before-code.
 Working: Classical Waterfall Model works well for smaller projects
and projects where requirements are well understood.
Disadvantages of Waterfall Model
some major drawbacks of this model.
 No Feedback Path: In the classical waterfall model evolution of
software from one phase to another phase is like a waterfall. It
assumes that no error is ever committed by developers during any
phase. Therefore, it does not incorporate any mechanism for error
correction.
 Difficult to accommodate Change Requests: This model assumes
that all the customer requirements can be completely and correctly
defined at the beginning of the project, but actually customer’s
requirements keep on changing with time. It is difficult to
accommodate any change requests after the requirements
specification phase is complete.
 No Overlapping of Phases: This model recommends that a new
phase can start only after the completion of the previous phase. But
in real projects, this can’t be maintained. To increase efficiency and
reduce cost, phases may overlap.
 Limited Flexibility: The Waterfall Model is a rigid and linear
approach to software development, which means that it is not well-
suited for projects with changing or uncertain requirements. Once a
phase has been completed, it is difficult to make changes or go back
to a previous phase.

Increment development model:

Incremental development in some form is now the most common approach for
the development of application systems and software products. This approach
can be either plan-driven, agile or, more usually, a mixture of these
approaches. In a plan-driven approach, the system increments are identified in
advance; if an agile approachh is adopted, the early increments are identified,
but the development of later increments depends on progress and customer
priorities.
Incremental software development, which is a fundamental part of agile
development methods, is better than a waterfall approach for systems whose
requirements are likely to change during the development process. This is the
case for most business systems and software products. Incremental
development reflects the way that we solve problems. We rarely work out a
complete problem solution in advance but move toward a solution in a series
of steps, backtracking when we realize that we have made a mistake. By
developing the software incrementally, it is cheaper and easier to make
changes in the software as it is being developed
Advantages over the waterfall model:
1. The cost of implementing requirements changes is reduced. The amount of
analysis and documentation that has to be redone is significantly less than is
required with the waterfall model.
2. It is easier to get customer feedback on the development work that has
been done. Customers can comment on demonstrations of the software and
see howmuch has been implemented. Customers find it difficult to judge
progress from software design documents.
3. Early delivery and deployment of useful software to the customer is possible,
even if all of the functionality has not been included. Customers are able to use
and gain value from the software earlier than is possible with a waterfall
process.
Disadvantages:
1. The process is not visible. Managers need regular deliverables to measure
progress. If systems are developed quickly, it is not cost effective to produce
documents that reflect every version of the system.
2. System structure tends to degrade as new increments are added. Regular
change leads to messy code as new functionality is added in whatever way is
possible. It becomes increasingly difficult and costly to add new features to a
system.
Agile method:
 Agile methods are incremental development methods in which
the increments are small and, typically, new releases of the
system are created and made available to customers every two
or three weeks.
 Agile methods are Focus on the code rather than the design
 Agile methods uses an iterative approach for software
development
 Agile methods delivers software quickly and evolve this
quickly to meet changing requirements.
 The aim of agile methods is to reduce overheads in the
software process (e.g. by limiting documentation) and to be
able to respond quickly to changing requirements without
excessive rework.

You might also like