Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
0 INTRODUCTION
Software engineering referring to systematic procedure that is used in the context of a
generally accepted set of goals for the analysis, design, implementation, testing and
maintenance of software. The software that have been produced should be efficient,
usable, reliable, modifiable, portable, testable, reusable, interoperable and maintainable.
Software engineering cannot be avoided from the field of software development. The
development of computers introduced the need for software and the quality of software
introduced the need for software engineering. There are many different activities that are
typically part of systematic process of software engineering. The activities can occur in a
rigid sequence, with each activity completed before the next one begins, or several of the
activities can occur simultaneously. The timing of these activities and the choice between
iterative and noniterative methods are often described by what are known as software
development models.
1.1 Overview of Software Development Life Cycle
The software development life cycle or SDLC is used to facilitate the development of
a large software product in a systematic, well defined and cost effective way. An
information system goes through a series of phases from conception to
implementation. Various reasons for using a life cycle model include:
Helps to understand the entire process
Enforces a structured approach to development
Enables planning of resources in advance
Enables subsequent controls of them
Aids management to track progress of the system
The SDLC consists of several phases and need to be identified along with defining the
entry and exit criteria for every phase. A phase can begin only when the
corresponding phase entry criteria are satisfied. It becomes very difficult to track the
progress of the project, if there is no clear indication of the entry and exit for every
phase. The SDLC can be divided into 5-9 phases as in Figure 1.0. On average it has
seven or eight phases. These are:
Project initiation and planning/Recognition of need/Preliminary investigation
The first stage of any project or SDLC is called the preliminary investigation.
This investigation provides the organization’s steering committee and any
project team a set of terms or references for more detailed work.
Feasibility study
To investigates the information needs and determines the resource
requirements, costs, benefits, and feasibility of a proposed project. The goal is
to evaluate alternative systems and to propose the most feasible and desirable
systems for development.
Project Analysis
A detailed study of the various operations performed by a system and their
relationships within and outside the system.
System Design
System design is the most creative and challenging phase of the SDLC. The
term design describes the final system and process by which it is developed.
Coding
To translate the design of the system into code in a given programming
language. In this phase the aim is to implement the design in the best possible
manner.
Testing
Its basic function is to detect errors in the software. The goal of testing is to
uncover requirement, design, and coding errors in the program.
Implementation
It is mainly concerned with user training, site selection, and preparation and
file conversion. Once the system has been designed, it is ready for
implementation.
Maintenance
Maintenance is an important part of the SDLC. If there is any error to correct
or change then it is done in the maintenance phase. Many times maintenance
may consume more time than the time consumed in the development.
Figure 1.0 Software Development Life Cycle
Base on the phase above, there are many models of SDLC as below:
Classical waterfall model
Rapid prototyping model
Spiral model
Market-driven model
Open source development model
Agile development model
And the purpose of this assignment is to discuss more on agile methodology as part of
software engineering.
2.0 Description of Agile
2.1 Definition
Agile is a software development methodology to build a software incrementally
using short iterations is to align with the changing business needs, customer focused
and encourage customer guidance and participation. Agile methodologies is a
software development method that is:
Flexible - Ready to adapt to expected change at any time.
Speedy - Rapid and iterative development of the product in small releases.
Lean - Focuses on shortening timeframe and cost and on improved quality
Responsive - Reacts to expected or unexpected changes.
Learning - Focuses on improvement during and after product
development.
It is based on iterative and incremental development, where requirements and
solutions evolve through collaboration between self-organizing, cross-functional
teams. It will lead to adaptive planning, evolutionary development and delivery, a
time-boxed iterative approach, and encourages rapid and flexible response to
change. Agile methodology process framework that adopts the iterative approach,
open collaboration, and process adaptability throughout the life cycle of the
project. This iterative agile approach is more flexible and its short time-span
iterations seek improvement for the project in small release, with minimal
planning, rather than plan at length. This helps to minimize the overall risk, and
allows the project to adapt to changes more quickly. Agile development process
follows a different development sequence
2.2 Manifesto
The agile manifesto purpose are:
"We are uncovering better ways of developing software by doing it and helping
others do it. We value:
Individuals and interactions over processes and tools.
- Valuing people are more highly than processes and it is easy to understand
because the people who respond to business needs and drive the
development process. If the process or the tools drive development, the team
is less responsive to change and less likely to meet customer needs. The
example of this value is communication that is fluid and happens when need
arises.
Working software over comprehensive documentation.
- Agile does not eliminate documentation, but it values working software
more. Agile documents requirements as user stories, which are sufficient for
a software developer to begin the task of building a new function.
Customer collaboration over contract negotiation.
- This manifesto describes a customer who is engaged and collaborates
throughout the development process, making. Agile methods may include
the customer at intervals for periodic demos, but a project could just as
easily have an end-user as a daily part of the team and attending all
meetings, ensuring the product meets the business needs of the customer.
Responding to change over following a plan.”
- With Agile, the shortness of an iteration means priorities can be shifted from
iteration to iteration and new features can be added into the next iteration.
Agile’s view is that changes always improve a project; changes provide
additional value.
2.3 Principles
There are twelve principles of agile development as describe below:
Highest priority is to satisfy the customer through early and continuous
delivery of valuable software.
- Customers are happier when they receive working software at regular
intervals, rather than waiting extended periods of time between releases.
Accommodate changing requirements throughout the development process.
- The ability to avoid delays when a requirement or feature request changes.
Frequent delivery of working software.
- Scrum accommodates this principle since the team operates in software
sprints or iterations that ensure regular delivery of working software.
Collaboration between the business stakeholders and developers throughout the
project.
- Better decisions are made when the business and technical team are
aligned.
Support, trust, and motivate the people involved.
- Motivated teams are more likely to deliver their best work than unhappy
teams.
Enable face-to-face interactions
- Communication is more successful when development teams are co-
located.
Working software is the primary measure of progress
- Delivering functional software to the customer is the ultimate factor that
measures progress.
Agile processes to support a consistent development pace
- Teams establish a repeatable and maintainable speed at which they can
deliver working software, and they repeat it with each release.
Attention to technical detail and design enhances agility
- The right skills and good design ensures the team can maintain the pace,
constantly improve the product, and sustain change.
Simplicity
- Develop just enough to get the job done for right now.
Self-organizing teams encourage great architectures, requirements, and designs
- Skilled and motivated team members who have decision-making power,
take ownership, communicate regularly with other team members, and
share ideas that deliver quality products.
Regular reflections on how to become more effective
- Self-improvement, process improvement, advancing skills, and techniques
help team members work more efficiently.
3.0 Description of Type of Agile
3.1 Type of Agile & Explanation
3.1.1 Extreme Programming (XP)
- Focus on customer satisfaction.
- Requires maximum customer interaction to develop the software.
- It divides the entire software development life cycle into several
number of short development cycles which inherently improves the
productivity of the system and also introduces a checkpoint where any
customer requirements can be easily implemented.
- Very helpful when there is constantly changing requirements from the
customers or when they are not sure about the functionality of the
system.
- Business requirements are gathered in terms of stories.
- There are 5 phases in this method (Exploration, Planning, Iterations to
Release, Productionizing, and Maintenance & Closure).
3.1.2 Scrum
- Refers to adaptive, quick, self-organizing product development
process.
- ‘Scrum’ derives from a strategy in the game of rugby – “getting an out-
of play ball back into the game” with team work.
- An empirical approach applying the ideas of industrial process control
theory to systems development, resulting that reintroduces the ideas of
flexibility, adaptability and productivity.
- No specific software development techniques for the implementation
of a software.
- Concentrates on the team members should function to produce the
system flexibly in a constantly changing environment.
3.1.3 Feature Driven Development (FDD)
- Focused on designing & building phases.
- Designed to work with other activities of software development project
and does not require process model to be used.
- Emphases quality aspects throughout the process, includes frequent
and tangible deliveries along with accurate monitoring of the progress
of the project.
- Consists five sequential processes and provide the methods, techniques
and guidelines needed by the project stakeholders.
- Include the roles, artifacts, goals and timelines needed in a project.
3.1.4 The Rational Unified Process
- Developed at Rational Corporation to complement UML (an industry-
standard software modelling method.
- An iterative approach for object-oriented systems and embraces use
cases for modelling requirements and building the foundation for a
system.
- It does not implicitly rule out other methods, although the proposed
modelling method, UML, is particularly suited for OO development.
- Consists four phases (Inception, Elaboration, Construction and
Transition)
3.1.5 Dynamic Software Development Method (DSDM)
- Approach to software development and provides an agile project
delivery framework.
- Users are involved actively and the teams are given the power to make
decisions.
- Non-profit and non-proprietary framework for Rapid Application
Development (RAD) and maintained by the DSDM Consortium.
- Focus on fix time, resource and adjust the amount of functionality
accordingly.
4.0 Comparison Between Each Type of Agile
4.1 Extreme Programming (XP)
4.1.1 Process
4.2 Scrum
4.2.1 Process
4.3 FDD
4.3.1 Process
3. Plan by Feature
The feature sets are sequenced according to their priority and dependencies and assigned to Chief
Programmers.
The classes identified in the “developing of an overall model” process are assigned to individual developers.
4. Design by Feature & Build by Feature
A small group of features is selected from the feature sets and feature teams needed for developing the
selected features are formed by the class owners.
There can be multiple feature teams concurrently designing and building their own set of features.
This iterative process includes such tasks as design inspection, coding, unit testing, integration and code
inspection.
4.3.2 Roles & 1. Project Manager
Responsibilitie
Administrative and financial leader of the project.
s
Protect the project team from outside distractions.
2. Chief Architect
3. Development Manager
Leads daily development activities and solves any conflicts that may occur within the team.
4. Chief Programmers
Responsible for leading small teams in the analysis, design and development of new features.
5. Class Owner
Responsible for the development of the class he has been assigned to be the owner for.
6. Domain Expert
To possess the knowledge of how the different requirements for the system under development should
perform.
4.3.3 Practices 1. Domain Object Modeling
Exploration and explanation of the domain of the problem. Results in a framework where the features are
added.
2. Developing by Feature
Developing and tracking the progress through a list of small functionally decomposed and client-valued
functions.
3. Individual Class (Code) Ownership
Each class has a single person nominated to be the one responsible for the consistency, performance and
conceptual integrity of the class.
4. Feature Teams
Refers to small, dynamically formed teams
5. Inspection
Refers to the use of the best-known defect-detection mechanisms.
6. Regular Builds
Refers to ensuring that there is always a running, demonstrable system available. Regular builds form the
baseline to which new features are added.
7. Configuration Management
Enables the identification and historical tracking of the latest versions of each completed source code
file.
8. Progress reporting
Progress is reported based on complete work to all necessary organizational levels.
4.3.4 Scope Worthy of serious consideration by any software development organization that needs to deliver quality,
business-critical software systems on time.
4.4 RUP
4.4.1 Process
4. Transition
Consists of beta testing, piloting, training the users and maintainers of the system, and rolling the product
out to marketing, distribution, and sales teams.
User documentation also produced.
4.4.2 Roles & 1. Business Process Analyst
Responsibilitie Leads and coordinates the defining of the business use cases.
s Defines the business object model.
2. Business Designer
Identifies and documents the roles and entities within the organization.
3. Business Model Reviewer
Reviews all of the artifacts produced by the Business-Process Analyst and the Business Designer.
4. Course Developer
Produces course material (tutorials, slides) for the end users.
5. Toolsmith
Develops in-house tools to support development, to enhance automation for tedious, repeating tasks, and
to improve the integration between tools.
4.4.3 Practices 1. Develop Software Iteratively
Software is developed in small increments and short iterations
2. Manage Requirements
A disciplined approach for managing requirements is required, where the requirements can be prioritized,
filtered and traced.
3. Use Component-based Architectures
Building reusable components can potentially save a substantial amount of future development effort.
4. Visually Model Software
Using UML among the development team, system architecture and design can be captured
unambiguously.
5. Verify Software Quality
By testing during every iteration, defects can be identified earlier on in the development cycle.
6. Control Changes to Software
Any changes to requirements must be managed, and their effect on software must be traceable.
4.4.4 Scope The complete RUP, lists over a hundred use cases to be produced in the various process stages, necessitating
rigorous screening, through which only the essential ones are adopted.
4.5 DSDM
4.5.1 Process
4.5.2 Roles &
Responsibilitie
s
4.5.3 Practices
4.5.4 Scope
4.2 Agile Benefits To Software Project
5 Conclusion
References