Anda di halaman 1dari 11

Abstract : death, both for the organization and for potential

users of the software. Software engineering is the


Software engineering researchers solve problems
term used to describe software development that
of several different kinds. To do so, they produce follows these principles.
several different kinds of results, and they should
develop appropriate evidence to validate these Specifically, the term software engineering refers
results. They often report their research in to a systematic procedure that is used in the
conference papers.This document presents the context of a generally accepted set of goals :
research paradigms of the papers, common Efficiency—The software is produced in the
concerns of the program committee, and expected time and within the limits of the
statistics on success rates. This information available resources. The software that is
should help researchers design better research produced runs within the time expected for
projects and write papers that present their various computations to be completed.
results to best advantage.
Reliability—The software performs as expected.
KEYWORDS : research design, research In multiuser systems, the system performs its
paradigms, validation, software profession, functions even with other load on the system.
technical writing , Efficient tools of SDLC, creating
valuable project , different models for variety of Usability—The software can be used properly.
standard projects. This generally refers to the ease of use of the user
interface but also concerns the applicability of
the software to both the computer’s operating
INTRODUCTION: system and utility functions and the application
environment.
The application of a systematic, disciplined,
quantifiable approach to the development, Modifiability—The software can be easily
operation and maintenance of software; that is, changed if the requirements of the system
the application of engineering to software. change.
Software engineering is the establishment and Portability—The software system can be ported
use of sound engineering principles in order to to other computers or systems without major
obtain economically software that is reliable and rewriting of the software. Software that needs
work efficiently on real machines.Software only to be recompiled in order to have a properly
engineers rely on certain models to create a working system on the new machine is
successful project. By using techniques of SDLC, considered to be very portable.
project that is created is efficient and more
Testability—The software can be easily tested.
valuable.
This generally means that the software is written
in a modular manner.

GOALS OF SOFTWARE ENGINEERING Reusability—Some or all of the software can be


used again in other projects. This means that the
Clearly organizations involved with producing
software is modular, that each individual
software have a strong interest in making sure
software module has a well-defined interface,
that the software is developed according to
and that each individual module has a clearly
accepted industry practice, with good quality
defined outcome from its execution. This often
control, adherence to standards, and in an
means that there is a substantial level of
efficient and timely manner. For some
abstraction and generality in the modules that
organizations, it is literally a matter of life and
will be reused most often.
Maintainability—The software can be easily the other phases are carried out as per this
understood and changed over time if problems solution strategy.
occur. This term is often used to describe the
lifetime of long-lived systems such as the air 2. Requirements analysis and specification:
traffic control system that must operate for The aim of the requirement analysis and
decades. specification phase is to understand the
exact requirements of the customer and
Interoperability—The software system can
document them properly. This phase
interact properly with other systems. This can
consists of two different activities.
apply to software on a single, stand-alone
computer or to software that is used on a
 Requirement gathering and analysis:
network.
Firstly all the requirements regarding
Correctness—The program produces the correct the software are gathered from the
output. customer and then the gathered
requirements are analyzed. The goal
of the analysis part is to remove
TYPICAL SOFTWARE ENGINEERING TASKS incompleteness (an incomplete
requirement is one in which some
There are several tasks that are part of every
parts of the actual requirements have
software engineering project:
been omitted) and inconsistencies
 Analysis of the problem (inconsistent requirement is one in
 Determination of requirements which some part of the requirement
 Design of the software contradicts with some other part).
 Coding of the software solution
 Testing and integration of the code  Requirement specification:
 Installation and delivery of the software These analyzed requirements are
 Documentation documented in a software
 Maintenance requirement specification (SRS)
 Quality assurance document. SRS document serves as a
contract between development team
 Training
and customers. Any future dispute
 Resource estimation
between the customers and the
 Project management
developers can be settled by
The major tasks are examining the SRS document.
1. Feasibility Study:
The main goal of this phase is to determine
whether it would be financially and
3. Design:
technically feasible to develop the software.
The aim of the design phase is to transform
The feasibility study involves understanding
the requirements specified in the SRS
the problem and then determine the various
document into a structure that is suitable
possible strategies to solve the problem.
for implementation in some programming
These different identified solutions are
language.
analyzed based on their benefits and
drawbacks, The best solution is chosen and all
4. Coding and Unit testing:
In coding phase software design is discovered during the product
translated into source code using any development phase.
suitable programming language. Thus each
designed module is coded. The aim of the  Perfective Maintenance:
unit testing phase is to check whether each This type of maintenance is carried
module is working properly or not. out to enhance the functionalities of
the system based on the customer’s
5. Integration and System testing: Integration request.
of different modules are undertaken soon
after they have been coded and unit tested.  Adaptive Maintenance:
Integration of various modules is carried out Adaptive maintenance is usually
incrementally over a number of steps. required for porting the software to
During each integration step, previously work in a new environment such as
planned modules are added to the partially work on a new computer platform or
integrated system and the resultant system with a new operating system.
is tested. Finally, after all the modules have
been successfully integrated and tested, the
full working system is obtained and system
testing is carried out on this. SOFTWARE LIFE CYCLES
System testing consists three different kinds
These are basic models of software
of testing activities as described below :
development life cycles that helps in the
 α-testing: α-testing is the system production of a successful project.
testing performed by the development
team.  Classical waterfall model
 β-testing: β-testing is the system  Rapid prototyping model
testing performed by a friendly set of  Spiral model
customers.  Agile development model
 Acceptance testing: After the Waterfall Model
software has been delivered, the
customer performed the acceptance The Waterfall Model was the first Process Model
testing to determine whether to to be introduced. It is also referred to as a linear-
accept the delivered software or to sequential life cycle model. It is very simple to
reject it. understand and use. In a waterfall model, each
phase must be completed before the next phase
6. Maintainence: can begin and there is no overlapping in the
Maintenance is the most important phase phases.
of a software life cycle. The effort spent on The Waterfall model is the earliest SDLC approach
maintenance is the 60% of the total effort that was used for software development.
spent to develop a full software. There are
The waterfall Model illustrates the software
basically three types of maintenance :
development process in a linear sequential flow.
This means that any phase in the development
 Corrective Maintenance
process begins only if the previous phase is
: This type of maintenance is carried
complete. In this waterfall model, the phases do
out to correct errors that were not
not overlap.
Waterfall Model - Design of each unit. Post integration the entire
Waterfall approach was first SDLC Model to be system is tested for any faults and
used widely in Software Engineering to ensure failures.
success of the project. In "The Waterfall"  Deployment of system − Once the
approach, the whole process of software functional and non-functional testing is
development is divided into separate phases. In done; the product is deployed in the
this Waterfall model, typically, the outcome of customer environment or released into
one phase acts as the input for the next phase the market.
sequentially.
 Maintenance − There are some issues
The following illustration is a representation of which come up in the client environment.
the different phases of the Waterfall Model. 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
The sequential phases in Waterfall model are − set of goals are achieved for previous phase and
it is signed off, so the name "Waterfall Model". In
 Requirement Gathering and analysis − All
this model, phases do not overlap.
possible requirements of the system to be
developed are captured in this phase and
documented in a requirement Waterfall Model - Application
specification document.
Every software developed is different and
 System Design − The requirement requires a suitable SDLC approach to be followed
specifications from first phase are studied based on the internal and external factors. Some
in this phase and the system design is situations where the use of Waterfall model is
prepared. This system design helps in most appropriate are −
specifying hardware and system
 Requirements are very well documented,
requirements and helps in defining the
clear and fixed.
overall system architecture.
 Product definition is stable.
 Implementation − With inputs from the
system design, the system is first  Technology is understood and is not
developed in small programs called units, dynamic.
which are integrated in the next phase.  There are no ambiguous requirements.
Each unit is developed and tested for its
functionality, which is referred to as Unit  Ample resources with required expertise
Testing. are available to support the product.

 Integration and Testing − All the units  The project is short.


developed in the implementation phase
are integrated into a system after testing
Waterfall Model - Advantages
The advantages of waterfall development are  Not a good model for complex and object-
that it allows for departmentalization and oriented projects.
control. A schedule can be set with deadlines for
 Poor model for long and ongoing projects.
each stage of development and a product can
proceed through the development process model  Not suitable for the projects where
phases one by one. requirements are at a moderate to high
risk of changing. So, risk and uncertainty is
Development moves from concept, through
high with this process model.
design, implementation, testing, installation,
troubleshooting, and ends up at operation and  It is difficult to measure progress within
maintenance. Each phase of development stages.
proceeds in strict order.  Cannot accommodate changing
Some of the major advantages of the Waterfall requirements.
Model are as follows −  Adjusting scope during the life cycle can
 Simple and easy to understand and use end a project.

 Easy to manage due to the rigidity of the  Integration is done as a "big-bang. at the
model. Each phase has specific very end, which doesn't allow identifying
deliverables and a review process. any technological or business bottleneck
or challenges early.
 Phases are processed and completed one
at a time.

 Works well for smaller projects where Software Prototype Model


requirements are very well understood.

 Clearly defined stages. The Software Prototyping refers to building


 Well understood milestones. software application prototypes which displays
the functionality of the product under
 Easy to arrange tasks.
development, but may not actually hold the exact
 Process and results are well documented. logic of the original software.

Software prototyping is becoming very popular as


a software development model, as it enables to
Waterfall Model - Disadvantages
understand customer requirements at an early
The disadvantage of waterfall development is
stage of development. It helps get valuable
that it does not allow much reflection or revision.
feedback from the customer and helps software
Once an application is in the testing stage, it is
designers and developers understand about what
very difficult to go back and change something
exactly is expected from the product under
that was not well-documented or thought upon
development.
in the concept stage.
What is Software Prototyping?
The major disadvantages of the Waterfall Model
Prototype is a working model of software with
are as follows −
some limited functionality. The prototype does
 No working software is produced until late not always hold the exact logic used in the actual
during the life cycle. software application and is an extra effort to be
 High amounts of risk and uncertainty. considered under effort estimation.
Prototyping is used to allow the users evaluate user interface for the product and gives a broader
developer proposals and try them out before view of the entire system, without concentrating
implementation. It also helps understand the on internal functions. A Vertical prototype on the
requirements which are user specific and may not other side is a detailed elaboration of a specific
have been considered by the developer during function or a sub system in the product.
product design.
The purpose of both horizontal and vertical
Following is a stepwise approach explained to prototype is different. Horizontal prototypes are
design a software prototype. used to get more information on the user
interface level and the business requirements. It
Basic Requirement Identification
can even be presented in the sales demos to get
This step involves understanding the very basics
business in the market. Vertical prototypes are
product requirements especially in terms of user
technical in nature and are used to get details of
interface. The more intricate details of the
the exact functioning of the sub systems. For
internal design and external aspects like
example, database requirements, interaction and
performance and security can be ignored at this
data processing loads in a given sub system.
stage.
Software Prototyping - Types
Developing the initial Prototype
There are different types of software prototypes
The initial Prototype is developed in this stage,
used in the industry. Following are the major
where the very basic requirements are
software prototyping types used widely −
showcased and user interfaces are provided.
These features may not exactly work in the same Throwaway/Rapid Prototyping
manner internally in the actual software Throwaway prototyping is also called as rapid or
developed. While, the workarounds are used to close ended prototyping. This type of prototyping
give the same look and feel to the customer in the uses very little efforts with minimum
prototype developed. requirement analysis to build a prototype. Once
the actual requirements are understood, the
Review of the Prototype
prototype is discarded and the actual system is
The prototype developed is then presented to the
developed with a much clear understanding of
customer and the other important stakeholders
user requirements.
in the project. The feedback is collected in an
organized manner and used for further Evolutionary Prototyping
enhancements in the product under Evolutionary prototyping also called as
development. breadboard prototyping is based on building
actual functional prototypes with minimal
Revise and Enhance the Prototype
functionality in the beginning. The prototype
The feedback and the review comments are
developed forms the heart of the future
discussed during this stage and some
prototypes on top of which the entire system is
negotiations happen with the customer based on
built. By using evolutionary prototyping, the well-
factors like – time and budget constraints and
understood requirements are included in the
technical feasibility of the actual implementation.
prototype and the requirements are added as
The changes accepted are again incorporated in
and when they are understood.
the new Prototype developed and the cycle
repeats until the customer expectations are met. Incremental Prototyping
Incremental prototyping refers to building
Prototypes can have horizontal or vertical
multiple functional prototypes of the various sub-
dimensions. A Horizontal prototype displays the
systems and then integrating all the available  Since a working model of the system is
prototypes to form a complete system. displayed, the users get a better
understanding of the system being
Extreme Prototyping
developed.
Extreme prototyping is used in the web
development domain. It consists of three  Reduces time and cost as the defects can
sequential phases. First, a basic prototype with all be detected much earlier.
the existing pages is presented in the HTML  Quicker user feedback is available leading
format. Then the data processing is simulated to better solutions.
using a prototype services layer. Finally, the
services are implemented and integrated to the  Missing functionality can be identified
final prototype. This process is called Extreme easily.
Prototyping used to draw attention to the second  Confusing or difficult functions can be
phase of the process, where a fully functional UI identified.
is developed with very little regard to the actual
The Disadvantages of the Prototyping Model are
services.
as follows −
Software Prototyping - Application
 Risk of insufficient requirement analysis
Software Prototyping is most useful in
owing to too much dependency on the
development of systems having high level of user
prototype.
interactions such as online systems. Systems
which need users to fill out forms or go through  Users may get confused in the prototypes
various screens before data is processed can use and actual systems.
prototyping very effectively to give the exact look  Practically, this methodology may increase
and feel even before the actual software is the complexity of the system as scope of
developed. the system may expand beyond original
Software that involves too much of data plans.
processing and most of the functionality is  Developers may try to reuse the existing
internal with very little user interface does not prototypes to build the actual system,
usually benefit from prototyping. Prototype even when it is not technically feasible.
development could be an extra overhead in such
projects and may need lot of extra efforts.  The effort invested in building prototypes
may be too much if it is not monitored
Software Prototyping - Pros and Cons properly.
Software prototyping is used in typical cases and
the decision should be taken very carefully so
that the efforts spent in building the prototype Spiral Model
add considerable value to the final software
developed. The model has its own pros and cons The spiral model combines the idea of iterative
discussed as follows. development with the systematic, controlled
aspects of the waterfall model. This Spiral model
The advantages of the Prototyping Model are as is a combination of iterative development
follows − process model and sequential linear
 Increased user involvement in the product development model i.e. the waterfall model with
even before its implementation. a very high emphasis on risk analysis. It allows
incremental releases of the product or
incremental refinement through each iteration first iteration, the customer evaluates the
around the spiral. software and provides feedback.

Spiral Model - Design The following illustration is a representation of


The spiral model has four phases. A software the Spiral Model, listing the activities in each
project repeatedly passes through these phases phase.
in iterations called Spirals.

Identification
This phase starts with gathering the business
requirements in the baseline spiral. In the
subsequent spirals as the product matures,
identification of system requirements, subsystem
requirements and unit requirements are all done
in this phase.

This phase also includes understanding the


system requirements by continuous Based on the customer evaluation, the software
communication between the customer and the development process enters the next iteration
system analyst. At the end of the spiral, the and subsequently follows the linear approach to
product is deployed in the identified market. implement the feedback suggested by the
customer. The process of iterations along the
Design
spiral continues throughout the life of the
The Design phase starts with the conceptual software.
design in the baseline spiral and involves
architectural design, logical design of modules, Spiral Model Application
physical product design and the final design in the The Spiral Model is widely used in the software
subsequent spirals. industry as it is in sync with the natural
development process of any product, i.e. learning
Construct or Build
with maturity which involves minimum risk for
The Construct phase refers to production of the the customer as well as the development firms.
actual software product at every spiral. In the
baseline spiral, when the product is just thought The following pointers explain the typical uses of
of and the design is being developed a POC (Proof a Spiral Model −
of Concept) is developed in this phase to get  When there is a budget constraint and risk
customer feedback. evaluation is important.
Then in the subsequent spirals with higher clarity  For medium to high-risk projects.
on requirements and design details a working
 Long-term project commitment because
model of the software called build is produced
of potential changes to economic
with a version number. These builds are sent to
priorities as the requirements change
the customer for feedback.
with time.
Evaluation and Risk Analysis
 Customer is not sure of their requirements
Risk Analysis includes identifying, estimating and
which is usually the case.
monitoring the technical feasibility and
management risks, such as schedule slippage and  Requirements are complex and need
cost overrun. After testing the build, at the end of evaluation to get clarity.
 New product line which should be  End of the project may not be known
released in phases to get enough early.
customer feedback.
 Not suitable for small or low risk projects
 Significant changes are expected in the and could be expensive for small projects.
product during the development cycle.
 Process is complex
Spiral Model - Pros and Cons
 Spiral may go on indefinitely.
The advantage of spiral lifecycle model is that it
allows elements of the product to be added in,  Large number of intermediate stages
when they become available or known. This requires excessive documentation.
assures that there is no conflict with previous
requirements and design.

This method is consistent with approaches that


have multiple software builds and releases which Agile Model
allows making an orderly transition to a Agile SDLC model is a combination of iterative
maintenance activity. Another positive aspect of and incremental process models with focus on
this method is that the spiral model forces an process adaptability and customer satisfaction by
early user involvement in the system rapid delivery of working software product. Agile
development effort. Methods break the product into small
incremental builds. These builds are provided in
On the other side, it takes a very strict
iterations. Each iteration typically lasts from
management to complete such products and
about one to three weeks. Every iteration
there is a risk of running the spiral in an indefinite
involves cross functional teams working
loop. So, the discipline of change and the extent
simultaneously on various areas like −
of taking change requests is very important to
develop and deploy the product successfully.
 Planning
The advantages of the Spiral SDLC Model are as  Requirements Analysis
follows −
 Design
 Changing requirements can be  Coding
accommodated.
 Unit Testing and
 Allows extensive use of prototypes.  Acceptance Testing.
 Requirements can be captured more At the end of the iteration, a working product is
accurately. displayed to the customer and important
stakeholders.
 Users see the system early.
What is Agile?
 Development can be divided into smaller
parts and the risky parts can be developed Agile model believes that every project needs to
earlier which helps in better risk be handled differently and the existing methods
management. need to be tailored to best suit the project
requirements. In Agile, the tasks are divided to
The disadvantages of the Spiral SDLC Model are time boxes (small time frames) to deliver specific
as follows − features for a release.
 Management is more complex. Iterative approach is taken and working software
build is delivered after each iteration. Each build
is incremental in terms of features; the final build customer interaction is very important to
holds all the features required by the customer. get proper product requirements.

Here is a graphical illustration of the Agile Model  Responding to change − Agile


− Development is focused on quick
responses to change and continuous
development.

Agile Vs Traditional SDLC Models


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
The Agile thought process had started early in the detailed planning and have a complete forecast
software development and started becoming of the exact tasks and features to be delivered in
popular with time due to its flexibility and the next few months or during the product life
adaptability. cycle.
The most popular Agile methods include Rational Predictive methods entirely depend on
Unified Process (1994), Scrum (1995), Crystal the requirement analysis and planning done in
Clear, Extreme Programming (1996), Adaptive the beginning of cycle. Any changes to be
Software Development, Feature Driven incorporated go through a strict change control
Development, and Dynamic Systems management and prioritization.
Development Method (DSDM) (1995). These are
now collectively referred to as Agile Agile uses an adaptive approach where there is
Methodologies, after the Agile Manifesto was no detailed planning and there is clarity on future
published in 2001. tasks only in respect of what features need to be
developed. There is feature driven development
Following are the Agile Manifesto principles − and the team adapts to the changing product
 Individuals and interactions − In Agile requirements dynamically. The product is tested
development, self-organization and very frequently, through the release iterations,
motivation are important, as are minimizing the risk of any major failures in future.
interactions like co-location and pair Customer Interaction is the backbone of this
programming. Agile methodology, and open communication
 Working software − Demo working with minimum documentation are the typical
software is considered the best means of features of Agile development environment. The
communication with the customers to agile teams work in close collaboration with each
understand their requirements, instead of other and are most often located in the same
just depending on documentation. geographical location.

 Customer collaboration − As the Agile Model - Pros and Cons


requirements cannot be gathered Agile methods are being widely accepted in the
completely in the beginning of the project software world recently. However, this method
due to various factors, continuous may not always be suitable for all products. Here
are some pros and cons of the Agile model.
The advantages of the Agile Model are as follows  There is a very high individual
− dependency, since there is minimum
documentation generated.
 Is a very realistic approach to software
development.  Transfer of technology to new team
members may be quite challenging due to
 Promotes teamwork and cross training.
lack of documentation.
 Functionality can be developed rapidly
and demonstrated.

 Resource requirements are minimum. CONCLUSION

 Suitable for fixed or changing In this paper, i have tried to provide a many ways
requirements analysis of various Software Engineering Data
 Delivers early partial working solutions. that are in focus, categorized the various types of
 Good model for environments that change tools and a summarized analysis of various Data
steadily. Mining Tools and their focus area in Software
 Minimal rules, documentation easily Engineering data sources and projects. The
employed.
extensive literature survey and the tools analysis
 Enables concurrent development and depicts that most of the work till today and most
delivery within an overall planned
of the tools proposed by researchers till today
context.
has been on software code, thus there is a great
 Little or no planning required.
scope of work in other areas of software
 Easy to manage.
engineering where data mining and its techniques
 Gives flexibility to developers.
can prove to be quite helpful in uncovering
The disadvantages of the Agile Model are as
important patterns that may in turn assist
follows −
developers, testers, maintenance teams and
 Not suitable for handling complex
other people related to Software Engineering in
dependencies.
some way or the other.
 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.

 Strict delivery management dictates the


scope, functionality to be delivered, and
adjustments to meet the deadlines.

 Depends heavily on customer interaction,


so if customer is not clear, team can be
driven in the wrong direction.

Anda mungkin juga menyukai