Showing posts with label Software Engineering. Show all posts
Showing posts with label Software Engineering. Show all posts

Tuesday, May 25, 2021

Rapid Application Development (RAD)

 
Rapid Application Development (RAD) is a form of agile software development methodology that prioritizes rapid prototype releases and iterations. 

Unlike the Waterfall method, RAD emphasizes the use of software and user feedback over strict planning and requirements recording.
 
Steps or Phases in RAD
 
Step 1. Define and finalize project requirements

  • During this step, stakeholders sit together to define and finalize project requirements such as project goals, expectations, timelines, and budget.  
  • When you have clearly defined and scoped out each aspect of the project’s requirements, you can seek management approvals.

 
Step 2: Begin building prototypes

  • As soon as you finish scoping the project, you can begin development.  
  • Designers and developers will work closely with clients to create and improve upon working prototypes until the final product is ready.


Step 3: Gather user feedback

  • In this step, prototypes and beta systems are converted into working models. 
  • Developers then gather feedback from users to tweak and improve prototypes and create the best possible product.

 
Step 4: Test

  • This step requires you to test your software product and ensure that all its moving parts work together as per client expectations.   
  • Continue incorporating client feedback as the code is tested and retested for its smooth functioning. 


Step 5: Present your system

  • This is the final step before the finished product goes to launch.   
  • It involves data conversion and user training.

 
Advantages 

  • Enhanced flexibility and adaptability as developers can make adjustments quickly during the development process.  
  • Quick iterations that reduce development time and speed up delivery. 
  • Encouragement of code reuse, which means less manual coding, less room for errors, and shorter testing times.  
  • Increased customer satisfaction due to high-level collaboration and coordination between stakeholders (developers, clients, and end users).  
  • Better risk management as stakeholders can discuss and address code vulnerabilities while keeping development processes going.

 
Disadvantages 

  •  Only systems that can be modularized  can be built using RAD.  
  • Inapplicable to cheaper projects as cost of Modelling and automated code generation is very high.  
  • Only suitable for systems that are component based and scalable.  
  • Requires user involvement throughout the life cycle.  
  • Suitable for project requiring shorter development times.


Monday, May 24, 2021

Agile Manifesto

 

Agile software development values


Based on their combined experience of developing software and helping others do that, the seventeen signatories to the manifesto proclaimed that they value,

  • Individuals and interactions over processes and tools

  • Working software over comprehensive documentation

  • Customer collaboration over contract negotiation

  • Responding to change over following a plan

    Agile software development principles


    The Manifesto for Agile Software Development is based on twelve principles:

    1.  Our highest priority is to satisfy the customer through early and continuous delivery of valuable software. 
    2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. 
    3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. 
    4. Business people and developers must work together daily throughout the project. 
    5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
    6.  The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
    7.  Working software is the primary measure of progress. 
    8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. 
    9. Continuous attention to technical excellence and good design enhances agility. 
    10. Simplicity--the art of maximizing the amount of work not done--is essential. 
    11. The best architectures, requirements, and designs emerge from self-organizing teams. 
    12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

       


Tuesday, December 15, 2020

Waterfall Model

 

 Waterfall Model 

  • It is also referred to as a linear-sequential life cycle model. 
  • WATERFALL MODEL is a sequential model that divides software development into pre-defined phases. 
  • Each phase must be completed before the next phase can begin with no overlap between the phases.
  • Each phase is designed for performing specific activity during the SDLC phase. 

Sequential Phases

  • Requirements: The first phase involves understanding what needs to design and what is its function, purpose, etc. Here, the specifications of the input and output or the final product are studied and marked.
  • System Design: The requirement specifications from the first phase are studied in this phase and system design is prepared. System Design helps in specifying hardware and system requirements and also helps in defining overall system architecture. The software code to be written in the next stage is created now.
  • Implementation: With inputs from system design, the system is first developed in small programs called units, which are integrated into the next phase. Each unit is developed and tested for its functionality which is referred to as Unit Testing.
  • Integration and Testing: All the units developed in the implementation phase are integrated into a system after testing of each unit. The software designed, needs to go through constant software testing to find out if there are any flaws or errors. Testing is done so that the client does not face any problem during the installation of the software.
  • Deployment of System: Once the functional and non-functional testing is done, the product is deployed in the customer environment or released into the market.
  • Maintenance: This step occurs after installation, and involves making modifications to the system or an individual component to alter attributes or improve performance. These modifications arise either due to change requests initiated by the customer, or defects uncovered during live use of the system. The client is provided with regular maintenance and support for the developed software.
 
Waterfall model can be used when,
  • Requirements are not changing frequently
  • Application is not complicated and big
  • Project is short
  • Requirement is clear
  • Environment is stable
  • Technology and tools used are not dynamic and is stable
  • Resources are available and trained

 

Advantages


  • In this model, phases are processed and completed one at a time and they do not overlap.

  • Before the next phase of development, each phase must be completed.

  • Suited for smaller projects where requirements are well defined.

  • They should perform quality assurance test (Verification and Validation) before completing each stage.

  • Any changes in software is made during the process of the development.

Disadvantages


  • It is difficult to estimate time and cost for each phase of the development process. 

  • Error can be fixed only during the phase.

  • It is not desirable for complex project where requirement changes frequently.

  • Testing period comes quite late in the developmental process..

  • Small changes or errors that arise in the completed software may cause a lot of problems.

 

Software Life Cycle

 The software life cycle is a process that consists of a series of planned activities to develop or alter the Software Products.

  • lt s used by the software industry to design, develop and test software. 
  • The SDLC aims to produce high-quality software that meets or exceeds customer expectations reaches completion within times and cost estimates.
  • The following are the various stages/steps of the software life cycle,

# Planning and Requirement Analysis  

  • The requirement is the first stage in the SDLC process.
  • It is conducted by the senior team members with inputs from all the stakeholders and domain experts in the industry. 
  • Planning for the quality assurance requirements and recognization of the risks involved is also done at this stage.

# Defining (Feasibility study)

  • Once the requirement analysis phase is completed the next step is to define and document software needs.
  •  This process conducted with the help of 'Software Requirement Specification' document also known as 'SRS' document. 
  • It includes everything which should be designed and developed during the project life cycle.

# Designing the Software

  • In this third phase, the system and software design documents are prepared as per the requirement specification document. 
  • This helps define overall system architecture.

# Coding or Developing the Product

  • In this phase of SDLC, the actual development begins, and the programming is built. 
  • The implementation of design begins concerning writing code.

# Testing the Product

  •  After the code is generated, it is tested against the requirements to make sure that the products are solving the needs addressed and gathered during the requirements stage.
  •  During this stage, unit testing, integration testing, system testing, acceptance testing are done.

# Deployment in the Market

  • Once the software is certified, and no bugs or errors are stated, then it is deployed.
  • Then based on the assessment, the software may be released as it is or with suggested enhancement in the object segment. 
  • After the software is deployed, then its maintenance begins.

# Maintenance

  • Once when the client starts using the developed systems, then the real issues come up and requirements to be solved from time to time. 
  • This procedure where the care is taken for the developed product is known as maintenance.

Software life-cycle Models