0% found this document useful (0 votes)
16 views7 pages

Unit1 Notes

Software engineering is the systematic application of engineering principles to develop high-quality software systems that are reliable, efficient, and maintainable. The document contrasts programs, which are typically for personal use, with software products designed for commercial use, emphasizing the importance of documentation and quality standards. It also discusses the software crisis, its causes and symptoms, the Software Development Life Cycle (SDLC), and various process models like Waterfall, Prototyping, Incremental, Spiral, and Evolutionary models.

Uploaded by

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

Unit1 Notes

Software engineering is the systematic application of engineering principles to develop high-quality software systems that are reliable, efficient, and maintainable. The document contrasts programs, which are typically for personal use, with software products designed for commercial use, emphasizing the importance of documentation and quality standards. It also discusses the software crisis, its causes and symptoms, the Software Development Life Cycle (SDLC), and various process models like Waterfall, Prototyping, Incremental, Spiral, and Evolutionary models.

Uploaded by

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

Software Engineering

1. Definition

Software engineering is the systematic application of engineering principles,


methods, and tools to the development and maintenance of high-quality software
systems.

2. Purpose

To produce:

 Reliable software that meets user needs


 Efficient software that optimizes resource use
 Maintainable software that can be easily updated
 Cost-effective software that fits budget constraints

3. Programs vs Software Products

3.1 Program

Characteristics:

 Developed for personal use or a limited audience


 Focused mainly on functionality, with little or no documentation
 Example: A student writing a calculator app for their own use

3.2 Software Product

Characteristics:

 Developed for commercial or organizational use by multiple users


 Includes documentation, support, and maintenance
 Must meet quality standards and work across environments
 Example: MS Word, billing software for a company

Characteristics of Software Product

1. Correctness: The software must perform as specified without errors.


2. Reliability: The ability to operate without failure under specified conditions.
3. Efficiency: Optimal use of system resources such as CPU time and memory.
4. Integrity: Protection from unauthorized access or modification.
5. Usability: Ease of use for end-users.
6. Maintainability: Ease of modification to fix defects or improve performance.
7. Testability: Extent to which the software can be tested for defects.
8. Portability: Ability to run on different platforms with minimal changes.
9. Reusability: Degree to which parts can be used in other applications.
10. Interoperability: Capability to interact with other systems or products.
Aspect Program Software Product
A small, single-purpose set of A comprehensive solution built via all SDLC stages
Definition
instructions (GeeksforGeeks)
Much longer (months to years) (Bench Partner,
Development Speed Very quick (minutes to a day)
Shiksha)

Minimal, often just code Extensive: user manuals, design docs, training
Documentation
comments materials (Ahir Labs, Shiksha)

Systematic, planned, follows SDLC (Ahir Labs,


Development Approach Ad-hoc, unstructured
GeeksforGeeks)

Single developer or very small Experienced team with roles for design, QA,
Developer Team
team documentation (Ahir Labs, GeeksforGeeks)

Usually the developer Multiple end users, clients, or public (Ahir Labs,
User Base
themselves Bench Partner)

Limited testing, Thorough testing & QA ensure reliability (Ahir


Reliability & Testing
ad-hoc reliability Labs, Bench Partner)

Rich, multi-featured, complex features (Ahir Labs,


Features & Complexity Simple, limited functionality
Shiksha)
Full GUI or CLI with polished design (Ahir Labs,
User Interface Often no UI or very basic
Shiksha)
Large (MB to GB), many integrated components
Size & Scope Small (KB to few MB)
(Ahir Labs, Shiksha)

Address broader problems, packaged for


Purpose Solve a specific task
distribution (GeeksforGeeks, Wikipedia)

Ongoing support, updates, maintenance cycles


Maintenance Minimal or one-time use
(GeeksforGeeks, Wikipedia)

Software Crisis

1. Definition
Software crisis refers to problems faced during software development and
maintenance, especially as systems become larger and more complex.

2. Causes

Key causes include:

 Rapid increase in demand for complex software systems


 Inadequate project management and planning
 Lack of standardized development methods
 Poor communication between stakeholders and developers
 Underestimation of complexity and resources needed
 Difficulty in managing changing requirements

3. Symptoms

Common symptoms include:

 Software delivered late or over budget


 Software that fails to meet user requirements
 Low reliability and frequent failures
 High maintenance costs
 Incomplete or missing documentation
 Difficulty in adapting software to new needs

4. Impact

Negative impacts include:

 Loss of customer trust and market reputation


 Increased costs for maintenance and bug fixes
 Wastage of development resources
 Reduced productivity of development teams

5. Solution Approaches

Effective solutions include:

 Adoption of systematic software engineering practices


 Use of structured analysis and design methods
 Better project management techniques
 Improved requirement gathering and validation
 Emphasis on documentation and quality assurance
 Use of modern tools, techniques, and frameworks

Software Development Life Cycle (SDLC)


1. Definition

SDLC is a structured sequence of stages that defines how software is:

 Planned, developed, tested, deployed, and maintained.


 Ensured that software is delivered systematically, with quality and efficiency.

2. Objectives

 Deliver high-quality software that meets or exceeds customer expectations.


 Complete projects within time and budget constraints.
 Ensure maintainability, scalability, and reliability of the product.

3. Phases of SDLC

 Requirement Analysis

o Identify and gather user needs.


o Document functional and non-functional requirements.

 System Design

o Convert requirements into architecture and design specifications.


o Prepare data flow diagrams, ER diagrams, and interface designs.

 Implementation (Coding)
o Translate design into source code.
o Follow coding standards and documentation practices.
 Testing

o Verify that the system meets requirements.


o Identify and fix defects through unit testing, integration testing, and
system testing.

 Deployment

o Install and configure the software in the target environment.


o Provide user training and documentation.

 Maintenance

o Perform bug fixes, updates, and enhancements after release.


o Adapt software to new requirements and environments.

4. Importance of SDLC

 Provides a clear project roadmap.


 Reduces the risk of project failure.
 Improves software quality and maintainability.

SDLC Process Models

1. Linear Sequential Model (Waterfall Model)

Definition: The oldest and most traditional software process model. Development
proceeds in a fixed sequence where each phase must be completed before the next
starts.

Phases:

 Requirements
 Design
 Coding
 Testing
 Deployment
 Maintenance

Advantages:

 Simple and easy to understand


 Well-suited for small projects with clearly defined and stable requirements
 Each phase has specific deliverables and review processes

Disadvantages:

 Inflexible to changes after the process starts


 No working software is available until late in the project
 High risk and uncertainty for complex projects

2. Prototyping Model

Definition: A prototype (early working version) of the software is built quickly to


understand requirements and get user feedback. The prototype is refined until it meets
user expectations.

Steps:

 Requirements gathering
 Quick design
 Build prototype
 User evaluation
 Refinement
 Final product

Advantages:
 Early user involvement and feedback
 Reduces risk of misunderstanding requirements
 Helps in identifying missing or confusing functionalities early

Disadvantages:

 Can lead to scope creep if users keep requesting changes


 Prototype might be mistaken for the final system
 May lead to poor design if quick fixes dominate

3. Incremental Model

Definition: The software is developed in multiple small increments, each delivering


part of the total functionality. Each increment builds upon the previous one.

Steps:

 Requirement analysis
 Design for first increment
 Development
 Testing
 Delivery
 Repeat for next increment

Advantages:

 Working software is available early


 Easier to test and debug smaller parts
 Flexible to changes between increments

Disadvantages:

 Requires detailed planning and design for the entire system


 Integration between increments can be complex
 May increase total cost if too many increments are used

4. Spiral Model

Definition: Combines iterative development with risk analysis at every stage. The
process is represented as a spiral with repeated cycles of planning, risk assessment,
engineering, and evaluation.

Phases in each loop:

 Planning
 Risk Analysis
 Engineering
 Evaluation

Advantages:
 Effective for large, complex, and high-risk projects
 Incorporates risk management in every phase
 Allows changes at later stages without heavy impact

Disadvantages:

 Expensive to implement
 Requires expertise in risk management
 Complex to manage compared to simpler models

5. Evolutionary Model

Definition: The system evolves over time through continuous refinement based on
user feedback. Similar to prototyping but focused on gradual enhancement of a
working system.

Approach:

 Start with minimal functionality


 Deploy

You might also like