Author: saqibkhan

  • Extended Function Point (EFP) Metrics

    FP metric has been further extended to compute:

    1. Feature points.
    2. 3D function points.

    Feature Points

    1. Feature point is the superset of function point measure that can be applied to systems and engineering software applications.
    2. The feature points are used in those applications in which the algorithmic complexity is high like real-time systems where time constraints are there, embedded systems, etc.
    3. Feature points are computed by counting the information domain values and are weighed by only single weight.
    4. Feature point includes another measurement parameter-ALGORITHM.
    5. The table for the computation of feature point is as follows:

    Feature Point Calculations

    Measurement ParameterCountWeighing factor
    1. Number of external inputs (EI)*4
    2. Number of external outputs (EO)*5
    3. Number of external inquiries (EQ)*4
    4. Number of internal files (ILF)*7
    5. Number of external interfaces (EIF)*7
    6.Algorithms used Count total →*3

    The feature point is thus calculated with the following formula:

                    FP = Count-total * [0.65 + 0.01 *∑(fi)]
                        = Count-total * CAF

    where count-total is obtained from the above table.

                    CAF = [0.65 + 0.01 * ∑(fi)]

    and ∑(fi) is the sum of all 14 questionnaires and show the complexity adjustment value/factor-CAF (where i ranges from 1 to 14). Usually, a student is provided with the value of ∑(fi) .

    6. Function point and feature point both represent systems functionality only.

    7. For real-time applications that are very complex, the feature point is between 20 and 35% higher than the count determined using function point above.

    3D function points

    Three dimensions may be used to represent 3D function points?data dimension, functional dimension, and control dimension.

    2. The data dimension is evaluated as FPs are calculated. Herein, counts are made for inputs, outputs, inquiries, external interfaces, and files.

    3. The functional dimension adds another feature-Transformation, that is, the sequence of steps which transforms input to output.

    4. The control dimension that adds another feature-Transition that is defined as the total number of transitions between states. A state represents some externally observable mode

    Extended Function Point (EFP) Metrics

    Now fi for average case = 3. So sum of all fi (i ←1 to 14) = 14 * 3 = 42
                                    FP = Count-total * [0.65 + 0.01 *∑(fi ) ]
                                    = 618 * [0.65 + 0.01 * 42]
                                    = 618 * [0.65 + 0.42]
                                    = 618 * 1.07 = 661.26

    and feature point = (32 *4 + 60 * 5 + 24 * 4 + 80 +14) * 1.07 + {12 * 15 *1.07}
                                = 853.86

    Example: Compute the 3D-function point value for an embedded system with the following characteristics:

    1. Internal data structures = 6
    2. External data structures = 3
    3. No. of user inputs = 12
    4. No. of user outputs = 60
    5. No. of user inquiries = 9
    6. No. of external interfaces = 3
    7. Transformations = 36
    8. Transitions = 24

    Assume complexity of the above counts is high.

    Solution: We draw the Table first. For embedded systems, the weighting factor is complex and complexity is high. So,

    Extended Function Point (EFP) Metrics
  • Functional Point (FP) Analysis

    Allan J. Albrecht initially developed function Point Analysis in 1979 at IBM and it has been further modified by the International Function Point Users Group (IFPUG). FPA is used to make estimate of the software project, including its testing in terms of functionality or function size of the software product. However, functional point analysis may be used for the test estimation of the product. The functional size of the product is measured in terms of the function point, which is a standard of measurement to measure the software application.

    Objectives of FPA

    The basic and primary purpose of the functional point analysis is to measure and provide the software application functional size to the client, customer, and the stakeholder on their request. Further, it is used to measure the software project development along with its maintenance, consistently throughout the project irrespective of the tools and the technologies.

    Following are the points regarding FPs

    1. FPs of an application is found out by counting the number and types of functions used in the applications. Various functions used in an application can be put under five types, as shown in Table:

    Types of FP Attributes

    Measurements ParametersExamples
    1.Number of External Inputs(EI)Input screen and tables
    2. Number of External Output (EO)Output screens and reports
    3. Number of external inquiries (EQ)Prompts and interrupts.
    4. Number of internal files (ILF)Databases and directories
    5. Number of external interfaces (EIF)Shared databases and shared routines.

    All these parameters are then individually assessed for complexity.

    The FPA functional units are shown in Fig:

    Functional Point (FP) Analysis

    2. FP characterizes the complexity of the software system and hence can be used to depict the project time and the manpower requirement.

    3. The effort required to develop the project depends on what the software does.

    4. FP is programming language independent.

    5. FP method is used for data processing systems, business systems like information systems.

    6. The five parameters mentioned above are also known as information domain characteristics.

    7. All the parameters mentioned above are assigned some weights that have been experimentally determined and are shown in Table

    Weights of 5-FP Attributes

    Measurement ParameterLowAverageHigh
    1. Number of external inputs (EI)71015
    2. Number of external outputs (EO)5710
    3. Number of external inquiries (EQ)346
    4. Number of internal files (ILF)457
    5. Number of external interfaces (EIF)346

    The functional complexities are multiplied with the corresponding weights against each function, and the values are added up to determine the UFP (Unadjusted Function Point) of the subsystem.

    Functional Point (FP) Analysis

    Here that weighing factor will be simple, average, or complex for a measurement parameter type.

    The Function Point (FP) is thus calculated with the following formula.

                  FP = Count-total * [0.65 + 0.01 * ∑(fi)]
                  = Count-total * CAF

    where Count-total is obtained from the above Table.

                  CAF = [0.65 + 0.01 *∑(fi)]

    and ∑(fi) is the sum of all 14 questionnaires and show the complexity adjustment value/ factor-CAF (where i ranges from 1 to 14). Usually, a student is provided with the value of ∑(fi)

    Also note that ∑(fi) ranges from 0 to 70, i.e.,

                  0 <= ∑(fi) <=70

    and CAF ranges from 0.65 to 1.35 because

    1. When ∑(fi) = 0 then CAF = 0.65
    2. When ∑(fi) = 70 then CAF = 0.65 + (0.01 * 70) = 0.65 + 0.7 = 1.35

    Based on the FP measure of software many other metrics can be computed:

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

    8. LOCs of an application can be estimated from FPs. That is, they are interconvertible. This process is known as backfiring. For example, 1 FP is equal to about 100 lines of COBOL code.

    9. FP metrics is used mostly for measuring the size of Management Information System (MIS) software.

    10. But the function points obtained above are unadjusted function points (UFPs). These (UFPs) of a subsystem are further adjusted by considering some more General System Characteristics (GSCs). It is a set of 14 GSCs that need to be considered. The procedure for adjusting UFPs is as follows:

    1. Degree of Influence (DI) for each of these 14 GSCs is assessed on a scale of 0 to 5. (b) If a particular GSC has no influence, then its weight is taken as 0 and if it has a strong influence then its weight is 5.
    2. The score of all 14 GSCs is totaled to determine Total Degree of Influence (TDI).
    3. Then Value Adjustment Factor (VAF) is computed from TDI by using the formula: VAF = (TDI * 0.01) + 0.65

    Remember that the value of VAF lies within 0.65 to 1.35 because

    1. When TDI = 0, VAF = 0.65
    2. When TDI = 70, VAF = 1.35
    3. VAF is then multiplied with the UFP to get the final FP count: FP = VAF * UFP

    Example: Compute the function point, productivity, documentation, cost per function for the following data:

    1. Number of user inputs = 24
    2. Number of user outputs = 46
    3. Number of inquiries = 8
    4. Number of files = 4
    5. Number of external interfaces = 2
    6. Effort = 36.9 p-m
    7. Technical documents = 265 pages
    8. User documents = 122 pages
    9. Cost = $7744/ month

    Various processing complexity factors are: 4, 1, 0, 3, 3, 5, 4, 4, 3, 3, 2, 2, 4, 5.

    Solution:

    Measurement ParameterCountWeighing factor
    1. Number of external inputs (EI)24*4 = 96
    2. Number of external outputs (EO)46*4 = 184
    3. Number of external inquiries (EQ)8*6 = 48
    4. Number of internal files (ILF)4*10 = 40
    5. Number of external interfaces (EIF) Count-total →2*5 = 10
    378

    So sum of all fi (i ← 1 to 14) = 4 + 1 + 0 + 3 + 5 + 4 + 4 + 3 + 3 + 2 + 2 + 4 + 5 = 43

                    FP = Count-total * [0.65 + 0.01 *∑(fi)]
                    = 378 * [0.65 + 0.01 * 43]
                    = 378 * [0.65 + 0.43]
                    = 378 * 1.08 = 408

    Functional Point (FP) Analysis

    Total pages of documentation = technical document + user document
                    = 265 + 122 = 387pages

    Documentation = Pages of documentation/FP
                    = 387/408 = 0.94

    Functional Point (FP) Analysis

    Differentiate between FP and LOC

    FPLOC
    1. FP is specification based.1. LOC is an analogy based.
    2. FP is language independent.2. LOC is language dependent.
    3. FP is user-oriented.3. LOC is design-oriented.
    4. It is extendible to LOC.4. It is convertible to FP (backfiring)
  • Halstead’s Software Metrics

    According to Halstead’s “A computer program is an implementation of an algorithm considered to be a collection of tokens which can be classified as either operators or operand.”

    Token Count

    In these metrics, a computer program is considered to be a collection of tokens, which may be classified as either operators or operands. All software science metrics can be defined in terms of these basic symbols. These symbols are called as a token.

    The basic measures are

    n1 = count of unique operators.
    n2 = count of unique operands.
    N1 = count of total occurrences of operators.
    N2 = count of total occurrence of operands.

    In terms of the total tokens used, the size of the program can be expressed as N = N1 + N2.

    Halstead metrics are:

    Program Volume (V)

    The unit of measurement of volume is the standard unit for size “bits.” It is the actual size of a program if a uniform binary encoding for the vocabulary is used.

            V=N*log2n

    Program Level (L)

    The value of L ranges between zero and one, with L=1 representing a program written at the highest possible level (i.e., with minimum size).

            L=V*/V

    Program Difficulty

    The difficulty level or error-proneness (D) of the program is proportional to the number of the unique operator in the program.

            D= (n1/2) * (N2/n2)

    Programming Effort (E)

    The unit of measurement of E is elementary mental discriminations.

            E=V/L=D*V

    Estimated Program Length

    According to Halstead, The first Hypothesis of software science is that the length of a well-structured program is a function only of the number of unique operators and operands.

            N=N1+N2

    And estimated program length is denoted by N^

            N^ = n1log2n1 + n2log2n2

    The following alternate expressions have been published to estimate program length:

    • NJ = log2 (n1!) + log2 (n2!)
    • NB = n1 * log2n2 + n2 * log2n1
    • NC = n1 * sqrt(n1) + n2 * sqrt(n2)
    • NS = (n * log2n) / 2

    Potential Minimum Volume

    The potential minimum volume V* is defined as the volume of the most short program in which a problem can be coded.

            V* = (2 + n2*) * log2 (2 + n2*)

    Here, n2* is the count of unique input and output parameters

    Size of Vocabulary (n)

    The size of the vocabulary of a program, which consists of the number of unique tokens used to build a program, is defined as:

            n=n1+n2

    where

    n=vocabulary of a program
    n1=number of unique operators
    n2=number of unique operands

    Language Level – Shows the algorithm implementation program language level. The same algorithm demands additional effort if it is written in a low-level program language. For example, it is easier to program in Pascal than in Assembler.        L’ = V / D / D
    lambda = L * V* = L2 * V

    Language levels

    LanguageLanguage level λVariance σ
    PL/11.530.92
    ALGOL1.210.74
    FORTRAN1.140.81
    CDC Assembly0.880.42
    PASCAL2.54
    APL2.42
    C0.8570.445

    Counting rules for C language

    1. Comments are not considered.
    2. The identifier and function declarations are not considered
    3. All the variables and constants are considered operands.
    4. Global variables used in different modules of the same program are counted as multiple occurrences of the same variable.
    5. Local variables with the same name in different functions are counted as unique operands.
    6. Functions calls are considered as operators.
    7. All looping statements e.g., do {…} while ( ), while ( ) {…}, for ( ) {…}, all control statements e.g., if ( ) {…}, if ( ) {…} else {…}, etc. are considered as operators.
    8. In control construct switch ( ) {case:…}, switch as well as all the case statements are considered as operators.
    9. The reserve words like return, default, continue, break, sizeof, etc., are considered as operators.
    10. All the brackets, commas, and terminators are considered as operators.
    11. GOTO is counted as an operator, and the label is counted as an operand.
    12. The unary and binary occurrence of “+” and “-” are dealt with separately. Similarly “*” (multiplication operator) are dealt separately.
    13. In the array variables such as “array-name [index]” “array-name” and “index” are considered as operands and [ ] is considered an operator.
    14. In the structure variables such as “struct-name, member-name” or “struct-name -> member-name,” struct-name, member-name are considered as operands and ‘.’, ‘->’ are taken as operators. Some names of member elements in different structure variables are counted as unique operands.
    15. All the hash directive is ignored.

    Example: Consider the sorting program as shown in fig: List out the operators and operands and also calculate the value of software science measure like n, N, V, E, λ ,etc.

    Solution: The list of operators and operands is given in the table

    OperatorsOccurrencesOperandsOccurrences
    int4SORT1
    ()5x7
    ,4n3
    []7i8
    if2j7
    <2save3
    ;11im13
    for222
    =613
    101
    <=2
    ++2
    return2
    {}3
    n1=14N1=53n2=10N2=38

    Here N1=53 and N2=38. The program length N=N1+N2=53+38=91

    Vocabulary of the program n=n1+n2=14+10=24

    Volume V= N * log2N=91 x log2 24=417 bits.

    The estimate program length N of the program

                    = 14 log214+10 log2)10
                    = 14 * 3.81+10 * 3.32
                    = 53.34+33.2=86.45

    Conceptually unique input and output parameters are represented by n2*.

            n2*=3 {x: array holding the integer to be sorted. This is used as both input and output}

                    {N: the size of the array to be sorted}

    The Potential Volume V*=5log25=11.6

    Since         L=V*/V

    Halstead's Software Metrics

    We may use another formula                V^=V x L^= 417 x 0.038=15.67
                    E^=V/L^=D^ x V

    Halstead's Software Metrics

    Therefore, 10974 elementary mental discrimination is required to construct the program.

    Halstead's Software Metrics
  • 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.