TheLyricsHell

Agile Model The meaning of Agile is swift or versatile."Agile process model" refers to a software development approach based on it...



Agile Model

The meaning of Agile is swift or versatile."Agile process model" refers to a software development approach based on iterative development. Agile methods break tasks into smaller iterations, or parts do not directly involve long term planning. The project scope and requirements are laid down at the beginning of the development process. Plans regarding the number of iterations, the duration and the scope of each iteration are clearly defined in advance.

Each iteration is considered as a short time "frame" in the Agile process model, which typically lasts from one to four weeks. The division of the entire project into smaller parts helps to minimize the project risk and to reduce the overall project delivery time requirements. Each iteration involves a team working through a full software development life cycle including planning, requirements analysis, design, coding, and testing before a working product is demonstrated to the client.

Phases of Agile Model:


Following are the phases in the Agile model are as follows:


  1. Requirements gathering
  2. Design the requirements
  3. Construction/ iteration
  4. Testing/ Quality assurance
  5. Deployment
  6. Feedback


1. Requirements gathering: In this phase, you must define the requirements. You should explain business opportunities and plan the time and effort needed to build the project. Based on this information, you can evaluate technical and economic feasibility.

2. Design the requirements: When you have identified the project, work with stakeholders to define requirements. You can use the user flow diagram or the high-level UML diagram to show the work of new features and show how it will apply to your existing system.

3. Construction/ iteration: When the team defines the requirements, the work begins. Designers and developers start working on their project, which aims to deploy a working product. The product will undergo various stages of improvement, so it includes simple, minimal functionality.

4. Testing: In this phase, the Quality Assurance team examines the product's performance and looks for the bug.

5. Deployment: In this phase, the team issues a product for the user's work environment.

6. Feedback: After releasing the product, the last step is feedback. In this, the team receives feedback about the product and works through the feedback.

Agile Testing Methods:


  1. Scrum
  2. Crystal
  3. Dynamic Software Development Method(DSDM)
  4. Feature Driven Development(FDD)
  5. Lean Software Development
  6. eXtreme Programming(XP)


Scrum

SCRUM is an agile development process focused primarily on ways to manage tasks in team-based development conditions.

There are three roles in it, and their responsibilities are:

Scrum Master: The scrum can set up the master team, arrange the meeting and remove obstacles for the process
Product owner: The product owner makes the product backlog, prioritizes the delay and is responsible for the distribution of functionality on each repetition.

Scrum Team: The team manages its work and organizes the work to complete the sprint or cycle.

eXtreme Programming(XP)

This type of methodology is used when customers are constantly changing demands or requirements, or when they are not sure about the system's performance.

Crystal:

There are three concepts of this method-

Chartering: Multi activities are involved in this phase such as making a development team, performing feasibility analysis, developing plans, etc.
Cyclic delivery: under this, two more cycles consist, these are:
Team updates the release plan.
Integrated product delivers to the users.
Wrap up: According to the user environment, this phase performs deployment, post-deployment.

Dynamic Software Development Method(DSDM):

DSDM is a rapid application development strategy for software development and gives an agile project distribution structure. The essential features of DSDM are that users must be actively connected, and teams have been given the right to make decisions. The techniques used in DSDM are:


  1. Time Boxing
  2. MoSCoW Rules
  3. Prototyping


The DSDM project contains seven stages:


  • Pre-project
  • Feasibility Study
  • Business Study
  • Functional Model Iteration
  • Design and build Iteration
  • Implementation
  • Post-project


Feature Driven Development(FDD):

This method focuses on "Designing and Building" features. In contrast to other smart methods, FDD describes the small steps of the work that should be obtained separately per function.

Lean Software Development:

Lean software development methodology follows the principle "just in time production." The lean method indicates the increasing speed of software development and reducing costs. Lean development can be summarized in seven phases.


  1. Eliminating Waste
  2. Amplifying learning
  3. Defer commitment (deciding as late as possible)
  4. Early delivery
  5. Empowering the team
  6. Building Integrity
  7. Optimize the whole


When to use the Agile Model?


  • When frequent changes are required.
  • When a highly qualified and experienced team is available.
  • When a customer is ready to have a meeting with a software team all the time.
  • When project size is small.


Advantage(Pros) of Agile Method:


  • Frequent Delivery
  • Face-to-Face Communication with clients.
  • Efficient design and fulfils the business requirement.
  • Anytime changes are acceptable.
  • It reduces total development time.


Disadvantages(Cons) of Agile Model:


  • Due to the shortage of formal documents, it creates confusion and crucial decisions taken throughout various phases can be misinterpreted at any time by different team members.
  • Due to the lack of proper documentation, once the project completes and the developers allotted to another project, maintenance of the finished project can become a difficulty.

Incremental Model Incremental Model is a process of software development where requirements divided into multiple standalone modules of the ...


Incremental Model

Incremental Model is a process of software development where requirements divided into multiple standalone modules of the software development cycle. In this model, each module goes through the requirements, design, implementation and testing phases. Every subsequent release of the module adds function to the previous release. The process continues until the complete system achieved.

The various phases of incremental model are as follows:


1. Requirement analysis: In the first phase of the incremental model, the product analysis expertise identifies the requirements. And the system functional requirements are understood by the requirement analysis team. To develop the software under the incremental model, this phase performs a crucial role.

2. Design & Development: In this phase of the Incremental model of SDLC, the design of the system functionality and the development method are finished with success. When software develops new practicality, the incremental model uses style and development phase.

3. Testing: In the incremental model, the testing phase checks the performance of each existing function as well as additional functionality. In the testing phase, the various methods are used to test the behavior of each task.

4. Implementation: Implementation phase enables the coding phase of the development system. It involves the final coding that design in the designing and development phase and tests the functionality in the testing phase. After completion of this phase, the number of the product working is enhanced and upgraded up to the final system product

When we use the Incremental Model?


  • When the requirements are superior.
  • A project has a lengthy development schedule.
  • When Software team are not very well skilled or trained.
  • When the customer demands a quick release of the product.
  • You can develop prioritized requirements first.


Advantage of Incremental Model


  • Errors are easy to be recognized.
  • Easier to test and debug
  • More flexible.
  • Simple to manage risk because it handled during its iteration.
  • The Client gets important functionality early.


Disadvantage of Incremental Model


  • Need for good planning
  • Total Cost is high.
  • Well defined module interfaces are needed.



Spiral Model The spiral model, initially proposed by Boehm, is an evolutionary software process model that couples the iterative feature of ...



Spiral Model

The spiral model, initially proposed by Boehm, is an evolutionary software process model that couples the iterative feature of prototyping with the controlled and systematic aspects of the linear sequential model. It implements the potential for rapid development of new versions of the software. Using the spiral model, the software is developed in a series of incremental releases. During the early iterations, the additional release may be a paper model or prototype. During later iterations, more and more complete versions of the engineered system are produced.


Each cycle in the spiral is divided into four parts:

Objective setting: Each cycle in the spiral starts with the identification of purpose for that cycle, the various alternatives that are possible for achieving the targets, and the constraints that exists.

Risk Assessment and reduction: The next phase in the cycle is to calculate these various alternatives based on the goals and constraints. The focus of evaluation in this stage is located on the risk perception for the project.

Development and validation: The next phase is to develop strategies that resolve uncertainties and risks. This process may include activities such as benchmarking, simulation, and prototyping.

Planning: Finally, the next step is planned. The project is reviewed, and a choice made whether to continue with a further period of the spiral. If it is determined to keep, plans are drawn up for the next step of the project.

The development phase depends on the remaining risks. For example, if performance or user-interface risks are treated more essential than the program development risks, the next phase may be an evolutionary development that includes developing a more detailed prototype for solving the risks.

The risk-driven feature of the spiral model allows it to accommodate any mixture of a specification-oriented, prototype-oriented, simulation-oriented, or another type of approach. An essential element of the model is that each period of the spiral is completed by a review that includes all the products developed during that cycle, including plans for the next cycle. The spiral model works for development as well as enhancement projects.

When to use Spiral Model?


  • When deliverance is required to be frequent.
  • When the project is large
  • When requirements are unclear and complex
  • When changes may require at any time
  • Large and high budget projects


Advantages


  • High amount of risk analysis
  • Useful for large and mission-critical projects.


Disadvantages


  • Can be a costly model to use.
  • Risk analysis needed highly particular expertise
  • Doesn't work well for smaller projects.




RAD (Rapid Application Development) Model RAD is a linear sequential software development process model that emphasizes a concise developmen...


RAD (Rapid Application Development) Model

RAD is a linear sequential software development process model that emphasizes a concise development cycle using an element based construction approach. If the requirements are well understood and described, and the project scope is a constraint, the RAD process enables a development team to create a fully functional system within a concise time period.

RAD (Rapid Application Development) is a concept that products can be developed faster and of higher quality through:


  • Gathering requirements using workshops or focus groups
  • Prototyping and early, reiterative user testing of designs
  • The re-use of software components
  • A rigidly paced schedule that refers design improvements to the next product version
  • Less formality in reviews and other team communication


The various phases of RAD are as follows:

1.Business Modelling: The information flow among business functions is defined by answering questions like what data drives the business process, what data is generated, who generates it, where does the information go, who process it and so on.

2. Data Modelling: The data collected from business modeling is refined into a set of data objects (entities) that are needed to support the business. The attributes (character of each entity) are identified, and the relation between these data objects (entities) is defined.

3. Process Modelling: The information object defined in the data modeling phase are transformed to achieve the data flow necessary to implement a business function. Processing descriptions are created for adding, modifying, deleting, or retrieving a data object.

4. Application Generation: Automated tools are used to facilitate construction of the software; even they use the 4th GL techniques.

5. Testing & Turnover: Many of the programming components have already been tested since RAD emphasis reuse. This reduces the overall testing time. But the new part must be tested, and all interfaces must be fully exercised.

When to use RAD Model?


  • When the system should need to create the project that modularizes in a short span time (2-3 months).
  • When the requirements are well-known.
  • When the technical risk is limited.
  • When there's a necessity to make a system, which modularized in 2-3 months of period.
  • It should be used only if the budget allows the use of automatic code generating tools.


Advantage of RAD Model


  • This model is flexible for change.
  • In this model, changes are adoptable.
  • Each phase in RAD brings highest priority functionality to the customer.
  • It reduced development time.
  • It increases the reusability of features.


Disadvantage of RAD Model


  • It required highly skilled designers.
  • All application is not compatible with RAD.
  • For smaller projects, we cannot use the RAD model.
  • On the high technical risk, it's not suitable.
  • Required user involvement.




Waterfall model Winston Royce introduced the Waterfall Model in 1970.This model has five phases: Requirements analysis and specification, de...


Waterfall model

Winston Royce introduced the Waterfall Model in 1970.This model has five phases: Requirements analysis and specification, design, implementation, and unit testing, integration and system testing, and operation and maintenance. The steps always follow in this order and do not overlap. The developer must complete every phase before the next phase begins. This model is named "Waterfall Model", because its diagrammatic representation resembles a cascade of waterfalls.



1. Requirements analysis and specification phase: The aim of this phase is to understand the exact requirements of the customer and to document them properly. Both the customer and the software developer work together so as to document all the functions, performance, and interfacing requirement of the software. It describes the "what" of the system to be produced and not "how."In this phase, a large document called Software Requirement Specification (SRS) document is created which contained a detailed description of what the system will do in the common language.

2. Design Phase: This phase aims to transform the requirements gathered in the SRS into a suitable form which permits further coding in a programming language. It defines the overall software architecture together with high level and detailed design. All this work is documented as a Software Design Document (SDD).

3. Implementation and unit testing: During this phase, design is implemented. If the SDD is complete, the implementation or coding phase proceeds smoothly, because all the information needed by software developers is contained in the SDD.

During testing, the code is thoroughly examined and modified. Small modules are tested in isolation initially. After that these modules are tested by writing some overhead code to check the interaction between these modules and the flow of intermediate output.

4. Integration and System Testing: This phase is highly crucial as the quality of the end product is determined by the effectiveness of the testing carried out. The better output will lead to satisfied customers, lower maintenance costs, and accurate results. Unit testing determines the efficiency of individual modules. However, in this phase, the modules are tested for their interactions with each other and with the system.

5. Operation and maintenance phase: Maintenance is the task performed by every user once the software has been delivered to the customer, installed, and operational.

When to use SDLC Waterfall Model?

Some Circumstances where the use of the Waterfall model is most suited are:


  • When the requirements are constant and not changed regularly.
  • A project is short
  • The situation is calm
  • Where the tools and technology used is consistent and is not changing
  • When resources are well prepared and are available to use.


Advantages of Waterfall model


  • This model is simple to implement also the number of resources that are required for it is minimal.
  • The requirements are simple and explicitly declared; they remain unchanged during the entire project development.
  • The start and end points for each phase is fixed, which makes it easy to cover progress.
  • The release date for the complete product, as well as its final cost, can be determined before development.
  • It gives easy to control and clarity for the customer due to a strict reporting system.


Disadvantages of Waterfall model


  • In this model, the risk factor is higher, so this model is not suitable for more significant and complex projects.
  • This model cannot accept the changes in requirements during development.
  • It becomes tough to go back to the phase. For example, if the application has now shifted to the coding phase, and there is a change in requirement, It becomes tough to go back and change it.
  • Since the testing done at a later stage, it does not allow identifying the challenges and risks in the earlier phase, so the risk reduction strategy is difficult to prepare.




Software Requirements The software requirements are description of features and functionalities of the target system. Requirements convey th...



Software Requirements


The software requirements are description of features and functionalities of the target system. Requirements convey the expectations of users from the software product. The requirements can be obvious or hidden, known or unknown, expected or unexpected from client’s point of view.

Requirement Engineering

The process to gather the software requirements from client, analyze and document them is known as requirement engineering.

The goal of requirement engineering is to develop and maintain sophisticated and descriptive ‘System Requirements Specification’ document.

Requirement Engineering Process

It is a four step process, which includes –
  • Feasibility Study
  • Requirement Gathering
  • Software Requirement Specification
  • Software Requirement Validation
Let us see the process briefly -

Feasibility study

When the client approaches the organization for getting the desired product developed, it comes up with rough idea about what all functions the software must perform and which all features are expected from the software.

Referencing to this information, the analysts does a detailed study about whether the desired system and its functionality are feasible to develop.

This feasibility study is focused towards goal of the organization. This study analyzes whether the software product can be practically materialized in terms of implementation, contribution of project to organization, cost constraints and as per values and objectives of the organization. It explores technical aspects of the project and product such as usability, maintainability, productivity and integration ability.

The output of this phase should be a feasibility study report that should contain adequate comments and recommendations for management about whether or not the project should be undertaken.

Requirement Gathering

If the feasibility report is positive towards undertaking the project, next phase starts with gathering requirements from the user. Analysts and engineers communicate with the client and end-users to know their ideas on what the software should provide and which features they want the software to include.

Software Requirement Specification

SRS is a document created by system analyst after the requirements are collected from various stakeholders.

SRS defines how the intended software will interact with hardware, external interfaces, speed of operation, response time of system, portability of software across various platforms, maintainability, speed of recovery after crashing, Security, Quality, Limitations etc.

The requirements received from client are written in natural language. It is the responsibility of system analyst to document the requirements in technical language so that they can be comprehended and useful by the software development team.

SRS should come up with following features:


  • User Requirements are expressed in natural language.
  • Technical requirements are expressed in structured language, which is used inside the organization.
  • Design description should be written in Pseudo code.
  • Format of Forms and GUI screen prints.
  • Conditional and mathematical notations for DFDs etc.


Software Requirement Validation

After requirement specifications are developed, the requirements mentioned in this document are validated. User might ask for illegal, impractical solution or experts may interpret the requirements incorrectly. This results in huge increase in cost if not nipped in the bud. Requirements can be checked against following conditions -


  • If they can be practically implemented
  • If they are valid and as per functionality and domain of software
  • If there are any ambiguities
  • If they are complete
  • If they can be demonstrated


Why Software Engineering is Popular? Here are important reasons behind the popularity of software engineering: Large software – In our real...


Why Software Engineering is Popular?


Here are important reasons behind the popularity of software engineering:




  • Large software – In our real life, it is quite more comfortable to build a wall than a house or building. In the same manner, as the size of the software becomes large, software engineering helps you to build software.
  • Scalability- If the software development process were based on scientific and engineering concepts, it is easier to re-create new software to scale an existing one.
  • Adaptability: Whenever the software process was based on scientific and engineering, it is easy to re-create new software with the help of software engineering.
  • Cost- Hardware industry has shown its skills and huge manufacturing has lower the cost of the computer and electronic hardware.
  • Dynamic Nature- Always growing and adapting nature of the software. It depends on the environment in which the user works.
  • Quality Management: Offers better method of software development to provide quality software products.