Sunday, April 16, 2023

Software process model

 6.1 Software Project Concept

Software Project: Software project is group of tasks that need to be accomplishes in order to get a fully functional software product. Software projects can vary from small to large and can be operated by one or more person. Software projects are usually led by Software Project Manager who ensures the completion of software project on time fulfilling the requirements of the targeted clients.

Software Development Process

Software development process defines a sequence of tasks that must be carried out to build new software.

  • It groups the development activities into a sequence of phases.
  • A phase in sequence can only commence on the previous phase has been completed.
  • A report is produced at the end of each phase, describing what has been achieved and outlining the plan for the next phase.

 Fundamental activities for the software development process are

  •  Software Specification: The functionality or software and constraints on its operations must defined.
  • Software design and implementation: The software to meet the specifications must produce.
  • Software validation: The software must be validated to ensure that it does what the customer wants.
  • Software evolution: The software must evolve to meet changing customer needs.

 SDLC(Software/System Development life cycle)

SDLC (Software/System Development Life Cycle) is an organized way to develop a software/system. System Development Phase or System Development Life Cycle or Software Development Life Cycle (SDLC) is a methodology used to develop, maintain, and replace software/information systems.

  •  It is a systematic process of developing any software. It helps in establishing a system, or software or project, or plan. It gives an overall list of processes and sub-processes required for developing a system.
  • SDLC consists of a set of development activities that have a prescribed order. It is the development of software in chronological order.


 Importance and the necessity of SDLC

 

1.      It helps to determine the needs of the user.

 

2.      It supports constant communication between the developer and the user.

 

3.      SDLC helps for easy identification of missing requirements.

 

4.      It ensures that the software meets the needs of its users.

 

5.      It supports proper analysis and design of the software.

 

6.      It ensures proper development and testing.

 

7.      Proper documentation support for future upgrade and maintenance.

 

8.      It provide flexibility for adding features even after the software is developed.

 

SDLC Phases




1. System study:
It is the preliminary way of handling the user request to change, improve or enhance existing system. The objective is to determine the user requirement, whether the request is valid and feasible. In this phase, problem definition is well understood, as system intended to meet the need of an organization. Thus, the first step in the design is to specify these needs for requirements. The top manager of an organization takes the basic decision to use a computer-based information system for managing the organization. During this phase the objective of the system are identified. In general system Investigation studies, the following questions. What is to be done in the future?

How to do it?

When to do it?

Who will do it?

2. System analysis: The process of analyzing a system and trying to find a way to modify it or create a new system to meet the users need. In other words, the investigation into  system operation and possible changes to the system is called system analysis. The system is made up of many interrelated task, change to any one of this task to the addition of new task may affect the existing one. Therefore, it is necessary to understand the system and its problem which will help to reduce the failure due to any risk and uncertainties. Main activities which are undertaken in this phase. 

  • Definition of output requirements such as content, layout design etc.
  • Specification of input data such as source, format etc.
  • Development of overall logic.
  • Develop step by step algorithm and flowchart.
  • Develop a general test requirement.
3. System design: System design is concerned with the design of new system. It involves designing of various things such as output design, input design, files design, processing, and general program design etc. It consists of two parts: logical design and physical design.
  • Logical Design: Theoretically designing of the system is called logical design. The system could be designed based on the requirements.
  • Physical Design: The conversion of logical design into designing tools and techniques is called physical design. It is more detail and complex jobs describing the solution of the problem. It uses algorithms, flowcharts, pseudo codes, decision table, decision tree, E-R diagram, Data flow diagram etc.

Theoretically designing of the system is called logical design. The system could be designed based on the requirements. The conversion of logical design into designing tools and techniques is called physical design. It is more detail and complex jobs describing the solution of the problem.

To create the logical design different kinds of tools are used.

 Algorithm          Decision Table

 Flowchart          Decision Tree

 Pseudo codes    Data flow diagram

 Structured English         E-R diagram

4. System Development:    the process of writing programs using actual programming language is called system development. This is also called the programming phase in which the programmer converts the program specification into computer instruction, which we refer to as program. The programs co-ordinate the data movement and control the entire process in a system. A well written code reduces the testing and maintenance effort. This helps in fast development, maintenance and future changes if required programming tools like compiler, interpreter and languages like C, C++, Java script, PHP etc. are used for coding. With respect to the type of application, appropriate programming language should be chosen.

5. System testing: This steps includes whether the developed system can fulfill the user requirement or not. The testing is the process of validating the correctness of program. It's objective is to demonstrate that the program meets its designed specification. It is an investigation conducted to provide stake holder with information about the quality of the product or service under test. Some of the objective of system testing are :

  • To check whether developed system fulfills the user requirement or not.
  • To check whether developed system works as expected.

Some testing methods are:

a) Black box testing: Black box testing treats the software as a black box without any knowledge of internal implementation. It is also called functional testing because it tests whether a system is functioning or not. Here in this type of testing several known input is provided and checked whether the system generates expected output or not.

b) White box testing: In white box testing, procedural details are checked logical path through the software and between several components are tested through codes, statements and syntax analysis. White box testing is used when the tester has to the internal data structure and algorithms including the code that implement this. It is also called glass box testing.

6. System implementation: Implementation involves testing the installed system, converting from the old system to the new one and training the users. This phase consists of implementation of the system into a production environment, and resolution of the problem identified in testing phase.

                Types of System Implementation:

  • Direct Conversion: All users stop using old system at the same time and then begin using the new. This option is very fast, less costly but more risky.
  •  Parallel conversion: Users continue to use old system while an increasing amount of data is processed through the new system. Both the systems operate at the same time until the new system works smoothly. This option is costly but safe approach.
  •  Phased conversion: Users start using the new system component by component. This option works only for systems that can be compartmentalized. This option is safe and conservative approach.
  •  Pilot conversion: Personnel in a single pilot-site use the new system, and then the entire organization makes the switch. Although this option may take more time, it is very useful in big organizations where a large number of people make the conversion.
7. System Maintenance: When the system is implemented, maintenance and modification begins. like any system, there is an aging process that requires periodic maintenance of hardware and software. There may be need of new modification which are done in this phase. The software and hardware requires periodic maintenance to as to keep in tune with design specification and to innovate new ideas into the system. The different types of maintenance are:
    Types of Maintenance

  • Corrective Maintenance: it corrects the run time errors during the operation.
  • Adaptive Maintenance: It modifies or adds new features in the system.
  • Perfective Maintenance: It makes the system perfect, up-to-date and improve the life of the system.

 System development model

A software process model is a representation or abstraction of the software development process. It defines the various stages and activities involved in developing software, as well as the relationships between these stages and activities. Different process models exist, each with its own set of characteristics, advantages, and disadvantages. Here are some common software process models:

  • waterfall model
  • prototype model
  • agile model
  • spiral model(The Spiral model is a risk-driven software development process model that combines elements of both iterative and waterfall models. )
 Waterfall model: The Waterfall model is a traditional sequential software development process model. It follows a linear and sequential approach, where progress flows steadily downwards through several distinct phases. Each phase must be completed before the next one begins, and typically there is no going back to previous phases once they are completed. The phases of the Waterfall model typically include:

  



                                            figure: waterfall model


Different  phases of waterfall model.

  1. Requirements: Gathering and documenting the requirements for the software system.
  2. Design: Creating a detailed design of the software based on the gathered requirements.
  3. Implementation: Writing and coding the software based on the design specifications.
  4. Testing: Conducting various tests to identify and fix defects or issues in the software.
  5. Deployment: Deploying the software to the production environment for actual use by end-users.
  6. MaintenanceMaintenance in software development refers to the ongoing process of supporting, updating, and improving software products after they have been deployed.

Advantages

 

  1.   It is simple model suitable for small size project.
  2.   It is less expensive.
  3.  Provides a structured approach to software development.
  4. Emphasizes documentation, aiding in project understanding and maintenance

Disadvantages

  1.     It has no back track mechanism.
  2.      It is not suitable for large size project.
  3.     It has lack of proper documentation.
  4.  lack of client involvement until late in the process.
  5. Higher risk of delivering a product that doesn't meet user needs.


Prototyping Model: It is the iterative process of system development which is more appropriate for developing new system where there is no clear idea of requirements, inputs and outputs. These systems are then continuously modified until the user is satisfied. This model is applied when there is an absence of detail information regarding input and output requirement of a software. It doesn't cover any risk management.

 

  • 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

  • The users get a better understanding of the system being developed.
  • Errors can be detected much earlier as the system is made side by side.
  • Quicker user feedback is an available leading to better solutions of the system.

                Disadvantages

  • It leads to implementing and repairing way of building systems.
  • It may increase the complexity of the system as scope of the system may expand beyond original plans.

 Agile modelAgile model is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product. It breaks the product into small incremental builds. these builds are provided in iterations. Each iteration typically lasts from about one to three weeks. Every iteration involves cross functional teams working simultaneously on various areas.

 In the Agile model, the requirements and solutions evolve through the collaborative effort of self-organizing and cross-functional teams. Customer satisfaction is the highest priority, and the team works closely with the customer or product owner to ensure that the product meets their needs.


steps involved in agile model

  • planning
  • requirement analysis
  • designing
  • building/coding
  • testing

here are the key principles of Agile software development

  • Deliver working software frequently, in short iterations.
  • Embrace changing requirements, even late in development.
  • Collaborate closely with customers and stakeholders throughout the project.
  • Build projects around motivated individuals and trust them to get the job done.
  • Prioritize face-to-face communication within the team.
  • Measure progress by working software rather than documentation.
  • Maintain a sustainable pace to ensure long-term productivity.
  • Focus on technical excellence and simplicity to enhance agility.

 The advantages of the Agile Model are as follows −

  • Flexibility and adaptability to changes in requirements and market conditions
  • Increased customer satisfaction through regular feedback and working software delivery
  • Improved collaboration, communication, and decision-making among team members and stakeholders
  • Faster time to market through smaller, more frequent releases of working software
  • Early and continuous testing for improved quality and defect identification
  • Greater transparency and visibility into the development process and progress
  • Empowered, self-organizing teams with a sense of ownership and motivation

The disadvantages of the Agile Model are as follows −

  • Lack of predictability in terms of cost, schedule, and scope
  • Dependency on team dynamics and collaboration
  • Need for experienced team members
  • Documentation challenges for compliance or regulatory reasons
  • Potential for scope creep
  • Customer availability and engagement challenges
System Analyst:
System analyst is person who is involved in analyzing, designing, implementing and evaluating computer-based information systems to support the decision-making activities and operations of an organization.

 The characteristics (attribute


s) of system analyst are as follows:

1.      Knowledge of organization.

2.      Technical Knowledge.

3.      Interpersonal Communication Skill.

4.      Character and Ethics.

5.      Problem-Solving Skill.

1.      Defining the problem

2.      Analyzing the problem

3.      Considering Many alternatives

4.      Evaluating many alternative

5.      Choosing the best alternatives

6.      System analysis and Design skills


 Dutie


s and Responsibilities of System


Analyst

1.      Defining Requirements

2.      Prioritizing Requirements

3.      Analysis and Evaluation

4.  Solving Problems

5.      Drawing up functional specification

6.      Designing System

7.      Evaluating System


 System Analyst vs Software Engineer

The major difference between a software engineer and a software analyst is that the engineer’s responsibilities lie with developing and programming the software. In some cases, the term software engineer and programmer or developer are interchangeable. An analyst, meanwhile, is more responsible for documenting the progress of a project for quality control and relaying information about the end users’ preferences to the engineer or programmer. A software analyst may also not be as technically gifted or proficient with programming as the engineer.

Software EngineerSystems Analyst
Software Engineers are primarily responsible for developing and maintaining software systems.Systems Analysts primarily focus on analyzing business requirements and designing system solutions.
Software Engineers concentrate on software development and implementation.Systems Analysts focus on business process analysis and system design.
Software Engineers are tasked with coding, testing, debugging, and deploying software applications.Systems Analysts are responsible for tasks such as requirements gathering, documentation, and system integration.
Software Engineers collaborate closely with development teams to ensure effective software development.Systems Analysts act as liaisons between stakeholders and technical teams to facilitate communication and understanding.
Software Engineers require proficiency in programming languages, frameworks, and problem-solving skills.Systems Analysts require strong analytical, communication, and documentation skills to effectively gather requirements and design solutions.

 

 

Requirement Collection methods
Requirement collection methods refer to the techniques and processes used to gather information about the needs, preferences, and expectations of stakeholders for a particular project or system. The collected requirements are then used to guide the development of the project or system, ensuring that it meets the needs of its intended users. various methods are as follows:

1.     Interviews: These conversations provide in-depth insights into stakeholder perspectives and expectations.

2.     Surveys and Questionnaires: Surveys and questionnaires can be sent out to a large group of stakeholders to gather information about their needs and preferences. This method can be useful when collecting information from a large number of people.

3.     Workshops and Focus Groups: Workshops and focus groups are interactive sessions where stakeholders can collaborate and brainstorm ideas. These sessions can be facilitated by a system analyst and can result in valuable insights into user needs and preferences.

4.     Observation: Direct observation allows for understanding user behaviors and uncovering unarticulated needs.

5.     Prototyping: Creating a prototype or mock-up of the system can help users visualize the end product and provide feedback on what they like and dislike about the design. This approach can be useful when collecting requirements for a new system or feature.

6.     Document Analysis: Examining existing documentation, such as business plans, user manuals, or technical specifications, can provide valuable insights into the requirements for a system.

7.     Use Cases: Use cases are scenarios that describe how users interact with the system. They can be used to identify user needs and requirements, as well as potential areas for improvement.

8.     Brainstorming: is a technique used to generate ideas and solve problems by encouraging free and open discussion among a group of people. During a brainstorming session, participants are encouraged to share any ideas that come to mind, no matter how unconventional or unrealistic they may seem. The goal is to generate as many ideas as possible, without judgment or criticism.

 


Software and Quality:

Software quality refers to the degree to which a software product meets its intended requirements, meets the needs of its users, and is free from defects and errors. Quality software is reliable, efficient, maintainable, and scalable, and it satisfies the functional and non-functional requirements specified by stakeholders. The quality of software is typically measured by evaluating its performance, functionality, usability, reliability, security, and maintainability.

Good software is characterized by several key attributes, including:

  1. Functionality: The software meets the requirements and specifications that it was designed for, and it behaves as expected when it is used in its intended environment.
  2. Usability: The software is easy to use and understand, and it provides a positive user experience.
  3. Reliability: The software is free of defects and it performs consistently and accurately under different conditions and scenarios.
  4. Performance: The software runs efficiently and quickly, and it can handle large amounts of data or traffic.
  5. Security: The software is protected against unauthorized access and it keeps the data and functions safe from malicious attacks.
  6. Maintainability: The software is easy to change and update, and it is well-documented, so that it can be understood and modified by other developers.
  7. Reusability: The software can be reused in other projects or applications, and it is designed in a way that promotes code reuse.
  8. Scalability: The software can handle an increasing workload and it can be easily extended to meet the changing requirements.
  9. Testability: The software is designed in a way that makes it easy to test and validate, and it has a comprehensive test coverage.

Feasibility study:

Feasibility study is the most important activity in the system analysis phase. It analyses the proposed system from different aspects so that it makes us clear that how practical or beneficial the system will be to the organization. So it tells us whether the system is feasible to design nor not. Thus it is necessary before system design.

The different(types) levels of feasibility study are as:

1.      Economic feasibility: it concerns with cost effectiveness of the system. The main objective of economic feasibility is to calculate approximate cost-both the development cost and the operational cost and the benefits from the system.

2.      Technical feasibility: it concerns with the availability of the hardware, software and the support equipment for the complete development of the system.

3.      Operational feasibility: it concerns with smooth operation of the system. It is all about the problems that may occur during operation of the system after its development.


4.      Behavior feasibility: it concerns with behavior of the users and the society towards the new system. Generally, most of the traditional employees are not easily ready to upgrade them with the new system.

5.      Schedule feasibility: it is the process of splitting project into tasks and estimate time and resources required to complete each task. It determines the deadline to complete a system and schedule the task accordingly.

6.      Legal feasibility: it concerns with legal issue of the system. If the system is illegal then the system designing is meaningless. Everything is measured whether it is legal or illegal. It considers copyright law, foreign law, foreign trade, tax, etc.

System Design Tools:

The tools which are used to design the system in known as system design tools. They are used during system analysis and design phase of the system development.

1.      Algorithm: An algorithm is defined as the finite sequences of instructions for solving a problem.

2.   Flowchart: A flowchart is the pictorial representation of an algorithm which is classified into two types’ system flowchart and program flowchart.  

I)                   System flowchart: System flowchart describes the internal architecture of a system that describes how data are moved inside the internal components of a system.

II)                 Program flowchart: Program flowchart describes to solve the application types of real world problem.

3.  DFD (Data flow diagram):DFD is the logical diagram to describe the flow of data inside the components of system. It is easier to understand or grasp when being explained and most important to all, it is much more precise and less ambiguous than a narrative one. The main components are: process, data store, data flow, external entities.

4.      Context Diagram: It is combination of many other DFD. It is the highest level of DFD. It contains only one process, representing the entire system, the process is given the symbol circle. The external entities are denoted by rectangle. The flow of data is described by arrow.

5.      ER (Entity Relationship) diagram: The E-R diagram is an overall logical structure of a database that can be expressed graphically. It was developed to facilitated database design and the simplicity and pictorial clarity of this diagramming technique have done great help in the designing part of database. The main components are attributes, entities and relationship.

 6.      Case diagram: Computer aided software engineering tool is automatic computer based program that helps for software engineering and SDLC process. It is very fast and effective tools for the development of big scale software. It helps in analysis, design, implementation, testing and maintenance.

 

7.      UML: Unified Modeling Language is a standardized general purpose modeling language in the field of object-oriented software engineering. The standard is managed, and was created by, the object management group. UML includes a set of graphic notation techniques to create visual models of object-oriented software.

8.      Decision Table: A table allows us to identify the exact course of actions for given conditions in tabular form. Decision table is a tabular representation of the logic of a decision, which specifies the possible conditions for the decision and the resulting actions.

9.      Decision Tree: Decision tree is also a technique to represent condition and actions in a diagrammatic form in computer. A decision tree allows us to identify the exact course of actions for given conditions in tree structures.

10.  Pseudo Code: It is a kind algorithm for solving a problem and the instructions of pseudo code are written by using English phrase and mathematical expressions.

 

 


 




No comments:

Post a Comment

OOPS

   paradigm refers to a style or approach to solving problems and organizing code in a particular way. It dictates how developers think abo...