Tutorial Lab 2 (Group 3)

MUHAMMAD AZWAN BIN JOHAN                                             (01DIS17F1031)
THEVA KUMARAN A/L RAMAN                                                 (01DIS17F1028)
MUHAMMAD FATHULLAH HADI BIN MOHAMMAD ALI     (01DIS17F1027)
MUHAMMAD AZRUL AZIB BIN FAKHRUL ARIFIN               (01DIS17F1018)
MUHAMMAD SHAZWAN BIN MOHAMED SHAFIEE              (01DIS17F1004)
MUHAMMAD FADTHI BIN MD SUKRI                                      (01DDT17F2013)
ADAM YUSSOF BIN MARZUKI                                                   (01DDT17F2010)
DARRSHANA MURTHY                                                                (01DDT17F2007)

DIVAGARAN A/L SRI SELVAM                                                    (01DDT17F2019)


Waterfall Model

Introduction
-The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed before the next phase can begin and there is no overlapping in the phases.
The Waterfall model is the earliest SDLC approach that was used for software development.
The waterfall Model illustrates the software development process in a linear sequential flow. This means that any phase in the development process begins only if the previous phase is complete. In this waterfall model, the phases do not overlap.

Waterfall Model – Design
-Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure success of the project. In "The Waterfall" approach, the whole process of software development is divided into separate phases. In this Waterfall model, typically, the outcome of one phase acts as the input for the next phase sequentially.




Definition
The sequential phases in Waterfall model are −
•             Requirement Gathering and analysis − All possible requirements of the system to be developed are captured in this phase and documented in a requirement specification document.
•             System Design − The requirement specifications from first phase are studied in this phase and the system design is prepared. This system design helps in specifying hardware and system requirements and helps in defining the overall system architecture.
•             Implementation − With inputs from the system design, the system is first developed in small programs called units, which are integrated in 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. Post integration the entire system is tested for any faults and failures.
•             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 − There are some issues which come up in the client environment. To fix those issues, patches are released. Also to enhance the product some better versions are released. Maintenance is done to deliver these changes in the customer environment.
All these phases are cascaded to each other in which progress is seen as flowing steadily downwards (like a waterfall) through the phases. The next phase is started only after the defined set of goals are achieved for previous phase and it is signed off, so the name "Waterfall Model". In this model, phases do not overlap.


Advantages and disadvantages
Advantages
•             Simple and easy to understand and use
•             Easy to manage due to the rigidity of the model. Each phase has specific deliverables and a review process.
•             Phases are processed and completed one at a time.
•             Works well for smaller projects where requirements are very well understood.
•             Clearly defined stages.
•             Well understood milestones.
Disadvantages
•             No working software is produced until late during the life cycle.
•             High amounts of risk and uncertainty.
•             Not a good model for complex and object-oriented projects.
•             Poor model for long and ongoing projects.
•             Not suitable for the projects where requirements are at a moderate to high risk of changing. So, risk and uncertainty is high with this process model.

•             It is difficult to measure progress within stages.


_
Iterative model




·        Iterative model is vital part of SDLC, as it breaks down the development process of a large software application into smaller pieces.
·        It starts with a simple implementation of a small set of the software
Requirements, which iteratively enhances the evolving versions until the complete system is implemented and ready to de deployed.
·        Each release of the model is developed in a fixed time period and is called iteration

When to use iterative model
·        The requirements of the system and defined and understood clearly.
·        There are some high-risk features and goals, which might change the future

Iterative process





·        Planning Phase: This is the first stage of the iterative model, where proper planning is done by the team, which helps them in mapping out the specifications documents, establish software or hardware requirements and generally prepare for the upcoming stages of the cycle.
·        Analysis and Design Phase: Once the planning is complete for the cycle, an analysis is performed to point out the appropriate business logic, database models and to know any other requirements of this particular stage. Moreover, the design stage also occurs in this phase of iterative model, where the technical requirements are established that will be utilized in order to meet the need of analysis stage.
·        Implementation Phase: This is the third and the most important phase of the iterative model. Here, the actual implementation and coding process is executed. All planning, specification, and design documents up to this point are coded and implemented into this initial iteration of the project.
·        Testing Phase: After the current build iteration is coded and implemented, testing is initiated in the cycle to identify and locate any potential bugs or issues that may have been in the software.
·        Evaluation Phase: The final phase of the Iterative life cycle is the evaluation phase, where the entire team along with the client, examine the status of the project and validate whether it is as per the suggested requirements.

Advantage of Iterative model
•          It is easily adaptable to the ever changing needs of the project as well as the client.
•          It is best suited for agile organisations.
•          It is more cost effective to change the scope or requirements in Iterative model.
•          Parallel development can be planned.
•          Testing and debugging during smaller iteration is easy.
•          Risks are identified and resolved during iteration; and each iteration is an easily managed.
Disadvantage of Iterative model
•          More resources may be required.
•          Although cost of change is lesser, but it is not very suitable for changing requirements.
•          More management attention is required.
•          It is not suitable for smaller projects.
•          Highly skilled resources are required for skill analysis.
•          Project progress is highly dependent upon the risk analysis phase.
•          Defining increments may require definition of the complete system.



AGILE MODEL

Agile model is a combination of iterative and incremental process models with focus on process adaptability and customer satisfaction by rapid delivery of working software product. Agile Methods break the product into small incremental builds. These builds are provided in iterations. Each iteration typically lasts from about one to three weeks. Every iteration involves cross functional teams working simultaneously on various areas like −
  • Planning
  • Requirements Analysis
  • Design
  • Coding
  • Unit Testing and
  • Acceptance Testing.
At the end of the iteration, a working product is displayed to the customer and important stakeholders.

What is AGILE?
Agile model believes that every project needs to be handled differently and the existing methods need to be tailored to best suit the project requirements. In Agile, the tasks are divided to time boxes (small time frames) to deliver specific features for a release.
Iterative approach is taken and working software build is delivered after each iteration. Each build is incremental in terms of features; the final build holds all the features required by the customer.


1.1  Graphical Illustration of Agile Model

Agile principle
·        Individuals and interactions − In Agile development, self-organization and motivation are important, as are interactions like co-location and pair programming.
·        Working software − Demo working software is considered the best means of communication with the customers to understand their requirements, instead of just depending on documentation.
·        Customer collaboration − As the requirements cannot be gathered completely in the beginning of the project due to various factors, continuous customer interaction is very important to get proper product requirements.
·        Responding to change − Agile Development is focused on quick responses to change and continuous development.

Agile VS Traditional Model
Agile is based on the adaptive software development methods, whereas the traditional SDLC models like the waterfall model is based on a predictive approach. Predictive teams in the traditional SDLC models usually work with detailed planning and have a complete forecast of the exact tasks and features to be delivered in the next few months or during the product life cycle.




Pros and Cons

Pros :-
·        Is a very realistic approach to software development.
·        Promotes teamwork and cross training.
·        Functionality can be developed rapidly and demonstrated.
·        Resource requirements are minimum.
·        Suitable for fixed or changing requirements
Cons :-
·        Not suitable for handling complex dependencies.
·        More risk of sustainability, maintainability and extensibility.
·        An overall plan, an agile leader and agile PM practice is a must without which it will not work.

Agile Methodology
1.Scrum
SCRUM is an agile development method which concentrates specifically on how to manage tasks within a team-based development environment. Basically, Scrum is derived from activity that occurs during a rugby match. Scrum believes in empowering the development team and advocates working in small teams (say- 7 to 9 members).

2.Crystal Methodologies

Crystal Methodology is based on three concepts
  1. Chartering: Various activities involved in this phase are creating a development team, performing a preliminary feasibility analysis, developing an initial plan and fine-tuning the development methodology
  2. Cyclic delivery: The main development phase consists of two or more delivery cycles, during which the
    1. Team updates and refines the release plan
    2. Implements a subset of the requirements through one or more program test integrate iterations
    3. Integrated product is delivered to real users
    4. Review of the project plan and adopted development methodology
  3. Wrap Up: The activities performed in this phase are deployment into the user environment, post- deployment reviews and reflections are performed.

3.Dynamic Software Development Method (DSDM)

DSDM is a Rapid Application Development (RAD) approach to software development and provides an agile project delivery framework. The important aspect of DSDM is that the users are required to be involved actively, and the teams are given the power to make decisions. Frequent delivery of product becomes the active focus with DSDM.
The techniques used in DSDM:
  1. Time Boxing
  2. MoSCoW Rules
  3. Prototyping
The DSDM project consists of 7 phases
  1. Pre-project
  2. Feasibility Study
  3. Business Study
  4. Functional Model Iteration
  5. Design and build Iteration
  6. Implementation
  7. Post-project

4.Feature Driven Development (FDD)
This method is focused around "designing & building" features. Unlike other agile methods, FDD describes very specific and short phases of work that has to be accomplished separately per feature. It includes domain walkthrough, design inspection, promote to build, code inspection and design. FDD develops product keeping following things in the target
  1. Domain object Modeling
  2. Development by feature
  3. Component/ Class Ownership
  4. Feature Teams
  5. Inspections
  6. Configuration Management
  7. Regular Builds
  8. Visibility of progress and results

5.Lean Software Development
Lean software development method is based on the principle "Just in time production". It aims at increasing speed of software development and decreasing cost. Lean development can be summarized in seven steps.
  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

6.eXtreme Programming (XP)

Extreme Programming technique is very helpful when there is constantly changing demands or requirements from the customers or when they are not sure about the functionality of the system. It advocates frequent "releases" of the product in short development cycles, which inherently improves the productivity of the system and also introduces a checkpoint where any customer requirements can be easily implemented. The XP develops software keeping customer in the target.



REUSE-ORIENTED MODEL


The system assembled from existing components. May be plan driven or agile.
The reuse-oriented model can reduce the overall cost of software development compared with more tedious manual methods.
It can also save time because each phase of the process builds on the previous phase which has already been refined. When carefully carried out, ROD can minimize the likelihood of errors or bugs making their way into the final product.
The reuse-oriented model is not always practical in its pure form because a full repertoire of reusable components may not be available. In such instances, some new program components must be designed. If not thoughtfully done, ROD can lead to compromises in perceived requirements, resulting in a product that does not fully meet the needs of its intended users.
Process stages
·        Component analysis;
·        Requirements modification;
·        System design with reuse;
·        Development and integration.


Example
-         Reuse-oriented model used in game development
o   Assets of games are often reused to save development time and cost so that they can focus their time on more important tasks.


Advantages:
-         Reduces considerably the software to be developed “in-house”
-         Allows faster delivery
-         In principle, more reliable systems, due to using previously tested components

Disadvantages:
-         Compromises in requirements are needed
-         Less control over the system’s evolution
-         Applicability:
-         When there is a pool of existing components that could satisfy the requirements of the new product




Comments

Popular posts from this blog

Reuse-oriented Model (Group 1)

Group 1 - Post 2 Iterative Model