Author: saqibkhan

  • Size Oriented Metrics

    LOC Metrics

    It is one of the earliest and simpler metrics for calculating the size of the computer program. It is generally used in calculating and comparing the productivity of programmers. These metrics are derived by normalizing the quality and productivity measures by considering the size of the product as a metric.

    Following are the points regarding LOC measures:

    1. In size-oriented metrics, LOC is considered to be the normalization value.
    2. It is an older method that was developed when FORTRAN and COBOL programming were very popular.
    3. Productivity is defined as KLOC / EFFORT, where effort is measured in person-months.
    4. Size-oriented metrics depend on the programming language used.
    5. As productivity depends on KLOC, so assembly language code will have more productivity.
    6. LOC measure requires a level of detail which may not be practically achievable.
    7. The more expressive is the programming language, the lower is the productivity.
    8. LOC method of measurement does not apply to projects that deal with visual (GUI-based) programming. As already explained, Graphical User Interfaces (GUIs) use forms basically. LOC metric is not applicable here.
    9. It requires that all organizations must use the same method for counting LOC. This is so because some organizations use only executable statements, some useful comments, and some do not. Thus, the standard needs to be established.
    10. These metrics are not universally accepted.

    Based on the LOC/KLOC count of software, many other metrics can be computed:

    1. Errors/KLOC.
    2. $/ KLOC.
    3. Defects/KLOC.
    4. Pages of documentation/KLOC.
    5. Errors/PM.
    6. Productivity = KLOC/PM (effort is measured in person-months).
    7. $/ Page of documentation.

    Advantages of LOC

    1. Simple to measure

    Disadvantage of LOC

    1. It is defined on the code. For example, it cannot measure the size of the specification.
    2. It characterizes only one specific view of size, namely length, it takes no account of functionality or complexity
    3. Bad software design may cause an excessive line of code
    4. It is language dependent
    5. Users cannot easily understand it
  • Software Metrics in Software Engineering

    A software metric is a measure of software characteristics which are measurable or countable. Software metrics are valuable for many reasons, including measuring software performance, planning work items, measuring productivity, and many other uses.

    Within the software development process, many metrics are that are all connected. Software metrics are similar to the four functions of management: Planning, Organization, Control, or Improvement.

    Classification of Software Metrics

    Software metrics can be classified into two types as follows:

    1. Product Metrics: These are the measures of various characteristics of the software product. The two important software characteristics are:

    1. Size and complexity of software.
    2. Quality and reliability of software.

    These metrics can be computed for different stages of SDLC.

    2. Process Metrics: These are the measures of various characteristics of the software development process. For example, the efficiency of fault detection. They are used to measure the characteristics of methods, techniques, and tools that are used for developing software.

    Software Metrics

    Types of Metrics

    Internal metrics: Internal metrics are the metrics used for measuring properties that are viewed to be of greater importance to a software developer. For example, Lines of Code (LOC) measure.

    External metrics: External metrics are the metrics used for measuring properties that are viewed to be of greater importance to the user, e.g., portability, reliability, functionality, usability, etc.

    Hybrid metrics: Hybrid metrics are the metrics that combine product, process, and resource metrics. For example, cost per FP where FP stands for Function Point Metric.

    Project metrics: Project metrics are the metrics used by the project manager to check the project’s progress. Data from the past projects are used to collect various metrics, like time and cost; these estimates are used as a base of new software. Note that as the project proceeds, the project manager will check its progress from time-to-time and will compare the effort, cost, and time with the original effort, cost and time. Also understand that these metrics are used to decrease the development costs, time efforts and risks. The project quality can also be improved. As quality improves, the number of errors and time, as well as cost required, is also reduced.

    Advantage of Software Metrics

    The advantages of software metrics are as follows:

    1. Comparative study of various design methodology of software systems.
    2. For analysis, comparison, and critical study of different programming language concerning their characteristics.
    3. In comparing and evaluating the capabilities and productivity of people involved in software development.
    4. In the preparation of software quality specifications.
    5. In the verification of compliance of software systems requirements and specifications.
    6. In making inference about the effort to be put in the design and development of the software systems.
    7. In getting an idea about the complexity of the code.
    8. In taking decisions regarding further division of a complex module is to be done or not.
    9. In guiding resource manager for their proper utilization.
    10. In comparison and making design tradeoffs between software development and maintenance cost.
    11. In providing feedback to software managers about the progress and quality during various phases of the software development life cycle.
    12. In the allocation of testing resources for testing the code.

    Disadvantage of Software Metrics

    The disadvantages of Software Metrics are as follows:

    1. The application of software metrics is not always easy, and in some cases, it is difficult and costly.
    2. The verification and justification of software metrics are based on historical/empirical data whose validity is difficult to verify.
    3. These are useful for managing software products but not for evaluating the performance of the technical staff.
    4. The definition and derivation of Software metrics are usually based on assuming which are not standardized and may depend upon tools available and working environment.
    5. Most of the predictive models rely on estimates of certain variables which are often not known precisely.

    Characteristics of Software Metrics:

    In software engineering, software metrics ought to have the following qualities.

    • Quantitative: In order to be useful metrics, need to be quantitative. It implies that measurements are able to be expressed numerically.
    • Intelligible: Metric computation should be easy to understand and the process should be clearly described.
    • Applicability: Early in the software development process metrics should be used.
    • Repeatable: Metric values ought to be the same when taken consistently, on a regular basis.
    • Economic: It should be economical to compute metrics.
    • Language agnostic: Metrics should not rely on any programming language for computation. they should be language-independent.

    Requirements of Software metrics:

    Among the many uses for software metrics in software engineering are productivity, estimation work item, planning software performance analysis and more. Software metrics can be used to track productivity plan, future tasks, monitor performance, and better control the production process during project management. Together with management functions software metrics can also help you streamline your projects by establishing more effective processes, planning software maintenance, and informing production teams of problems that need to be fixed. Among the many reasons why software metrics are necessary are the following:

    • It is possible to save money by avoiding errors.
    • Contributes to better project planning overall.
    • Contributes to the development of project planning in general.
    • This stimulates a desire to enhance procedures.
    • Facilitates a more in-depth examination of the risks.
    • Contributes to the analysis of indicators at every testing phase to improve the effectiveness of problem eradication.
    • Over time test automations return on investment rises.
    • Strengthens the link between system complexity risks and testing coverage.
  • Project Management Tools

    To manage the Project management system adequately and efficiently, we use Project management tools.

    Here are some standard tools:

    Gantt chart

    Gantt Chart first developed by Henry Gantt in 1917. Gantt chart usually utilized in project management, and it is one of the most popular and helpful ways of showing activities displayed against time. Each activity represented by a bar.

    Gantt chart is a useful tool when you want to see the entire landscape of either one or multiple projects. It helps you to view which tasks are dependent on one another and which event is coming up.

    Project Management Tools

    PERT chart

    Project Management Tools

    PERT is an acronym of Programme Evaluation Review Technique. In the 1950s, it is developed by the U.S. Navy to handle the Polaris submarine missile programme.

    In Project Management, PERT chart represented as a network diagram concerning the number of nodes, which represents events.

    The direction of the lines indicates the sequence of the task. In the above example, tasks between “Task 1 to Task 9” must complete, and these are known as a dependent or serial task. Between Task 4 and 5, and Task 4 and 6, nodes are not depended and can undertake simultaneously. These are known as Parallel or concurrent tasks. Without resource or completion time, the task must complete in the sequence which is considered as event dependency, and these are known as Dummy activity and represented by dotted lines.

    Logic Network

    The Logic Network shows the order of activities over time. It shows the sequence in which activities are to do. Distinguishing events and pinning down the project are the two primary uses. Moreover, it will help with understanding task dependencies, a timescale, and overall project workflow.

    Product Breakdown Structure

    Project Management Tools

    Product Breakdown Structure (BBS) is a management tool and necessary a part of the project designing. It’s a task-oriented system for subdividing a project into product parts. The product breakdown structure describes subtasks or work packages and represents the connection between work packages. Within the product breakdown Structure, the project work has diagrammatically pictured with various types of lists. The product breakdown structure is just like the work breakdown structure (WBS).

    Work Breakdown Structure

    It is an important project deliverable that classifies the team’s work into flexible segments. “Project Management Body of Knowledge (PMBOK)” is a group of terminology that describes the work breakdown structure as a “deliverable-oriented hierarchical breakdown of the work which is performed by the project team.”

    There are two ways to generate a Work Breakdown Structure ? The top-down and

    The bottom-up approach.

    In the top-down approach, the WBS derived by crumbling the overall project into subprojects or lower-level tasks.

    The bottom-up approach is more alike to a brainstorming exercise where team members are asked to make a list of low-level tasks which is required to complete the project.

    Resource Histogram

    The resource histogram is precisely a bar chart that used for displaying the amounts of time that a resource is scheduled to be worked on over a prearranged and specific period. Resource histograms can also contain the related feature of resource availability, used for comparison on purposes of contrast.

    Critical Path Analysis

    Critical path analysis is a technique that is used to categorize the activities which are required to complete a task, as well as classifying the time which is needed to finish each activity and the relationships between the activities. It is also called a critical path method. CPA helps in predicting whether a project will expire on time.

  • Activities

    Software Project Management consists of many activities, that includes planning of the project, deciding the scope of product, estimation of cost in different terms, scheduling of tasks, etc.

    The list of activities are as follows:

    1. Project planning and Tracking
    2. Project Resource Management
    3. Scope Management
    4. Estimation Management
    5. Project Risk Management
    6. Scheduling Management
    7. Project Communication Management
    8. Configuration Management

    Now we will discuss all these activities –

    1. Project Planning: It is a set of multiple processes, or we can say that it a task that performed before the construction of the product starts.

    2. Scope Management: It describes the scope of the project. Scope management is important because it clearly defines what would do and what would not. Scope Management create the project to contain restricted and quantitative tasks, which may merely be documented and successively avoids price and time overrun.

    3. Estimation management: This is not only about cost estimation because whenever we start to develop software, but we also figure out their size(line of code), efforts, time as well as cost.

    If we talk about the size, then Line of code depends upon user or software requirement.

    If we talk about effort, we should know about the size of the software, because based on the size we can quickly estimate how big team required to produce the software.

    If we talk about time, when size and efforts are estimated, the time required to develop the software can easily determine.

    And if we talk about cost, it includes all the elements such as:

    • Size of software
    • Quality
    • Hardware
    • Communication
    • Training
    • Additional Software and tools
    • Skilled manpower

    4. Scheduling Management: Scheduling Management in software refers to all the activities to complete in the specified order and within time slotted to each activity. Project managers define multiple tasks and arrange them keeping various factors in mind.

    For scheduling, it is compulsory –

    • Find out multiple tasks and correlate them.
    • Divide time into units.
    • Assign the respective number of work-units for every job.
    • Calculate the total time from start to finish.
    • Break down the project into modules.

    5. Project Resource Management: In software Development, all the elements are referred to as resources for the project. It can be a human resource, productive tools, and libraries.

    Resource management includes:

    • Create a project team and assign responsibilities to every team member
    • Developing a resource plan is derived from the project plan.
    • Adjustment of resources.

    6. Project Risk Management: Risk management consists of all the activities like identification, analyzing and preparing the plan for predictable and unpredictable risk in the project.

    Several points show the risks in the project:

    • The Experienced team leaves the project, and the new team joins it.
    • Changes in requirement.
    • Change in technologies and the environment.
    • Market competition.

    7. Project Communication Management: Communication is an essential factor in the success of the project. It is a bridge between client, organization, team members and as well as other stakeholders of the project such as hardware suppliers.

    From the planning to closure, communication plays a vital role. In all the phases, communication must be clear and understood. Miscommunication can create a big blunder in the project.

    8. Project Configuration Management: Configuration management is about to control the changes in software like requirements, design, and development of the product.

    The Primary goal is to increase productivity with fewer errors.

    Some reasons show the need for configuration management:

    • Several people work on software that is continually update.
    • Help to build coordination among suppliers.
    • Changes in requirement, budget, schedule need to accommodate.
    • Software should run on multiple systems.

    Tasks perform in Configuration management:

    • Identification
    • Baseline
    • Change Control
    • Configuration Status Accounting
    • Configuration Audits and Reviews

    People involved in Configuration Management:

    Software Project Management Activities
  • What is Project?

    A project is a group of tasks that need to complete to reach a clear result. A project also defines as a set of inputs and outputs which are required to achieve a goal. Projects can vary from simple to difficult and can be operated by one person or a hundred.

    Projects usually described and approved by a project manager or team executive. They go beyond their expectations and objects, and it’s up to the team to handle logistics and complete the project on time. For good project development, some teams split the project into specific tasks so they can manage responsibility and utilize team strengths.

    What is software project management?

    Software project management is an art and discipline of planning and supervising software projects. It is a sub-discipline of software project management in which software projects planned, implemented, monitored and controlled.

    It is a procedure of managing, allocating and timing resources to develop computer software that fulfills requirements.

    In software Project Management, the client and the developers need to know the length, period and cost of the project.

    Prerequisite of software project management?

    There are three needs for software project management. These are:

    1. Time
    2. Cost
    3. Quality

    It is an essential part of the software organization to deliver a quality product, keeping the cost within the client?s budget and deliver the project as per schedule. There are various factors, both external and internal, which may impact this triple factor. Any of three-factor can severely affect the other two.

    Project Manager

    A project manager is a character who has the overall responsibility for the planning, design, execution, monitoring, controlling and closure of a project. A project manager represents an essential role in the achievement of the projects.

    A project manager is a character who is responsible for giving decisions, both large and small projects. The project manager is used to manage the risk and minimize uncertainty. Every decision the project manager makes must directly profit their project.

    Role of a Project Manager:

    1. Leader

    A project manager must lead his team and should provide them direction to make them understand what is expected from all of them.

    2. Medium:

    The Project manager is a medium between his clients and his team. He must coordinate and transfer all the appropriate information from the clients to his team and report to the senior management.

    3. Mentor:

    He should be there to guide his team at each step and make sure that the team has an attachment. He provides a recommendation to his team and points them in the right direction.

    Responsibilities of a Project Manager:

    1. Managing risks and issues.
    2. Create the project team and assigns tasks to several team members.
    3. Activity planning and sequencing.
    4. Monitoring and reporting progress.
    5. Modifies the project plan to deal with the situation.
  • Evolutionary Model in Software Engineering

    This evolutionary model concept comes into the picture after the user faces the partially developed system rather than waiting for the fully developed version. The idea of this evolutionary model comes from developing the core module and then improving the software product by using iterative and incremental techniques with appropriate feedback.

    In this evolutionary process model, the software product is in the sensitive version, which is made through many iterations, and then the final product is prepared. This evolutionary approach also suggests breaking down all the models into maintainable smaller chunks. After that, we can prioritize all the smaller products. After completing all the products, we can deliver those chunks one at a time to the users.

    It plays a vital role in large projects where we can easily search the module for the implementation of incremental things. It is also an influential model because it collects customer feedback throughout the development process, and the customer can use the base feature of the project before the release of the entire working version.

    What is the Evolutionary Model?

    The evolutionary model is also known as successive versions or incremental models. The main aim of this evolutionary model is to deliver the products in total processes over time. It also combines the iterative and collective model of the software development life cycle (SDLC).

    Based on the evolutionary model, we can divide the development model into many modules to help the developer build and transfer incrementally. On the other hand, we can also develop the skeleton of the initial product. Also, it refines the project to increase levels of capability by adding new functionalities in successive versions.

    Characteristics of the Evolutionary Model

    There are so many characteristics of using the evolutionary model in our project. These characteristics are as follows.

    • We can develop the evolutionary model with the help of an iterative waterfall model of development.
    • There are three types of evolutionary models. These are the Iterative model, Incremental model and Spiral model.
    • Many primary needs and architectural planning must be done
    • to implement the evolutionary model.
    • When the new product version is released, it includes the new functionality and some changes in the existing product, which are also released with the latest version.
    • This model also permits the developer to change the requirement, and the developer can divide the process into different manageable work modules.
    • The development team also have to respond to customer feedback throughout the development process by frequently altering the product, strategy, or process.

    Prototyping Model

    We can define this prototyping model as the first form using all other forms created or copied. We can also call the prototyping model the set of general objects that helps to create the software. We can not identify the input and output of requirement details. We can develop the program quickly with the help of this model. We have some different phases of using this prototyping model. These are as follows.

    Evolutionary Model in Software Engineering
    • Communication
      In this phase, the client and the developer should have a meeting, and in that meeting, they discuss the main objective of creating the project.
    • Quick design
      When we have the requirements known to the developer, then the developer can implement the quick design. The quick design includes implementing important aspects, such as the input and output format of the software. The main focus of this project is on the things visible to the user rather than the detailed plan. With the help of this, we can also create the prototype of the project.
    • Modelling quick design
      In this phase, we can get a clear idea about the software development because the software is now in the build state. Also, it allows the developer to understand the project’s basic requirements.
    • Construction of prototype
      The customer evaluates the prototype of the project.
    • Deployment, delivery, feedback
      If the client is unsatisfied with the project, then the developer can recreate the project according to the client’s satisfaction. This process repeats until the client is fully satisfied. After the client is happy, the project will be developed based on the final prototype.
    Evolutionary Model in Software Engineering

    Advantages of the Prototyping Model

    There are so many benefits of using the prototype model. These are as follows:

    • The prototype model does not need detailed input, output, processes, adaptability of the operating system, or entire machine interaction.
    • The user is fully active in the development process of this model.
    • The development process is the best platform for users to understand the project.
    • We can easily detect the error with the help of this prototyping model.
    • It also identifies the missing functionality very quickly.
    • It also identifies the confusing or difficult functions.

    Disadvantages of the Prototyping Model

    Using a prototyping model also has some disadvantages. These are as follows.

    • In this model, the involvement of the client is greater. So, it is not always considered by the developer.
    • The development time is longer, so it is a prolonged process.
    • The developer has to perform so many changes according to the client’s demand. It disturbs the rhythm of the development process.
    • When the user is confused with the prototype, then this prototype will be thrown away.

    Spiral Model

    This model is also known as the risk-driven process model. With the help of this spiral model, we can generate the software project. During the risk analysis, if a risk is found, an alternate solution should be suggested and implemented in the spiral model. We can also say that it combines the sequential or waterfall models and the prototype models. All the required activities are done in one iteration. The output of the large project is small.

    The framework activities of the spiral model are as shown below.

    Advantages of the Spiral Model

    There are so many benefits of using the spiral model. These are as follows:

    • The amount of risk should be reduced in this model.
    • This model is best for large and critical projects.
    • It provides the developer with solid approval and documentation control.
    • The software production time is less in this spiral model.

    Disadvantages of Spiral Model

    It also has some disadvantages to using the spiral model. These are as follows.

    • We need a lot of financial support to develop a project.
    • We should not use this model for a very small project.

    Concurrent Development Model

    We also called this concurrent development model a concurrent model. In the first iteration process, all the communication activity has been completed. After completing the first iteration, it exits in the awaiting changes state. Also, in the initial phases, The modelling activity was completed. After completion of the initial phases, it goes to the underdevelopment state. If the customer wants some changes in the software product, then the modelling activity moves from the under-development state into the awaiting change state. This concurrent model changes from one activity to another activity.

    Evolutionary Model in Software Engineering

    Advantages of the Concurrent Development Model

    There are so many benefits of using the concurrent development model. These are as follows:

    • We can use this model in all types of software development processes.
    • It is so much easier to understand.
    • It also provides immediate feedback after the testing process is done.
    • It also provides an accurate picture of the state of the project.

    Disadvantages of the Concurrent Development Model

    Using the concurrent development model also has some disadvantages. These are as follows.

    • We have to improve communication between the team members.
    • It requires remembering the status of the different activities.

    Comparison of the Evolutionary Model with Other Models

    1. Evolutionary Model vs Incremental Model

    EvolutionaryIncremental
    The requirement of this evolutionary model is not a requirement. The development can be changed according to the development process.The requirements for this incremental model are precise and based on the development team.
    In this evolutionary model, the initial step is understanding the customer’s requirements. Also, it involves the development of the core modules and functionality. After completing all the phases, they have to deliver the product to the customer for feedback.In this incremental model, each module is defined with multiple iterations. We can also add new functionality during the development of the product. After completing all the steps, we have to release the deliverable product.
    The activities of the complete cycle are repeated for each new product version.Each module is developed, tested, and released at various intervals.
    In this model, the development time is unknown for the developer. Also, the developer can not track the progress of the software product.In this model, the development time is known to the developer. Also, the developer can track the progress of the software product.

    2. Evolutionary Model vs Iterative Model

    Evolutionary ModelIterative Model
    In this model, different modules are released in incremental order before releasing the final product.It follows the process of the sequential development process. After completion of the development of the software product, it releases the final product.
    There will be a chance of delivery of actual product be late.In this model, the product will be delivered within the time.
    In this module, the integration of the module will be complex.This model makes it much easier to understand and implement the product.
    We can use this module only for large products.It is the most commonly used module in the software industry.

    3. Evolutionary Model vs Classical Waterfall Model

    Evolutionary ModelClassical Waterfall Model
    In this model, we can deal with the different versions of the software.In this model, we can deal with things according to the things mentioned in the testing manual.
    In this model, integration is going to be complicated.In this model, it is going to be simple to use, understand and implement.
    This model accepts customer feedback during the development of the project.In this model, there is no need for customer feedback.
    In this model, we can detect the error in the core module of the project.In this phase, we can detect the error in every development step.
    If we need to add any new functionality, we have to release the latest product, and the existing functionalities may be updated.After the completion of the development of the final product, we can not add any update to it.

    4. Evolutionary Model vs Spiral Model

    Evolutionary ModelSpiral Model
    In this model, we can develop the software incrementally with the help of different modules.In this model, all the modules are divided into many loops, further divided into four quadrants.
    We can use this module only for large products.We can use this model to develop technically difficult software products vulnerable to different threats.
    In this model, Every version can fully function the mentioned functionalities.In this module, each model contains a set of activities that the software performs.

    Advantages of the Evolutionary Model

    There are so many benefits of using the evolutionary model. These benefits are as follows.

    • In the evolutionary model, the user can test partially developed software before the release of the final product in the market.
    • In this model, we can test the core module, which reduces the chances of errors in the final product.
    • We can use this module only for large products.
    • We can use this model to develop a software product with some unique features. We can modify these specific features based on customer feedback and many factors throughout development.
    • With the help of this evolutionary model, we can get to know the client’s requirements during the delivery of different versions of the software.
    • After completion of each cycle, the user can access the product.
    • Using an evolutionary model removes the requirement to allocate significant resources simultaneously for system development.

    Disadvantages of the Evolutionary Model

    There are also many disadvantages to using this model. These are as follows.

    • It is difficult to divide the problem into functionality units that the user accepts. After receiving the user, this problem should be incrementally implemented, and after that, it should be delivered.
    • There will be a chance of being late in the delivery of the final product. There will be a chance that the market can go down due to different customer changes during development.
    • In this module, the chances of risk factors are high. There is always a need to report customers continuously.
  • Prototype Model in Software Engineering

    The prototype model requires that before carrying out the development of actual software, a working prototype of the system should be built. A prototype is a toy implementation of the system. A prototype usually turns out to be a very crude version of the actual system, possible exhibiting limited functional capabilities, low reliability, and inefficient performance as compared to actual software. In many instances, the client only has a general view of what is expected from the software product. In such a scenario where there is an absence of detailed information regarding the input to the system, the processing needs, and the output requirement, the prototyping model may be employed.

    Prototype Model

    Steps of Prototype Model

    1. Requirement Gathering and Analyst
    2. Quick Decision
    3. Build a Prototype
    4. Assessment or User Evaluation
    5. Prototype Refinement
    6. Engineer Product

    Advantage of Prototype Model

    1. Reduce the risk of incorrect user requirement
    2. Good where requirement are changing/uncommitted
    3. Regular visible process aids management
    4. Support early product marketing
    5. Reduce Maintenance cost.
    6. Errors can be detected much earlier as the system is made side by side.

    Disadvantage of Prototype Model

    1. An unstable/badly implemented prototype often becomes the final product.
    2. Require extensive customer collaboration
      • Costs customer money
      • Needs committed customer
      • Difficult to finish if customer withdraw
      • May be too customer specific, no broad market
    3. Difficult to know how long the project will last.
    4. Easy to fall back into the code and fix without proper requirement analysis, design, customer evaluation, and feedback.
    5. Prototyping tools are expensive.
    6. Special tools & techniques are required to build a prototype.
    7. It is a time-consuming process.

    Evolutionary Process Model

    Evolutionary process model resembles the iterative enhancement model. The same phases are defined for the waterfall model occurs here in a cyclical fashion. This model differs from the iterative enhancement model in the sense that this does not require a useful product at the end of each cycle. In evolutionary development, requirements are implemented by category rather than by priority.

    For example, in a simple database application, one cycle might implement the graphical user Interface (GUI), another file manipulation, another queries and another updates. All four cycles must complete before there is a working product available. GUI allows the users to interact with the system, file manipulation allow the data to be saved and retrieved, queries allow user to get out of the system, and updates allows users to put data into the system.

    Benefits of Evolutionary Process Model

    • Use of EVO brings a significant reduction in risk for software projects.
    • EVO can reduce costs by providing a structured, disciplined avenue for experimentation.
    • EVO allows the marketing department access to early deliveries, facilitating the development of documentation and demonstration.
    • Better fit the product to user needs and market requirements.
    • Manage project risk with the definition of early cycle content.
    • Uncover key issues early and focus attention appropriately.
    • Increase the opportunity to hit market windows.
    • Accelerate sales cycles with early customer exposure.
    • Increase management visibility of project progress.
    • Increase product team productivity and motivations.

    Steps of Prototype Model:

    Prototype Model
    1. Gathering and assessing needs: In order to comprehend the needs and expectations of the community for which the product is being designed this stage involves working with them and achieving their objectives.
    2. Quick Designing: According to the specifications gathered in the first step the model’s bird-view design is created. It’s possible that the models design is more intricate and sophisticated. It is like a preliminary draft.
    3. Building a prototype: Currently an actual model is being created using the raw model produced in step 2 with all the data gathered in step 1. Each component is described in greater detail.
    4. User Evaluation or review: Since creating prototype models is an iterative process a user review is necessary each time a temporary model is constructed. The concerned user gives input after looking over the current prototype model. The developer receives these and uses them in the upcoming version.
    5. Enhancement of Prototype: The developer then considers the users reviews and suggestions and makes any necessary changes to the current system. This process continues until the user is positive that the model meets his needs.
    6. Implement and maintain the product: The model is developed and applied in compliance with user specifications. Based on the built model the implementation is carried out. The system or product is regularly maintained to minimize downtime and prevent significant failures.

    Types of prototyping:

    These are the prototype models for the different types. A variety of criteria including implementation, cost-effectiveness, and user involvement can be used to classify them.

    1. Fast Throwaway Prototyping
    2. Evolutionary prototyping
    3. Incremental prototyping
    4. Extreme prototyping

    Rapid (or) Throwaway prototyping:

    With this kind of prototyping the model is made quickly and discarded as soon as the product or design is built. It is advantageous to get to the past prototyping phase quickly. The purpose of this kind of prototyping is to get a feel for how the finished product will look. Every shift in demand is advertised while taking consumer input into account. Until there is very little need, the prototype is repeated.

    Evolutionary prototyping:

    For this kind a prototype model is first built. After that the client needs and requirements are assessed and integrated into the current model. The review and modifications are made until the client is entirely satisfied. In high-end projects where every feature is tested and when a project involves an unidentified replacement technology evolutionary prototyping is usually used. We can avoid wasting time and effort by employing this prototyping method.

    Incremental Prototyping:

    In incremental prototyping several tiny prototype models are constructed at the same time. All of these models were created with the client needs in mind. Then they can be considered separately or integrated into a single practical model. Incremental prototyping can shorten the time it takes for the development team and users to offer feedback. Consequently, it can be referred to as an iterative process that entails the construction of multiple stages. Incremental prototyping is used to enhance the prototype model. There is a risk associated with incremental prototyping though the model may appear to be a totally different piece of software as a result of the significant changes in appearance that occur during the process.

    Extreme prototyping:

    This kind of prototyping is used in the creation of web applications. Three parts make up the web development process each of which builds upon the one before it. Developers and customers must work closely together to achieve extreme prototyping. Extreme prototyping is done in three steps.

    1. Building: HTML wireframes are created to energize the presentation layer.
    2. Transformation: The wireframes are transformed into fully functional HTML pages. This connects them to the simulated service layer.
    3. Implementation: After coding the service layer is activated.

    Advantages of Prototype Model:

    There are benefits for using prototype models. The benefits of the prototype models are as follows:

    1. The customers/users are quite happy with the product since they can check the model at every stage make recommendations and ensure it meets their needs.
    2. The likelihood that the product will fail is decreased because these factors were already carefully considered during the prototype development process.
    3. It provides space for the client to articulate his ideas as they emerge. Only a few of the prerequisites are initially required.
    4. The system or product can be created by a small team of skilled developers.
    5. Flexibility in construction.
    6. Cuts down on the time and cost involved in creating a product.

    Disadvantages of the prototype model:

    The following are some of the disadvantages of the prototype model:

    1. The procedure is slow and tedious.
    2. Customer interaction and interference occur at every stage of the process.
    3. Customers have the choice to switch product developers if they are happy with the initial designs. As a result, the developers might incur significant expenses.
    4. With the money used to create the prototype model could be more accomplished. This is because the prototype is no longer useful once the final product is developed.
    5. The built model is encouraged to undergo unnecessary changes.

    Applications of software engineering prototype model:

    The prototype model is widely used in the following fields.

    1. Game development: During this phase a vertical slice of the proof of concept or a streamlined version of the game is created with the help of the prototype model.
    2. Web development: To identify possible problems in this area of development, it is helpful to create a dummy functional website. An early prototype of the product is made in order to gather feedback from users and stakeholders.
    3. User interface design: Prototype models are commonly used by user designers to test concepts and explore features.
    4. Application Development: As part of the prototype model application development process also called a mockup (or) wireframe, is a condensed version of the application.

    Top Prototyping Techniques:

    The prototype model is essential to the efficient functioning of the software engineering development process as is widely recognized. It means that before development actually starts the first working model is made while considering all requirements and incorporating feedback. Here are some best practices for prototyping.

    • It’s important to be clear when we want to use prototyping. It is best to use it in situations where there is uncertainty.
    • We should employ planned and controlled prototyping. It follows that we should only consider the most important factors and not overdo it, so as not to complicate the model.
    • During the prototyping phase it is essential to conduct regular meetings and collect pertinent feedback for the projects.
    • Consideration must be given to important pitfalls.
    • Prioritizing important information is necessary when sorting through the components of various topics.
    • Testing on a variety of devices should be done to ensure the models efficiency. For example, we test a websites responsiveness on a variety of devices while it is being developed.
  • Big Bang Model

    In this model, developers do not follow any specific process. Development begins with the necessary funds and efforts in the form of inputs. And the result may or may not be as per the customer’s requirement, because in this model, even the customer requirements are not defined.

    This model is ideal for small projects like academic projects or practical projects. One or two developers can work together on this model.

    Big Bang Model

    When to use Big Bang Model?

    As we discussed above, this model is required when this project is small like an academic project or a practical project. This method is also used when the size of the developer team is small and when requirements are not defined, and the release date is not confirmed or given by the customer.

    Advantage(Pros) of Big Bang Model:

    1. There is no planning required.
    2. Simple Model.
    3. Few resources required.
    4. Easy to manage.
    5. Flexible for developers.

    Disadvantage(Cons) of Big Bang Model:

    1. There are high risk and uncertainty.
    2. Not acceptable for a large project.
    3. If requirements are not clear that can cause very expensive.
  • Iterative Model in Software Engineering

    In this Model, you can start with some of the software specifications and develop the first version of the software. After the first version if there is a need to change the software, then a new version of the software is created with a new iteration. Every release of the Iterative Model finishes in an exact and fixed period that is called iteration.

    The Iterative Model allows the accessing earlier phases, in which the variations made respectively. The final output of the project renewed at the end of the Software Development Life Cycle (SDLC) process.

    Iterative Model

    The various phases of Iterative model are as follows:

    1. Requirement gathering & analysis: In this phase, requirements are gathered from customers and check by an analyst whether requirements will fulfil or not. Analyst checks that need will achieve within budget or not. After all of this, the software team skips to the next phase.

    2. Design: In the design phase, team design the software by the different diagrams like Data Flow diagram, activity diagram, class diagram, state transition diagram, etc.

    3. Implementation: In the implementation, requirements are written in the coding language and transformed into computer programmes which are called Software.

    4. Testing: After completing the coding phase, software testing starts using different test methods. There are many test methods, but the most common are white box, black box, and grey box test methods.

    5. Deployment: After completing all the phases, software is deployed to its work environment.

    6. Review: In this phase, after the product deployment, review phase is performed to check the behaviour and validity of the developed product. And if there are any error found then the process starts again from the requirement gathering.

    7. Maintenance: In the maintenance phase, after deployment of the software in the working environment there may be some bugs, some errors or new updates are required. Maintenance involves debugging and new addition options.

    When to use the Iterative Model?

    1. When requirements are defined clearly and easy to understand.
    2. When the software application is large.
    3. When there is a requirement of changes in future.

    Advantage(Pros) of Iterative Model:

    1. Testing and debugging during smaller iteration is easy.
    2. A Parallel development can plan.
    3. It is easily acceptable to ever-changing needs of the project.
    4. Risks are identified and resolved during iteration.
    5. Limited time spent on documentation and extra time on designing.

    Disadvantage(Cons) of Iterative Model:

    1. It is not suitable for smaller projects.
    2. More Resources may be required.
    3. Design can be changed again and again because of imperfect requirements.
    4. Requirement changes can cause over budget.
    5. Project completion date not confirmed because of changing requirements.
  • Agile Model in Software Engineering

    The meaning of Agile is swift or versatile. “Agile process model” refers to a software development approach based on iterative development. Agile methods break tasks into smaller iterations, or parts do not directly involve long term planning. The project scope and requirements are laid down at the beginning of the development process. Plans regarding the number of iterations, the duration and the scope of each iteration are clearly defined in advance.

    Each iteration is considered as a short time “frame” in the Agile process model, which typically lasts from one to four weeks. The division of the entire project into smaller parts helps to minimize the project risk and to reduce the overall project delivery time requirements. Each iteration involves a team working through a full software development life cycle including planning, requirements analysis, design, coding, and testing before a working product is demonstrated to the client.

    Agile Model

    Phases of Agile Model:

    Following are the phases in the Agile model are as follows:

    1. Requirements gathering
    2. Design the requirements
    3. Construction/ iteration
    4. Testing/ Quality assurance
    5. Deployment
    6. Feedback

    1. Requirements gathering: In this phase, you must define the requirements. You should explain business opportunities and plan the time and effort needed to build the project. Based on this information, you can evaluate technical and economic feasibility.

    2. Design the requirements: When you have identified the project, work with stakeholders to define requirements. You can use the user flow diagram or the high-level UML diagram to show the work of new features and show how it will apply to your existing system.

    3. Construction/ iteration: When the team defines the requirements, the work begins. Designers and developers start working on their project, which aims to deploy a working product. The product will undergo various stages of improvement, so it includes simple, minimal functionality.

    4. Testing: In this phase, the Quality Assurance team examines the product’s performance and looks for the bug.

    5. Deployment: In this phase, the team issues a product for the user’s work environment.

    6. Feedback: After releasing the product, the last step is feedback. In this, the team receives feedback about the product and works through the feedback.

    Agile Testing Methods:

    Every Agile technique aims to produce functional software as quickly as feasible while embracing and adapting to change. Each approach differs, though, in how it outlines the stages involved in software development. The following are some of the most popular Agile techniques:

    • Scrum
    • Crystal
    • Dynamic Software Development Method(DSDM)
    • Feature Driven Development(FDD)
    • Lean Software Development
    • eXtreme Programming(XP)

    Scrum

    SCRUM is an agile development process focused primarily on ways to manage tasks in team-based development conditions.

    There are three roles in it, and their responsibilities are:

    • Scrum Master: The scrum can set up the master team, arrange the meeting and remove obstacles for the process
    • Product owner: The product owner makes the product backlog, prioritizes the delay and is responsible for the distribution of functionality on each repetition.
    • Scrum Team: The team manages its work and organizes the work to complete the sprint or cycle.

    eXtreme Programming(XP)

    Extreme programming (XP) is a methodical technique that emphasizes continuous Delivery and speed. It encourages close cooperation, constant planning and testing, quick feedback loops, and greater customer participation. Frequent software delivery occurs, often every one to three weeks. The aim is to enhance software responsiveness and quality in response to evolving client needs.

    The principles of boldness, simplicity, communication, and feedback form the foundation of the XP technique.

    Crystal:

    There are three concepts of this method-

    1. Chartering: Multi activities are involved in this phase such as making a development team, performing feasibility analysis, developing plans, etc.
    2. Cyclic delivery: under this, two more cycles consist, these are:
      • Team updates the release plan.
      • Integrated product delivers to the users.
    3. Wrap up: According to the user environment, this phase performs deployment, post-deployment.

    Dynamic Software Development Method(DSDM):

    DSDM is a rapid application development strategy for software development and gives an agile project distribution structure. The essential features of DSDM are that users must be actively connected, and teams have been given the right to make decisions. The techniques used in DSDM are:

    1. Time Boxing
    2. MoSCoW Rules
    3. Prototyping

    The DSDM project contains seven stages:

    1. Pre-project
    2. Feasibility Study
    3. Business Study
    4. Functional Model Iteration
    5. Design and build Iteration
    6. Implementation
    7. Post-project

    Feature Driven Development(FDD):

    This method focuses on “Designing and Building” features. In contrast to other smart methods, FDD describes the small steps of the work that should be obtained separately per function.

    Lean Software Development:

    Lean software development methodology follows the principle “just in time production.” The lean method indicates the increasing speed of software development and reducing costs. Lean development can be summarized in seven phases.

    1. Eliminating Waste
    2. Amplifying learning
    3. Defer commitment (deciding as late as possible)
    4. Early delivery
    5. Empowering the team
    6. Building Integrity
    7. Optimize the whole

    The Agile 12 Principles

    The following 12 fundamental development process concepts were also delineated in The Agile Manifesto:

    1. Deliver quality work on time and consistently to satisfy clients.
    2. Divide large projects into manageable, short-term activities.
    3. Understand that self-organized teams provide the greatest work.
    4. Give driven people the space and assistance they require and have faith in their ability to complete the task at hand.
    5. Establish procedures that encourage sustainable endeavors.
    6. Keep up a steady pace to finish the assignment.
    7. Accept requirements that change, even at the end of a project.
    8. Throughout the project, bring together the business owners and the project team every day.
    9. Encourage the team to regularly consider ways to improve their effectiveness and modify and adapt their behavior accordingly.
    10. The quantity of finished work is a good way to gauge progress.
    11. Always strive for greatness.
    12. Take advantage of change to gain a competitive edge.

    When to use the Agile Model?

    • When frequent changes are required.
    • When a highly qualified and experienced team is available.
    • When a customer is ready to have a meeting with a software team all the time.
    • When project size is small.

    Advantage(Pros) of Agile Method:

    The following are some advantages of the Agile methodology:

    1. Frequent Delivery
    2. Face-to-Face Communication with clients.
    3. Efficient design and fulfils the business requirement.
    4. Anytime changes are acceptable.
    5. It reduces total development time.

    Disadvantages(Cons) of Agile Model:

    Agile’s lack of focus on technology raises additional possible concerns since it may be challenging to convince senior managers of the idea who are unaware of the importance of culture in software development.

    The following are among the drawbacks of Agile Model:

    1. Due to the shortage of formal documents, it creates confusion and crucial decisions taken throughout various phases can be misinterpreted at any time by different team members.
    2. Due to the lack of proper documentation, once the project completes and the developers allotted to another project, maintenance of the finished project can become a difficulty.

    Traditional vs. Agile SDLC Models

    The agile and traditional models approach software development differently, each with unique benefits and drawbacks. Both models use distinct approaches and have different uses. Let’s start by defining typical SDLC models.

    Conventional SDLC models, which include planning, design, implementation, testing, and maintenance, work well for projects with clearly stated requirements. Each step must be completed before proceeding to the next step. Take the waterfall model, for instance. Let’s compare the two models to better understand their differences.

    Conventional SDLC ModelThe Agile Model
    Software development is approached linearly and sequentially using the conventional SDLC paradigm.The agile paradigm is a flexible and iterative method for developing software.
    Delays may result from the lack of a defined plan to adapt to changing requirements.It emphasizes feedback, functional software, and adjusting to new specifications.
    It emphasizes a well-organized strategy rather than the Delivery of the finished product.The Agile approach strives for speedy product delivery.
    Its emphasis is on documentation, which aids in monitoring the choices and developments made during the project.The Agile model has no documentation. It consists of frequent gatherings, also referred to as sprint meetings, to monitor the development team’s work.

    Use Cases of the Agile Model:

    • Software Development: Facilitates the rapid and effective Delivery of small, functional software increments by teams.
    • Project management: Promotes ongoing development and flexible planning.
    • Product development: Enables goods to be improved and refined based on input from customers.
    • Marketing: Iterative testing and improvement of strategies are possible.
    • Dynamic Environments: Perfect for situations that call for regular updates and cooperation from stakeholders.

    All things considered, the Agile Model’s adaptability and iterative structure make it appropriate for a range of sectors and uses.