0% found this document useful (0 votes)
3 views

CSC423 Note

Software engineering is defined as the application of scientific principles and methods to develop reliable software products. It encompasses the entire software development life cycle (SDLC), which includes steps such as requirement gathering, design, coding, testing, and maintenance. Various software development paradigms, such as Waterfall, Agile, and Spiral models, guide the process of software creation and evolution to meet changing user needs and technological advancements.

Uploaded by

Agaba Agene
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

CSC423 Note

Software engineering is defined as the application of scientific principles and methods to develop reliable software products. It encompasses the entire software development life cycle (SDLC), which includes steps such as requirement gathering, design, coding, testing, and maintenance. Various software development paradigms, such as Waterfall, Agile, and Spiral models, guide the process of software creation and evolution to meet changing user needs and technological advancements.

Uploaded by

Agaba Agene
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 14

Software Engineering Overview

The term software engineering is made of two words,


software and engineering.
Software more than just a program code. A program is an
executable code, which serves some computational purpose.
Software is considered to be collection of executable
programming code, associated libraries and documentations.
Software, when made for a specific requirement is called
software product.

Engineering on the other hand, is all about developing


products, using well-defined, scientific principles and
methods.

So, we can define software engineering as an engineering


branch associated with the development of software product
using well-defined scientific principles, and methods. The
outcome of software engineering is an efficient and reliable
software product.
Software Evolution
Software Evolution is a term that refers to the process of
developing software initially, and then timely updating it for
various reasons, i.e., to add new features or to remove
obsolete functionalities, etc. till desired software product is
developed, which satisfies the expected requirements.
Evolution starts from the requirement gathering process.
After which developers create a prototype of the intended
software and show it to the users to get their feedback at the
early stage of software product development.
The users suggest changes, on which several consecutive
updates and maintenance keep on changing too. This process
changes to the original software, till the desired software is
accomplished.
Even after the user has desired software in hand, the
advancing technology and the changing requirements force
the software product to change accordingly.
Re-creating software from scratch and to go one-on-one with
requirement is not feasible. The only feasible and economical
solution is to update the existing software so that it matches
the latest requirements.

Characteristics of good software


Well-engineered and crafted software is expected to have the
following characteristics:
Operational: This tells us how well software works in
operations. It can be measured on:
 Budget
 Usability
 Efficiency
 Correctness
 Functionality
 Dependability
 Security
 Safety
Transitional: This aspect is important when the software is
moved from one platform to another:
 Portability
 Interoperability
 Reusability
 Adaptability

Maintenance: This aspect briefs about how well a software


has the capabilities to maintain itself in the ever-changing
environment:
 Modularity
 Maintainability
 Flexibility
 Scalability

Software Paradigms
Software paradigms refer to the methods and steps, which
are taken while designing the software.
Programming paradigm is subset of software design
paradigm which is further a subset of software development
paradigm.

Software Development Paradigm


This Paradigm is known as software engineering paradigms
where all the engineering concepts pertaining to the
development of software are applied. It includes various
researches and requirement gathering which helps the
software product to build. It consists of –
 Requirement gathering
 Software design
 Programming
Software Design Paradigm
This paradigm is a part of Software Development and
includes –
 Design
 Maintenance
 Programming
Programming Paradigm
This paradigm is related closely to programming aspect of
software development. This includes –
 Coding
 Testing
 Integration

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.
Reduces Complexity: Dealing with big Software is very
complicated and challenging. Thus, to reduce the
complications of projects, software simplifies complex
problems and solves those issues one by one.
To manage the cost: Software engineering programmers plan
everything and reduce all those things that are not required
to save cost.

Scalability: Scalability can be defined as how software or


system cope with an increase in its load and how it deals with
the growth in this load in a healthy way that minimizes
downtime and errors. Software engineering principles such as
modular design, code reusability, and scalability planning
enable organizations to build adaptable software
architectures that can grow and evolve over time.

Security: Software engineering plays a critical role in


developing secure systems, implementing encryption
protocols, and fortifying applications against cyber threats.
The integration of security measures at the design and
development stages is essential for safeguarding sensitive
information.

Dynamic Nature: The higher rate of change in user


requirements and environment on which the software is, new
enhancements need to be done in the existing one. This is
where software engineering plays a good role.

Quality Management: Software quality management is a


systematic process of ensuring that software product meets
the highest standards in terms of functionality, reliability, and
user satisfaction.

Software Development Life Cycle

Software development life cycle (SDLC) is a structured


process that is used to design, develop, and test good-quality
software. SDLC, or software development life cycle, is a
methodology that defines the entire procedure of software
development step-by-step.
SDLC Activities
SDLC provides a series of steps to be followed to design and
develop a software product efficiently.
SDLC framework includes the following steps:
Communication: This is the first step where the user initiates
the request for a desired software product. He submits his
request to the service providing organization in writing.
Requirement Gathering: The team holds discussions with
various stakeholders from problem domain and tries to bring
out as much information as possible on their requirements.
Feasibility Study: It involves analyzing the technical,
economic, and operational feasibility of a software project
before investing time, money, and resources into its
development.
At this step, the team analyzes if a software can be made to
fulfill all requirements of the user or not.

System Analysis: System analysis refers to the process of


gathering data, interpreting information, identifying issues
about software product and using the results to recommend
or develop possible system improvements.
Software Design: Next step is to bring down whole knowledge
of requirements and analysis on the desk and design the
software product. The inputs from users and information
gathered in requirement gathering phase are the inputs of
this step. The output of this step comes in the form of two
designs; logical design and physical design.
Coding: This step is also known as programming phase. The
implementation of software design starts in terms of writing
program code in the suitable programming language and
developing error-free executable programs efficiently.
Testing: Software testing is done while coding by the
developers and thorough testing is conducted by testing
experts at various levels of code such as module testing,
program testing, product testing, in-house testing and testing
the product at user’s end. Early discovery of errors and their
remedy is the key to reliable software.
Integration: Software may need to be integrated with the
libraries, databases and other program(s). This stage of SDLC
is involved in the integration of software with outer world
entities.
Implementation: This means installing the software on user
machines. At times, software needs post-installation
configurations at user end. Software is tested for portability
and adaptability and integration related issues are solved
during implementation.
Operation and Maintenance: This phase confirms the software
operation in terms of more efficiency and less errors. If
required, the users are trained on, or aided with the
documentation on how to operate the software and how to
keep the software operational. The software is maintained
timely by updating the code according to the changes taking
place in user end environment or technology.
Disposition: As time elapses, the software may decline on the
performance front. It may go completely obsolete or may
need intense upgradation. Hence a pressing need to
eliminate a major portion of the system arises. This phase
includes archiving data and required software components,
closing down the system, planning disposition activity and
terminating system at appropriate end-of-system time.

Software Development Paradigm


The software development paradigm helps developer to
select a strategy to develop the software. A software
development paradigm has its own set of tools, methods and
procedures, which are expressed clearly and defines software
development life cycle. A few of software development
paradigms or process models are defined as follows:
Waterfall Model

Waterfall model is the simplest model of software


development paradigm. It says the all the phases of SDLC will
function one after another in linear manner. That is, when the
first phase is finished then only the second phase will start
and so on.

The sequential nature of model does not allow us go back


and undo or redo our actions.
This model is best suited when developers already have
designed and developed similar software in the past and are
aware of all its domains.

Iterative (Agile) model

The iterative model organizes the development process into


small cycles instead of a strictly linear progression. This
allows developers to make changes incrementally and
frequently so they learn from mistakes before they become
expensive. Developers get feedback from users throughout
the process with the iterative model, so it's ideal for large
projects with a strong leadership team.

The software is first developed on very small scale and all the
steps are followed which are taken into consideration. Then,
on every next iteration, more features and modules are
designed, coded, tested and added to the software. Every
cycle produces a software, which is complete in itself and has
more features and capabilities than that of the previous one.
Spiral Model
Spiral model is a combination of both, iterative model and
one of the SDLC model.

This model considers risk, which often goes un-noticed by


most other models. The model starts with determining
objectives and constraints of the software at the start of one
iteration. Next phase is of prototyping the software. This
includes risk analysis. Then one standard SDLC model is used
to build the software.
V – Model
The major drawback of waterfall model is we move to the
next stage only when the previous one is finished and there
was no chance to go back if something is found wrong in later
stages. V-Model provides means of testing of software at
each stage in reverse manner.
At every stage, test plans and test cases are created to verify
and validate the product according to the requirement of that
stage. This model is also known as verification and validation
model.
Big Bang Model
This model is the simplest model in its form. It requires little
planning, lots of programming and lots of funds. This model is
conceptualized around the big bang of universe. As scientists
say that after big bang lots of galaxies, planets and stars
evolved just as an event. Likewise, if we put together lots of
programming and funds, you may achieve the best software
product.
For this model, very small amount of planning is required. It
does not follow any process, or at times the customer is not
sure about the requirements and future needs. So the input
requirements are arbitrary.
This model is not suitable for large software projects but good
one for learning and experimenting.
Software Requirements

You might also like