Author: saqibkhan

  • Software Design in Software Engineering

    Introduction:

    Software design is the process of constructing software methods, functions, objects, the overall structure and interaction of your code, so that the functionality produced satisfies the needs of your users. There are many different methods for designing software. Different developers have different preferences for different design levels either up front or during the execution phase. In general, the overall design should be carefully considered and reviewed before starting to code. Early in the development cycle it is simpler to test various designs and identify issues than to make a big design change after the majority of the code has been written. To begin let’s review the definition of software design in software engineering.

    What is Software Design:

    Software design is a mechanism to transform user requirements into some suitable form, which helps the programmer in software coding and implementation. It deals with representing the client’s requirement, as described in SRS (Software Requirement Specification) document, into a form, i.e., easily implementable using programming language.

    The software design phase is the first step in SDLC (Software Design Life Cycle), which moves the concentration from the problem domain to the solution domain. In software design, we consider the system to be a set of components or modules with clearly defined behaviors & boundaries.

    Software Design

    Objectives of Software Design

    Following are the purposes of Software design:

    Software Design
    1. Correctness:Software design should be correct as per requirement.
    2. Completeness:The design should have all components like data structures, modules, and external interfaces, etc.
    3. Efficiency:Resources should be used efficiently by the program.
    4. Flexibility:Able to modify on changing needs.
    5. Consistency:There should not be any inconsistency in the design.
    6. Maintainability: The design should be so simple so that it can be easily maintainable by other designers.

    Software Design Levels:

    In software design there are three levels.

    Software Design

    1. Architecture Design:

    An architecture is the overall structure of a system and how that structure provides conceptual integrity to the system. According to the architectural design the software is a system made up of many interrelated parts. At this point the designers obtain a broad understanding of the domain of the suggested solution.

    2. High-level design:

    By breaking down the architectural design’s “single entity-multiple component” concept the high-level design presents a less abstract view of subsystems and modules and illustrates how they interact with one another. Implementing the system and its components as modules is the focus of high-level design. It acknowledges each subsystem modular design in addition to their connections and interactions with one another.

    3. Detailed Design:

    Following the completion of the high-level design the detailed design process starts. At this stage of software design every module is thoroughly examined to determine the data structures and algorithms that will be employed. Ultimately the stages results are recorded in a module specification document. It outlines each modules interface with other modules as well as its logical structure.

    Principles of Software Design:

    Let’s examine a few software design ideas that help a software engineer build a model of the system or software product that needs to be developed. Before creating a software system, the following concepts should be understood.

    Abstraction:

    Object-oriented programming (OOP) languages include abstraction as one of their core ideas. Its main goal is to handle complexity by keeping the user unaware of internal details. This enables the user to construct increasingly complex reasoning on top of the provided abstraction without needing to comprehend or even consider all of the hidden complexity.

    Flexibility:

    To reduce the complexity of a system or project modularity means dividing it into smaller parts. In design, modularity also means breaking a system up into smaller components that can be constructed separately and then utilized in different systems for various functions. It is sometimes necessary to divide software into modules in order to deal with monolithic software which is challenging for software engineers to understand. Modularity in design has consequently emerged as a crucial and popular trend.

    Architecture:

    The design choices pertaining to the overall structure and functionality of a system are represented by its software architecture. Architecture helps stakeholders understand and assess how the system will achieve important features like security, availability, and modifiability. It outlines the relationships and communication between the various parts that make up a software system. For the development team it serves as a foundation and a blueprint for the software application.

    Enhancement:

    Refinement is the process of eliminating impurities and raising something caliber. Building or presenting the software or system in a detailed way which entails expanding on a system or software is the idea behind software design refinement. Furthermore, refinement is crucial for locating and fixing any potential mistakes.

    Design Patterns:

    Within a specific software design context, a software design pattern is a general reusable solution to a problem that frequently arises. Representing some of the best techniques used by seasoned object-oriented software engineers they serve as templates to address typical software engineering issues. In object-oriented systems a design pattern is a general design that addresses a recurrent design problem in a methodical manner. It covers the issue, the solution, when to apply it, and the consequences. Also, it offers examples and implementation advice.

    Data (or) Information Hiding:

    Software Design

    In its most basic form, information hiding is the act of keeping information hidden from unauthorized parties. When designing software information hiding is achieved by structuring modules so that data obtained or stored in one module is hidden and inaccessible by other modules.

    Refactoring:

    Refactoring is the process of rearranging code so that it works as intended. By making small adjustments that don’t impact the codes external behavior refactoring attempts to enhance internal code. Code is refactored by computer programmers and software developers to enhance the software implementation, structure, and design. Refactoring thus reduces complexity while improving code readability. Hence, refactoring can help software engineers find errors or weaknesses in their code.

    Conclusion:

    In software design user requirements are transformed into a format that programmers can use for coding and implementation. Using a programming language, it aims to transform the client’s requirements as stated in the Software Requirement Specification (SRS) document into a format that is simple to implement. During the software design phase of the Software Design Life Cycle (SDLC) the emphasis moves from the problem domain to the solution domain. It tries to provide guidance on how to fulfill the SRSs requirements. Accuracy, completeness, efficiency, flexibility, consistency, and maintainability are the goals of the software design process.

  • Six Sigma

    Six Sigma is the process of improving the quality of the output by identifying and eliminating the cause of defects and reduce variability in manufacturing and business processes. The maturity of a manufacturing process can be defined by a sigma rating indicating its percentage of defect-free products it creates. A six sigma method is one in which 99.99966% of all the opportunities to produce some features of a component are statistically expected to be free of defects (3.4 defective features per million opportunities).

    Six Sigma

    History of Six Sigma

    Six-Sigma is a set of methods and tools for process improvement. It was introduced by Engineer Sir Bill Smith while working at Motorola in 1986. In the 1980s, Motorola was developing Quasar televisions which were famous, but the time there was lots of defects which came up on that due to picture quality and sound variations.

    By using the same raw material, machinery and workforce a Japanese form took over Quasar television production, and within a few months, they produce Quasar TV’s sets which have fewer errors. This was obtained by improving management techniques.

    Six Sigma was adopted by Bob Galvin, the CEO of Motorola in 1986 and registered as a Motorola Trademark on December 28, 1993, then it became a quality leader.

    Characteristics of Six Sigma

    The Characteristics of Six Sigma are as follows:

    Six Sigma
    1. Statistical Quality Control: Six Sigma is derived from the Greek Letter σ (Sigma) from the Greek alphabet, which is used to denote Standard Deviation in statistics. Standard Deviation is used to measure variance, which is an essential tool for measuring non-conformance as far as the quality of output is concerned.
    2. Methodical Approach: The Six Sigma is not a merely quality improvement strategy in theory, as it features a well defined systematic approach of application in DMAIC and DMADV which can be used to improve the quality of production. DMAIC is an acronym for Design-Measure- Analyze-Improve-Control. The alternative method DMADV stands for Design-Measure- Analyze-Design-Verify.
    3. Fact and Data-Based Approach: The statistical and methodical aspect of Six Sigma shows the scientific basis of the technique. This accentuates essential elements of the Six Sigma that is a fact and data-based.
    4. Project and Objective-Based Focus: The Six Sigma process is implemented for an organization’s project tailored to its specification and requirements. The process is flexed to suits the requirements and conditions in which the projects are operating to get the best results.
    5. Customer Focus: The customer focus is fundamental to the Six Sigma approach. The quality improvement and control standards are based on specific customer requirements.
    6. Teamwork Approach to Quality Management: The Six Sigma process requires organizations to get organized when it comes to controlling and improving quality. Six Sigma involving a lot of training depending on the role of an individual in the Quality Management team.

    Six Sigma Methodologies

    Six Sigma projects follow two project methodologies:

    1. DMAIC
    2. DMADV
    Six Sigma

    DMAIC

    It specifies a data-driven quality strategy for improving processes. This methodology is used to enhance an existing business process.

    The DMAIC project methodology has five phases:

    Six Sigma
    1. Define: It covers the process mapping and flow-charting, project charter development, problem-solving tools, and so-called 7-M tools.
    2. Measure: It includes the principles of measurement, continuous and discrete data, and scales of measurement, an overview of the principle of variations and repeatability and reproducibility (RR) studies for continuous and discrete data.
    3. Analyze: It covers establishing a process baseline, how to determine process improvement goals, knowledge discovery, including descriptive and exploratory data analysis and data mining tools, the basic principle of Statistical Process Control (SPC), specialized control charts, process capability analysis, correlation and regression analysis, analysis of categorical data, and non-parametric statistical methods.
    4. Improve: It covers project management, risk assessment, process simulation, and design of experiments (DOE), robust design concepts, and process optimization.
    5. Control: It covers process control planning, using SPC for operational control and PRE-Control.

    DMADV

    It specifies a data-driven quality strategy for designing products and processes. This method is used to create new product designs or process designs in such a way that it results in a more predictable, mature, and detect free performance.

    The DMADV project methodology has five phases:

    Six Sigma
    1. Define: It defines the problem or project goal that needs to be addressed.
    2. Measure: It measures and determines the customer’s needs and specifications.
    3. Analyze: It analyzes the process to meet customer needs.
    4. Design: It can design a process that will meet customer needs.
    5. Verify: It can verify the design performance and ability to meet customer needs.
  • People Capability Maturity Model

    PCMM is a maturity structure that focuses on continuously improving the management and development of the human assets of an organization.

    It defines an evolutionary improvement path from Adhoc, inconsistently performed practices, to a mature, disciplined, and continuously improving the development of the knowledge, skills, and motivation of the workforce that enhances strategic business performance.

    The People Capability Maturity Model (PCMM) is a framework that helps the organization successfully address their critical people issues. Based on the best current study in fields such as human resources, knowledge management, and organizational development, the PCMM guides organizations in improving their steps for managing and developing their workforces.

    The People CMM defines an evolutionary improvement path from Adhoc, inconsistently performed workforce practices, to a mature infrastructure of practices for continuously elevating workforce capability.

    The PCMM subsists of five maturity levels that lay successive foundations for continuously improving talent, developing effective methods, and successfully directing the people assets of the organization. Each maturity level is a well-defined evolutionary plateau that institutionalizes a level of capability for developing the talent within the organization

    The five steps of the People CMM framework are:

    People Capability Maturity Model (PCMM)

    Initial Level: Maturity Level 1

    The Initial Level of maturity includes no process areas. Although workforce practices implement in Maturity Level, 1 organization tend to be inconsistent or ritualistic, virtually all of these organizations perform processes that are defined in the Maturity Level 2 process areas.

    Managed Level: Maturity Level 2

    To achieve the Managed Level, Maturity Level 2, managers starts to perform necessary people management practices such as staffing, operating performance, and adjusting compensation as a repeatable management discipline. The organization establishes a culture focused at the unit level for ensuring that person can meet their work commitments. In achieving Maturity Level 2, the organization develops the capability to handle skills and performance at the unit level. The process areas at Maturity Level 2 are Staffing, Communication and Coordination, Work Environment, Performance Management, Training and Development, and Compensation.

    Defined Level: Maturity Level 3

    The fundamental objective of the defined level is to help an organization gain a competitive benefit from developing the different competencies that must be combined in its workforce to accomplish its business activities. These workforce competencies represent critical pillars supporting the strategic workforce competencies to current and future business objectives; the improved workforce practices for implemented at Maturity Level 3 become crucial enablers of business strategy.

    Predictable Level: Maturity Level 4

    At the Predictable Level, the organization handles and exploits the capability developed by its framework of workforce competencies. The organization is now able to handle its capacity and performance quantitatively. The organization can predict its capability for performing work because it can quantify the ability of its workforce and of the competency-based methods they use performing in their assignments.

    Optimizing Level: Maturity Level 5

    At the Optimizing Level, the integrated organization is focused on continual improvement. These improvements are made to the efficiency of individuals and workgroups, to the act of competency-based processes, and workforce practices and activities.

  • Software Engineering Institute Capability Maturity Model (SEICMM)

    The Capability Maturity Model (CMM) is a procedure used to develop and refine an organization’s software development process.

    The model defines a five-level evolutionary stage of increasingly organized and consistently more mature processes.

    CMM was developed and is promoted by the Software Engineering Institute (SEI), a research and development center promote by the U.S. Department of Defense (DOD).

    Capability Maturity Model is used as a benchmark to measure the maturity of an organization’s software process.

    Methods of SEICMM

    There are two methods of SEICMM:

    Software Engineering Institute Capability Maturity Model (SEICMM)

    Capability Evaluation: Capability evaluation provides a way to assess the software process capability of an organization. The results of capability evaluation indicate the likely contractor performance if the contractor is awarded a work. Therefore, the results of the software process capability assessment can be used to select a contractor.

    Software Process Assessment: Software process assessment is used by an organization to improve its process capability. Thus, this type of evaluation is for purely internal use.

    SEI CMM categorized software development industries into the following five maturity levels. The various levels of SEI CMM have been designed so that it is easy for an organization to build its quality system starting from scratch slowly.

    Software Engineering Institute Capability Maturity Model (SEICMM)

    Level 1: Initial

    Ad hoc activities characterize a software development organization at this level. Very few or no processes are described and followed. Since software production processes are not limited, different engineers follow their process and as a result, development efforts become chaotic. Therefore, it is also called a chaotic level.

    Level 2: Repeatable

    At this level, the fundamental project management practices like tracking cost and schedule are established. Size and cost estimation methods, like function point analysis, COCOMO, etc. are used.

    Level 3: Defined

    At this level, the methods for both management and development activities are defined and documented. There is a common organization-wide understanding of operations, roles, and responsibilities. The ways through defined, the process and product qualities are not measured. ISO 9000 goals at achieving this level.

    Level 4: Managed

    At this level, the focus is on software metrics. Two kinds of metrics are composed.

    Product metrics measure the features of the product being developed, such as its size, reliability, time complexity, understandability, etc.

    Process metrics follow the effectiveness of the process being used, such as average defect correction time, productivity, the average number of defects found per hour inspection, the average number of failures detected during testing per LOC, etc. The software process and product quality are measured, and quantitative quality requirements for the product are met. Various tools like Pareto charts, fishbone diagrams, etc. are used to measure the product and process quality. The process metrics are used to analyze if a project performed satisfactorily. Thus, the outcome of process measurements is used to calculate project performance rather than improve the process.

    Level 5: Optimizing

    At this phase, process and product metrics are collected. Process and product measurement data are evaluated for continuous process improvement.

    Key Process Areas (KPA) of a software organization

    Except for SEI CMM level 1, each maturity level is featured by several Key Process Areas (KPAs) that contains the areas an organization should focus on improving its software process to the next level. The focus of each level and the corresponding key process areas are shown in the fig.

    Software Engineering Institute Capability Maturity Model (SEICMM)

    SEI CMM provides a series of key areas on which to focus to take an organization from one level of maturity to the next. Thus, it provides a method for gradual quality improvement over various stages. Each step has been carefully designed such that one step enhances the capability already built up.

  • ISO 9000 Certification

    ISO (International Standards Organization) is a group or consortium of 63 countries established to plan and fosters standardization. ISO declared its 9000 series of standards in 1987. It serves as a reference for the contract between independent parties. The ISO 9000 standard determines the guidelines for maintaining a quality system. The ISO standard mainly addresses operational methods and organizational methods such as responsibilities, reporting, etc. ISO 9000 defines a set of guidelines for the production process and is not directly concerned about the product itself.

    Types of ISO 9000 Quality Standards

    ISO 9000 Certification

    The ISO 9000 series of standards is based on the assumption that if a proper stage is followed for production, then good quality products are bound to follow automatically. The types of industries to which the various ISO standards apply are as follows.

    1. ISO 9001: This standard applies to the organizations engaged in design, development, production, and servicing of goods. This is the standard that applies to most software development organizations.
    2. ISO 9002: This standard applies to those organizations which do not design products but are only involved in the production. Examples of these category industries contain steel and car manufacturing industries that buy the product and plants designs from external sources and are engaged in only manufacturing those products. Therefore, ISO 9002 does not apply to software development organizations.
    3. ISO 9003: This standard applies to organizations that are involved only in the installation and testing of the products. For example, Gas companies.

    How to get ISO 9000 Certification?

    An organization determines to obtain ISO 9000 certification applies to ISO registrar office for registration. The process consists of the following stages:

    ISO 9000 Certification
    1. Application: Once an organization decided to go for ISO certification, it applies to the registrar for registration.
    2. Pre-Assessment: During this stage, the registrar makes a rough assessment of the organization.
    3. Document review and Adequacy of Audit: During this stage, the registrar reviews the document submitted by the organization and suggest an improvement.
    4. Compliance Audit: During this stage, the registrar checks whether the organization has compiled the suggestion made by it during the review or not.
    5. Registration: The Registrar awards the ISO certification after the successful completion of all the phases.
    6. Continued Inspection: The registrar continued to monitor the organization time by time.
  • Software Quality

    Software quality product is defined in term of its fitness of purpose. That is, a quality product does precisely what the users want it to do. For software products, the fitness of use is generally explained in terms of satisfaction of the requirements laid down in the SRS document. Although “fitness of purpose” is a satisfactory interpretation of quality for many devices such as a car, a table fan, a grinding machine, etc.for software products, “fitness of purpose” is not a wholly satisfactory definition of quality.

    Example: Consider a functionally correct software product. That is, it performs all tasks as specified in the SRS document. But, has an almost unusable user interface. Even though it may be functionally right, we cannot consider it to be a quality product.

    The modern view of a quality associated with a software product several quality methods such as the following:

    Portability: A software device is said to be portable, if it can be freely made to work in various operating system environments, in multiple machines, with other software products, etc.

    Usability: A software product has better usability if various categories of users can easily invoke the functions of the product.

    Reusability: A software product has excellent reusability if different modules of the product can quickly be reused to develop new products.

    Correctness: A software product is correct if various requirements as specified in the SRS document have been correctly implemented.

    Maintainability: A software product is maintainable if bugs can be easily corrected as and when they show up, new tasks can be easily added to the product, and the functionalities of the product can be easily modified, etc.

    Software Quality Management System

    A quality management system is the principal methods used by organizations to provide that the products they develop have the desired quality.

    A quality system subsists of the following:

    Managerial Structure and Individual Responsibilities: A quality system is the responsibility of the organization as a whole. However, every organization has a sever quality department to perform various quality system activities. The quality system of an arrangement should have the support of the top management. Without help for the quality system at a high level in a company, some members of staff will take the quality system seriously.

    Quality System Activities: The quality system activities encompass the following:

    Auditing of projects

    Review of the quality system

    Development of standards, methods, and guidelines, etc.

    Production of documents for the top management summarizing the effectiveness of the quality system in the organization.

    Evolution of Quality Management System

    Quality systems have increasingly evolved over the last five decades. Before World War II, the usual function to produce quality products was to inspect the finished products to remove defective devices. Since that time, quality systems of organizations have undergone through four steps of evolution, as shown in the fig. The first product inspection task gave method to quality control (QC).

    Quality control target not only on detecting the defective devices and removes them but also on determining the causes behind the defects. Thus, quality control aims at correcting the reasons for bugs and not just rejecting the products. The next breakthrough in quality methods was the development of quality assurance methods.

    The primary premise of modern quality assurance is that if an organization’s processes are proper and are followed rigorously, then the products are obligated to be of good quality. The new quality functions include guidance for recognizing, defining, analyzing, and improving the production process.

    Total quality management (TQM) advocates that the procedure followed by an organization must be continuously improved through process measurements. TQM goes stages further than quality assurance and aims at frequently process improvement. TQM goes beyond documenting steps to optimizing them through a redesign. A term linked to TQM is Business Process Reengineering (BPR).

    BPR aims at reengineering the method business is carried out in an organization. From the above conversation, it can be stated that over the years, the quality paradigm has changed from product assurance to process assurance, as shown in fig.

    Software Quality
  • Project Monitoring and Control

    Monitoring and Controlling are processes needed to track, review, and regulate the progress and performance of the project. It also identifies any areas where changes to the project management method are required and initiates the required changes.

    The Monitoring & Controlling process group includes eleven processes, which are:

    Project Monitoring and Control
    1. Monitor and control project work: The generic step under which all other monitoring and controlling activities fall under.
    2. Perform integrated change control: The functions involved in making changes to the project plan. When changes to the schedule, cost, or any other area of the project management plan are necessary, the program is changed and re-approved by the project sponsor.
    3. Validate scope: The activities involved with gaining approval of the project’s deliverables.
    4. Control scope: Ensuring that the scope of the project does not change and that unauthorized activities are not performed as part of the plan (scope creep).
    5. Control schedule: The functions involved with ensuring the project work is performed according to the schedule, and that project deadlines are met.
    6. Control costs: The tasks involved with ensuring the project costs stay within the approved budget.
    7. Control quality: Ensuring that the quality of the project?s deliverables is to the standard defined in the project management plan.
    8. Control communications: Providing for the communication needs of each project stakeholder.
    9. Control Risks: Safeguarding the project from unexpected events that negatively impact the project’s budget, schedule, stakeholder needs, or any other project success criteria.
    10. Control procurements: Ensuring the project’s subcontractors and vendors meet the project goals.
    11. Control stakeholder engagement: The tasks involved with ensuring that all of the project’s stakeholders are left satisfied with the project work.
  • Software Quality Assurance in Software Engineering

    Introduction

    Software Quality Assurance in Software Engineering

    During the software development cycle, a software quality assurance engineer plays a pivotal role with their attention to detail concerning the product’s functionality and quality standards. These SQA experts are responsible for creating and implementing testing strategies to locate and remedy issues within software applications. Their work ensures that the errors, malfunctions, and discrepancies in software applications are adequately rectified, thus providing users with maximum satisfaction through a reliable interface.

    What is Quality?

    Quality defines to any measurable characteristics such as correctness, maintainability, portability, testability, usability, reliability, efficiency, integrity, reusability, and interoperability.

    There are two kinds of Quality:

    Software Quality Assurance in Software Engineering
    1. Quality of Design: Quality of Design refers to the characteristics that designers specify for an item. The grade of materials, tolerances, and performance specifications that all contribute to the quality of design.
    2. Quality of conformance: Quality of conformance is the degree to which the design specifications are followed during manufacturing. Greater the degree of conformance, the higher is the level of quality of conformance.

    Quality Assurance

    Quality Assurance is the preventive set of activities that provide greater confidence that the project will be completed successfully.

    Quality Assurance focuses on how the engineering and management activity will be done?

    As anyone is interested in the quality of the final product, it should be assured that we are building the right product.

    It can be assured only when we do inspection & review of intermediate products, if there are any bugs, then it is debugged. This quality can be enhanced.

    Importance of Quality

    We would expect the quality to be a concern of all producers of goods and services. However, the distinctive characteristics of software and in particular its intangibility and complexity, make special demands.

    Increasing criticality of software: The final customer or user is naturally concerned about the general quality of software, especially its reliability. This is increasing in the case as organizations become more dependent on their computer systems and software is used more and more in safety-critical areas. For example, to control aircraft.

    The intangibility of software: This makes it challenging to know that a particular task in a project has been completed satisfactorily. The results of these tasks can be made tangible by demanding that the developers produce ‘deliverables’ that can be examined for quality.

    Accumulating errors during software development: As computer system development is made up of several steps where the output from one level is input to the next, the errors in the earlier? deliverables? will be added to those in the later stages leading to accumulated determinable effects. In general, the later in a project that an error is found, the more expensive it will be to fix. In addition, because the number of errors in the system is unknown, the debugging phases of a project are particularly challenging to control.

    Software Quality Assurance

    Software quality assurance is a planned and systematic plan of all actions necessary to provide adequate confidence that an item or product conforms to establish technical requirements.

    A set of activities designed to calculate the process by which the products are developed or manufactured.

    Implementation of Software Quality Assurance

    In terms of providing effective software quality assurance or SQA, construction of an extensive system that tracks each phase of development is equally important as maintaining pre-established standards. In order to properly implement SQA into a project, follow these procedures.

    1. Specify the goals and objectives for quality

    Establishing a clear definition of quality for your project is the first step. Establish SMART goals-specific measurable achievable relevant and time-bound-that complement the needs of your clients and the goals of your company.

    2. Create a plan for SQA

    Make a SQA plan that details the methods for ensuring quality throughout the project. The following should be part of this plan:

    • Roles and responsibilities: Assigning team members to specific quality assurance positions.
    • Standards and Procedures: Defining coding, review, and documentation standards.
    • Tools and Resources: Identifying tools for defect tracking, test automation, and document management.

    3. Establish Quality Metrics

    Establish metrics to gauge the SQA process efficacy. Defect density code coverage by tests customer issue incidents etc. are a few examples. These metrics will be used to track the success and advancement of quality assurance initiatives.

    4. Perform Formal Technical Reviews

    To find flaws early in the development process conduct inspections and peer reviews at different points. Test plans design documents code and requirements can all be subject to reviews.

    5. Implement Testing Strategies

    Create a thorough testing plan that addresses the following testing standards:

    • Unit Testing: Individual components are tested to ensure their correctness.
    • Integration tests: Ensure that software components work together properly.
    • System Testing: Ensure that the system meets all of the defined standards.
    • Acceptance Testing: Running tests to confirm that the system is ready for production.

    6. Ensure Compliance with Standards

    Throughout the development process follow applicable industry standards (e. g. ISO/IEC 25010 for software quality or industry-specific compliance standards).

    7. Utilize Automation Where Possible

    If you want to increase efficiency and consistency automate labour-intensive and repetitive tasks like build deployments regression testing and some performance testing.

    8. Train and Develop Skills

    Train team members on the newest technologies tools and approaches for quality assurance on a regular basis. The team’s capacity to recognize and address quality problems can be greatly improved by investing in skill development.

    9. Continuous Process Improvement

    Continue to assess the SQA process efficacy and make necessary adjustments. Determine your areas of weakness and take corrective action using the quality metrics that were gathered.

    10. Risk control

    Determine possible hazards that might affect the software’s quality and create plans to reduce them. Prioritizing SQA efforts can be aided by routine risk assessments.

    SQA Encompasses

    • A quality management approach
    • Effective Software engineering technology (methods and tools)
    • Formal technical reviews that are tested throughout the software process
    • A multitier testing strategy
    • Control of software documentation and the changes made to it.
    • A procedure to ensure compliances with software development standards
    • Measuring and reporting mechanisms.

    SQA Activities

    Software quality assurance is composed of a variety of functions associated with two different constituencies ? the software engineers who do technical work and an SQA group that has responsibility for quality assurance planning, record keeping, analysis, and reporting.

    Following activities are performed by an independent SQA group:

    1. Prepares an SQA plan for a project: The program is developed during project planning and is reviewed by all stakeholders. The plan governs quality assurance activities performed by the software engineering team and the SQA group. The plan identifies calculation to be performed, audits and reviews to be performed, standards that apply to the project, techniques for error reporting and tracking, documents to be produced by the SQA team, and amount of feedback provided to the software project team.
    2. Participates in the development of the project’s software process description: The software team selects a process for the work to be performed. The SQA group reviews the process description for compliance with organizational policy, internal software standards, externally imposed standards (e.g. ISO-9001), and other parts of the software project plan.
    3. Reviews software engineering activities to verify compliance with the defined software process: The SQA group identifies, reports, and tracks deviations from the process and verifies that corrections have been made.
    4. Audits designated software work products to verify compliance with those defined as a part of the software process: The SQA group reviews selected work products, identifies, documents and tracks deviations, verify that corrections have been made, and periodically reports the results of its work to the project manager.
    5. Ensures that deviations in software work and work products are documented and handled according to a documented procedure: Deviations may be encountered in the project method, process description, applicable standards, or technical work products.
    6. Records any noncompliance and reports to senior management: Non- compliance items are tracked until they are resolved.

    Advantages of SQA

    1. High-quality software is produced by SQA.
    2. A well-designed application saves money and time.
    3. SQA helps to improve reliability.
    4. SQA is advantageous when there is no maintenance for an extended period of time.
    5. Commercial software of superior quality boosts a company’s market share.
    6. Enhancing the software development process.
    7. Enhances the software’s quality.
    8. The cost of maintenance is reduced. Your business can move on to the next big thing and forget about the release if it is done correctly the first time. If you release a product with persistent problems your company will become mired in an expensive time-consuming and never-ending cycle of repairs.

    Drawbacks of SQA

    The quality assurance process has several drawbacks:

    1. Cost: Adding resources to improve the product is one of them the more resources added the less money is spent. Time-consuming: Project deployment and testing take longer which delays the project.
    2. Administrative overhead: SQA procedures may result in the need for reporting documentation and quality metrics tracking. Particularly for smaller projects the advantages may occasionally be outweighed by this extra administrative load.
    3. Resource-intensive: SQA calls for knowledgeable staff members who are knowledgeable about testing techniques instruments and quality control procedures. Such talent can be costly and difficult to acquire and retain.
    4. Opposition to Change: Because they believe that SQA procedures are superfluous or bureaucratic some team members may be against their adoption. An organization’s ability to implement and benefit from quality assurance procedures may be hampered by this resistance.
    5. Not Foolproof: Software may still have flaws or vulnerabilities in spite of rigorous testing and quality assurance procedures. The complete removal of all defects or problems in software products cannot be ensured by SQA.
    6. Complexity: Especially in large-scale projects with numerous stakeholder’s dependencies and integration points SQA procedures can be complicated. Careful planning and coordination are necessary to manage the complexity of quality assurance tasks.

    Quality Assurance v/s Quality control

    Quality AssuranceQuality Control
    Quality Assurance (QA) is the set of actions including facilitation, training, measurement, and analysis needed to provide adequate confidence that processes are established and continuously improved to produce products or services that conform to specifications and are fit for use.Quality Control (QC) is described as the processes and methods used to compare product quality to requirements and applicable standards, and the actions are taken when a nonconformance is detected.
    QA is an activity that establishes and calculates the processes that produce the product. If there is no process, there is no role for QA.QC is an activity that demonstrates whether or not the product produced met standards.
    QA helps establish processQC relates to a particular product or service
    QA sets up a measurement program to evaluate processesQC verified whether particular attributes exist, or do not exist, in a explicit product or service.
    QA identifies weakness in processes and improves themQC identifies defects for the primary goals of correcting errors.
    Quality Assurance is a managerial tool.Quality Control is a corrective tool.
    Verification is an example of QA.Validation is an example of QC.

    Frequently Asked Questions – FAQs

    1. What does software quality assurance mean?

    Answer: SQA is a collection of organized and methodical development tasks meant to guarantee compliance with established standards and specifications. In order to produce software products of the highest quality it includes tasks like testing bug tracking code reviews and process improvements.

    2. What is the process for software quality assurance?

    Answer: The SQA process uses steps like planning creating test cases conducting tests and reporting problems to systematically guarantee the quality of software products. By helping to find and fix problems it guarantees that software meets specifications and operates as planned.

    3. Why is quality assurance used in software?

    Answer: SQA is used to ensure that software products meet quality standards reduce errors and boost customer satisfaction. It improves overall program dependability and efficiency detects issues and verifies requirement compliance. By reducing the risks connected with broken programs SQA encourages efficient software development.

    4. What is the purpose of software quality assurance?

    Answer: SQA improves product reliability and prevents defects by using systematic processes to ensure that software satisfies predetermined standards and requirements.

    5. Software quality assurance activities: what are they?

    Answer: To guarantee software quality throughout the development lifecycle SQA activities include planning creating standards running tests monitoring errors and keeping records.

  • SCM Process

    It uses the tools which keep that the necessary change has been implemented adequately to the appropriate component. The SCM process defines a number of tasks:

    • Identification of objects in the software configuration
    • Version Control
    • Change Control
    • Configuration Audit
    • Status Reporting
    SCM Process

    Identification

    Basic Object: Unit of Text created by a software engineer during analysis, design, code, or test.

    Aggregate Object: A collection of essential objects and other aggregate objects. Design Specification is an aggregate object.

    Each object has a set of distinct characteristics that identify it uniquely: a name, a description, a list of resources, and a “realization.”

    The interrelationships between configuration objects can be described with a Module Interconnection Language (MIL).

    Version Control

    Version Control combines procedures and tools to handle different version of configuration objects that are generated during the software process.

    Clemm defines version control in the context of SCM: Configuration management allows a user to specify the alternative configuration of the software system through the selection of appropriate versions. This is supported by associating attributes with each software version, and then allowing a configuration to be specified [and constructed] by describing the set of desired attributes.

    Change Control

    James Bach describes change control in the context of SCM is: Change Control is Vital. But the forces that make it essential also make it annoying.

    We worry about change because a small confusion in the code can create a big failure in the product. But it can also fix a significant failure or enable incredible new capabilities.

    We worry about change because a single rogue developer could sink the project, yet brilliant ideas originate in the mind of those rogues, and

    A burdensome change control process could effectively discourage them from doing creative work.

    A change request is submitted and calculated to assess technical merit; potential side effects, the overall impact on other configuration objects and system functions, and projected cost of the change.

    The results of the evaluations are presented as a change report, which is used by a change control authority (CCA) – a person or a group who makes a final decision on the status and priority of the change.

    The “check-in” and “check-out” process implements two necessary elements of change control-access control and synchronization control.

    Access Control governs which software engineers have the authority to access and modify a particular configuration object.

    Synchronization Control helps to ensure that parallel changes, performed by two different people, don’t overwrite one another.

    Configuration Audit

    SCM audits to verify that the software product satisfies the baselines requirements and ensures that what is built and what is delivered.

    SCM audits also ensure that traceability is maintained between all CIs and that all work requests are associated with one or more CI modification.

    SCM audits are the “watchdogs” that ensures that the integrity of the project’s scope is preserved.

    Status Reporting

    Configuration Status reporting (sometimes also called status accounting) providing accurate status and current configuration data to developers, testers, end users, customers and stakeholders through admin guides, user guides, FAQs, Release Notes, Installation Guide, Configuration Guide, etc.

  • Software Configuration Management in Software Engineering

    When we develop software, the product (software) undergoes many changes in their maintenance phase; we need to handle these changes effectively.

    Several individuals (programs) works together to achieve these common goals. This individual produces several work product (SC Items) e.g., Intermediate version of modules or test data used during debugging, parts of the final product.

    The elements that comprise all information produced as a part of the software process are collectively called a software configuration.

    As software development progresses, the number of Software Configuration elements (SCI’s) grow rapidly.

    These are handled and controlled by SCM. This is where we require software configuration management.

    A configuration of the product refers not only to the product’s constituent but also to a particular version of the component.

    Therefore, SCM is the discipline which

    • Identify change
    • Monitor and control change
    • Ensure the proper implementation of change made to the item.
    • Auditing and reporting on the change made.

    Configuration Management (CM) is a technic of identifying, organizing, and controlling modification to software being built by a programming team.

    The objective is to maximize productivity by minimizing mistakes (errors).

    CM is used to essential due to the inventory management, library management, and updation management of the items essential for the project.

    Why do we need Configuration Management?

    Multiple people are working on software which is consistently updating. It may be a method where multiple version, branches, authors are involved in a software project, and the team is geographically distributed and works concurrently. It changes in user requirements, and policy, budget, schedules need to be accommodated.

    Importance of SCM

    It is practical in controlling and managing the access to various SCIs e.g., by preventing the two members of a team for checking out the same component for modification at the same time.

    It provides the tool to ensure that changes are being properly implemented.

    It has the capability of describing and storing the various constituent of software.

    SCM is used in keeping a system in a consistent state by automatically producing derived version upon modification of the same component.