• Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

Computer Notes

Library
    • Computer Fundamental
    • Computer Memory
    • DBMS Tutorial
    • Operating System
    • Computer Networking
    • C Programming
    • C++ Programming
    • Java Programming
    • C# Programming
    • SQL Tutorial
    • Management Tutorial
    • Computer Graphics
    • Compiler Design
    • Style Sheet
    • JavaScript Tutorial
    • Html Tutorial
    • Wordpress Tutorial
    • Python Tutorial
    • PHP Tutorial
    • JSP Tutorial
    • AngularJS Tutorial
    • Data Structures
    • E Commerce Tutorial
    • Visual Basic
    • Structs2 Tutorial
    • Digital Electronics
    • Internet Terms
    • Servlet Tutorial
    • Software Engineering
    • Interviews Questions
    • Basic Terms
    • Troubleshooting
Menu

Header Right

Home » Software Engineering » Software Engineering

Explain Classical Life Cycle Model or linear sequential model

By Dinesh Thakur

A process model can be defined as a strategy (also known as software engineering paradigm), comprising process, methods, and tools layers as well as the generalphases for developing the software. It provides a basisfor controlling various activities required to develop and maintain the software. Inaddition, it helps the software development team in facilitating and understandingthe activities involved in the project.

                      Classical Life Cycle Model

A process model for software engineering depends on the nature and application of the software project. Thus, it is essential to define process models for each software project. IEEE defines a process model as ‘a framework containing the processes, activities, and tasks involved in the development, operation, and maintenance of a software product, spanning the life of the system from the definition of its requirements to the termination of its use.’ A process model reflects the’ goals of software development such as developing a high quality product and meeting the schedule on time. In addition, it provides a flexible framework for enhancing the processes. Other advantages of the software process model are listed below.

Enables effective communication: It enhances understanding and provides a specific basis for process execution.

Facilitates process reuse: Process development is a time consuming and expensive activity. Thus, the software development team utilizes the existing processes for different projects.

Effective: Since process models can be used again and again; reusable processes provide all effective means for implementing processes for software development.

Facilitates process management: Process models provide a framework for defining process status criteria and measures for software development. Thus, effective management is essential to provide a clear description of the plans for the software project.

Every software development process model takes requirements as input and delivers products as output. However, a process should detect defects in the phases in which they occur. This requires Verification and Validation (V&V) of the products after each and every phase of the software development life cycle.

Verification is the process of evaluating a system or its components for determining the product developed at the end of each phase of the software development. IEEE defines verification as ‘a process for determining whether the software products of an activity fulfill the requirements or conditions imposed on them in the previous activities.’ Thus, verification confirms that the product is transformed from one form to another as intended and with sufficient accuracy.

Validation is the process of evaluating the product at the end of each phase to check whether the requirements are fulfilled. In addition, it is the process of establishing a procedure and method, which provides the intended outputs. IEEE defines validation as ‘a process for determining whether the requirements and the final, as-built system or software product fulfils its specific intended use.’ Thus, validation substantiates the software functions with sufficient accuracy with respect to its requirements specification.

Various kinds of process models are waterfall model, prototyping model, spiral model, incremental model, time-boxing model, RAD model, V model, build and fix model, and formal method model.

Waterfall Model

In the waterfall model (also known as the classical life cycle model), the development of software proceeds linearly and sequentially from requirement analysis to design, coding, testing, integration, implementation, and maintenance. Thus, this model is also known as the linear sequential model.

This model is simple to understand and represents processes which are easy to manage and measure. The waterfall model comprises different phases and each phase has its distinct goal. After the completion of one phase, the development of software moves to the next phase. Each phase modifies the intermediate product to develop a new product as an output. The new product becomes the input of the next process. Table lists the inputs and outputs of each phase of waterfall model.

                 Table Inputs and Outputs of each Phase of Waterfall Model

 

Input to phase

Process/Phase

Output of the phase

Requirements defined through communication

Requirements analysis

Software requirements specification document

Software requirements specification document

Design

Design specification document

Design specification document

Coding

Executable software modules

Executable software modules

Testing

Integrated product

Integrated product

Implementation

Delivered software

Delivered software

Maintenance

Changed requirements

 

As stated earlier, the waterfall model comprises several phases, which are listed below.

 

System/information engineering modeling: This phase establishes the requirements for all parts of the system. Software being a part of the larger system, a subset of these requirements is allocated to it. This system view is necessary when software interacts with other parts of the system including hardware, databases, and people. System engineering includes collecting requirements at the system level while information engineering includes collecting requirements at a level where all decisions regarding business strategies are taken.

Requirements analysis: This phase focuses on the requirements of the software to be developed. It determines the processes that are to be incorporated during the development of the software. To specify the requirements, users’ specifications should be clearly understood and their requirements be analyzed. This phase involves interaction between the users and the software engineers and produces a document known as Software Requirements Specification (SRS).

Design: This phase determines the detailed process of developing the software after the requirements have been analyzed. It utilizes software requirements defined by the user and translates them into software representation. In this phase, the emphasis is on finding solutions to the problems defined in the requirements analysis phase. The software engineer is mainly concerned with the data structure, algorithmic detail and interface representations.

Coding: This phase emphasizes translation of design into a programming language using the coding style and guidelines. The programs created should be easy to read and understand. All the programs written are documented according to the specification.

Testing: This phase ensures that the software is developed as per the user’s requirements. Testing is done to check that the software is running efficiently and with minimum errors. It focuses on the internal logic and external functions of the software and ensures that all the statements have been exercised (tested). Note that testing is a multistage activity, which emphasizes verification and validation of the software.

Implementation and maintenance: This phase delivers fully functioning operational software to the user. Once the software is accepted and deployed at the user’s end, various changes occur due to changes in the external environment (these include-upgrading a new operating system or addition of a new peripheral device).The changes also occur due to changing requirements of the user and changes occurring in the field of technology. This phase focuses on modifying software, correcting errors, and improving the performance of the software.

Various advantages and disadvantages associated with the waterfall model are listed in Table.

 

                Table Advantages and Disadvantages of Waterfall Model

 

Advantages

Disadvantages

  • Relatively simple to understand
  • Each phase of development proceeds sequentially.
  • Allows managerial control where a schedule with deadlines is set for each stage of development.
  • Helps in controlling schedules, budgets, and documentation.
  • Requirements need to be specified before the development proceeds.
  • The changes of requirements in later phases of the waterfall model cannot be done. This implies that once the software enters the testing phase, it becomes difficult to incorporate changes at such a late phase.
  • No user involvement and working version of the software is available when the software is being developed.
  • Does not involve risk management.
  • Assumes that requirements are stable and are frozen across the project span.

Software Process Assessment

By Dinesh Thakur

The existence of software process does not guarantee the timely delivery of the software and its ability to meet the user’s expectations. The process needs to be assessed in order to ensure that it meets a set of basic process criteria, which is essential for implementing the principles of software engineering in an efficient manner. The process is assessed to evaluate methods, tools, and practices, which are used to develop and test the software. The aim of process assessment is to identify the areas for improvement and suggest a plan for making that improvement. The main focus areas of process assessment are listed below.

  1. Obtaining guidance for improving software development and test processes
  2. Obtaining an independent and unbiased review of the process
  3. Obtaining a baseline (defined as a set of software components and documents that have been formerly reviewed and accepted; that serves as the basis for further development) for improving quality and productivity of processes.

Software process assessment examines whether the software processes are effective and efficient in accomplishing the goals. This is determined by the capability of selected software processes. The capability of a process determines whether a process with some variations is capable of meeting user’s requirements. In addition, it measures the extent to which the software process meets the user’s requirements. Process assessment is useful to the organization as it helps in improving the existing processes. In addition, it determines the strengths, weaknesses and the risks involved in the processes.

                       Software Process Assessment

The process assessment leads to process capability determination and process improvement. Process capability determination is an organized assessment, which analyzes the software processes in an organization. In addition, process capability determination identifies the capabilities of a process and the risks involved in it. The process improvement identifies the changes to be made in the software processes. The software capability determination motivates the organization to perform software process improvement.

Different approaches are used for assessing software process. These approaches are SPICE (ISO/IEC15504), ISO 9001:2000, standard CMMI assessment method for process improvement, CMM-based appraisal for internal process improvement, and Bootstrap,

SPICE (Software Process Improvement and Capability Determination) is a standard used for both process improvement and process capability determination. SPICE provides a framework for assessing the software process and is used by the organizations involved in planning, monitoring, developing, managing, and improving acquisitions. It is carried out in accordance with the International Organization for Standardization (ISO) and International Electro-technical Committee (IEC), which are used together and known as ISO/IEC 15504. The functions of SPICE (ISO/IEC 15504) are listed below.

  1. To develop process-rating profiles instead of pass or fail criteria
  2. To consider the environment in which the assessed process operates
  3. To facilitate self assessment
  4. To ensure suitability for all applications and all sizes of organizations.

SPICE (ISO/IEC 15504) constitutes a set of documents that is used to guide goals and fundamental activities and grade the organization according to its level of capability. In addition, it determines the capability of a process in an organization, based on the results of the assessment of the processes and products. It also develops a maturity model for process improvement. This model is known as SPICE reference model. It is applicable for all processes and comprises following six levels.

  1. Not performed: At this level, the processes are unable to accomplish the required outcomes. Thus, no identifiable products are created.
  2. Performed informally: At this level, the implemented process accomplishes the defined outcomes. It is not planned and tracked; rather it depends on individual knowledge and identifiable products.
  3. Planned and tracked: At this level, the defined process delivers products according to quality requirements within a specified time. The processes and products are verified according to the procedures, standards, and requirements.
  4. Well-defined: At this level, the processes based on software engineering principles which are capable of achieving defined outcomes are used.
  5. Quantitatively controlled: At this level, the performance measures, prediction capability and objective management are evaluated quantitatively. In addition, existing processes perform consistently within the defined limits to accomplish the desired outputs.
  6. Continuously improved: At this level, the existing processes adapt to meet future business goals. For continuous improvement, various kinds of statistical methods are used.

                          SPICE reference Model

ISO (International Organization for Standardization) established a standard known as ISO 9001:2000 to determine the requirements of quality management systems. A quality management system refers to the activities within an organization, which satisfies the quality related expectations of customers. Organizations ensure that they have a quality management system by demonstrating their conformance to the ISO 9001:2000 standard. The major advantage of this standard is that it achieves a better understanding and consistency of all quality practices throughout the organization. In addition, it strengthens the customer’s confidence in the product. This standard follows a plan-do-check-act (PDCA) cycle, which includes a set of activities that are listed below.

  1. Plan: Determines the processes and resources which are required to develop a quality product according to the user’s satisfaction.
  2. Do: Performs activities according to the plan to create the desired product.
  3. Check: Measures whether the activities for establishing quality management according to the requirements are accomplished. In addition, it monitors the processes and takes corrective actions to improve them.
  4. Act: Initiates activities which constantly improve processes in the organization.

                         Cycle in ISO 9001 : 2000

Note: The standard ISO 9001:2000 enhances the quality of a product by utilizing the processes for continual improvement of the system.

An appraisal examines processes to determine their strengths and weaknesses in an organization. The appraisal used in an organization evaluates the internal processes (series of procedures occurring in the organization) for establishing or updating process improvement. In addition, appraisal includes measuring the process improvement progress by conducting audits of the processes. To conduct an appraisal, a scheme known as SCAMPI was developed by the Software Engineering Institute (SEI).

SCAMPI is used for process improvement by gaining insight into the process capability in the organization. The major advantage of SCAMPI is that it supports process improvement and establishes a consensus within the organization regarding areas where the process improvements are needed. The major characteristics of SCAMPI are listed in Table.

                                                Table SCAMPI Characteristics

Characteristics

Description

Accuracy

Ratings of the organization reflect its capability, which is used in comparison to other organizations. The result of appraisal indicates the strengths and weaknesses of the appraised organization.

Repeatability

Ratings and results of the appraisals are expected to be consistent with another appraisal conducted under comparable conditions (Another appraisal with identical scope will produce consistent result).

Cost/Resources effectiveness

The appraisal method is efficient as it takes into account the organizational investment in obtaining the appraisal results.

SCAMPI enables an organization to select and follow an approach for developing a plan for appraisal, which is appropriate for the requirements. These appraisal requirements in CMMI (ARC) comprise criteria for developing, defining, and utilizing the appraisal methods (namely, Class A, Class B, and Class q, which are based on Capability Maturity Model Integration (CMMI) as an improved framework. The objectives of SCAMPI are listed below.

  1. To identify strengths and weaknesses of existing processes in the organization
  2. To specify an integrated appraisal method for internal process improvement
  3. To act as a motivation for initiating and focusing on software process improvement.

SCAMPI is an appropriate tool for benchmarking within the organization. This process emphasizes a rigorous method that is capable of achieving high accuracy and reliability of appraisal results. The major characteristics of classes ‘A’, ‘B’, and ‘C’ are listed in Table. Class ‘A’ assessment method should satisfy all appraisal requirements of CMMI. The major characteristic of Class ‘A’ assessment is a detailed assessment of process (es).With a thorough coverage, the strengths and weaknesses of processes are determined. SCAMPI is a Class ‘A’ assessment method for process improvement.

Class ‘B’ appraisal method should comply with a subset of ARC requirements. As shown in Table, requirements of the Class ‘A’ method are optional for, Class ‘B’. Class ‘B’ assessment helps the organization to gain insight into its process capability. It focuses on areas that need improvement. It does not emphasize detailed coverage and is not efficient for level rating. These types of appraisals are considered efficient for initial assessment in organizations that have just started to use CMMI for process improvement activities. In addition, it is useful in providing a cost effective measure for performing interim assessment and capability evaluations.

                                        Table Characteristics of Appraisal Methods

Characteristic

Class A

Class B

Class C

Amount of relative objectives gathered

High

Medium

Low

Ratings generated

Yes

No

No

Relative resources required

High

Medium

Low

Team size required for appraisal

Large

Medium

Small

Class ‘C’ appraisal methods are inexpensive and used for a short duration. In addition, they provide quick feedback to the result of the assessment. In other words, these appraisal methods are useful for periodic assessment of the projects.

Class ‘B’ and Class ‘C’ appraisals are useful for organizations that do not require generation of ratings. The primary reason for all appraisal methods should be to identify the strengths and weaknesses of the processes for their improvements.

CBA-IPI tool is used in an organization to gain insight into the software development capability. For this, the strengths and weaknesses of the existing process are identified in order to prioritize software improvement plans and focus on software improvements, which are beneficial to the organization. The organization’s software process capability is assessed by a group of individuals known as the assessment team, which generates findings and provides ratings according to the CMM (Capability Maturity Model). These findings are collected from questionnaires, document reviews and interviews with the managers of the organization. Thus, the primary goal of CBA IPI is to provide an actual picture of the existing processes in an organization. To achieve this, the assessment team performs the following functions.

  1. Provides data as a baseline to the organization in order to check its software capability
  2. Identifies issues that have an impact on the process improvement
  3. Provides sufficiently complete findings to the organization. These are used to guide the organization in planning .and prioritizing future process improvement activities.

For an assessment to be considered in CBAIPI, it should satisfy the minimum requirements concerning the assessment team, assessment plan, data collection, data validation, and reporting of the assessment results. These requirements are listed in Table.

                                               Table Requirements in CBA IPI

Requirement

Description

Assessment team

The size of the team should be minimum 4 and maximum 10 individuals. At least one team member should be from the organization.

Assessment plan

Contains goals for the assessment process. In addition, it has a schedule for assessment activities and identifies the resources required to perform the assessment. The assessment plan considers risks and the constraints, which are associated with the execution of the assessment.

Data collection

Data for process assessment is collected in the form of instruments, presentations, and documents.

Data validation

Data is validated using the rules of documentation.

Reporting of assessment

Provides summary of the whole assessment process, which presents both the strengths, and weaknesses of the processes.

The CBA IPI method is similar to SCAMPI as both are used for process assessment in an organization. However, differences do exist between the two approaches. These differences are listed in Table.

                              Table Differences between CBA IPI and SCAMPI

Issue

CBA IPI

SCAMPI

Model based

Capability Maturity Model (CMM)

Capability Maturity Model Integration (CMMI)

Licensing

No

Yes

Authorization

Through training in assessor program

Through training in appraisal program

Cost

Less external cost due to internal resource usage

Costly due to model scope, appraisal complexity, and training

Performance

Less rigorous

More rigorous

Training

Authorized lead assessors

Licensed and with authorized lead appraisers

Note: The CMMI appraisal method provides a consistent rating for organizations to convert their appraisal ratings into a maturity level.

Bootstrap is an improvement on SEI approaches for process assessment and improvement and covers the requirements laid by ISO 9000. This approach evaluates and improves the quality of software development and management process of an organization. It defines a framework for assessing and promoting process improvement. The basic objectives of this approach are listed below.

  1. To support evaluation of the process capability
  2. To identify the strengths and weaknesses of the processes in the organization being assessed
  3. To support the accomplishment of goals in an organization by planning improved actions
  4. To increase the effectiveness of the processes while implementing Standard requirements in the organization.

The main feature of the bootstrap approach is the assessment process, which leads to an improvement in the software development processes. During the assessment, the organizational processes are evaluated to define each process. Note that after the assessment is done, data is collected in a central database. In addition, it provides two questionnaires (forms containing a set of questions, which are distributed to people to gain statistical information): the first to gather data about the organization that develops the software and the second to gather data about the projects.

Software Process and Life Cycle

By Dinesh Thakur

To accomplish a set of tasks, it is important to go through a sequence of predictable steps. This sequence of steps refers to a road map, which helps in developing a timely, high quality, and highly efficient product or system. Road map, commonly referred to as software process, comprises activities, constraints, and resources that are used to produce an intended system. Software process helps to maintain a level of consistency and quality in products or services that are produced by different people.

The software development process, also known as the software life cycle, describes the evolution of the software product from its conception through itsdesign, implementation, delivery, and finally to its maintenance. This chapterdiscusses software process, standards used to assess software process, variousprocess models, and the organizational process.

SOFTWARE PROCESS, PROJECT, AND PRODUCT

Software engineering comprises interrelated and recurring entities, which are essential for software development. Software is developed efficiently and effectively with the help of well defined activities or processes. In general, a process is defined as a series of steps involving activities and resources, which produces the desired output. Software process is defined as a collection of procedures to develop the software product according to certain goals or standards. Generally, the following points are noted about software process.

  1. It uses resources subject to given constraints and produce intermediate and final products.
  2. It is composed of sub processes that are organized in such a manner that each sub process has its own process model.
  3. It is carried out with an entry and exit criteria that helps in monitoring the beginning and completion of the activity.
  4. It includes guidelines, which explain the objectives of each activity.
  5. It is vital because it imposes uniformity on the set of activities.
  6. It is regarded as more than just a procedure, tools or techniques, which are collectively used in a structured manner to produce a product.
  7. It includes various technical and managerial issues, which are required to develop the software.

                         The characteristics of software processes are listed in Table.

Characteristic

Description

Understandability

The extent to which the process is explicitly defined and the ease with which the process definition is understood.

Visibility

Whether the process activities culminate in clear results so that the progress of the process is visible externally.

Supportability

The extent to which CASE tools can support the process activities.

Acceptability

The extent to which the defined process is acceptable and usable by the engineers, responsible for producing the software product.

Reliability

The manner in which the process is designed such that errors in the process are avoided or trapped before they result in errors in the product.

Robustness

Whether the process can continue in spite of unexpected problems.

Maintainability

Whether the process can evolve to reflect the changing organizational requirements or identify process improvements

Rapidity

The speed with which the complete software can be delivered with given specifications.

A project is defined as a specification essential for developing or maintaining a specific product. Software project is developed when software processes are executed for certain specific requirements of the user. Thus, by using software process, the software project can be easily developed. The activities in software project comprise various tasks for managing resources and developing products. The software project involves people (developers, project manager, end-users, and so on) also referred to as participants who use software processes to create a product according to the user’s requirements. The participants play a major role in the development of the project and select the appropriate process for the project. In addition, a project is efficient if it is developed within the time constraint. The outcome or the result of the software project is known as a product. Thus, a software project uses software processes to create a product.

                              Software Project

Software process can be used in the development of many software projects, each of which can produce one or more software products. Software project begins with requirements and ends with the accomplishment of the requirements. Thus, the software process should be performed to develop the final software by accomplishing user’s requirements.

                              Process Projects and Products

Software Process Components

The objective of the software process is to develop a product, which accomplishes user’s requirements. The major components of the software process include a process management process and a product engineering process. The Process Management Process (PMP) aims at improving software processes so that a cost effective and high-quality product is developed. For this, the existing processes of the completed projects are examined. The process of comprehending the existing process, analyzing its properties, determining how to improve it, and then effecting the improvement is carried out by PMP.A group known as the Software Engineering Process Group (SEPG) performs the activities of the process management.

                     Components of Software Process

Based on above mentioned analysis, the product engineering processes are improved, thereby improving the software process. The aim of the product engineering process is to develop the product according to the user’s requirements. The product engineering process comprises three major components, which are listed below.

Development process: It is the process which is used during the development of the software. It specifies the development and quality assurance activities that are to be performed. Programmers, designers, testing personnel, etc., perform these processes.

Project management process: It is concerned with the set of activities or tasks, which are used to successfully accomplish a set of goals. It provides the means to plan, organize, and control the allocated resources to accomplish project costs, time, and performance objectives. For this, various processes, techniques, and tools are used to achieve the objectives of the project. Project management team performs the activities of this process.

Configuration control process: It manages changes that occur as a result of modifying the requirements. In addition, it maintains integrity of the products with the changed requirements. The activities in configuration control processes are performed by a group called the Configuration Control Board (CCB).

Note that the project management process and configuration control process depend on the development process. The management process aims to control the development process, depending on the activities in the development process.

Process Framework

Process framework determines the processes which are essential for completing a complex software project. This framework identifies certain activities, known as framework activities, which are applicable to all software projects regardless of their type and complexity. Some of the framework activities are listed below.

  1. Communication: It involves communication with the user so that the requirements are easily understood.
  2. Planning: It establishes a plan for accomplishing the project. It describes the schedule for the project, the technical tasks involved, expected risks, and the required resources.
  3. Modeling: It encompasses creation of models, which allow the developer and the user to understand software requirements and the designs to achieve those requirements.
  4. Construction: It combines generation of code with testing to uncover errors in the code.
  5. Deployment: It implies that the final product (software) is delivered to the user. The user evaluates the delivered product and provides feedback based on the evaluation.

                        Process Framework

In addition to framework activities, process framework also comprises a set of activities known as umbrella activities, which are used throughout the software process. These activities are listed below.

  1. Software project tracking and control: It monitors the actual process so that management can take necessary steps if the software project deviates from the plans laid down. It involves tracking procedures and reviews to check whether the software project is according to user’s requirements. A documented plan is used as a basis for tracking the software activities and revising the plans.
  2. Formal technical reviews: It assesses the code, products and documents of software engineering practices to detect and remove errors.
  3. Software quality assurance: It assures that the software is according to the requirements. In addition, it is designed to evaluate the processes of developing and maintaining quality of the software.
  4. Reusability management: It determines the criteria for products reuse and establishes mechanisms to achieve reusable Components.
  5. Software configuration management: It manages the changes made in the software processes of the products throughout the life cycle of the software project. It controls changes made to the configuration and maintains the integrity in the software development process.
  6. Risk management: It identifies, analyzes, evaluates and eliminates the possibility of unfavourable deviations from expected results, by following a systematic activity and then develops strategies to manage them.

Software Engineering Challenges

By Dinesh Thakur

Software engineering employs a well defined and systematic approach to develop software. This approach is considered to be the most effective way of producing high-quality software. However, despite this systematic approach in software development, there are still some serious challenges faced by software engineering. Some of these challenges are listed below.

  1. The methods used to develop small or medium-scale projects are not suitable when it comes to the development of large-scale or complex systems.
  2. Changes in software development are unavoidable. In today’s world, changes occur rapidly and accommodating these changes to develop complete software is one of the major challenges faced by the software engineers.
  3. The advancement in computer and software technology has necessitated for the changes in nature of software systems. The software systems that cannot accommodate changes are not of much use. Thus, one of the challenges of software engineering is to produce high quality software adapting to the changing needs within acceptable schedules. To meet this challenge, the object oriented approach is preferred, but accommodating changes to software and its maintenance within acceptable cost is still a challenge.
  4. Informal communications take up a considerable portion of the time spent on software projects. Such wastage of time delays the completion of projects in the specified time.
  5. The user generally has only a vague idea about the scope and requirements of the software system. This usually results in the development of software, which does not meet the user’s requirements.
  6. Changes are usually incorporated in documents without following any standard procedure. Thus, verification of all such changes often becomes difficult.
  7. The development ofl1igh-quality and reliable software requires the software to be thoroughly tested. Though thorough testing of software consumes the majority of resources, underestimating it because of any reasons deteriorates the software quality.

In addition to the above mentioned key challenges, the responsibilities of the system analyst, designers, and programmers are usually not well defined. Also, if the user requirements are not precisely defined, software developers can misinterpret the meaning. All these challenges need to be addressed in order to ensure that the software is developed within the specified time and estimated costs and also meets the requirements specified by the user.

Emergence of Software Engineering

By Dinesh Thakur

Software engineering discipline is the result of advancement in the field of technology. In this section, we will discuss various innovations and technologies that led to the emergence of software engineering discipline.

Early Computer Programming

As we know that in the early 1950s, computers were slow and expensive. Though the programs at that time were very small in size, these computers took considerable time to process them. They relied on assembly language which was specific to computer architecture. Thus, developing a program required lot of effort. Every programmer used his own style to develop the programs.

High Level Language Programming

With the introduction of semiconductor technology, the computers became smaller, faster, cheaper, and reliable than their predecessors. One of the major developments includes the progress from assembly language to high-level languages. Early high level programming languages such as COBOL and FORTRAN came into existence. As a result, the programming became easier and thus, increased the productivity of the programmers. However, still the programs were limited in size and the programmers developed programs using their own style and experience.

Control Flow Based Design

With the advent of powerful machines and high level languages, the usage of computers grew rapidly: In addition, the nature of programs also changed from simple to complex. The increased size and the complexity could not be managed by individual style. It was analyzed that clarity of control flow (the sequence in which the program’s instructions are executed) is of great importance. To help the programmer to design programs having good control flow structure, flowcharting technique was developed. In flowcharting technique, the algorithm is represented using flowcharts. A flowchart is a graphical representation that depicts the sequence of operations to be carried out to solve a given problem.

Note that having more GOTO constructs in the flowchart makes the control flow messy, which makes it difficult to understand and debug. In order to provide clarity of control flow, the use of GOTO constructs in flowcharts should be avoided and structured constructs-decision, sequence, and loop-should be used to develop structured flowcharts. The decision structures are used for conditional execution of statements (for example, if statement). The sequence structures are used for the sequentially executed statements. The loop structures are used for performing some repetitive tasks in the program. The use of structured constructs formed the basis of the structured programming methodology.

Structured programming became a powerful tool that allowed programmers to write moderately complex programs easily. It forces a logical structure in the program to be written in an efficient and understandable manner. The purpose of structured programming is to make the software code easy to modify when required. Some languages such as Ada, Pascal, and dBase are designed with features that implement the logical program structure in the software code.

Data-Flow Oriented Design

With the introduction of very Large Scale Integrated circuits (VLSI), the computers became more powerful and faster. As a result, various significant developments like networking and GUIs came into being. Clearly, the complexity of software could not be dealt using control flow based design. Thus, a new technique, namely, data-flow-oriented technique came into existence. In this technique, the flow of data through business functions or processes is represented using Data-flow Diagram (DFD). IEEE defines a data-flow diagram (also known as bubble chart and work-flow diagram) as ‘a diagram that depicts data sources, data sinks, data storage, and processes performed on data as nodes, and logical flow of data as links between the nodes.’

Object Oriented Design

Object-oriented design technique has revolutionized the process of software development. It not only includes the best features of structured programming but also some new and powerful features such as encapsulation, abstraction, inheritance, and polymorphism. These new features have tremendously helped in the development of well-designed and high-quality software. Object-oriented techniques are widely used these days as they allow reusability of the code. They lead to faster software development and high-quality programs. Moreover, they are easier to adapt and scale, that is, large systems can be created by assembling reusable subsystems.

Software Engineering Phases

By Dinesh Thakur

Software engineering shares common interest with other engineering disciplines. Like other engineering domains where a given problem (for example, building a bridge) can be solved by following a series of interrelated steps, the software development process also comprises a number of steps or phases. The main objective of software engineering is to develop methods for large systems, which help developers obtaining high-quality software in minimum time and at low cost. Therefore, it is essential to perform software development in phases. This phased development of software is often referred to as the software development life cycle (SDLC) or software life cycle.

                        Software Engineering Phases

A software development process comprises different phases. These phases follow a top-to-bottom approach, implying that the phases take inputs from the previous phases, add features, and then produce outputs. The outputs from different phases are referred to as intermediate product, work product, or derivable. Various phases involved in the systematic development of software. The phases of the software development process are shown as a comparison to the process of building a bridge in Table.

                               Table   Building Bridge and Corresponding SDLC Phase

Phase

Building Bridge

SDLC Phase

Formulate the problem by understanding the nature and general requirements of the problem.

Understand the locations where the bridge is to be built; estimate the traffic that would pass on from the bridge along with its size requirements such as height and width; and so on.

Requirements analysis

Defining the problem precisely.

Specify the exact location where the bridge is to be built along with its size and type.

Requirements specifications

Detailing the solution to the problem.

Determine exact configuration, size of the cables and beams, and developing blueprints for the bridge.

Software design

Implementing

Correspond to actual building of the bridge.

Software coding

Checking

Specify load, pressure, endurance, and robustness of the bridge.

Software testing

Maintaining

Specify the essential repairs that are to be made such as repainting, repaving, etc.

Software maintenance

This phase commences with discussion on the requests made by the user. The requests can be for a new system or for modifying the existing one. In this phase, it is determined whether the user’s requirements can be met with the available hardware and software technologies. Preliminary investigation verifies the problem and understands the need for the required system. It involves determining whether the proposed system is beneficial for business and can be developed within the specified budget. In addition, the time factor that determines the duration of the project is also considered.

Preliminary investigation should be quick and cost effective. The output of preliminary investigation decides whether the new system should be developed. There are three constraints on which the decision to go ahead or not depends. These are listed below.

  1. Technical: This evaluation determines whether technology needed for the proposed system is available and if it is available, then how it can be integrated within the organization. Technical evaluation also determines whether the existing system can be upgraded to use new technology and’ whether the organization has the expertise to use it.
  2. Time: This evaluation determines the time needed to complete a project. Time factor is an important issue in software development as cost increases with an increase in the time period of a project.
  3. Budgetary: This evaluation looks at the financial aspect of the project. Budgetary evaluation determines whether the investment needed to implement the system will be recovered at later stages.

This phase studies the problems or requirements of software in detail. These requirements define the processes to be managed during the software development. After analyzing the requirements of the user, a requirements statement known as Software Requirements Specification (SRS) is developed. After analysis, planning for the project begins, which includes developing plans that describe the activities to be performed during the project development such as software configuration management plans, project and scheduling, and quality assurance plans. In addition, the resources required during the project are also determined.

In this phase, the requirements are given a ‘defined’ form. Design can be defined as a process of deciding information structures in terms of efficiency, flexibility, and reusability. Software design serves as the blueprint for the implementation of requirements in the software system. Each element of the analysis model in the analysis phase provides information that can be used for creating design models. The requirements specification of software together with data, functional, and behavioural model provides a platform to feed the design task to achieve the desired functionality and quality.

First, a top level design is made to outline the problem solution. Next, detailed designing is carried out to specify all the details needed so that the programmers can easily implement the1design. Some of the basic design principles that are used for a good design practice are listed below.

  1. Software design should be traceable to the analysis model: As a single design element often traces multiple requirements, it becomes essential to have a means for tracking how requirements are satisfied by a design model.
  2. Software design should demonstrate uniformity and integration: A design is said to be uniform if its appearance is consistent in the design model. In most cases, rules, formats, and styles are defined in advance to the design team before the design work begins.
  3. Software design should be structured to adapt to changes: The software design should be flexible enough to adapt to changes easily. To achieve the flexibility, the basic design concepts such as abstraction, refinement, and modularity should be applied effectively.
  4. Software design should endeavour to minimize conceptual (Semantic) Errors: The design team ensures that major conceptual elements of designsuch as ambiguity and inconsistency have been addressed in advance.

The coding phase can be defined as a process of translating the software requirements into a programming language, using tools that are available. Writing an efficient software code requires a thorough knowledge of programming language and its tools. Therefore, it is important to choose the appropriate programming language according to the user’s requirements. A program code is efficient if it makes optimal use of resources and contains minimum errors.

To write software code efficiently and with minimum errors in a programming language, a coding style is followed. A coding style comprises several guidelines known as coding guidelines that are used to implement individual programming language constructs, comments, formatting, and so on. The objective of using these guidelines is to reduce complexity and errors in programs and improve the understanding of the source code. A set of comprehensive coding guidelines encompasses all aspects of code development. To ensure that all developers work in a harmonized manner (the source code should reflect a harmonized style as if a single developer has written the entire code in one session), the developers should be aware of the coding guidelines before the inception of a software project.

Software testing is performed to ensure that the software is free from errors. Efficient testing improves the quality of software. To achieve high-quality software, testing requires a thorough analysis of the software in a systematic manner. A test plan is created to test software in a planned and systematic manner. In addition, software testing is performed to ensure that the software produces the correct output. This implies that outputs produced should be according to user requirements, produced by following rules and guidelines. These rules and guidelines that are followed while performing testing are known as principles of software testing and help perform testing efficiently and effectively. The commonly followed principles for software testing are listed below.

  • Define the expected output: When programs are executed during software testing, they mayor may not produce the expected output. This can be due to different errors present in the software. Hence, before software testing begins, it is necessary to define the expected output.
  • Inspect output of each test completely: The output of each test should be inspected thoroughly in order to determine the performance and functionality of the software.
  • Include test cases for invalid and unexpected conditions: Software produces correct outputs when it is tested using precise or expected inputs. However, if an unexpected input is given to software, it may produce erroneous outputs. Hence, it is necessary to develop test cases that detect errors, when unexpected and incorrect inputs are given.
  • Test the modified program to check its expected performance: Sometimes, when certain modifications (such-as adding new functions) are made in the software, it may produce unexpected outputs. Hence it is necessary to test the software after modifications to check whether it performs in the expected manner.
  • Plan test to find errors: Testing is planned with an intention of finding errors in software. It should be viewed as a process that locates errors rather than as one that proves the correctness of the software.

This phase comprises a set of software engineering activities that occur after the software has been delivered to the user. The objective of this phase is to make the software operational as per the user requirements and to provide continuity of service. To achieve this objective, software maintenance focuses on fixing errors, recovering from failures such as hardware failures or incompatibility of hardware with software. In addition, it facilitates future maintenance work by modifying the software code and databases used in the software.

After the software is developed and delivered, it may require changes. Sometimes, changes are made in a software system when user requirements are not completely met. To make changes in a software system, the software maintenance process evaluates, controls, and implements changes. Note that changes can also be forced on the software system because of changes in government regulations or in policies of the organization.

Software is developed using different software process models. It must be noted that software maintenance is applicable to every software system regardless of the software process model followed. Software maintenance is performed to accomplish tasks such as detecting and fixing errors, supporting enhancements, and improving software to accomplish user requirements.

Definition of Software Engineering and Software Engineering Layers

By Dinesh Thakur

Over the last 50 years there has been revolutionary advancement in the field of technology, leading to improvements in hardware performance and profound changes in computing architectures. This advancement has led to the production of complex computer-based systems that are capable of providing information in a wide variety of formats. The increase in computer power has made unrealistic computer applications a feasible proposition, marking the genesis of an era where software products are far more complex as compared to their predecessors. By using software engineering practices, these complex systems can be developed in a systematic and efficient manner. [Read more…] about Definition of Software Engineering and Software Engineering Layers

Software Crisis in Software Engineering

By Dinesh Thakur

In the late 1960s, it became clear that the development of software is different from manufacturing other products. This is because employing more manpower (programmers) later in the software development does not always help speed up the development process. Instead, sometimes it may have negative impacts like delay in achieving the scheduled targets, degradation of software quality, etc. Though software has been an important element of many systems since a long time, developing software within a certain schedule and maintaining its quality is still difficult.

History has seen that delivering software after the scheduled date or with errors has caused large scale financial losses as well as inconvenience to many. Disasters such as the Y2Kproblem affected economic, political, and administrative systems of various countries around the world. This situation, where catastrophic failures have occurred, is known as software crisis. The major causes of software crisis are the problems associated with poor quality software such as malfunctioning of software systems, inefficient development of software, and the most important, dissatisfaction amongst the users of the software.

The software market today has a turnover of more than millions of rupees. Out of this, approximately thirty Percent of software is used for personal computers and the remaining software is developed for specific users or organizations. Application areas such as the banking sector are completely dependant on software application. Software failures in these technology-oriented areas have led to considerable loss in terms of time, money, and even human lives. History has been witness to many such failures, some of which are listed below.

  1. The Northeast blackout in 2003 has been one of the major power system failures in the history of North America. This blackout involved failure of 100 power plants due to which almost 50 million customers faced power loss that resulted in financia110ss of approximately $6 billion. Later, it was determined that the major reason behind the failure was a software bug in the power monitoring and management system.
  2. Year 2000 (Y2K) problem refers to the widespread snags in processing dates after the year 2000. The roots ofY2K problem can be traced back to 1960-80 when developers shortened the 4-digit date format like 1972 to a 2-digit format like 72 because of limited memory. At that time they did not realize that year 2000 will be shortened to 00 which is less than 72. In the 1990s, experts began to realize this major shortcoming in the computer application and then millions were spent to handle this problem.
  3. In 1996, Arian-5 space rocket, developed at the cost of $7000 million over a period of 10 years was destroyed within less than a minute after its launch. The crash occurred because there was a software bug in the rocket guidance system.
  4. In 1996, one of the largest banks of US credited accounts of nearly 800 customers with approximately $9241acs. Later, it was detected that the problem occurred due to a programming bug in the banking software.
  5. During the Gulf War in 1991, the United States of America used Patriot missiles as a defense against Iraqi Scud missiles. However, the Patriot failed to hit the Scud many times. As a result, 28 US soldiers were killed in Dhahran, Saudi Arabia. An inquiry into the incident concluded that a small bug had resulted in the miscalculation of missile path.

Software Myths : What is software myth in software engineering.

By Dinesh Thakur

The development of software requires dedication and understanding on the developers’ part. Many software problems arise due to myths that are formed during the initial stages of software development. Unlike ancient folklore that often provides valuable lessons, software myths propagate false beliefs and confusion in the minds of management, users and developers.

Managers, who own software development responsibility, are often under strain and pressure to maintain a software budget, time constraints, improved quality, and many other considerations. Common management myths are listed in Table.

                                                 Table Management Myths

  • The members of an organization can acquire all-the information, they require from a manual, which contains standards, procedures, and principles;
  • Standards are often incomplete, inadaptable, and outdated.
  • Developers are often unaware of all the established standards.
  • Developers rarely follow all the known standards because not all the standards tend to decrease the delivery time of software while maintaining its quality.
  • If the project is behind schedule, increasing the number of programmers can reduce the time gap.
  • Adding more manpower to the project, which is already behind schedule, further delays the project.
  • New workers take longer to learn about the project as compared to those already working on the project.
  • If the project is outsourced to a third party, the management can relax and let the other firm develop software for them.
  • Outsourcing software to a third party does not help the organization, which is incompetent in managing and controlling the software project internally. The organization invariably suffers when it out sources the software project.

In most cases, users tend to believe myths about the software because software managers and developers do not try to correct the false beliefs. These myths lead to false expectations and ultimately develop dissatisfaction among the users. Common user myths are listed in Table.

                                                    Table User Myths

  • Brief requirement stated in the initial process is enough to start development; detailed requirements can be added at the later stages.
  • Starting development with incomplete and ambiguous requirements often lead to software failure. Instead, a complete and formal description of requirements is essential before starting development.
  • Adding requirements at a later stage often requires repeating the entire development process.
  • Software is flexible; hence software requirement changes can be added during any phase of the development process.
  • Incorporating change requests earlier in the development process costs lesser than those that occurs at later stages. This is because incorporating changes later may require redesigning and extra resources.

In the early days of software development, programming was viewed as an art, but now software development has gradually become an engineering discipline. However, developers still believe in some myths-. Some of the common developer myths are listed in Table.

                                                 Table Developer Myths

  • Software development is considered complete when the code is delivered.
  • 50% to 70% of all the efforts are expended after the software is delivered to the user.
  • The success of a software project depends on the quality of the product produced.
  • The quality of programs is not the only factor that makes the project successful instead the documentation and software configuration also playa crucial role.
  • Software engineering requires unnecessary documentation, which slows down the project.
  • Software engineering is about creating quality at every level of the software project. Proper documentation enhances quality which results in reducing the amount of rework.
  • The only product that is delivered after the completion of a project is the working program(s).
  • The deliverables of a successful project includes not only the working program but also the documentation to guide the users for using the software.
  • Software quality can be assessed only after the program is executed.
  • The quality of software can be measured during any phase of development process by applying some quality assurance mechanism. One such mechanism is formal technical review that can be effectively used during each phase of development to uncover certain errors.

What is software? Characteristics and Classification of Software.

By Dinesh Thakur

In earlier times, software was simple in nature and hence, software development was a simple activity. However, as technology improved, software became more complex and software projects grew larger. Software development now necessitated the presence of a team, which could prepare detailed plans and designs, carry out testing, develop intuitive user interfaces, and integrate all these activities into a system. This new approach led to the emergence of a discipline known as software engineering. [Read more…] about What is software? Characteristics and Classification of Software.

Software Engineering – What is Software Engineering? Write Basic Objective and Need for Software Engineering

By Dinesh Thakur

Over the last 50 years there has been revolutionary advancement in the field of technology, leading to improvements in hardware performance and profound changes in computing architectures. This advancement has led to the production of complex computer-based systems that are capable of providing information in a wide variety of formats. The increase in computer power has made unrealistic computer applications a feasible proposition, marking the genesis of an era where software products are far more complex as compared to their predecessors. By using software engineering practices, these complex systems can be developed in a systematic and efficient manner. [Read more…] about Software Engineering – What is Software Engineering? Write Basic Objective and Need for Software Engineering

Write Management Approaches in Software Engineering

By Dinesh Thakur

A basic issue in software project management is whether the process or the project is the essential feature managed. In process-oriented management the management of the small tasks in the software life cycle is emphasized.

 

 

There are four important functions that are intrinsic to the technical management of a software development. These function are change management, risk containment, cost and schedule control, and issue resolution. The success or failure of a software development depends on how well these four functions are handled by the development team and its management.

Differentiate Between Process, Project and Products

By Dinesh Thakur

A software process as mentioned earlier, specifies a method of development software. A software project, on the other hand is a development project in which a software process is used. And software products are the outcomes of a software project.

 Each software development project starts with some needs and (hopefully) ends with some software that satisfies those needs. A software process specifies the abstract set of activities that should be performed to go from user needs to final product. The actual act of executing the activities for some specific user needs is a software project. And all the outputs that are produced while the activities are being executed are the products.

Spiral model in Software Engineering

By Dinesh Thakur

In the 1980s; Boehm introduced a process model known as the spiral model. The spiral model comprises activities organized in a spiral, and has many cycles. This model combines the features of the prototyping model and waterfall model and is advantageous for large, complex, and expensive projects. It determines requirements problems in developing the prototypes. In addition, it guides and measures the need of risk management in each cycle of the spiral model. IEEE defines the spiral model as ‘a model of the software development process in which the constituent activities, typical requirements analysis, preliminary and detailed· design, coding, integration, and testing, are performed iteratively until the software is complete.

The objective of the spiral model is to emphasize management to evaluate and resolve risks in the software project. Different areas of risks in the software project are project overruns, changed requirements, loss of key project personnel, delay of necessary hardware, competition with other software developers and technological breakthroughs, which make the project obsolete.

                Table Advantages and Disadvantages of Prototyping Model

Advantages

Disadvantages

  • Provides a working model to the user early in the process, enabling early assessment and increasing user’s confidence.
  • The developer gains experience and insight by developing a prototype there by resulting in better implementation of requirements.
  • The prototyping model serves to clarify requirements, which are not clear, hence reducing ambiguity and improving communication between the developers and users.
  • There is a great involvement of users in software development. Hence, the requirements of the users are met to the greatest extent.
  • Helps in reducing risks associated with the software.
  • If the user is not satisfied by the developed prototype, then a new prototype is developed. This process goes on until a perfect prototype is developed. Thus, this model is time consuming and expensive.
  • The developer loses focus of the real purpose of prototype and hence, may compromise with the quality of the software. For example, developers may use some inefficient algorithms or inappropriate programming languages while developing the prototype.
  • Prototyping can lead to false expectations. For example, a situation may be created where the user believes that the development of the system is finished when it is not.
  • The primary goal of prototyping is speedy development, thus, the system design can suffer as it is developed in series without considering integration of all other components.

                Spiral Model

The steps involved in the spiral model are listed below.

1. Each cycle of the first quadrant commences with identifying the goals for that cycle. In addition, it determines other alternatives, which are possible in accomplishing those goals.

2. The next step in the cycle evaluates alternatives based on objectives and constraints. This process identifies the areas of uncertainty and focuses on significant sources of the project risks. Risk signifies that there is a possibility that the objectives of the project cannot be accomplished. If so, the formulation of a cost-effective strategy for resolving risks is followed.

3. The development of the software depends on remaining risks. The third quadrant develops the final software while considering the risks that can occur. Risk management considers the time and effort to be devoted to each project activity such as planning, configuration management, quality assurance, verification, and testing.

4. The last quadrant plans the next step and includes planning for the next prototype and thus, comprises the requirements plan, development plan, integration plan, and test plan.

One of the key features of the spiral model is that each cycle is completed by a review conducted by the individuals or users. This includes the review of all the intermediate products, which are developed during the cycles. In addition, it includes the plan for the next cycle and the resources required for that cycle.

The spiral model is similar to the waterfall model as software requirements are understood at the early stages in both the models. However, the major risks involved with developing the final software are resolved in the spiral model. When these issues are resolved, a detailed design of the software is developed.Notethat processes in the waterfall model are followedby different cycles in the spiral model as shown in Figure.

                  Spiral and Waterfall Models

The spiral model is also similar to the prototyping model as one of the key features of prototyping is to develop a prototype until the user requirements are accomplished. The second step of the spiral model functions similarly. The prototype is developed to clearly understand and achieve the user requirements. If the user is not satisfied with the prototype, a new prototype known as operational prototype is developed.

Various advantages and disadvantages associated with the spiral model are listed in Table.

                    Table Advantages and Disadvantages of Spiral Model

Advantages

Disadvantages

  • Avoids the problems resulting in risk-driven approach in the software
  • Specifies a mechanism for software quality assurance activities
  • Is utilized by complex and dynamic projects
  • Re-evaluation after each step allows changes in user perspectives, technology advances, or financial perspectives.
  • Estimation of budget and schedule gets realistic as the work progresses.
  • Assessment of project risks and itsresolution is not an easy task.
  • Difficult to estimate budget and schedule in the beginning as some of the analysis is not done until the design of the software is developed.

What are Various Types of Errors that Occur in SRS

By Dinesh Thakur

Omission: – is a common error in requirements. In this type of error, some user requirements are simply not included in the SRS The omitted requirement may be related to the behavior of the system, its performance, constraints or any other factor.

Inconsistency: – It can be due to contradictions within the requirements themselves or to incompatibility of the stated requirements with the actual requirements of the client or with the environment in which the system will operate.

Incorrect fact:-  This  error occurs when some fact recorded in the SRS is not correct.

Ambiguity: – This error occurs when there are some requirements that have multiple meanings, that is, their interpretation is not unique.

Write Down Various Software Problems

By Dinesh Thakur

Software is expensive: Over the past decades, with the advancement of technology, the cost of hardware has consistently decreased. On the other hand, the cost of software is increasing. As a result, the hardware/software ratio for a computer system has shown a reversal from the early years.

The main reason for the high cost of software is that software development is still labor-intensive. The main cost of producing software is in the manpower employed, the cost of developing software is generally measured in terms of person-months of effort spent in development. And productivity is frequently measured in the industry in terms of DLOC per person-month.

Late, costly, and unreliable: There are many instances quoted about software projects that are behind schedule and have cost overruns. The software industry has gained a reputation of not being able to deliver on time and within budget.  Software failures are different from failure of, say, mechanical or electrical systems.

Products of these other engineering disciplines fail because of the change in physical or electrical properties of the system caused by aging. In software, failure occurs due to bugs or errors that get introduced during the design and development process. Hence, even though a software may fail after operating correctly for some time, the bug that causes that failure was there from the start. It only got executed at the time of the failure.

This is quite different from other systems, where if a system fails, it generally means that sometime before the failure the system development some problem that did not exist earlier.

Problem of change and rework: Once the software is delivered and deployed, it enters the maintenance phase. All systems need maintenance, but for other systems it is largely due to problems that are introduced due to aging. Software needs to be maintained not because some of its components wear out and need to be replaced, but because there are often some residual errors remaining in the system that must be removed as they are discovered.

Maintenance involves understanding the existing software, understanding the effects of change, making the changes, to both the code and the documents testing the new parts (changes), and retesting the old parts that were not changed. Maintenance can be corrective and adaptive.

What are Various Software Engineering Problems? Explain

By Dinesh Thakur

Software engineering is the systematic approach to the development, operation, maintenance, and retirement of software. There are few fundamental problems that software engineering faces.

The Problem of scale:    A fundamental problem of software engineering is the problem of scale; development of a very large system requires a very different set of methods compared to developing a small system. In other words, the methods that are used for developing small systems generally do not scale up to large systems. A different set of methods has to be used for developing large software. Any large project involves the use of technology and project management.

For software projects, by technology we mean the methods, procedures, and tools that are used. In small projects, informal methods for development and management can be used. However, for large projects, both have to be much more formal.

While dealing with a small software project, the technology requirement is low and the project management requirement is also low. However, when the scale changes to large systems, to solve such problems properly, it is essential that we move in both directions-the methods used for development need to be more formal, and the project management for the development project also needs to be more formal. 

Cost, schedule and quality: The cost of developing a system is the cost of the resources used for the system, which, in the case of software, are the manpower, hardware, software, and the other support resources. Generally, the manpower component is predominant, as software development is largely labor-intensive and the cost of the computing systems is now quite low.

Hence, the cost of software project is measured in terms of person-months, i.e. the cost is considered to be the total number of person-months spent in the project. Schedule is an important factor in many projects. Business trends are dictating that the time to market of a product should be reduced; that is, the cycle time from concept to delivery should be small. Any business with such a requirement will also require that the cycle time for building a software needed by the business be small.

One of the major factors driving any production discipline is quality. We can view quality of a software product as having three dimensions:

             Product Operation
             Product Transition
             Product Revision        

The Problem of consistency: Though high quality, low cost and small cycle time are the primary objectives of any project, for an organization there is another goal: consistency. An organization involved in software development does not just want low cost and high quality for a project, but it wants these consistently.                                               

Write Role of Management

By Dinesh Thakur

Proper management is an integral part of software development. A large software development project involves many people working for a long period of time. We have seen that a development process typically partitions the problem of developing software into a set of phases.

 

To meet the cost, quality, and schedule objectives, resources have to be properly allocated to each activity for the project, and progress of different activities has to be monitored and corrective actions taken, if needed.

 

All these activities are part of the project management process. The project management process component of the software process specifies all activities that need to be done by the project management to ensure that cost and quality objectives are met. Its basic task is to ensure that, once a development process is chosen, it is implemented optimally.

 

The focus of the management process is on issues like planning a project, estimating resource and schedule, and monitoring and controlling the project. In other words, the basic task is to plan the detailed implementation of the process for the particular project and then ensures that the plan is followed. For a large project, a proper management process is essential for success. The activities in the management process for a project can be grouped broadly into three phases:-

            Planning
            Monitoring and control
            Termination analysis

 

Project management begins with planning, which is perhaps the single largest responsibility of the project management. The goal of this phase is to develop a plan for software development following which the objectives of the project can be met successfully and efficiently. Project monitoring and control phase of the management process is the longest in terms of duration. It encompasses most of the development process.

 

It includes all activities the project management has to perform while the development is going on to ensure that project objectives are met and the development proceeds according to the developed plan. As cost, schedule, and quality are the major driving forces, most of the activity of this phase revolves around monitoring factors that affect them.

 

Termination analysis is performed when the development process is over. The basic reason for performing termination analysis is to provide information about the development process. Remember that a project is an instantiation of the process. To understand the properties of the process, data from many projects that used the process can be used to make predictions and estimations about future projects. The data about the project is also needed to analyze the process.

Write and Explain Software Development Phases

By Dinesh Thakur

A development process consists of various phases, each phase ending with a defined output. The phases are performed in an order specified by the process model being followed. The main reason for having a phased process is that it breaks the problem of developing software into successfully performing a set of phase, each handling a different concern of software development.

 This ensures that the cost of development is lower than what it would have been if the whole problem were tackled together. A phased development process is central to the software engineering approach for solving the software crisis. In general, we can say that any problem solving in software must consist of these activities:

Requirement analysis

 The requirement analyses and identifies what is needed from the system. Requirements analysis is done in order to understand the problem the software system is to solve. The problem could be automating an existing manual process, developing a new automated system, or a combination of the two. The two parties involved in software development are the client and the developer. The developer has to develop the system to satisfy the client’s needs. The developer usually does not understand the client’s problem domain, and the client often does not understand the issues involved in software systems This causes a communication gap.  This phase bridges the gap between the two parties. The outcome of this phase is the software requirement specification document (SRS). The person responsible for the requirements analysis is often called the analyst.

Software Design

It is the first step in moving from problem domain to solution domain. The purpose of the design phase is to plan a solution of the problem specified by the requirement documents. Starting with what is needed, design takes us towards how to satisfy the needs. The design of a system is perhaps the most critical factor affecting the quality of the software. It has a major impact on the later phases, particularly testing and maintenance. The output of this phase is the design document. This document is similar to a blueprint or a plan for the solution and is used later during implementation, testing and maintenance. It is further of two types:

System Design or Top level Design: It identifies the various modules that should be in the system, the specifications of the modules and interconnections between the various modules. At the end of system design all the major data structures, file formats, output formats, and the major modules in the system and their specifications are decided.

Detailed Design: It identifies the internal logic of the various modules. During this phase further details of the data structures and algorithmic design of each of the modules is specified. Once the design is complete, most of the major decisions about the system have been made. However, many of the details about coding the designs, which often depend on the programming language chosen, are not specified during design.

Coding

This phase translates the design of the system into code in a given programming language. This phase effects the both testing and maintenance. Well-written code can reduce the testing and maintenance efforts. The focus is on developing programs that are easy to read and understand. Simplicity and clarity should be strived for during the coding phase.

Testing

It is a major quality control measure used during software development. Its basic function is to detect errors in the software. Its basic function is to detect errors in the software. After the coding phase, computer programs are available that can be executed for testing purpose. This implies that testing not only has to uncover errors introduced during coding, but also errors introduced during the previous phases. Thus, the goal of testing is to uncover requirement, design, and coding errors in the programs. Consequently, different levels of testing are used. The different types of testing are:

a.    Unit testing:

 It tests each module separately and detects ceding errors.

b.    Integration testing:

When the various modules are integrated, this testing is performed to detect errors from the overall system.

c.    System testing:

The system is tested against the system requirements to see if all the requirements are met and if the system performs as specified in SRS.

d.    User Acceptance Testing:

The system is tested against the user requirements to see if the user is satisfied.

Write Major Problems in System (Software) Development

By Dinesh Thakur

1.  Development time problem:


Some large systems take so long to develop that the technology (computer, software, hardware components) changes between the time the system is first conceptualized and the time it is ready for delivery to the user.

2. System user interface problem:

 

The system user interface (man machine interface) is frequently neglected during initial system design.

 

3. Test and integration Problem:

 It is also a big problem to test the software with real data, and to integrate different modules.

4. Maintenance problem:

Some large system may have maintenance problem.

5.    Lack of common purpose problem:

Some time contractor, builder etc give importance to their own work as compared to company project.

Explain Software Process & Characteristics

By Dinesh Thakur

The process that deals with the technical and management issues of software development is called a software process. A software development project must have at least development activities and project management activities. The fundamental objectives of a process are the same as that of software engineering (after all, the process is the main vehicle of satisfying the software engineering objectives), viz. optimality and scalability.

Optimality means that the process should be able to produce high-quality software at low cost, and scalability means that it should also be applicable for large software projects. To achieve these objectives, a process should have some properties. Predictability of a process determines how accurately the outcome of following a process in a project can be predicted before the project is completed. Predictability can be considered a fundamental property of any process, In fact, if a process is not predictable, it is of limited use.

One of the important objectives of the development project should be to produce software that is easy to maintain. And the process should be such that it ensures this maintainability. Testing consumes the most resources during development. Underestimating the testing effort often causes the planners to allocate insufficient resources for testing, which, in turn, results in unreliable software or schedule slippage.

The goal of the process should not be to reduce the effort of design and coding, but to reduce the cost of maintenance. Both testing and maintenance depend heavily on the design and coding of software, and these costs can be considerably reduced if the software is designed and coded to make testing and maintenance easier. Hence, during the early phases of the development process the prime issues should be “can it be easily tested” and “can it be easily modified”. Errors can occur at any stage during development.

However error detection and correction should be a continuous process that is done throughout software development. Detecting errors soon after they have been introduced is clearly an objective that should be supported by the process. A process is also not a static entity.

As the productivity (and hence the cost of a project) and quality are determined largely by the process to satisfy the engineering objectives of quality improvement and cost reduction, the software process must be improved. Having process improvement as a basic goal of the software process implies that the software process used is such that is supports its improvement.

Explain Software Components Applications

By Dinesh Thakur

The software engineering deals with three basic types of entities – processes, project, and products. A software process is a method of developing software. A software project is a development project in which a software process is used. And software products are the outcomes of a software project.

 

Each software development project starts with some needs and (hopefully) project starts ends with some software that satisfies those needs.

 

A software process specifies the abstract set of activities that should be performed to go from user needs to final product. The actual act of executing the activities for some specific user needs is a software project. And all the outputs that are produced while the activities are being executed are the products (one of which is the final software).

 

These three entities require different processes. The major process dealing with products is the development process responsible for producing the desired product and other products (e.g. user manual, and requirement specification). The basic goal of this process is to develop a product that will satisfy the customer.

 

A software project is clearly a dynamic entity in which activities are performed and project management process is needed to properly control this dynamic activity. The development process specifies the development and quality assurance activities that need to be performed, whereas the management process specifies how to plan and control these activities so that project objectives are met. To handle the inevitable change and reworked requests another processes called software configuration control, process is generally used

 

         Software components          

The objective of this component process is to primarily deal with managing change, so that the cost and quality objectives are met and the integrity of the products is not violated despite these change requests. These three constituent processes focus on the projects and the products. In fact, they can be all considered as comprising product-engineering process, as their main objective is to produce the desired product. The process management process deals with the software process. It’s basic objective is to improve the software process. By improvement we mean that the capability of the process to produce quality goods at low cost is improved. The process management deals with the whole process of understanding the current process, analyzing its properties, determining how to improve and then implanting it.

What is Process Model? Explain Waterfall Model Along With its Limitations

By Dinesh Thakur

A development process model specifies some activities that, according to the model, should be performed, and the order in which they should be performed. As stated earlier, for cost, quality, and project management reasons, development processes are generally phased.

As the development process specifies the major development and quality assurances activities that need to be performed in the project, the development process really forms the core of the software process. Due to the importance of development process, various models have been proposed.

Waterfall Model:

It states that the phases are organized in a linear manner. There are variations of the waterfall model depending on the nature of activities and the flow of control between them. In a typical model, a project begins with feasibility analysis. On successfully demonstrating the feasibility of a project, the requirement analysis and project planning begins. The design starts after the requirements analysis is complete, and coding begins after the design is complete. Once the programming is completed, the code is installed.

After this, the regular operation and maintenance of the system takes place. With the waterfall model, the sequence of activities performed in a software development project is: requirement analysis, project planning, system design, detailed design, coding and unit testing, system integration and testing. There are two basic assumptions for justifying the linear ordering of phases in the manner proposed by the waterfall mode. The various phases in this model are:

 

1. System Feasibility

2. Requirement Analysis & Project Planning

3. System Design

4. Detailed Design

5. Coding

6. Testing & Integration

7. Installation

8. Operations & maintenance

 

The various products produced in Waterfall model are:

 

  1.     Requirements document
  2.     Project plan
  3.     System Design Document
  4.     Detailed Design Document
  5.     Test plan & test reports
  6.     Final code
  7.     Software manuals
  8.     Review reports

Assumptions in Waterfall Model: 

For a successful project resulting in a successful product, all phases listed in the waterfall model must be performed anyway. Any different ordering of the phases will result in a less successful software product.

Limitations:

The waterfall model assumes that the requirements of a system can be frozen (i.e. base lined) before the design begins. This is possible for systems designed to automate an existing manual system. But for new systems, determining the requirements is difficult, as the user does not even know the requirements. Hence, having unchanging requirements is unrealistic for such projects.

1.    Freezing the requirements usually requires choosing the hardware (because it forms a part of the requirements specification). A large project might take a few years to complete. It the hardware is selected early, it is likely that the final software will use a hardware technology on the verge of becoming obsolete.

2.    The waterfall model stipulates that the requirements be completely specified before the rest of the development can proceed. In some situations it might be desirable to first develop a part of the system completely and then later enhance the system in phases.

3.    It is a document driven process that requires formal documents at the end of each phase. This approach tends to make the process documentation heavy and is not suitable for many applications, particularly interactive applications, where developing elaborate documentation of the user interfaces is not feasible.

Prototyping Model in Software Engineering

By Dinesh Thakur

The prototyping model is applied when detailed information related to input and output requirements of the system is not available. In this model, it is assumed that all the requirements may not be known at the start of the development of the system. It is usually used when a system does not exist or in case of a large and complex system where there is no manual process to determine the requirements. This model allows the users to interact and experiment with a working model of the system known as prototype. The prototype gives the user an actual feel of the system.

At any stage, if the user is not satisfied with the prototype, it can be discarded and an entirely new system can be developed. Generally, prototype can be prepared by the approaches listed below.

• By creating main user interfaces without any substantial coding so that users can get a feel of how the actual system will appear.
• By abbreviating a version of the system that will perform limited subsets of functions.
• By using system components to illustrate the functions that will be included in the system to be developed .

 Using the prototype, the client can get an actual feel of the system. So, this case of model is beneficial in the case when requirements cannot be freezed initially.

 This prototype is developed based on the currently known requirements. Development of the prototype obviously undergoes design, coding, and testing,  but each of these phases is not done very formally or thoroughly. 

By using this prototype, the client can get an actual feel of the system, because the interactions with the prototype can enable the client to better understand the requirements of the desired system.

                                      Requirements Analysis

Prototyping is an attractive idea for complicated and large systems for which there is no manual process or existing system to help determine the requirements. Risks associated with the projects are being reduced through the use of prototyping. The development of the prototype typically starts when the preliminary version of the requirements specification document has been developed. 

At this stage, there is a reasonable understanding of the system and its needs are unclear or likely to change. After the prototype has been developed, the end users and clients are given an opportunity to use the prototype.
They provide feedback to the developers regarding the prototype: what is correct, what needs to be modified, what is missing, what is not needed, etc. Based on the feedback, the prototype is modified to incorporate some of the suggested changes that can be done easily, and then the users and the clients are again allowed to use the system.
This cycle repeats until, in the judgment of the prototypes and analyst. Based on the feedback, the initial requirements are modified to produce that final requirements specification, which is then used to develop the production quality system.

Figure Illustrates the steps carried out in the prototyping model. These steps are listed below.

                                             Prototyping Model

1. Requirements gathering and analysis: A prototyping model begins with requirements analysis and the requirements of the system are defined in detail. The user is interviewed in order to know the requirements of the system.

2. Quick design: When requirements are known, a preliminary design or quick design for the system is created. It is not a detailed design and includes only the important aspects of the system, which gives an idea of the system to the user. A quick design helps in developing the prototype.

3. Build prototype: Information gathered from quick design is modified to form the first prototype, which represents the working model of the required system.

4. User evaluation: Next, the proposed system is presented to the user for thorough evaluation of the prototype to recognize its strengths and weaknesses such as what is to be added or removed. Comments and suggestions are collected from the users and provided to the developer.

5. Refining prototype: Once the user evaluates the prototype and if he is not satisfied, the current prototype is refined according to the requirements. That is, a new prototype is developed with the additional information provided by the user. The new prototype is evaluated just like the previous prototype. This process continues until all the requirements specified by the user are met. Once the user is satisfied with the developed prototype, a final system is developed on the basis of the final prototype. 

6. Engineer product: Once the requirements are completely met, the user accepts the final prototype. The final system is evaluated thoroughly followed by the routine maintenance on regular basis for preventing large-scale failures and minimizing downtime.

Various advantages and disadvantages associated with the prototyping model are listed in Table.               

Table Advantages and Disadvantages of Prototyping Model

Advantages

Disadvantages

  • 1. Provides a working model to the user early in the process, enabling early assessment and increasing user’s confidence.
  • 2. The developer gains experience and insight by developing a prototype there by resulting in better implementation of requirements.
  • 3. The prototyping model serves to clarify requirements, which are not clear, hence reducing ambiguity and improving communication between the developers and users.
  • 4. There is a great involvement of users in software development. Hence, the requirements of the users are met to the greatest extent.
  • 5. Helps in reducing risks associated with the software.
  • 1. If the user is not satisfied by the developed prototype, then a new prototype is developed. This process goes on until a perfect prototype is developed. Thus, this model is time consuming and expensive.
  • 2. The developer loses focus of the real purpose of prototype and hence, may compromise with the quality of the software. For example, developers may use some inefficient algorithms or inappropriate programming languages while developing the prototype.
  • 3. Prototyping can lead to false expectations. For example, a situation may be created where the user believes that the development of the system is finished when it is not.
  • 4. The primary goal of prototyping is speedy development, thus, the system design can suffer as it is developed in series without considering integration of all other components.

Explain Various Phases of Process Management

By Dinesh Thakur

The activities in the management process for a project can be grouped broadly into three phases.

           Planning
           Monitoring
           Termination

Project management begins with planning, which is perhaps the single largest responsibility of the project management. The goal of this phase is to develop a plan for software development following which the objectives of the project can be met successfully and efficiently. During planning, the major activities are cost estimation, schedule and milestone determination, project staffing, quality control plans, and controlling and monitoring plans.

 

In cost and schedule estimation, the total cost and time needed for successfully completing the project are estimated. Project monitoring and control phase of the management process is the longest in terms of duration; it encompasses most of the development process. It includes all activities the project management has to perform while the development is going on to ensure that project objectives are met and the development proceeds according to the developed plan.

 

Interpretation of the information is part of monitoring and control. Termination analyst-is performed when the development process is over. The basic reason for performing termination analysis is to provide information about the development process

What are the Matrices, Measurements and Models of Project Management Process

By Dinesh Thakur

For effective project monitoring, the information coming from the development process to the management process should be objective and quantitative data about the project. Software matrices are quantifiable measures that could be used to measure different characteristics of a software system or the software development process.

All engineering disciplines have matrices (such as matrices for weight, density, wavelength, and temperature) to quantify various characteristics of their products. A number of matrices have been proposed to quantify things like the size, complexity, and reliability of a software product.

 

Matrices provide the scale for quantifying qualities; actual measurement must be performed on a given software system in order to use matrices for quantifying characteristics of the given software. The Measurement method must be objective and should produce the same result independent of the measurer. Values for some matrices can be directly measured; others might have to be deduced by other measurement.

 

If a metric is not measured directly, we call the metric indirect. Some factors, like many software quality parameters, cannot be measured directly either because there are no means to measure the metric directly, or because the final product whose metric is of interest still does not exist. Similarly, the reliability of a software cannot be measured directly, even though precise definition and matrices for reliability exist. It has to be estimated from other measurements that are possible.

 

                   For estimating, models are needed. A model is a relationship of the predicted variable with other variables that can be measured. That is, if there is some metric of interest, which cannot be measured directly, then we build models to estimate the metric value based on the value of some other metrics that we can measure.

 

The model may be determined based on empirical data or it may be analytic. It should be clear that metrics, measurements, and models go together. Metrics provide a quantification of some property, measurements provide the actual value for the metrics, and models are needed to get the value for the metrics that cannot be measured directly.

Explain Software Configuration Management Process

By Dinesh Thakur

Throughout development, software consists of a collection of items (such as programs, data and documents) that can easily be changed. During software development, the design, code, and even requirements are often changed, and the changes occur at any time during the development. This easily changeable nature of software and the fact that changes often take place require that changes be done in a controlled manner.

Software configuration management (SCM) is the discipline for systematically controlling the changes that take place during development. Software configuration management is a process independent of the development process largely because most development models cannot accommodate change at any time during development. SCM can be considered as having three major components:

    Software configuration identification
    Change control
    Status accounting and auditing

Configuration identification:

 The first requirement for any change management is to have clearly agreed-on basis for change. That is, when a change is done, it should be clear to what changes has been applied. This requires baselines to be established. A baseline change is the changing of the established baseline, which is controlled by SCM. 

After baseline changes the state of the software is defined by the most recent baseline and the changes that were made. Some of the common baselines are functional or requirements baseline, design baseline, and product or system baseline. Functional or requirement baseline is generally the requirements document that specifies the functional requirements for the software. Design baseline consists of the different components in the software and their designs. Product or system baseline represents the developed system.

It should be clear that a baseline is established only after the product is relatively stable. Though the goal of SCM is to control the establishment and changes to these baselines, treating each baseline as a single unit for the purpose of change is undesirable, as the change may be limited to a very small portion of the baseline.

Change control:

Most of the decisions regarding the change are generally taken by the configuration control board (CCB), which is a group of people responsible for configuration management, headed by the configuration manager. For smaller projects, the CCB might consist of just one person. A change is initiated by a change request.

The reason for change can be anything. However, the most common reasons are requirement changes, changes due to bugs, platform changes, and enhancement changes. The CR for change generally consists of three parts. The first part describes the change, reason for change, the SCIs that are affected, the priority of the change, etc.

The second part, filled by the CM, describes the decision taken by the CCB on this CR, the action the CM feels need to be done to implement this change and any other comments the CM may have. The third part is filled by the implementer, which later implements the change.

Status accounting and auditing:

For status accounting, the main source of information is the CRs and FRs themselves. Generally, a field in the CR/FR is added that specifies its current status. The status could be active, complete, or not scheduled. Information about dates and efforts can also be added to the CR, the information from the CRs/FRs can be used to prepare a summary, which can be used by the project manager and the CCB to track all the changes.

Write Different Software Quality Factors

By Dinesh Thakur

Developing methods that can produce high-quality software is another fundamental goal of software engineering. We can view quality of a software product as having three dimensions:

1- Product operation:

Correctness:

 Correctness is the extent to which a program satisfies its specifications.

Reliability:

Reliability is the property that defines how well the software meets its requirements.

Efficiency:

Efficiency is a factor relating to all issues in the execution of software; it includes considerations such as response time, memory requirement, and throughput.

Usability:

Usability, or the effort required locating and fixing errors in operating programs.

2- Product transition:

Portability:

Portability is the effort required to transfer the software from one configuration to another.

Reusability:

Reusability is the extent to which parts of the software can be reused in other related applications.

3- Product revision:

Maintainability:

Maintainability is the effort required to maintain the system in order to check the quality.

Testability:

Testability is the effort required to test to ensure that the system or a module performs its intended function.

Flexibility:

Flexibility is the effort required to modify an operational program.

What do you Mean by Process Improvement and Maturity. Explain the CMM Model

By Dinesh Thakur

It is believed that only by improving the process can be quality & productivity be improved. Process improvement required understanding the current process & its deficiencies & then taking actions to remove the deficiencies. This is possible only if the current process is under statistical control.

Capability Maturity Model (CMM)

   To improve its software process, an organization needs to first understand the states & then develop a plan to improve the process. It is generally agreed that changes to a process must be introduced in small increments. The changes that take place depend on the current state of the process. This concept of introducing changes in small increments based on the current state of the process has been captured in the capability Maturity Model (CMM) framework. The CMM framework provides a general roadmap for process improvement.

 

Software process capability describes the range of expected results that can be achieved by following the process. The process capability of an organization determines what can be expected from the organization in terms of quality & productivity. The CMM framework provides process improvement in small increments as processes go from their current levels to the next higher level when they are improved. Hence, during the course of process improvement, a process moves from level to level until it reaches Level 5.

 

The CMM provides characteristics of each level, which can be used to assess the current level of the process of an organization. As the movement from one level is to the next level, the characteristics of the levels also suggest the areas in which the process should be improved so that it can move to the next higher level. For each level, it specifies the areas in which improvement can be absorbed & will bring the maximum benefits.

Level 1.  The initial process is an ad-hoc process that has no formalized method for any activity. Basic project controls for: ensuring that activities are being done properly but the project plan is missing. Success in such organizations depends solely on the quality & capability of individuals. The process capability is unpredictable as the process constantly changes. Organizations at this level can benefit most by improving project management, quality assurance & change control.

 

Level 2. In a repeatable process, policies for managing a software project & procedures to implement those policies exist. That is, project management is well developed in a process at this level. Project commitments are realistic & based on past experience with similar projects. Cost & schedule are tracked & problems resolved when they arise. Formal configuration control mechanism exist results obtains by this process can be repeated as the project planning & tracking is formal.

 

Level 3. At the defined level, the organization has standardized on a software process, which is properly documented. A software process group exists in the organization that owns & manages the process. In the process, each step is carefully defined with verifiable entry & exit criteria, methods for performing the step, & verification mechanism for the output of the step.

 

Level 4. At the managed level, quantitative goals exist for process & products Data is collected from software processes, which is used to build models to characterize the process. Due to the models, the organization has a good insight in the process. The results of using such a process can be predicted in quantitative terms.

 

Level 5. At the optimizing level, the focus is on continuous improvement. Data is collected & routinely analyzed to identify areas that can be strengthened to improve quality or productivity. New technologies & tools are introduced & their effects are measured to improve the performance of the process. Best software engineering & management practices are used throughout the organization.

What is SRS?List & Describe Various Characteristics of an SRS

By Dinesh Thakur

Software requirement specification (SRS) is a document that completely describes what the proposed software should do without describing how software will do it. The basic goal of the requirement phase is to produce the SRS, Which describes the complete behavior of the proposed software. SRS is also helping the clients to understand their own needs.

Advantages

Software SRS establishes the basic for agreement between the client and the supplier on what the software product will do.

• A SRS provides a reference for validation of the final product.
• A high-quality SRS is a prerequisite to high-quality software.
• A high-quality SRS reduces the development cost.

Characteristics of an SRS

• Correct
• Complete
• Unambiguous
• Verifiable
• Consistent
• Ranked for importance and/or stability
• Modifiable
• Traceable


An SRS is correct if every requirement included in the SRS represents something required in the final system. An SRS is complete, if everything the software is supposed to do and the responses of the software to all classes of input data are specified in the SRS. Correctness ensures that what is specified is done correctly, completeness ensures that everything is indeed specified.

An SRS is unambiguous if and only if every requirement stated has one and only one interpretation. Requirements are often written in natural language, which are inherently ambiguous.

An SRS is verifiable if and only if every stated requirement is verifiable. A requirement is verifiable if there exists some cost-effective process that can check whether the final software meets that requirement. An SRS is consistent if there is no requirement that conflicts with another.

Terminology can cause inconsistencies; for example, different requirements may use different terms to refer to the same object. All the requirements for software are not of equal importance. Some are critical, others are important but not critical, and there are some, which are desirable, but not very important. An SRS is ranked for importance and the stability of the requirement are indicated. Stability of requirement reflects the chances of it changing in future. An SRS is traceable if the origin of each of its requirements is clear and if it facilitates the referencing of each requirement in future development. Forward traceability means that each requirement should be traceable to some design and code elements. Backward traceability requires that it be possible to trace design and code elements to the requirements they support. Traceability aids verification and validation.

 

« Previous Page
Next Page »

Primary Sidebar

Software Engineering

Software Engineering

  • SE - Home
  • SE - Feasibility Study
  • SE - Software
  • SE - Software Maintenance Types
  • SE - Software Design Principles
  • SE - Prototyping Model
  • SE - SRS Characteristics
  • SE - Project Planning
  • SE - SRS Structure
  • SE - Software Myths
  • SE - Software Requirement
  • SE - Architectural Design
  • SE - Software Metrics
  • SE - Object-Oriented Testing
  • SE - Software Crisis
  • SE - SRS Components
  • SE - Layers
  • SE - Problems
  • SE - Requirements Analysis
  • SE - Software Process
  • SE - Software Metrics
  • SE - Debugging
  • SE - Formal Methods Model
  • SE - Management Process
  • SE - Data Design
  • SE - Testing Strategies
  • SE - Coupling and Cohesion
  • SE - hoc Model
  • SE - Challenges
  • SE - Process Vs Project
  • SE - Requirements Validation
  • SE - Component-Level Design
  • SE - Spiral Model
  • SE - RAD Model
  • SE - Coding Guidelines
  • SE - Techniques
  • SE - Software Testing
  • SE - Incremental Model
  • SE - Programming Practices
  • SE - Software Measurement
  • SE - Software Process Models
  • SE - Software Design Documentation
  • SE - Software Process Assessment
  • SE - Process Model
  • SE - Requirements Management Process
  • SE - Time Boxing Model
  • SE - Measuring Software Quality
  • SE - Top Down Vs Bottom UP Approaches
  • SE - Components Applications
  • SE - Error Vs Fault
  • SE - Monitoring a Project
  • SE - Software Quality Factors
  • SE - Phases
  • SE - Structural Testing
  • SE - COCOMO Model
  • SE - Code Verification Techniques
  • SE - Classical Life Cycle Model
  • SE - Design Techniques
  • SE - Software Maintenance Life Cycle
  • SE - Function Points
  • SE - Design Phase Objectives
  • SE - Software Maintenance
  • SE - V-Model
  • SE - Software Maintenance Models
  • SE - Object Oriented Metrics
  • SE - Software Design Reviews
  • SE - Structured Analysis
  • SE - Top-Down & Bottom up Techniques
  • SE - Software Development Phases
  • SE - Coding Methodology
  • SE - Emergence
  • SE - Test Case Design
  • SE - Coding Documentation
  • SE - Test Oracles
  • SE - Testing Levels
  • SE - Test Plan
  • SE - Staffing
  • SE - Functional Testing
  • SE - Bottom-Up Design
  • SE - Software Maintenance
  • SE - Software Design Phases
  • SE - Risk Management
  • SE - SRS Validation
  • SE - Test Case Specifications
  • SE - Software Testing Levels
  • SE - Maintenance Techniques
  • SE - Software Testing Tools
  • SE - Requirement Reviews
  • SE - Test Criteria
  • SE - Major Problems
  • SE - Quality Assurance Plans
  • SE - Different Verification Methods
  • SE - Exhaustive Testing
  • SE - Project Management Process
  • SE - Designing Software Metrics
  • SE - Static Analysis
  • SE - Software Project Manager
  • SE - Black Box Testing
  • SE - Errors Types
  • SE - Object Oriented Analysis

Other Links

  • Software Engineering - PDF Version

Footer

Basic Course

  • Computer Fundamental
  • Computer Networking
  • Operating System
  • Database System
  • Computer Graphics
  • Management System
  • Software Engineering
  • Digital Electronics
  • Electronic Commerce
  • Compiler Design
  • Troubleshooting

Programming

  • Java Programming
  • Structured Query (SQL)
  • C Programming
  • C++ Programming
  • Visual Basic
  • Data Structures
  • Struts 2
  • Java Servlet
  • C# Programming
  • Basic Terms
  • Interviews

World Wide Web

  • Internet
  • Java Script
  • HTML Language
  • Cascading Style Sheet
  • Java Server Pages
  • Wordpress
  • PHP
  • Python Tutorial
  • AngularJS
  • Troubleshooting

 About Us |  Contact Us |  FAQ

Dinesh Thakur is a Technology Columinist and founder of Computer Notes.

Copyright © 2025. All Rights Reserved.

APPLY FOR ONLINE JOB IN BIGGEST CRYPTO COMPANIES
APPLY NOW