SE Unit 1
SE Unit 1
ENGINEERING
SUBJECT CODE: 210253
SE COMPUTER
SEMESTER: SECOND
2019 PATTERN
• Cost Management
• High motivation.
• Intelligence.
• Discipline, etc.
Importance of Software Engineering
1. Reduces Costs
A systematic approach minimizes errors and rework, saving time
and money.
2. Improves Quality
Adherence to engineering principles ensures the delivery of reliable
software.
3. Handles Complexity
Software engineering helps manage the complexity of modern
systems.
4. Supports Scalability
Software can grow and adapt to meet evolving user needs.
5. Ensures Security
IMPORTANCE OF SOFTWARE
ENGINEERING
• Reduces complexity: Big software is always complicated and challenging to
progress. Software engineering divides big problems into various small issues. And
then start solving each small issue one by one. All these small problems are solved
independently to each other & finally combined.
• To minimize software cost: Software needs a lot of hard work and software
engineers are highly paid experts. A lot of manpower is required to develop software
with a large number of codes. But in software engineering, programmers project
everything and decrease all those things that are not needed. In turn, the cost for
software productions becomes less as compared to any software that does not use
software engineering method.
• To decrease time: Anything that is not made according to the project always wastes
time. And if you are making great software, then you may need to run many codes to
get the definitive running code. This is a very time-consuming procedure, and if it is
not well handled, then this can take a lot of time. So if you are making your software
according to the software engineering method, then it will decrease a lot of time.
• Handling big projects: Big projects are not done in a couple of days, and they need
lots of patience, planning, and management. And to invest six and seven months of
any company, it requires heaps of planning, direction, testing, and maintenance. No
one can say that he has given four months of a company to the task, and the project
is still in its first stage. Because the company has provided many resources to the plan
and it should be completed. So to handle a big project without any problem, the
company has to go for a software engineering method.
• Reliable software: Software should be secure, means if you have delivered the
software, then it should work for at least its given time or subscription. And if any
bugs come in the software, the company is responsible for solving all these bugs.
Because in software engineering, testing and maintenance are given, so there is no
worry of its reliability.
• Effectiveness: Effectiveness comes if anything has made according to the standards.
Software standards are the big target of companies to make it more effective. So
Software becomes more effective in the act with the help of software engineering.
NATURE OF SOFTWARE
4. Complexity
• Software systems can be incredibly complex, involving millions of lines of
code.
• Complexity grows as features are added, making it harder to manage and
maintain.
•5. Customizable
Errors and
are inevitable Flexible
due to this complexity.
• Software can be tailored to meet specific user or business needs.
• It allows for dynamic behavior, unlike hardware, which has fixed
functionality.
6. Non-Wearable but Degrades
• Software doesn’t physically wear out like hardware, but it "degrades" over
time:
• Outdated technology or design.
• Accumulation of technical debt.
• Compatibility issues with new systems.
12. Human-Centric
• Software is created to meet human needs, solve
problems, or improve processes.
• It requires input from various stakeholders:
• Users. Conclusion
The nature of software makes it unique compared
• Developers.
to traditional physical products. Its intangible,
• Designers. dynamic, and abstract qualities require careful
planning, continuous adaptation, and efficient
• Testers.
engineering practices to ensure its success and
sustainability in the ever-evolving digital world.
HOW S/W DIFFERS FROM H/W
info.
3. descriptive info in both soft & hard copy that describes the
Detailed Definition
Software can be defined as:
•"A set of computer programs, procedures, algorithms, and
associated documentation designed to perform a specific task or
solve a problem."
Key Components of Software
1. Programs (Code):
1. The core instructions written in programming languages (e.g., Python,
Java, C++).
2. Directs hardware to perform specific actions.
2. Data:
1. Information that programs use or process (e.g., input from users,
configuration files).
3. Documentation:
1. Manuals, guides, and technical references to help users and
developers understand and use the software.
Characteristics of Software
applications.
Conclusion
Software is the driving force behind modern technology, enabling computers
and other devices to function effectively. It is an essential part of every digital
system, and its versatility makes it a cornerstone of innovation in nearly
every industry.
S/W ENGINEERING
s/w engineering
layers
S/W ENGINEERING PRACTICE
1. Requirements Engineering
2. Design Practices
3. Coding Practices
4. Testing Practices
5. Deployment Practices
6. Maintenance Practices
1. Requirements Engineering
•Objective: Understand what the client/user wants.
•Key Activities:
code line. changes, what they changed, and why (via commit messages).
5.Backup: Code is stored in remote repositories (e.g., GitHub,
GitLab, Bitbucket), providing a backup mechanism.
4. Testing Practices
• Types of Testing:
functionality.
• Scrum: Framework under Agile with sprints and defined roles (e.g., Product Owner).
• DevOps: Combines development and operations for faster delivery and reliability.
• Best Practices for Modern Software Engineering
development lifecycle.
tracking.
SOFTWARE MYTHS
• We already have a book full of standards & procedures to build the s/w.
• If we get behind the schedule, we can add more programmers & catch
up.
• If I outsource project to a third party, I can relax & let them build it.
• Once we write the program & get it to work, our job is done.
• Until I get the program running, there's no way to assess its quality.
S/W PROCESS
FIVE activities:
1. Communication: communicate/collaborate with customer/stakeholders
2. Planning: create a road map (s/w project plan) for that will guide the work
team.
3. Modelling: create a “sketch” to understand the big picture.
4. Construction: code generation & testing for errors.
5. Deployment: s/w is delivered to customer who then evaluates & provides
feedback.
• Software Process
3.Modeling: Designing the system’s architecture, data structures, and user interface.
2. Planning:
•Objective: Create a roadmap for the project, define timelines, resources, and tasks.
•Example: Preparing schedules, identifying risks.
3. Modeling:
•Objective: Translate requirements into system designs and architecture.
•Example: Creating UML diagrams, data flow diagrams.
4. Construction:
•Objective: Write code and test the software.
•Example: Development, unit testing, integration testing.
5. Deployment:
•Objective: Deliver the software to users and gather feedback.
•Example: Installation, maintenance, updates.
A GENERIC PROCESS MODEL
• Supporting Activities:
• Configuration management.
• Quality assurance.
• Documentation.
• Risk management.
A GENERIC
PROCESS MODEL
Task set for requirement gathering of a relatively small project will look
like this-
1. Make a list of stakeholders for the project
2. Invite all of them to an informal meeting
3. Ask each stakeholder to make a list of features & functions required.
4. Discuss those requirements & build a final list.
5. Decide priorities for those requirements.
6. Note areas of uncertainty.
• Identifying a Task Set
• Example:
• A process pattern
• describes process-related problems encountered during
work,
• identifies environment in which problem occurred &
• suggests one or more proven solutions for the problem.
1. Stage Patterns: Define activities within a specific phase (e.g., coding, testing).
• Example:
• Phase pattern: defines sequence of framework activities that occur within the process
• Just because we’re building a s/w, doesn’t mean that it will be-
• delivered on time,
• will meet all of the customers needs or
• it will provide long term quality.
• There are different approaches to assess the software process &
improve it.
3) SPICE
A standard that defines set of requirments for software process
assessment.
4) ISO 9001:2000
A generic standard that applies to any organization that wants to improve
overall quality for their products.
CMM (Capability Maturity Model) and SPICE
(Software Process Improvement and Capability
Determination, also known as ISO/IEC 15504)
2) CMM based appraisal for internal process improvement
Provides diagnostic technique
CMM was developed by the Software Engineering Institute (SEI) to provide organizations with a
model for improving their software processes.
3) SPICE
A standard that defines set of requirments for software process assessment.
SPICE is an international standard for process assessment. It focuses on evaluating the capability
of processes rather than the maturity of an organization.
4) ISO 9001:2000
A generic standard that applies to any organization that wants to improve overall quality for their
products.
1. Requirements Analysis
2. System Design
3. Implementation
4. Testing
5. Deployment
6. Maintenance
THE WATERFALL MODEL
2. Design Phase: This phase takes SRS from first phase and defines
the overall software architecture with high level and detailed
design.
• In this model, the risk factor is higher, so this model is not suitable
for complex projects.
• This model cannot accept the changes in requirements during
development.
• It becomes tough to go back to the previous phase.
• Since the testing done at a later stage, it does not allow identifying
the challenges and risks in the earlier phase, so the risk reduction
strategy is difficult to prepare.
A variation in representation of
waterfall model is called v-model
which depicts relationship between
different stages and quality
assurance actions done in parallel.
• Advantages-
1. Easy to Understand.
2. Testing Methods like planning, test designing happens well before coding.
3. This saves a lot of time. Hence a higher chance of success over the waterfall model.
4. Avoids the downward flow of the defects.
5. Works well for small plans where requirements are easily understood.
• Disadvantages-
1. Very rigid and least flexible.
2. Not a good for a complex project.
3. Software is developed during the implementation stage, so no early prototypes of the software are
produced.
4. If any changes happen in the midway, then the test documents along with the required
documents, has to be updated.
INCREMENTAL PROCESS MODEL
• In Incremental Model,
the requirements are
divided into multiple
standalone modules.
• each module goes
through the
requirements, design,
implementation and
testing phases.
• Every subsequent
release of the module
adds function to the
previous release.
• This process continues
until the complete
system is achieved.
WHEN TO USE THE INCREMENTAL
MODEL?
• Types-
• Prototyping model
• Spiral model
PROTOTYPING MODEL
Advantages
• This model is applicable to all types of software
development processes.
• It is easy to understanding and use.
• It gives immediate feedback from testing.
• It provides an accurate picture of the current
state of a project.
Disadvantages
• needs better communication between the team
members. This may not be achieved all the
time.
• It requires to remember the status of the
AGILE SOFTWARE DEVELOPMENT
1.Requirements gathering
2.Design the requirements
3.Construction/ iteration
4.Testing/ Quality assurance
5.Deployment
6.Feedback
HOMEWORK
• Unified process
• Agile methods
CASE STUDY