Advanced Software Engineering

Software Quality

Software quality is an effective software process applied in a way which creates a useful product and the product provides measurable value for those who produce and use it.

Software quality factors

Following are the software quality factors:
1. McCall's Quality factors
2. ISO 9126 Quality factors

McCall's Quality Factors

McCall's software quality factors focus on following aspect of a software product.

1. Operational characteristic of software product
  • Correctness – A program satisfies specification and fulfills the customer requirements.
  • Reliability – A program is expected to perform the intended function with needed precision.
  • Efficiency – Amount of computing resources and the code required by a program to perform its functions.
  • Integrity – The efforts are taken to handle access authorization.
  • Usability – The efforts are needed to learn, operate, prepare input and interpret the output of a program.
2. Ability to undergo change or the product transition
  • Portability – Transfer the program from one system (hardware or software) environment to another.
  • Reusability – Extent to that a program or a part of a program is reused in other applications.
  • Interoperability – The efforts are needed to couple one system to another.
3. Adaptability to new environment or product revision
  • Maintainability – The efforts are needed to locate and fix an error in the program.
  • Flexibility – The efforts are needed to modify an operational program.
  • Testability – The effort needed to test a program to check that it performs its intended function.
quality factor

ISO 9126 Quality factors

It is developed in an attempt to recognize the quality attributes.

The standard identifies the following quality attributes:
I. Functionality
II. Reliability
III. Usability
IV. Efficiency
V. Maintainability
VI. Portability

Software Reliability

  • The probability of failure free program in a specified environment for a specified time is known as software reliability.
  • The software application does not produce the desired output according to the requirements then the result in failure.
Measures of software reliability and availability:
  • A measure of reliability is Mean Time Between Failure (MTBF).

  • MTBF= MTTF + MTTR
    Where, the MTTF and MTTR are Mean Time To Failure and Mean Time To Repair.

  • An alternate measure of reliability is Failures In Time(FIT).
  • A software availability is the probability that a program is running according to the requirements at a given point in time.

  • Availability =[MTTF/ (MTTF + MTTR)] * 100%

  • The availability measure is an indirect measure of the maintainability of the software and it is more sensitive to MTTR.

Distributed Software Engineering

  • In distributed system, various computers are connected in a network.
  • The connected computers communicate with each other by passing the message in a network.
Distributed system issues
  • Distributed system is more complex system than the system running on a single processor.
  • Complexity occurs because various part of the system are managed separately as in the network.
Following are design issues considered while designing distributed systems:

  • Resource sharing - Sharing hardware and software resources.
  • The openness - System is designed in way that equipment and software from different vendors are used.
  • Concurrency - Different users are concurrently accessing the resources from different locations.
  • Scalability -  The distributed operating system should be scalable to accommodate the increase service load.
  • Fault tolerance - The system should continue to function properly after the fault has occurred.

Aspect-Oriented Software Engineering(AOSE)

  • The relationship between various program components and their requirement are complex.
  • One single component can be used for various requirements. To achieve this, AOSE is used.
  • To make programming easier and maintaining reusability AOSE is used.
  • AOSE supports the separation of concerns into independent elements is the benefit of it.
Separation concerns
  • For the software design and its implementation the separation concerns are the basic principle.
  • These concerns are arranged in a way in the software that perform only one job.

SOA (Software Oriented Architecture)

  • SOA refers in building a reliable distribution system.
  • SOA is a collection of services that are communicating with each other.
  • The communication consists of simple data processing or two or more services coordinate with some activity.
  • In SOA, loose coupling between the services interacting each other.
  • SOA develops distributed system in which the components are stand-alone service.
  • These services can be executed on different computers from different service provider.
  • The standard protocols are developed for supporting service communication and information exchange.
  • Architecture and services are the two important terms with respect to the SOA.
  • The architecture includes the description of the overall system like purpose, function properties and various interfaces.
  • Business services, entity services, functional services, utility services are the types of services used in SOA system.
  • The services are strong reusable business function and these are communicated via message passing system.

  • soa

  • The above figure shows the basic service oriented architecture. It includes the service provider and service user.
  • The user requests for a service by sending request message and the service provider reply message to the service consumer.
  • The way of defining request and successive response connections is understandable to both the service provider and service user. This way of defining is achieved using SOAP, WSDL etc. these are explained in following point SOA and web services.
Advantages of SOA
  • Services are provided locally or outsource to external providers.
  • The services are language independent.

SOA and Web services

  • Web services are a realization of SOA.
  • SOA is an architectural model which is independent of any technology platform and web service is the popular approach of SOA.
  • The web services provide services over the web.
  • All the computers are able to connect to the internet by building web services on HTTP. This protocol is used for securing the web service communication.
  • After taking the decision of protocol for communication need to decide the language for communication. For that purpose XML is chosen because it is platform independent and various systems can easily understand it.
  • Using XML information is an organized in the required way.
  • To process the unstructured data and display a formatted data, XML is widely used.
  • In web services, Web Service Description Language(WSDL) is similar to the method signature. WSDL document is written in XML for the better understanding of any web service to the users.
  • WSDL consist of parameters and its data type, methods or functions.
  • Through an application oriented interface like WSDL the web services are available to the users.
  • In web services, method signature is accomplished through  Simple Object Access Protocol (SOAP).
  • A SOAP message is written in XML and sent to the web service over HTTP for web service consumption.
  • The user of the web service will be able to construct the correct SOAP message which is simply based on the WSDL documents. The reply of message is also in SOAP format.