Software Process Model (SPM) Chapter 6 Grade XII

Chapter 6

Software Process Model (SPM) 


6.1 SOFTWARE PROJECT CONCEPT

• A software project is the complete software development process that starts with gathering requirements, analyzing, designing, coding, and testing in a given time frame to produce the desired software output.

A project can be characterized as:

➢ Every project may have its own set of goals.
➢ A project is not a day-to-day operation or a normal task.
➢ Each project has a beginning and an end date.
➢ A project is completed when its aim is met, hence it is only a brief phase in an organization's life cycle.
➢ A project requires sufficient resources in terms of time, manpower, finance, material, and knowledge.

6.2 CONCEPT OF SOFTWARE DEVELOPMENT PROCESS

• The software development process is the process of developing software by dividing software development work into several phases.
• The process is also known as a software development life cycle (SDLC), which includes several phases that provide a method for building products that meet technical specifications and user requirements.
• SDLC is a systematic process for developing software systems.
• It is part of software engineering. So, the software development life cycle is the set of activities and associated results that produce a software product.
• There are four fundamental process activities that are common to all software development processes. They are as follows:

Software Specification: In this step, the development teams and the end users come together to define the software and the constraints on its operation.
Software development: This phase doesn’t include end users. Here, the software development team becomes busy designing and developing the system.
Software Validation: Here, the developed system is checked to confirm whether it fulfills all the requirements of the user or not.
Software Evolution: In this phase, some of the functionality of software will be added to adapt it to changing customer and market requirements.

6.3 CONCEPT OF SDLC LIFE CYCLE

• Software development is the creation of a new system or modification of an existing system.
• Software development is a continuous process that includes different phases for developing systems.
• The sequence of phases or steps that take place during the development of a system or software is known as the software development life cycle (SDLC).
• The different phases of the system development life cycle are:
a. System Study
b. System Analysis
c. System Design
d. System Coding
e. System Testing
f. System Implementation
g. System maintenance and review
6.3 CONCEPT OF SDLC LIFE CYCLE 

a. System Study
System study is the first phase of SDLC where the development team studies the system and tries to find out what the system should do. It is a very important phase where planning is done after the analysis of the requirements. Any fault in this phase may cause the failure of the entire system. In this phase, the development team generates the document that explains the specifications of the system. This phase consists of the following processes:

i. Problem Definition (Preliminary Investigation)
In the problem definition phase, the development team (a group of system analysts) consults the users and tries to find out their problems or requirements. In this phase, the development team mainly focuses on the following things:
➢ Defining the problem and deciding whether to process it or not,
➢ Analyzing the current system, i.e., the drawbacks of the current system,
➢ Selecting the best solution to address those problems.

ii. Needs Analysis
In the problem definition phase, the problem is identified and it is necessary to analyze it in detail. In this phase, the detailed study of the problems is performed. The software and hardware components are also analyzed in this phase in depth so that it will be easy for the development team to carry out the tests in other phases.

iii. Feasibility Study
A feasibility study is the study of finding out whether the system development is technically, operationally, and financially feasible or not. In this process, the system development team ensures that the requirements presented by the user or organization are feasible or not and declares that the system development task should be continued or stopped. Different levels of feasibility studies are as follows:
➢ Technical Feasibility
It ensures that the system development task can be continued with the existing technical environment (i.e. technical experts, required hardware, and software) or not.
➢ Financial Feasibility
In this feasibility study, different costs like human resource cost, operation cost, development cost, hardware, and software cost are analyzed properly to ensure whether the system can be developed within the existing budgetary constraints or not.
➢ Operational Feasibility
This study is related to the human resources of the organization. This feasibility study will ensure whether the system can run in the existing environment of the organization with working human resources or not.
➢ Behavioral Feasibility
This feasibility study is related to the behavior of employees, users, or society who are directly or indirectly related to the adaption of the new system to the organization.

b. System Analysis
• It is a process of analyzing the requirements of the system.
c. System Design
• After analyzing the requirements or problems, the software development team will start designing the solutions for the problems.
• System Design is a process of planning a new system, modifying or replacing an existing system.
• In this phase, the development team uses the program design tools like algorithm, flowchart, Data flow diagram (DFD), Entity Relation Diagram, etc., to solve the requirements of the user.
d. System Coding
• Coding is the process of writing, assembling, and compiling program code.
• In the coding phase, the development team writes the code and design, which must be decoded into a machine-readable form.
• For the generation of code, programming tools like compilers, interpreters, and debuggers are used. For coding purposes, different high-level programming languages like C, C++, Pascal, and Java are used.

e. Testing
• System testing is the process of performing a variety of tests on a system to explore functionality or to
identify problems.
• A series of systematic procedures are performed that tell the tester how the system should perform and
where common mistakes may be found.
• White box testing and black box testing are two different methods for system testing. White box testing is a verification technique that examines whether code works as expected.
Black-box testing treats the system as a "black-box", so it doesn't explicitly use knowledge of the internal structure.
f. Implementation
• When the software is finally ready, and after testing, that software will be delivered to the user
for use. Implementation is the realization of an application. The implementation phase involves
installing approved applications into production environments.
g. Maintenance
• Maintenance includes all the activities related to the fixing of errors that is done after the installation of software
• Documentation is the process of gathering and putting together anything that is used as information by any person regarding the system.

6.4 SYSTEM ANALYST VS SOFTWARE ENGINEER

System Analyst
• A system analyst is an IT professional who acts as a mediator between clients and their technical team.
• A system analyst works with the existing computer system and troubleshoots the system to optimize the efficiency and safety of the system.
• The system analyst trains the clients to operate the system and ensures the smooth functioning of the system.
• He or she analyzes, designs, implements, and evaluates an organization's information system.

Software Engineer
• A software developer is responsible for creating new software or modifying existing software.
• A software engineer determines the software needs of an individual or organization by analyzing what is currently in place and where it falls short.
• He/she is also responsible for monitoring and maintaining the performance of the software.

6.5 REQUIREMENT COLLECTION METHODS

• Requirement collection is the process of generating a list of requirements (functional, system,
technical, etc.) from all the stakeholders (customers, users, vendors, IT staff) that will be used as
the basis for the formal definition of what the project is.
• The following are some methods for requirement collection:
a. Interview
Interviews are invaluable for gathering background information on business needs, customers’ and users’ problems, and the concerns of support staff and other relevant stakeholders. Interviews can also be used in follow-up to gather more detailed information.
b. Survey/Questionnaire
We can collect information from many people by doing a survey or questionnaire. The survey can force users to select from choices, rate something (“Agree strongly, agree…”), or have open ended questions allowing free-form responses.
c. Requirement Workshops
Workshops can be very effective for gathering requirements.
d. Focus Group
A focus group is a gathering of people who are representative of the users or customers of a product to get feedback.
e. Brainstorming
Brainstorming is used in requirement gathering to get as many ideas as possible from a group of people.

System Design:


Process of creating, evaluating, and finalizing solutions to meet specific goals.
Focuses on transforming requirements into detailed technical specifications.
 Some of system designing tools are:-
1. Algorithm
Definition: Step-by-step instructions to solve a specific problem.
Characteristics:
Sequential and logical steps.
Ensures clarity and precision in problem-solving.
Example:
Algorithm to find the largest of two numbers:
Step 1: Start
Step 2: Input two numbers (a, b).
Step 3: Check if (a > b):
True → Output "a is the largest."
False → Output "b is the largest."
Step 4: Stop

2. Flowchart
Definition: Diagrammatic representation of a process or system flow using symbols.
Symbols:
Oval: Start/Stop.
Rectangle: Process step.
Diamond: Decision-making.
Arrow: Flow direction.
Purpose: Visualizes logical flow, simplifies understanding, and aids debugging.
Symboles

Examples


3. Data Flow Diagram (DFD)
Definition: Graphical representation of data movement within a system.
Components:
External Entity: Source/destination of data.
Process: Activities transforming inputs into outputs.
Data Store: Storage points.
Data Flow: Arrows showing data movement.
Purpose: Visualizes how data flows between components.
Symboles
examples




4. ER Diagram (Entity-Relationship Diagram)
Definition: Visual representation of entities, attributes, and relationships in a database.
Key Elements:
Entity: Objects (e.g., Student, Course).
Attribute: Properties of entities (e.g., Name, ID).
Relationship: Connection between entities (e.g., Enrollment links Student and Course).
Purpose: Simplifies database structure and relationships.
Symboles
examples




5. Decision Table
Definition: Tabular representation of conditions and actions to handle decision-making.
Components:
Conditions: Inputs or criteria.
Actions: Outputs or outcomes.
Rules: Combination of conditions leading to specific actions.
Purpose: Ensures clear, logical, and consistent decision-making.
example

System Development Model

A) The waterfall Model:

 This model is some time called classic life cycle because it suggest a systematic sequential approach to software development that begins with customer specification of requirements and progress through planning, modeling, construction etc. It is an oldest type of model for software engineering. It takes the fundamental process activities of specification, development, validation and evolution & represents them as separate process phases such as requirements specification, software design, implementation testing and so on.
a. Requirement analysis & definition: In this stage the system's services constrain and goals are established by consultation with system users. They are  defined in details and serve as system specification.

b. System and software design: In this stage the system design process partition the requirements to either hardware or software system. It establishes overall system architecture. Software design involves identifying and describing the fundamental software system abstraction and their relationship.

c. Implementation and unit testing: During this stage, the software design is realized as a set of programs or program unit testing involves verifying that each unit meets its specification.

d. Integration and system testing: The individual programs units or programs are integrated and tested as a complete system to ensure that the software system is delivered to the customer.

e. Operation and maintenance: Normally, this is the longest life cycle phase. The system is the installed and put into practical use, maintenance involves correcting errors which are not discovered in earlier stage of the life cycle improving the implementation of system units and enhancing the system service as a new requirements are discovered.

B) Prototyping Model: 

This model is applied when there is an absence of detail information regarding input and output requirement of a software. Prototype model is suitable when the requirement of the client is not clear and it is supposed to be changed. It doesn't cover any risk management.
Development of prototype.

Identify user problem: The system analyst interviews the user to obtain an idea of what is required from the system.

Develop a prototype: The system analyst, working with other information specialist uses one or more prototyping tool to develop a prototype.

Determine if prototype is acceptable: The system analyst educates the user in prototype and provides an opportunity becoming familiar with the system. The user advises the analyst whether the prototype is satisfactory or not. If yes then the prototype will be used if not again the loop continues from beginning.

Use the prototype: The prototype becomes operational system.

Advantages of prototyping model

Helps in reducing risk associated with the the project.
There is great involvement of user in software development.

Disadvantages of prototyping model
Time consuming and expensive because if the user is not satisfied by the developed prototype new prototype should be developed. This process goes on until a perfect prototype is developed which satisfies the user.

C) Spiral model: 

In this model, process is represented as a spiral rather than a sequence of activities with back tracking. Each loop in the spiral represent a phase in the process. It has no fixed phase such a specification or design. Loops in the spiral are chosen depending upon what is required. This model combines the feature of both waterfall model and prototype model. The spiral model is favorable of large, expensive and complicated  projects. It is a system development method in Looping structure. In this model planning, risk analysis, software development and user evaluation are repeatedly processed until the system performed correct output.
Planning: The project is reviewed and the decision is made whether to continue with a further loop of a spiral. If it is decided to continue, plan has to be drawn up for the next phase of the project.

Risk analysis: For each of the identified project risk, detail analysis is carried out. Steps are taken to reduce the risk. For example: if there is a risk that the requirement are inappropriate, a prototype system may be developed.

Software development: After risk evaluation a development model of the system is chosen.

User evaluation: Specific objective for the phase of the project are defined by the evolution of the user. Here, user requirement and the product are identified and checked whether it fulfills the specification or not.

Advantages of spiral model

It emphasize on risk, which are often ignored.
Some phases are in loop, it is effective for regular updates.
Effective user feedback.
It emphasize on quality.

Disadvantage of spiral model
Full scale risk analysis need training and maybe expensive. Hence, it is only applicable for large project.
This model is relatively untested.

D) Agile Model

Agile model believes that every project needs to be handled differently and the existing methods need to be tailored to best suit the project requirements. In Agile, the tasks are divided to time boxes (small time frames) to deliver specific features for a release.

Iterative approach is taken and working software build is delivered after each iteration. Each build is incremental in terms of features; the final build holds all the features required by the customer.


Agile Model - Pros and Cons

Agile methods are being widely accepted in the software world recently. However, this method may not always be suitable for all products. Here are some pros and cons of the Agile model.

The advantages of the Agile Model are as follows −

  • Is a very realistic approach to software development.

  • Promotes teamwork and cross training.

  • Functionality can be developed rapidly and demonstrated.

  • Resource requirements are minimum.

  • Suitable for fixed or changing requirements

  • Delivers early partial working solutions.

  • Good model for environments that change steadily.

  • Minimal rules, documentation easily employed.

  • Enables concurrent development and delivery within an overall planned context.

  • Little or no planning required.

  • Easy to manage.

  • Gives flexibility to developers.

The disadvantages of the Agile Model are as follows −

  • Not suitable for handling complex dependencies.

  • More risk of sustainability, maintainability and extensibility.

  • An overall plan, an agile leader and agile PM practice is a must without which it will not work.

  • Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.

  • Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong direction.

  • There is a very high individual dependency, since there is minimum documentation generated.

  • Transfer of technology to new team members may be quite challenging due to lack of documentation.









Comments

Popular posts from this blog

Final Project Report for grade XII

Final Project

COMPUTER SYSTEM