Followers

Friday 17 April 2020

Introduction to Modern Principles of Software Engineering: Lecture 2


Department : MCA
Semester     : IV
Subject        : Principles of Software Engineering                                             
Paper           : 21
Faculty        : Avinash Kumar



Syllabus covered in  this blog:

S/W Development principles: Agile, Adaptive and RAD



Modern Principles of Software Development

There are some modern principles for the development of software. By following these modern principles we can develop an efficient software meeting all the requirements of a customer.

To develop a proper software one should follow the following 10 principles of software development:

  • Architecture first approach:
In this approach over the main aim is to build a strong architecture for our software. All the ambiguities and flaws are being identified during the very trivial phase. Also, we can take all the decisions regarding the design of the software which will enhance the productivity of our software.

  • Iterative life cycle process:
An iterative life cycle process we repeated the process again and again to eliminate the risk factors. An iterative life cycle we mainly have four steps requirement gathering, design, implementation, and testing. All these steps are repeated again and again until we mitigate the risk factor. Iterative life cycle process is important to alleviate risk at an early stage by repeating the above-mentioned steps again and again.

  • Component Based Approach:
In component-based approach is a widely used and successful approach in which we reuse the previously defined functions for the software development. We reuse the part of code in the form of components. Component-based UI Development Optimizes the Requirements & Design Process and thus is one of the important modern software principle.

  • Change Management system:
Change Management is the process responsible for managing all changes. The main aim of change management is to improve the quality of software by performing necessary changes. All changes implemented are then tested and certified.

  • Round Trip Engineering:
In round trip engineering code generation and reverse engineering take place at the same time in a dynamic environment. Both components are integrated so that developers can easily work on both of them. In round trip engineering, the main characteristic is automatic update of artifacts.

  • Model Based Evolution:
Model-based evolution is an important principle of software development. A model-based approach supports the evolution of graphics and textual notions.

  • Objective Quality Control:
The objective of quality control is to improve the quality of our software. It involves Quality management plan, Quality metrics, Quality checklist, Quality baseline, and Quality Improvement measures.

  • Evolving levels of details:
Plan intermediate releases in groups of usage scenarios with evolving levels of details. We must plan an incremental realize in which we have an evolving level of use case, architecture, and details.

  • Establish a configurable process:
Establish a configurable process that is economically scalable. One single process is not suitable for all the development so we must use a configurable process which can deal with various applications.

  • Demonstration Based approach:
In this approach, we mainly focus on demonstration. It helps to the increase the productivity and quality of software by representing a clear description about problem domain, approaches used and the solution implanted.


Agile Software Development

Agile is a time-bound, iterative approach to software delivery that builds software incrementally from the start of the project, instead of trying to deliver all at once.
In Agile development, Design and Implementation are considered to be the central activities in the software process. Design and Implementation phase also incorporate other activities such as requirements elicitation and testing into it.
In this approach, iteration occurs across activities. Therefore, the requirements and the design are developed together, rather than separately. The allocation of requirements and the design planning and development as executed in a series of increments.








In contrast with the conventional model, where requirements gathering needs to be completed in order to proceed to the design and development phase, it gives Agile development an extra level of flexibility. An agile process focuses more on code development rather than documentation



Principles Agile Software Development

The Agile Alliance defines twelve lightness principles for those that need to attain agility.

      • Our highest priority is to satisfy the client through early and continuous delivery of valuable computer software.
      • Welcome dynamical necessities, even late in development. Agile processes harness modification for the customer’s competitive advantage.
      • Deliver operating computer software often, from a pair of weeks to a couple of months, with a preference to the shorter timescale.
      • Business individuals and developers should work along daily throughout the project.
      • The build comes around actuated people. offer them the setting and support they have, and trust them to urge the task done.
      • the foremost economical and effective methodology of convincing info among a development team is face-to-face speech.
      • Working computer software is the primary live of progress.
      • Agile processes promote property development. The sponsors, developers, and users got to be able to maintain a relentless pace indefinitely.
      • Continuous attention to technical excellence and smart style enhances nimbleness.
      • Simplicity—the art of maximizing the number of work not done—is essential.
      • the most effective architectures, necessities, and styles emerge from self– organizing groups.
      • At regular intervals, the team reflects on a way to become simpler, then tunes and adjusts its behavior consequently.

Advantages: 

  • Deployment of software is quicker and thus helps in increasing the trust of the customer. 
  • Can better adapt to rapidly changing requirements and respond faster. 
  • Helps in getting immediate feedback which can be used to improve the software in the next increment. 
  • People – Not Process. People and interactions are given a higher priority rather than process and tools. 
  • Continuous attention to technical excellence and good design.

Disadvantages: 

  • In case of large software projects, it is difficult to assess the effort required at the initial stages of the software development life cycle. 
  • The Agile Development is more code focused and produces less documentation. 
  • Agile development is heavily depended on the inputs of the customer. If the customer has ambiguity in his vision of the final outcome, it is highly likely for the project to get off track. 
  • Face to Face communication is harder in large-scale organizations. 
  • Only senior programmers are capable of taking the kind of decisions required during the development process. Hence it’s a difficult situation for new programmers to adapt to the environment.

Adaptive Software Development

Adaptive Software Development is a method to build complex software and system. It focuses on human collaboration and self-organization.





Adaptive Software Development Life Cycle incorporates three phases namely:
1.    Speculation:
During this phase project is initiated and planning is conducted. The project plan uses project initiation information like project requirements, user needs, customer mission statement etc, to define set of release cycles that the project wants.

2.    Collaboration:
It is the complex part of Adaptive Software Development as it needs the workers to be motivated. It collaborates communication and teamwork but emphasizes individualism as individual creativity plays a major role in creative thinking. People working together must trust each others to
·         Criticize without animosity,
·         Assist without resentment,
·         Work as hard as possible,
·         Possession of skill set,
·         Communicate problems to find effective solution.

3.    Learning:
The workers may have overestimate of their own understanding of the technology which may not lead to the desired result. Learning helps the workers to increase their level of understanding over the project in the following three ways:
·         Focus groups
·         Technical reviews
·         Project postmortem


Advantages of adaptive software development 

  • A better and stronger overall end product. 
  • Increased transparency between developers and customers. 
  • A user-first approach which leads to a more intuitive piece of software. 
  • Higher likelihood of on-time (or early!) delivery, thanks to the repeating three-step process which allows potential problems to be identified and solved early.


Disadvantages of adaptive software development drawbacks 

  • Extensive testing can lead to higher project costs. 
  • The level of user involvement required can be difficult to resource. 
  • An emphasis on constant product iteration and feedback can lead to burnout.

Hence Adaptive Software Development works better where teams
can be dedicated solely to a single project. 




RAD Model

Rapid Application Development Model was introduced by IBM during 1980’s. RAD Model is generally based on the prototype model and iterative approach. This model is used to completing the process of software product developing in a very short time. 
The entire project is divided into various small modules and each module is allocated to different party to finish the working of the small modules. After that, all the smaller  modules are combined together to obtain the final project. If your project can be divided into many parts or modules then the Rapid application development model is used.
The process of RAD model is building the Rapid prototype and deliver it to the clients and taking the reviews from them . If customer is satisfied then SRS document is created and designing phase is start.



























Phases in RAD model


Requirement Analysis:

There are various approaches which is used in requirement planning like brainstorming , task analysis ,form analysis ,user scenario etc. This phase consists plan or designing of each module which contains data, methods and other resources.


Customer Evaluation:

In this phase, developer evaluates the customer satisfaction by delivering the prototype and taking the reviews from them. If the customer is satisfied then developer starts implementation. 

 

Construction:

Prototype is refining and all the modification ,correction and improvements is done in this phase. This phase helps us to convert the process and modules into the final working product.

 

Cut Over:

This is the last stage of the RAD model. In this phase, all the independent modules are evaluated separately .The tools and sub-parts of product makes the testing of the product very easy.


Advantages of RAD model
·         RAD model completes the project in a short period of time.
·         The progress and development of project can be check on various stages.
·         This model uses the powerful techniques and tools.
·         Reduce cost because fewer developers are needed.
·         Prototype is delivered to the customer so the customer is satisfied.
·         It has more flexibility and adaptability to acquire the new requirements.
·         Reusability of the components is increased.  

Disadvantages of RAD model
·         Team leader must to do work with developers to complete the work on time.
·         Customer involvement is needed.
·         There are no reusable component are used to lead the failure of the project.
·         This model works only when the requirements are clearly specified.
·         This model can be more complex if prototype is refined again and again.
·         RAD model is not suitable for short projects.

Applications of RAD model
·  This model should be used for a system with known requirements and requiring short development time.
·   It is also suitable for projects where requirements can be modularized and reusable components are also developed.
· The model can also be used when already existing system components can be used in developing a new system with minimum changes.
· This model can only be used if the teams consist of domain experts. This is because relevant knowledge and ability to use powerful techniques is a necessity.
·  The model should be chosen when the budget permits the use of automated tools and techniques required.


No comments:

Post a Comment