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.
1. To Handle Complexity
✅ 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:
Feature | Prescriptive Models | Specialized Models |
---|---|---|
Nature | General-purpose, structured | Tailored for specific contexts or needs |
Examples | Waterfall, V-Model, Spiral | CBD, Formal Methods, AOSD, Concurrent |
Flexibility | Low to moderate | Varies (can be high in Agile-based ones) |
Use Case | Predictable, large projects | Domain-specific or evolving requirements |
✅ 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
-
Inception – Plan the project and check if it's worth doing
-
Elaboration – Understand the system and build its foundation
-
Construction – Build the actual software in parts
-
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 – 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
-
Understand Requirements
-
Talk to users to understand what they need.
-
Gather and document system requirements.
-
-
Analyze Problems
-
Study existing systems.
-
Identify what's working and what needs improvement.
-
-
Design Solutions
-
Create system models, flowcharts, and data diagrams.
-
Propose how the system should work (functional specs).
-
-
Coordinate with Developers
-
Explain requirements clearly to programmers.
-
Ensure developers build what users need.
-
-
Test & Validate
-
Help test the system to ensure it works correctly.
-
Confirm the solution meets business needs.
-
-
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 – 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
-
Introduction – Purpose, scope, definitions
-
Overall Description – Product perspective, user needs
-
Functional Requirements – Specific features & functions
-
Non-Functional Requirements – Performance, security, usability, etc.
-
System Models (optional) – Diagrams like DFD, UML, etc.
-
Constraints – Limitations like hardware, OS, tools
⭐ Properties of a Good SRS Document
Property | Explanation |
---|---|
Correct | Accurately describes what the system should do |
Complete | Covers all possible inputs, outputs, and behaviors |
Unambiguous | Each requirement has only one meaning |
Consistent | No conflicting requirements |
Verifiable | Can be tested or checked through inspection |
Modifiable | Easy to update when changes are needed |
Traceable | Each requirement can be traced to its origin (client, use-case, etc.) |
π Summary Table
Requirement Type | Functional | Non-Functional |
---|---|---|
Describes | What the system does | How the system behaves |
Focus | Features, tasks, logic | Quality attributes |
Examples | Login, search, payment | Speed, security, reliability |
Testing | With use cases, functional tests | With benchmarks, load tests |
Comments
Post a Comment