DESIGNING A SOFTWARE

 Designing a Software:
  1) Gathering Requirements
2) Analyzing the Requirements
3) Designing the Software
4) Implementation
5) Maintenance
6) Testing

1) Gathering Requirements:
a) End User/Clients
b) Analyzing similar existing projects
c) Expert Consultations
     Methods to elicit Data:
a) Questionaire
b) Brainstorming sessions
c) Discussions

2) Analyzing the Requirements:
a) Understanding the requirements (with usecase diagrams)
b) Creating SRS (Software Requirements Specifications)
c) Risk Analysis
        Technical Details:  (Technology to be used)
i) S/W (Programming Language, Database, Database connectivity)
       ii) H/W (Server/Machine Required, Processors Required, Project Required H/w)
      iii) Human Resources for each module
-> Project / Technical Managers
-> Team / Technical Leads
-> Engineers / Technical & Database Architects
-> Non- Technical Staff
             iv) Billing
      v) Time Duration
             vi) How to Mitigate Risk

3) Designing the Software: (HLD and LLD):
a) High Level Design (HLD):
    i) Modularizing the Requirements
[required modules - interaction between modules]
   ii) For each Module:
a) GUI   - Presentation Layer
b) BL     - Business Layer (Business Objects)
c) DAL  - Data Access Layer
(for accessing data - data handling)
d) DB / Files (DataBase / Files)
  iii) Preparing Flow Charts
  iv) Designing Class - Data Members and Member Functions
   v) Interaction between Classes
  vi) GUI -   How many UIs - Each UI Objects
                a) GUI-BL      -   Communication
        b) BL-DAL     - Communication
        c) DAL-DB    - Communication
vii) DataBase Design:
a) Number of Tables
b) Candidate Key (PrimaryKey) for each table
c) Interaction between table (PrimaryKey - ForeignKey)
d) Constraints Required
e) Deciding Tablespace, partitioning
f) DDL / DML / TCL / DCL - (Requirements, Data Handling, Maintenance)
g) Procedures, Triggers Required

b) Low Level Design (LLD):
i) Each Module:
Each Class - Each Function's details (input/output)
Documenting the Functionality [FRS - Functional Requirement Specifications]
       ii) For each use case:
Sequence of events (with sequence diagrams)
        

 4) Implementation:
            a) Creating Base Modules
    b) Creating an executable S/W with base modules
    c) Unit Testing / Functionality / Integration / Regression Testing 
   d) Creating Tasks
    e) Executing Tasks

  5) Maintenance:
    a) Bug Fixing & Enhancements
    b) Documentation
SRS - (Project Requirements)
FRS - (Functionality Requirements)         

  6) Testing: (Test cases - Manual/Automation testing)
            a) Functionality Testing
    b) Module Testing
    c) Integration Testing
    d) System Testing
   e) Regression Testing
 
i) DAR - Defect Analysis Report
ii) RCA - Root Cause Analysis
iii) TM  - Traceability Matrix 

GUI - BL - DL - Db/Files

Unified Modelling Language (UML):
        1) Use Case
        2) Class
        3) Object
        4) Package
        5) Sequence
        6) State_Chart
   

Popular posts from this blog

OBJECT ORIENTED ANALYSIS AND DESIGN (OOAD)

OBJECT ORIENTED PROGRAMMING

STARTING A BUSINESS