fgtj

 1. The Nature of Software

1. Definition

Software is a collection of programs, procedures, algorithms, and documentation that perform specific tasks on a computer system. It is intangible (not physical) and created through a process of software engineering.

2. Key Characteristics

  • Intangible: Unlike hardware, software cannot be touched or seen directly.

  • Engineered, not manufactured: Software is designed and developed using engineering principles, but not built in a factory.

  • Subject to wear from change, not from age: Software doesn't degrade physically but can become obsolete or buggy through usage or environmental changes.

  • Evolves over time: Through updates, maintenance, and enhancements.

  • Customizable: Software can be altered to suit changing user needs or technologies.


Categories of Software

  • System Software: OS, drivers (e.g., Windows, Linux).

  • Application Software: User-focused tools (e.g., MS Word, Photoshop).

  • Embedded Software: Runs within hardware devices (e.g., firmware in a washing machine).

  • Web Software: Websites, web apps.

  • AI and ML Software: Learns from data and adapts over time.

4. Software Process

  • Specification: What the software should do.

  • Design and implementation: How it will do it.

  • Validation: Ensuring it meets requirements.

  • Evolution: Adapting to changes in user or environment.

. Challenges in Software

  • Complexity: Software systems can grow to be very complex.

  • Invisibility: Being intangible makes visualization and planning harder.

  • Changeability: Requirements evolve quickly, requiring frequent updates.

  • Security and reliability: Software must be secure and error-free.

-----------------------------------------------------------------------------------------------------------------------------
2. Need of Software Engineering
1. To Handle Complexity
2. For Reliability and Quality
3. For Cost-Effective Development
4. To Improve Maintainability
5. To Meet User Needs Accurately
6. To Manage Large Teams
7. For Reusability
8. To Ensure Scalability and Performance
9. To Address Security and Safety
10. Because Software is Everywher 
    From smartphones to space missions, software runs the world
    Software engineering ensures that this critical infrastructure is reliable, efficient, and sustainable.
-----------------------------------------------------------------------------------------------------------------------------
3. Prescriptive Process Models, Specialized Process Models

Prescriptive Process Models

Prescriptive models are traditional, structured software development approaches that define a set of activities and strict sequences to be followed during the software development life cycle (SDLC). They are called "prescriptive" because they prescribe how software should be developed.

Waterfall Model, 

V-Model (Verification & Validation), 

Incremental Model,

 Prototyping Model,

 Spiral Model

Specialized Process Models

These models are variations or extensions of prescriptive models tailored for specific project types, technologies, or goals.

Component-Based Development (CBD) Model,

 Formal Methods Model,

 Aspect-Oriented Software Development (AOSD),

 Concurrent Development Model



πŸ“Œ Key Difference:

FeaturePrescriptive ModelsSpecialized Models
NatureGeneral-purpose, structuredTailored for specific contexts or needs
ExamplesWaterfall, V-Model, SpiralCBD, Formal Methods, AOSD, Concurrent
FlexibilityLow to moderateVaries (can be high in Agile-based ones)
Use CasePredictable, large projectsDomain-specific or evolving requirements


-----------------------------------------------------------------------------------------------------------------------------
The Unified Process

Unified Process (UP) – Easy Explanation

The Unified Process is a method to build software step-by-step. It focuses on:

  • πŸ“Œ Use cases (how users will use the system)

  • 🧱 Strong architecture from the beginning

  • πŸ” Building in small steps (iterations)


πŸ”· 4 Phases of Unified Process

  1. Inception – Plan the project and check if it's worth doing

  2. Elaboration – Understand the system and build its foundation

  3. Construction – Build the actual software in parts

  4. Transition – Deliver to users and make final changes


πŸ”§ Key Features

  • Iterative (small cycles of development)

  • User-focused (based on real needs)

  • Handles complexity with strong design


🟒 Best for: Large, complex software projects where good planning and structure are important.

------------------------------------------------------------------------------------------------------------------------------
Role of a system analyst

Role of a System Analyst – Simple Explanation

A System Analyst acts as a bridge between users (clients) and the technical team (developers) to design effective software or IT systems.


πŸ”· Key Roles & Responsibilities

  1. Understand Requirements

    • Talk to users to understand what they need.

    • Gather and document system requirements.

  2. Analyze Problems

    • Study existing systems.

    • Identify what's working and what needs improvement.

  3. Design Solutions

    • Create system models, flowcharts, and data diagrams.

    • Propose how the system should work (functional specs).

  4. Coordinate with Developers

    • Explain requirements clearly to programmers.

    • Ensure developers build what users need.

  5. Test & Validate

    • Help test the system to ensure it works correctly.

    • Confirm the solution meets business needs.

  6. Support Implementation

    • Assist in deploying the system.

    • Train users and prepare documentation.


πŸ”§ Skills Needed

  • Good communication (to talk to both users and tech teams)

  • Problem-solving ability

  • Knowledge of software and business processes

  • Analytical thinking

-----------------------------------------------------------------------------------------------------------------------------
SRS, Properties of a good SRS document

SRS – Software Requirements Specification

An SRS (Software Requirements Specification) is a formal document that clearly describes what the software will do and how it should behave. It serves as a bridge between the client and the development team.


πŸ”· Purpose of SRS

  • Clearly define the functional and non-functional requirements

  • Act as a blueprint for developers, testers, and stakeholders

  • Avoid misunderstandings and reduce development errors


πŸ”§ Contents of an SRS Document

  1. Introduction – Purpose, scope, definitions

  2. Overall Description – Product perspective, user needs

  3. Functional Requirements – Specific features & functions

  4. Non-Functional Requirements – Performance, security, usability, etc.

  5. System Models (optional) – Diagrams like DFD, UML, etc.

  6. Constraints – Limitations like hardware, OS, tools


Properties of a Good SRS Document

PropertyExplanation
CorrectAccurately describes what the system should do
CompleteCovers all possible inputs, outputs, and behaviors
UnambiguousEach requirement has only one meaning
ConsistentNo conflicting requirements
VerifiableCan be tested or checked through inspection
ModifiableEasy to update when changes are needed
TraceableEach requirement can be traced to its origin (client, use-case, etc.)
----------------------------------------------------------------------------------------------------------------------------
functional and non-functional requirements

πŸ“Š Summary Table

Requirement TypeFunctionalNon-Functional
DescribesWhat the system doesHow the system behaves
FocusFeatures, tasks, logicQuality attributes
ExamplesLogin, search, paymentSpeed, security, reliability
TestingWith use cases, functional testsWith benchmarks, load tests

-----------------------------------------------------------------------------------------------------------------------------

Comments

Popular posts from this blog

DSA Lab 8 program

DSA Lab 7 Program

Network Layer: Design Issues and Key Concepts