Software Development process

Table of contents


1. Project

2. Software development projects

3. Software development life cycle

3.1. Planning

3.1.1. Checking the project feasibility

3.1.1.1. Technical feasibility

3.1.1.2. Economical feasibility

3.1.1.3. Organizational feasibility

3.1.1.4. Project stakeholders

3.1.2. Prepare Project work plan

3.1.2.1. Identify the tasks to complete

3.1.3. Form the team

3.1.4. Initiate project management activities

3.2. Analysis

3.3. Design

3.3.1. Activities completed in the design phase

3.4. Implementation

3.4.1. Coding

3.4.2. Testing

3.4.2.1. Unit testing

3.4.2.2. Integration testing

3.4.2.3. System testing

3.4.2.4. Acceptance testing

3.4.3. Documentation

3.4.3.1. System Documentation

3.4.3.2. User Documentation

4. Summary


1. Project

  1. Sequence of tasks which are carefully planned from beginning to end.
  2. Bounded by time, resources, & required results
  3. Has a defined outcome and "deliverables"
  4. Has a predefined Deadline
  5. Has a predefined Budget
  6. Conducted by a team of professionals
  7. Examples

-> Building a house

-> Constructing a road

-> Organising an event

-> Developing a software

-> Developing a website

2. Software development projects

  1. A software development project is a complex undertaking by a team within the boundaries of time, budget, and resources that produces new or enhanced software that adds significant business value to a new or existing business process.
  2. Examples

1. Point of Sales System

2. Library Management System

3. E-commerce websites (like ebay, Alibaba etc…)

4. A mobile applications

5. Student attendance system

6. Payroll system

7. Virtual shopping malls

3. Software development life cycle

  1. Software Development Life Cycle (SDLC) is a framework that defines activities performed throughout the software development process
  2. Includes four main phases

1. Planning

2. Analysis

3. Design

4. Implementation

5. Testing

6. Maintenance

3.1. Planning

  1. Planning is the fundamental process of understanding why an information system should be built and determining how the project team will build it.
  2. During the Planning phase

1. Check the feasibility of the project

2. Prepare a plan

3. Get a team

4. Initiate project management activities

3.1.1. Checking the project feasibility

  1. Try to answer three main questions

1. Can this system be build?

2. Is the project worth doing?

3. Will the users accept once finished?

  1. It is a detailed business analysis for the project done considering three aspects

1. Technical feasibility

2. Economical feasibility

3. Organizational feasibility

  1. At the end prepares the Feasibility report
  2. Project stakeholders

3.1.1.1. Technical feasibility

  1. Study all the sources of Technical risks associated with the system

3.1.1.2. Economical feasibility

  1. Assess financial viability of the project

3.1.1.3. Organizational feasibility

  1. Study the stakeholder’s perception on the project

3.1.1.4. Project stakeholders

  1. Stakeholder is a person or a group of people who are interested on the given project.
  2. For any software development project there are three main stakeholders

1. Project champion

2. Business organizational management

3.Users of the system

  1. Should consider all the stakeholders related to the project

3.1.2. Prepare Project work plan

  1. Identify the tasks to be completed.
  2. Draw a Work Breakdown (WBS) structure
  3. WBS is a hierarchical diagram listing all the tasks required to complete.
  4. WBS is read from left to right and top to bottom

3.1.2.1. Identify the tasks to complete

  1. prepare the work break down structure

-> Work breakdown structure is a diagram which lists all the tasks in the project.

-> It is a hierarchical diagram

  1. Then identify the time (duration) required to complete each task

-> Estimated start date, estimated end date, duration,

  1. Identify the resources required for each task

-> Work resources, material resources and costs

  1. Identify the tasks that are depended on each other
  2. Identify the special outcomes/ goals to achieve - Milestones
  3. Finally prepare a Gantt chart (Time plan) for the project
  4. Sources to identify the tasks

1. Software development methodologies

2. Experience

3. Previous projects

3.1.3. Form the team

  1. Every project requires a project team

-> Consists of system analysists, software designers, programmers, quality =>assurance engineers, software architects

  1. Every team will have a Project Manager

-> The project manager will direct and control the project related activities.

-> Maintain communication between the Project Champion and the team members.

-> Make decisions on project related activities

3.1.4. Initiate project management activities

  1. Project management is controlling and directing the project related activities such that the project trade offs are maintained.

1. Cost

2. Size

3. Time

  1. Staffing the project
  2. Motivating the team
  3. Refining project estimates (time and cost)
  4. Project scope management
  5. Project risk management

3.2. Analysis

  1. Perform a detail study about the project

1. Study the current business activities ( As-is System)

2. Identify the requirements of the new system (To-be system)

  1. Requirement gathering (requirement elicitation)
  2. Requirement analysis – identifying improvements
  3. Function modeling – prepare Usecase diagram and usecase scenarios
  4. Data modeling – Entity Relationship diagram
  5. Final outcome is – requirement definition

3.3. Design

  1. How to build the system that fulfills those needs
  2. Decide how to build the system
  3. Create system requirements that describe all technical details for building the system
  4. System requirement specification

1. Final deliverable from design phase

2. Conveys exactly what system the development team will implement during the implementation phase

3.3.1. Activities completed in the design phase

  1. Design the interfaces of the system

1. Identify user interfaces and system interfaces

2. Design user interface sketches

  1. Design the data storage – schema design
  2. Design the program – class diagram
  3. Design how the system is deployed – deployment diagram
  4. Identify the hardware and software required – network diagrams, hardware and software specification

3.4. Implementation

  1. Is the development of all parts of the system

1. Coding

2. Testing

3. Documentation

4. Installation and creating New operating procedures

5. Maintenance

3.4.1. Coding

  1. Class diagram, Entity relationship diagram, Network diagrams from the design phase will be the inputs.
  2. Program will be written as designed in the Class diagram
  3. Database will be created as designed in Entity relationship diagram
  4. Network infrastructure will be created according to the Network diagrams and the hardware and software specification

3.4.2. Testing

  1. Ensuring that the system fulfills the requirements.
  2. Testing helps ensure that the system performs as outlined in the specifications.
  3. It is dangerous to test early modules without an overall testing plan
  4. Ensure that the system is free of errors.
  5. Ensure the quality of the software is achieved.
  6. Ensure the quality of the software

3.4.2.1. Unit testing

  1. Tests each module – Does it performs its function?

3.4.2.2. Integration testing

  1. Tests the interaction of modules - do they work together?

3.4.2.3. System testing

  1. Tests to assure that the software works well as part of the overall system

3.4.2.4. Acceptance testing

  1. Tests to assure that the system serves organizational needs

3.4.3. Documentation

  1. Documentation provides information to make the system easier to use and repair.

3.4.3.1. System Documentation

  1. Intended to help programmers and analysts understand and maintain the system after it is installed

3.4.3.2. User Documentation

  1. Intended to help users operate the system

4. Summary

  1. Development of a software is not a single task. It involves may activities to be completed.
  2. A project should be properly planned and coordinated for it to be a success.
  3. Project trade offs (Scope, Time and Cost) should be controlled.
  4. SDLC is a guideline used in the Software development process to successfully develop and complete the software product.