Unit 01 (B)
Unit 01 (B)
Software Engineering(CE4013)
Agility
• Agility is ability to move quickly and easily.
Organizing
a team Effective
so that it is communication
in control among all
to perform stakeholders
the work
What is Agility?
Software Development Team
Rapid and Incremental delivery of software
Customer
Drawing the
customer onto
the team
Eliminate the
“us and them”
attitude
• The customer becomes active in the development process, ensuring that their needs are met continuously
rather than only at the end.
"Not Like This...":
• The top right of the image represents a traditional, linear approach (like in the Waterfall model)
where each component is developed sequentially (e.g., wheels, axle, body) but cannot function or
provide value until the entire product is complete.
• Here, the customer is unhappy at each stage until the final product is delivered, as they have
received nothing usable throughout the process.
"Like This!":
• The bottom right of the image represents an iterative and incremental approach where each stage
delivers a functional product that adds value, even if it's not the final product.
• For instance:
• Step 1: A skateboard (basic, but usable)
• Step 2: A scooter (improved, still usable)
• Step 3: A bicycle (more advanced, still usable)
• Step 4: A motorcycle (even better, still usable)
• Step 5: A car (final product)
• The customer is happier at each stage because they receive a usable product early on, and it
continuously improves.
Methodology
Conventional Software Methodology
• As the software project makes the progress, the cost of the changes increases
non linearly.
• It is easy to accommodate changes during the requirement gathering stage.
At this stage to accommodate the changes –usage scenarios are modified,
list of function can be executed, or written specification be edited.
• As the progresses and if the customer suggest the changes during the testing
phase of the SDLC then to accommodate these changes, the architectural
design needs to be modified and ultimately these changes will affect other
phase of software development cycle. These changes are actually costly to
execute.
Methodology
Agile Software Methodology
• The agile method claim that if the software development is carried out using
the agile approach then it will allow the software team to accommodate
changes late in a software project without dramatic cost and time impact.
• In other words, if the incremental delivery is combined with agile practices
such as continuous unit testing and pair programming then the cost of
changes can be controlled.
Agile Process
• Agile processes are the light weight methods are people-based rather than
plan-based method.
• The agile process forces the development team to focus on software itself
rather than design and documentation.
• It is Iterative method.
• Agile software process addresses few assumptions
1. Planning
2. Design
3. Coding
4. Testing
The XP Process
Planning User Stories
• Customers assigns value (priority)
• The potential problems are discussed and solved in the meeting with help of master.
• Responsible for project management.
3. Scrum Team
Development Activities
Backlog
• It is a prioritized list of project requirements or features that must be provided to
the customer.
• The items can be included in the backlog at any time.
• The product manager analyses this list and updates the priorities as per the
requirements.
Sprint
• These are the work units that are needed to achieve the requirements mentioned
in the backlogs.
• Typically the sprints have fixed duration or time box (of 2 to 4 weeks, 30 days).
• Scrum meeting helps the team to uncover potential problems as early as possible
• The functional and informational requirements are identified and then the business
value of the application is determined
✔ Functional model iteration
• The incremental approach is adopted for development
1. Speculation
2. Collaboration
3. Learning
Speculation (ASD)
• The adaptive cycle planning is conducted.
• In this cycle planning mainly three types of information is used
✔ Customer’s mission statement
✔ Project constraints
• Delivery date, budgets, user description etc…
✔ Basic requirements of the project
Collaboration (ASD)
• In this, collaboration among the members of development team is a
key factor.
• For successful collaboration and coordination it is necessary to
have following qualities in every individual
✔ Assist each other without resentment (offense)
✔ Work hard
✔ Postmortems
• Team analyses its own performance and makes appropriate
Feature Driven Development (FDD)
Feature Driven Development (FDD)
• It is practical process model for object oriented software
engineering.
• Suggested by Peter Coad.
• In FDD, the feature means client valued function.
• It is iterative and incremental software development process.
Feature Driven Development (FDD)
Various phases in the FDD life cycle
• Develop overall model
• The high-level walkthrough of scope and detailed domain
walkthrough are conducted to create overall models.
• Later on peer reviews and discussion are carried out on these
walkthroughs and domain area models are created . These domain
area models are then merged into the overall models.
• Design by feature
• For each feature the sequence diagram is created
• Build by feature
• Finally the class owner develop the actual code for their classes
Crystal
• The primary goal of this method is to deliver useful and working
software.
• In this model, a set of methodologies are defined which contains
the core elements that are common to all.
• According to its founder, Alistair Cockburn, “Crystal is a family of
software development methodologies, which works with the power
invested by people, and is extremely light and stretch-to-fit”.
• Basically,Cockburn believes that the talent and the way team
members interact brings benefits for the whole project.
Crystal
• This is a family of Agile methodologies which includes variants
such as Crystal Clear (up to an 8-person team), Crystal Yellow (up
to a 10 to 20-person team), Crystal Orange (up to a 20 to 50-person
team) and Crystal Red (for big teams with 50 to 1000 people).
• Crystal focuses on principles such as People, Interactions,
Community, Skills, Talent and Communication, aiming to deliver
the best possible software development process.
Crystal
Advantages:
• it ensures frequent deliveries, in order to identify eventual
problems in every stage.
• There is always space to improve characteristics, taking some time
from software development and allowing for a discussion about
how to perfect processes.
• Allows for a closer communication and promotes interaction and
sharing of knowledge between team members.
Crystal
Disadvantages:
• The fact that there are variants in the methodology family means
that the principles might vary with the size of the team and the size
of the project, resulting in projects that might not be so
straightforward.
Agile Process Model
Agile Process Model
• Ability to move quickly and respond to changes.
• Agile SDLC 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.
• Every iteration involves cross functional teams working
simultaneously on various areas like planning, requirements
analysis, design, coding, unit testing, and acceptance testing.
Agile Process Model
• Advantages
• Customer satisfaction by rapid, continuous delivery of useful
software.
• Customers, developers and testers constantly interact with each
other.
• Daily cooperation between business people and developers.
• Continuous attention to technical excellence (quality) and good
design.
Agile Process Model
• Disadvantages
• In case of some software, it is difficult to estimate the effort
required at the beginning of the software development life cycle.
• The project can easily get “off track” if the customer representative
is not clear about final outcome, that they want.
• Only senior programmers are capable of taking the kind of
decisions required during the development process.
The Unique nature of WebApps
• Network intensiveness –
• A WebApp resides on a network and must serve the needs of a diverse
community of clients.
• The network may enable worldwide access and communication (i.e., the
Internet) or more limited access and communication (e.g., a corporate
Intranet)
• Concurrency
• A large number of users may access the WebApp at one time.
• In many cases, the patterns of usage among end users will vary greatly
The Unique nature of WebApps
• Performance
• If a WebApp user must wait too long (for access, for serverside processing,
for client-side formatting and display), he or she may decide to go elsewhere
• Availability
• Although expectation of 100 percent availability is unreasonable, users of
popular WebApps often demand access on a 24/7/365 basis.
• Users in Australia or Asia might demand access during times when
traditional domestic software applications in North America might be taken
off-line for maintenance.
The Unique nature of WebApps
•Data driven
• The primary function of many WebApps is to use hypermedia to present text,
graphics, audio, and video content to the end user.
• WebApps are commonly used to access information that exists on databases
that are not an integral part of the Web-based environment (e.g.,e-commerce or
financial applications).
• Content sensitive
• The quality and aesthetic nature of content remains an important determinant of
the quality of a WebApp.
• Continuous evolution
The Unique nature of WebApps
• Immediacy
• Although immediacy—the compelling need to get software to market
quickly—is a characteristic of many application domains, WebApps often
exhibit a time- to-market that can be a matter of a few days or weeks.
• Security
• Because WebApps are available via network access, it is difficult, if not
impossible, to limit the population of end users who may access the application.
In order to protect sensitive content and provide secure modes
• Aesthetics
• An undeniable part of the appeal of a WebApp is its look and feel. When an
Thank you