Network Security and Management

by Professor Brijendra Singh.

Systems Analysis and Design

by Professor Brijendra Singh.

Data Communication And Computer Networks

by Professor Brijendra Singh.

Quality Control And Reliability Analysis

by Professor Brijendra Singh

Friday, 10 April 2020

Firewall




Firewall:

A firewall is a device that filters all traffic between a protected or “inside” network and a less trustworthy or “outside” network.


Usually, a firewall runs on a dedicated device, because it is single point through which traffic is channeled, performance is important, which means non-firewall functions should not be done on the same machine.
Because a firewall is executable code, the attacker could compromise that code and execute from the firewall device.


The purpose of the fIrewall is to keep “bad” things outside a protected environment. To accomplish that,
firewall implement a security that is specifically designed to address what bad thing’s might happen.

Packet-Filtering Firewalls
Packet-filtering firewalls or packet-filtering gateway applies a set of rules to each incoming IP packet and then forwards or discards the packets.
The router is typically configured to filter packets going in both directions (from and to the internal networK). 

Stateful Inspection Firewalls
Filtering firewall work on packets one at a time, accepting or rejecting each packet and moving on to the next. They have no concept of “state” or “context” from one packet to the next. A stateful inspection firewall maintains state information from one packet to another in the input stream. 

Proxy Firewalls
A proxy firewall also called an application layer firewalls, is a firewall that simulates the (proper) effects of an application, so that the application will receive only requests to act properly.

Guards
A guard is a sophisticated firewall. Like a proxy firewall, it receives protocol data units, interprets them, and passes through the same or different protocol data units that achieve either the same result or a modified results.
The guard decides what services to perform on the user’s behalf in accordance with its available knowledge. 

Personal Firewalls
A personal firewall is an application program that runs on a workstation to block unwanted traffic, usually from the network.
The personal firewall is configured to enforce some policy. For example, the user may decide that certain sites, such as computers on the company networks, are highly trustworthy but most other sites are not.

Limitations of Firewalls
1.The firewall cannot protect against attack that bypass the firewall.
2.The firewall does not protect against internal threats.
3.The firewall can not protect against the transfer of virus-infected programs or files.
4.The firewall can be “fooled” by source routing or address spoofing. 



















Thursday, 2 April 2020

Activities of Software Design Process

Activities of the Software Design Process




Software design is an explanation of the structure of the software to be implemented, data models, structures used by the system, interfaces between system components, and algorithms used.
Activities of design process are as:


  1. Architectural design exposes the top level design and permits a designer to reason about satisfaction of software requirements in terms of assignment of functionality to design elements and allows designers to develop recurring patterns of software organization. There is different architectural design style such as:
    • - Data-Centered Architecture
    • - Layered Architecture (OS Type)
    • - Layered Architecture (Protocol Layer Type)
    • - Call and Return Architecture
    • - Client Server Architecture
    • - Data-Flow Architecture (Batch Sequential)
    • - Data-Flow Architecture (Pipes and Filters)

  2. Interface design is part of the software and is designed as it is expected to provide the user. Interface design focuses on anticipating what users might need to do and ensuring that the interface has elements that are easy to understand, access, and use to facilitate those actions. User interface brings together concepts from interaction design, visual design, and information architecture. User interface (UI) is divided into two categories: command-line interface (CLI) and graphical user interface (GUI). 

  1. There are numerous tools available using which the designers can develop complete GUI on a mouse click. Some tools can be embedded into the software environment such as an integrated development environment (IDE). GUI implementation tools provide a dominant array of GUI controls. For software customization, software designers can change the code consequently. There are different segments of GUI tools according to their different use and platform. For example: Computer GUI, Mobile GUI, Touch-Screen GUI etc. Here is a list of some tools which is used to create GUI:
  2. - FLUID
    - LucidChart
     - AppInventor (Android)

    - Wavemaker
    - Visual Studio 

  3. 3. Component design is a design specification for adaptable components. Using the generation procedure set of these components is implemented for certain products and software. For example: A component design is a specification for an adaptable component that can be used to assemble a draft application work product. The adaptation specification defines the adaptation parameters for this adaptable component. The interface specification is parameterized where suitable in terms of these adaptation parameters.

  4. 4. Database design is a process of developing a detailed data model of database which contains all the needed physical and logical design. Physical storage parameters needed to generate a design in a data definition language which can then be used to create a database. For example: The unified modeling language (UML) is used to expressing complex systems in visual way which is created in an object-oriented language. For instance, an entity is known as a class in UML.










Cloud Computing Infrastructure





Cloud Computing Infrastructure

Cloud Computing Infrastructure (CCI) is a structured integration of physical as well as virtual resources which together create overall cloud environment and plays a crucial role in cloud service provisioning.

Cloud computing has emerged as a result of paradigm shift from local to network-centric computing and network-centric content, in which computing and storage resources are provided by distant data centers. Scientific and engineering applications, data mining, computational financing, gaming and social networking, and many other computational and data-intensive activities are getting benefitted from cloud computing. This vast domain of cloud applicability has been possible due to summing up of various key techniques, such as data storage technologies (like Google File System), Virtualization techniques, data management technologies (like Big Table), Distributing Computing as well as programming models and task scheduling models (like Map-Reduce) used in cloud computing. This integration of technologies has made the Cloud Infrastructure very huge in its dimension and complexity; and therefore it needs careful analysis to keep it resilient to a wide range of threats and vulnerabilities.


Infrastructure of a Cloud is comprised of the hardware and software components such as servers, storage, networking and virtualization software, which are bind together to support the computing requirements of a cloud computing model. Cloud computing infrastructure includes a software abstraction layer that virtualizes resources and logically presents them to users through programmatic means. In cloud computing, virtualized resources are hosted by a service provider or IT department and delivered to users over a network or the Internet. These resources include virtual machines and components such as servers, compute, memory, network switches, firewalls, load balancers and storage.
Cloud computing infrastructure can be visualized as a envelope that cover up each of the three cloud computing service models: infrastructure as a service (IaaS), platform as a service (PaaS) and software as a service (SaaS) within public, private and hybrid model. Together, these three service models form a cloud computing stack, with IaaS as the foundation, PaaS as the middle layer, and SaaS as the top layer. Figure 1 shows the layout of cloud computing infrastructure which is divided into three levels named as host level, network level and application level. All of these three levels are having different working patterns and different security features. Each level is dependent on other levels for communication and for providing services. 

Businesses or cloud service provider (CSPs) use cloud infrastructures to run their applications. Cloud infrastructures are typically purchased using a pay-per-use model. A cloud infrastructure provider is like a company that offers some component of cloud computing such as IaaS, SaaS or PaaS to other businesses or individuals. There are many companies which provide basic different services of cloud, Amazon (AWS) and Rackspace provides only IaaS for public, private and hybrid model. Windows azure and WorkXpress give their services only for PaaS. All these companies are not providing all services on a single platform, they are having their service infrastructure at different places and they treat a single service like an infrastructure.
A cloud thus not necessarily be confined to a small geographic location; but as the case of most CSPs like Amazon, Cloud infrastructure is built around Regions and Availability Zones, consisting of one or more discrete data centers, each with redundant power, networking and connectivity, housed in separate facilities. This geographically distributed nature of cloud along with abrupt migration of Virtual machines (VMs) between various physical host- locations increases the complexity of Cloud computing Infrastructure (CCI) many folds.
For any complicated system with a massive infrastructure, the most strenuous task is to keep it resilient towards all possible threats and vulnerabilities. This is why security and data privacy are still continuing to be key considerations in the evaluation and selection of cloud platforms. It makes organizations to have an immense focus on cloud Infrastructure‟s security aspects and design & implement a robust and easily configurable security architecture. 
Infrastructure is defined as „the basic physical and organizational structures and facilities (e.g. buildings, roads, power supplies, communication system) which are necessary for the operation of a society, system or any enterprise". Similarly Cloud Computing Infrastructure (CCI) is a structured integration of physical as well as virtual resources which together create overall Cloud environment; including servers, data storage and network components. 


Cloud Computing Infrastructure (CCI) consists of a wide range of cloud components such as processing elements, data centers, storage devices, networking, service level agreement(SLA) constraints, web based applications, cloud management software, deployment software, and platform virtualization.








Tuesday, 31 March 2020

Feasibility Study

Feasibility Study

Feasibility is defined as the practical extent to which a project can be performed successfully. To evaluate the feasibility of the project feasibility study is performed. A feasibility study should be comparatively economical and fast. Estimation is made of whether the recognized user requirements may be satisfied using existing software and hardware technology. The result should notify the verdict of whether or not to go forward with an added comprehensive analysis.
It is important to find out the strengths and weaknesses of proposed project and present guidelines of activities which will improve a project and accomplish desired results. Feasibility study is used to review the project to find out the strengths and weaknesses of project. The nature and components of feasibility study depend mainly on the areas in which analyzed projects are implemented. The acronym TELOS refers to the five areas of feasibility such as: Technical, Economic, Legal, Operational, and Schedule. Technical feasibility is one of the most important and first study that must be conducted after a project has been identified.
For sustainable success of projects economic feasibility is an important aspect to consider. Therefore, project component, investment, reinvestment costs of system, and running costs for its operation were analyzed. The project team has to construct a systematic analysis of the legal issues surrounding the project. Operational feasibility study evaluates the project potential for success and schedule feasibility used to assess of how reasonable the project timetable is. These feasibility studies summarized as:  
Technical feasibility focused on gaining an understanding of the current technical resources of the organization and their applicability to the estimated needs of the proposed system. It is an assessment of the hardware and software and how it meets the requirement of the proposed system. For example: A space organization constructs a prototype to determine if a new type of spacecraft propulsion is technically feasible or not.
Economic feasibility demonstrates the net benefit of a proposed project for accepting or disbursing electronic funds, consider the benefits, costs to the organization, and the common user as a whole. For example: A software organization performs a study to determine if an innovative new software design would be cost competitive given the current cost of required resources, components, machines, technology, and effort.
Legal feasibility determines whether the proposed system conflicts with legal requirements. For example: A bank is considering introduce an innovative novel financial product. They begin with a feasibility study focused on all legal aspects such as regulatory risks and compliance.
Operational feasibility is a measure of how well a proposed system solves the problems, takes advantage of the opportunities acknowledged during scope definition, and how it satisfies the requirements identified in the requirements analysis of software development. For example: A data center investigates the feasibility of power self-adequacy using solar panels and battery systems with the network as a backup.
Schedule feasibility is a measure of how rational the project schedule is. For example: A software project is in the early planning phases with partial scope and no schedule when an executive announces to the world that the project will be completed by July. The project manager rapidly informs the executive that this is might be unfeasible. The executive requests that the project manager make it occur. The project manager responds by conducting a schedule feasibility assessment based on a list of requirements, out-of-scope items, and July deadline.















Product Quality VS. Process Quality




Product QualityVs. Process Quality

Software process used to create software product and achieve quality in software product within a given time and cost. In this chapter, software process quality and software product quality are discussed from several perspectives to see the relationship of software process quality and software product quality.

Because software more and more rule our world and becomes universal and embedded in almost everything we do. We have to make definite that software work in an enhanced way as we desire. The quality of software involves product and process quality. Process-oriented approaches deal with the organization of rules, standards, manuals, principles, guidelines, process definitions, and improvement of software quality processes. The high-quality software product is resulted from high-quality software development process. The absence of software process and product quality, increase troubles during the software development process. Process and product quality are process-driven approaches with detailed steps to achieve software development goals. The process and product quality consider requirement, design, development, and production. Quality assurance is a protective approach from occurring by providing methods and rules which prevents errors and defects from occurring. It starts in the software development process from the early phase of the software development lifecycle. It grants self-assurance to the user concerning the software development process and the software product. It is a systematic and planned pattern of all events essential to provide sufficient confidence that a software product conforms to recognized technical requirements.

Process and product quality declaration are very significant aspects in the development of software. Process and product quality assurance observe the software engineering processes and methods to guarantee software quality. It is the software process of confirming and verifying whether services and products meet the user requirement and expectation or not. The purpose of process and product quality assurance (PPQA) is to offer management and staff with purpose insight into processes and related work products. Process and product quality have become the key to success in the software development lifecycle. For the instance being we identify the fact that software measurement helps us to better evaluate, understand, and control the products, processes, and software projects from the various perspective of evaluating, controlling, tracking, forecasting, and understanding. A suitable measurement process can offer organizations to make improved and appropriate decisions to achieve success in software projects.


Software process quality contributes to software product quality to conform to the software requirement and user expectation using monitoring, reviewing, and evaluation of the software process. Software process impacts on the software product and its quality such as: usability, performance, reliability, security, availability, functionality, maintainability, and safety. Software process quality is having the highest efficiency and best utilization of all resources in software development. Software product quality is having the least defects and higher consumer satisfaction. 

Software process quality is related to how people develop the product. There are mainly effectiveness, efficiency, and predictability aspect of the software. Software product quality associated with the absence of defects in software. Various important quality attributes for software success are usability, efficiency, maintainability, portability, reliability, reusability, and availability. All these software quality totally depends on the quality of software process. 




Monday, 30 March 2020

Quality defined by various gurus

SOFTWARE QUALITY 

When the expression “Software Quality” is used, we usually think in terms of an excellent software product that fulfills our expectations. These expectations are based on the intended use. A number of models have been proposed for evaluation of software quality based on various characteristics

If we are to talk intelligently about the quality of a thing or the quality of the product, we must have in mind a clear picture of what we mean by quality. Quality defined by the various quality gurus in various ways, depending on the user perspective.
  •   Dr. Barry Boehm thinks of quality as Achieving high levels of user satisfaction, portability, maintainability, robustness, and fitness for use.

  •   Phil Crosby has created the definition with the currency because of its publication in his famous book “Quality is free”. He states that quality means “conformance to user requirements”.

  •   Tom McCabe, the software complexity specialist, de- fines quality as “High levels of user satisfaction and low defect levels, often associated with low complexity”.

  •   John Musa of Bell Laboratories states that quality means a combination of “low defect level, adherence of software functions to users needs, and high reliability”.

  • Traditionally, the quality of a product is defined in terms of its fitness of purpose. Although fitness of the purpose is a satisfactory definition of quality for hardware products, but it is not satisfactory for software products. 

Friday, 20 April 2018

Impact of Software Development Process



Impact of Software Development Process

Software process can be defined as “a set of activities, methods, practices, and transformations that people use to develop and maintain software and the associated products” . According to IEEE software development process is a process by which user needs are translated into a software product. The process involves translating user needs into software requirements, transforming the software requirements into design, implementing the design in code, testing the code, and sometimes, installing and checking out the software for operational use . Software process used to create software and achieve quality in software products. The main objective of the development of a system is its efficient integration in real-life situations. Various software development methods have been adopted to develop the software products such as: waterfall model, iterative and incremental model, spiral model, V model, rapid application development, prototyping model, agile model, and hybrid spiral model. Some of the most commonly used are waterfall, spiral, V model, and agile model. Software development organizations have realized that adherence to a suitable well defined life cycle model helps to produce good quality products .
Mainly there are four phase of software development; software requirement, software design, software coding/implementation and software testing, which have been used in various models. Each and every phase have an individual impact on software quality attributes. These phase play an important role to improve quality of finished products . A suitable life cycle model can possible be selected based on an analysis of issues such as: characteristics of the software to be developed, characteristics of development team, and characteristics of customer.
There are various issues in traditional software development process. The failure of many software projects in terms of not meeting user/business requirements, prone to errors etc has led to software quality becoming one of the key issues from all stakeholders‟ perspective.  In a competitive environment quality based product is basic need for any product success. To achieve quality, efficient process is required. Activities of software development can be organized in a process, in order to achieve the quality in finished product.
 The main research question of this review article is to find out the impact of software development process on software quality. Software requirement analysis used to collect needs or requirement of software. Requirement analysis is the first step which involves to the quality because this step used to capture all functional and non-functional requirements to be implemented in final product. Software design is next step to derive quality to create complete structure or architecture of software which is stated into requirement specification. Design provides not only to find out how the software product is going to be appear, but also allows both software users and developers to realize how it's going to function. Because design is the only way to completely translate a requirements into a finished product.
After software design software coding/implementation phase is used for implementing the software. Software implementation is based upon programming language. This phase also play an important role because using coding an executable version of software is created. Programming language can impact not only the coding process, but also the properties of the resulting product and its quality. Software testing is conducted when executable software exists. Testing used to find out errors and fix them to support software quality. Testing check what all functions software supposed to do & also check that software is not doing what he not supposed to do.