SEunit 1
SEunit 1
SEunit 1
Unit-1
(Introduction)
Compiled By
Dr. Vandana Agarwal
Introduction
• Software Engineering is a subdomain of Engineering in which you
learn to develop, designing, testing, and maintenance of software
using a systematic and structured approach
• Software is a program or set of programs containing instructions that
provide desired functionality. Engineering is the process of designing
and building something that serves a particular purpose and finds a
cost-effective solution to problems
Program vs Software
• A program is a set of instructions that are given to a computer in
order to achieve a specific task.
• Program is one of the stages involved in the development of the
software.
• Software is when a program is made available for commercial
business and is properly documented along with its licensing.
Software Product = Program + Documentation + Licensing
• Software Development usually follows a life cycle, which involves the
feasibility study of the project, requirement gathering, development
of a prototype, system design, coding, and testing.
Program vs Software
Program Software
• Small in size. • Large in size.
• Authors himself is user-soul.
• Large number.
• Single developer. Software
• Adopt development. Set of Programs • Team developer.
• Lack proper interface. • Systematic development.
Program
• Large proper Set of • Well define interface.
documentation. instructions
• Well documented
Components of Software :
There are three components of the software: These are : Program, Documentation, and Operating
Procedures.
Program –
A computer program is a list of instructions that tell a computer what to do.
Documentation –
Source information about the product contained in design documents, detailed code comments,
etc.
Operating Procedures –
Set of step-by-step instructions compiled by an organization to help workers carry out complex
routine operations.
Code: the instructions that a computer executes in order to perform a specific task or set of tasks.
Data: the information that the software uses or manipulates.
User interface: the means by which the user interacts with the software, such as buttons, menus,
and text fields.
Libraries: pre-written code that can be reused by the software to perform common tasks.
Documentation: information that explains how to use and maintain the software, such as
user manuals and technical guides.
Test cases: a set of inputs, execution conditions, and expected outputs that are used to test
the software for correctness and reliability.
Configuration files: files that contain settings and parameters that are used to configure
the software to run in a specific environment.
Build and deployment scripts: scripts or tools that are used to build, package, and deploy
the software to different environments.
Metadata: information about the software, such as version numbers, authors, and
copyright information.
All these components are important for software development, testing and deployment.
Software Engineering is the process of designing, developing, testing, and
maintaining software. It is a systematic and disciplined approach to software
development that aims to create high-quality, reliable, and maintainable
software.
• Software engineering includes a variety of techniques, tools, and
methodologies, including requirements analysis, design, testing, and
maintenance.
• By following the principles of software engineering and using the
appropriate tools and methodologies, software developers can create
high-quality, reliable, and maintainable software that meets the
needs of its users.
• Software Engineering is mainly used for large projects based on
software systems rather than single programs or applications
• The main goal of Software Engineering is to develop software
applications for improving quality, budget, and time efficiency.
• Software Engineering ensures that the software that has to be built
should be consistent, correct, also on budget, on time, and within the
required requirements.
Characteristics of good software
• A software product can be judged by what it offers and how well it
can be used. This software must satisfy on the following grounds:
• Operational Transitional Maintenance
Characteristics of good software
• Operational This tells us how well the 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 the software has the
capabilities to maintain itself in the ever-changing environment:
Modularity Maintainability Flexibility Scalability
Software Crisis – Software Engineering
• Large software - It is easier to build a wall than a house or building, likewise, as the size of the
software becomes 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, cost of the software remains high if proper process is
not adapted.
• Dynamic Nature- Always growing and adapting nature of the 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 the software engineering plays a
good role.
• Quality Management- Better process of software development provides better and quality
software product
Why study software engineering?
1) Higher productivity.
2) To acquire skills to develop large programs.
3) Ability to solve complex programming problems.
4) Learn techniques of specification design.
5) Better quality programmers
Key Principles of Software Engineering
• This is a highly disciplined model and Phases are completed one at a time.
• V-Model is used for small projects where project requirements are clear.
• Simple and easy to understand and use.
• This model focuses on verification and validation activities early in the life cycle
thereby enhancing the probability of building an error-free and good quality
product.
• It enables project management to track progress accurately.
• Emphasis on Testing: The V-Model places a strong emphasis on testing, which
helps to ensure the quality and reliability of the software.
• Improved Traceability: The V-Model provides a clear link between the
requirements and the final product, making it easier to trace and manage
changes to the software.
• Better Communication: The clear structure of the V-Model helps to improve
communication between the customer and the development team.
Disadvantages of V-Model