SlideShare uma empresa Scribd logo
1 de 12
1. What is software development?
Software development is the process of developing software through successive phases in an
orderly way. This process includes not only the actual writing of code but also the preparation
of requirements and objectives, the design of what is to be coded, and confirmation that what
is developed has met objectives.
Before systems development methods came into being, the development of new systems or
products was often carried out by using the experienceand intuition of management and
technical personnel. However, the complexityof modern systems and computer products long
ago made the need clear forsome kind of orderly development process.
Typical phases of software development:
1) Identification of required software
2) Analysis of the software requirements
3) Detailed specification of the software requirements
4) Software design
5) Programming
6) Testing
7) Maintenance
In general, the development of commercial software is usually a result of demand in the
marketplace, while enterprise software developmentgenerally arises from a need or a problem
within the enterprise environment.
Related Links:
Rafeeq Ur Rehman and Christopher Paul's Introduction to software development goes into
more detail about the software development process.
SearchVB offers a selection of resources about design and development.
2. How is software development guided?
The software development process is almost invariably guided bysome systematic software
development method (SDM). Referred to by a numberof terms, including process
models,development guidelines,and systems development life cycle models (SDLC), software
development methods nevertheless generally include the same development phases:
 The existing systemis evaluated and its deficiencies identified, usually through interviewing
system users and support personnel.
 The new system requirements are defined. In particular, the deficiencies in the existing
system must be addressed with specific proposals for improvement.
 The proposed system is designed. Plans are laid out concerning the physical construction,
hardware, operating systems, programming, communications, and security issues.
 The new system is developed. The new components and programs must be obtained and
installed. Users of the system must be trained in its use, and all aspects of performance
must be tested. If necessary, adjustments must be made at this stage.
 The systemis put into use. This can be done in various ways. The new systemcan phased in,
according to application or location, andthe old systemgradually replaced. In some cases, it
may be more cost-effective to shut down the old system and implement the new system all
at once.
 Once the new system is up and running for awhile, it should be exhaustively evaluated.
Maintenance must be kept up rigorously at all times.Users of the system should be kept up-
to-date concerning the latest modificationsand procedures.
The systems development life cycle model was developed as a structured approach to
information systemdevelopment that guides all the processesinvolved from an initial feasibility
study through to maintenance of thefinished application. SDLC models take a variety of
approaches to development.
Systems development life cycle models include:
· The waterfall model: This is the classic SDLC model, with a linear and sequential method that
has goals for each developmentphase. The waterfall model simplifies task scheduling, because
there areno iterative or overlapping steps. One drawback of the waterfall is thatit does not
allow for much revision.
· Rapid application development (RAD): This modelis based on the concept that better
products can be developed more quicklyby: using workshops or focus groups to gather system
requirements; prototyping and reiterative testing of designs; rigid adherence to schedule; and
less formality of team communications such as reviews.
· Joint application development (JAD): This modelinvolves the client or end user in the design
and development of an application,through a series of collaborative workshops
calledJAD sessions.
· The prototyping model: In this model, a prototype (an early approximation of a final systemor
product) is built, tested,and then reworked as necessary until an acceptable prototype is
finallyachieved from which the complete systemor product can now be developed.
· Synchronize-and-stabilize: This model involves teams working in parallel on individual
application modules, frequently synchronizing their code with that of other teams and
stabilizing code frequently throughout the development process.
· The spiral model: This model of development combines the features of the prototyping model
and the waterfall model. The spiral model is favored for large, expensive, and complicated
projects.
Related Links:
Peter H. Gregory's SearchNetworking article explores "Security in the software development
life cycle."
The CTG also offers a white paper on the "Systems Development Process Model."
Bender RBT provides their document on "Systems Development Life Cycle Objectives and
Requirements."
3. How has the open source development process influenced software development in
general?
Open source software is developed collaboratively; source code is freely available for use and
modification. The open source movement arose because some developers came to believe that
competition amongst vendors leads to inferior products and that the best approach to
development isa collaborative one.
The OSI (Open Source Initiative) is an industry body that certifies products as open source if
they conform to a number of rules:
· The software being distributed must be redistributed to anyone else without any restriction
· The source code must be made available (so that the receiving party will be able to improve or
modify it)
· The license can require improved versions of the software to carry a different name or version
from the original software
Despite its emphasis on the collaborative process, the biggest influence that open source has
had on software development in general may be through competition: by competing with
proprietary software products, open source products force vendors to work that much harder
to hold their market share in the face of viable open source alternatives.
Related Links:
The OSI has a Web site.
Margie Semilof's SearchWin2000 article is called "Battening down the Windows: Open
source vs. commercial tools."
Jan Stafford's SearchEnterpriseLinux article is called "Perens: IT pros must lobby for open
source."
4. What are some generally accepted best practices common to all or most development
models?
Here's a collection of some of the top tips from a variety of industry sources:
· Make sure that you've chosen a systems development life cycle model that suits your project,
because every one of the processesinvolved depends on the model. That said, however,
implementing any modelis better than none -- much of the success of a project depends upon
howscrupulously the model is adhered to.
· Reuse software components when it's appropriate, but don't use code that doesn't work
perfectly for its intended purpose just because you have it on hand.
· Be very thorough in gathering requirements, ensuring that all parties agree on what they are --
and make sure you document them.
· Don't promise the moon, if you can't deliver it. Avoidletting someone who isn't fully informed
negotiate with the client.
· Make sure that the architecture you've chosen is appropriate for the application you're
building. To retain perspective, you might want to look at the smaller picture and plan the
architecture incrementally.
· Change is part of life, including software development. You have to accept that various things -
- requirements, for example -- are likely to change throughout the life of the project. Keep
control of them, but not too rigidly.
· Set up peer review processes for every element of the project.
· Design thoroughly and with care, but remember the KISSprinciple: Keep it simple.
· In your project plan, split big projects into manageable chunks, with concrete milestones and
deadlines.
· Ensure accountability: make sure that deadlines are clear and that people have to report on
whether they made them, and explain why not if they don't.
· Implement quality control procedures throughout the project.
· Test exhaustively -- there's no point in doing a cursory run through only to have an application
fail when you run it for the client.
· After the project is completed, conduct a thorough post-mortem, with everyone involved.
You'll see what worked well and what should havebeen differently, and your future projects will
benefit.
Related Links:
The IBM Web site offers Mike Perk's article, "Best Practices for Software Development
Projects."
IEEE Software promotes the "Daily Build and Smoke Test" as a development best practice.
The Standish group provides a "Recipe for Success."
W. Edwards Deming offers more advice in his list, 14 Points for Software Development.
Johanna Rothman advises developers to write out goals inplain English to help managers,
team members and stakeholders find consensusin this Software Development Magazine
article. (requires free registration)
5. What are some common mistakes in software development?
According to a Standish Group report, corporations in the United States spend over $275 billion
every year on software development projects, many of which are doomed to failure. Research
by the group found that over 80% of projects fail for various reasons, and that fully 30% of
projectswere cancelled prior to completion because of poor execution.
David B. Stewart, at the University of Maryland, set out to document the 10 most common
mistakes of software development. He found, however,that the sheer number of errors that
were commonly practiced made it impossible to keep the number to ten. He ended up calling
his article "Twenty-FiveMost Common Mistakes with Real-Time Software Development." Even
so, afterthe title had been established, he found another five errors so common thathe felt
compelled to add them.
According to Dr. Michael Stovsky, of Stovsky and Associates, the most common project
problems are due to failure to manage project elements successfully:
· Requirements are not clearly and accurately defined, and agreed upon by all concerned.
· Resources are not adequately planned and allocated.
· Threats to project success are not clearly detected, identified, and protected against.
· Critical path analysis is omitted, or poorly executed.
· The project's progress is not tracked adequately.
· Quality management is not carried out well enough throughout the life of the project.
· Too little data is collected, or data is ignored or poorly understood.
Correcting flaws identified during software security audits is expensive and time consuming.
Worse, vast resources are spent on containing and recovering from exploits. Fortunately,
providing development staff with the knowledge and tools to avoid many of these pitfalls is
easy and inexpensive.
Related Links:
David B. Stewart lists the Twenty-Five Most Common Mistakes in Software Development .
In this paper, Dr. Michael P. Stovsky explores Common Mistakes in Software Project
Management.
6. Given a particular process model, is there a set of tools(a development environment) to
support it?
In general, a process model usually begins as a philosophy of "who does what development
when" rather than a rigid methodology complete with tools. For example, rapid application
development (RAD) is an approach that can make use of existing development tools. In general,
tools for supporting all or part of a process model tend to arrive later, if at all.
Historically, development tools have focused on the code-building, code archive management,
documentation, testing, and packaging parts ofthe process, sometimes offered as a suite. Such
a suite is generally knownas an integrated development environment (IDE).
A set of tools for managing or supporting a development project is generally known as a
computer-assisted software environment (CASE). A number of companies offer products that
support early stages of development such as requirements gathering, design prototyping, and
data modeling. A number of these provide tools that support data modeling with the Unified
Modeling Language. Overall, there is a trend toward providing all or most of the tools for a
development project in a single product or related set of products.
Today, the main code-building development environments or program suites come from
Microsoft with its Visual Studio and Visual Studio .NET, providing support for Visual Basic, Visual
C#, Visual C++, and Visual J#; Sun Microsystems with its Java 2 Enterprise Environment; and
numerous software vendors such as Borland who repackage these environments with some
value-added features. Recently, almost all providers of software development environments
have added features that enable the software to be used on the Web.
Related Links:
Microsoft provides a case study of a company that created an accounting system with its
VisualBasic .NET product and additional products from PDSA.
The Caldera OpenLinux Workstation describes several different integrated development
environments it provides for Linux and Unix systems.
Knowledgestorm lists many products that describe themselves as integrated development
environment products.
Carnegie-Mellon Software Engineering Institute answers the question "What is a CASE
Environment?"
7. How do you choose the "right" programming language for your project?
For most projects, the right language is easy to choose. Your company may have standardized
on a particular development environment and language (and you may have been hired because
you were already familiar with the language). Or you may be updating or enhancing an existing
program; it's almost always best to use the same language the existing program is written in. In
some cases, however, someone will need to select the best (or, since the best may be
somewhat arguable, at least an appropriate language). In somecases, you or your team of
developers may need to know several languages fordifferent purposes.
General truisms about programming languages are that:
 Perl or a similar script language is most suitable for small tasks and sometimes acting as a
program that goes between other, largerprograms.
 Visual Basic is most suitable for relatively novice programmers and relatively simple
programs.
 Java, C++, or comparable languages like Python and Tcl aremost suitable for larger
applications using object orientation as a designmodel.
 C is most suitable for programs where efficiency and performance are the primary concern.
 The appropriate assembler language is most suitable where the program is relatively short
and high performance is critical.
Where constraints permit, some programmers may favor one object-oriented language over
another (for example, Java, C++, Python, or Tcl). A programmer with skills in C is likely to prefer
C++, which combines the proceduraland other concepts and syntax of C with object-oriented
concepts.
Related Links:
Outback Software compares three object-oriented languages: C++, Smalltalk, and Java.
Kuro5hin compares three Visual Studio languages: C#, C++, and Java.
Jason Voegele's table compares 21 features of nine pure or hybrid object-oriented
languages, including Perl and Basic.
The Open Directory Project offers a list of links relating to programming language
comparisons.
8. What are some trends regarding the future of software development?
Blogs - A growing number of big-name softwaredevelopers are finding they can make better
software applications if theyshare information with potential customers from the start and
incorporate customer feedback into development decisions. While developers of
gamessoftware have used this method for years, business software makers are nowalso
catching on and using blogs (Web logs) as an important part of the development process.
Big-name support for independent software vendors (ISVs) - Big players like Microsoft, IBM,
and Sun have recognized that they cannot fill every niche industry's software demands, so they
have begun to activelyseek partnerships with small ISVs, in hopes that by encouraging ISVs to
focuson nichy vertical industry applications, everyone will benefit.
Component-based development - In this approach, softwareis developed in modules that are
linked dynamically to construct a completeapplication. Charles Simonyi (creator of the
WYSIWYG editor) believes thateventually, software development will become so modular
that even lay-peoplewill be able to assemble components effectively to create
customizedsoftware applications.
Continued improvements in refactoring tools - Eric Raymond,a leading philosopher about
program development, maintains that the conceptof refactoring is consistent with the idea of
get-something-working-now-and-perfect-it-laterapproach long familiar to Unix and open source
programmers. The idea is alsoembodied in the approach known as Extreme Programming. As
software applicationsbecome larger, better refactoring tools will be required to maintain
codebases and diagnose bugs.
Outsourcing - Using this approach, software companies hire employees around the world to
take advantage of time zone and labor/cost differences.Proponents say that in effect, software
development teams now have a 24-hourwork day, and are able to provide fast turn-around.
Detractors say that outsourcingparts of a project leads to sloppy coding and only works if there
is a highdegree of coordination regarding modularized tasks, and above-average
communicationwithin the team.
Related Links:
Rormer CNET developers Dan Seewer and Kevin Cobb discuss the future of software
development.
Charles Simonyi, creator of the WYSIWYG, is in the process of designing programming tools
for the future that are so simple that even laypeople can use them.
Developers are using blogs to get closer to their users.
IBM DeveloperWorks is one of many free resources available for developers
10. Software Development Words-to-GoGlossary:
Browse through instant messaging vocabulary in a handy printable glossary.
11. Self-assessment:
After you've looked at the glossary, quiz yourself to see what you've learned about software
development terms.
 The designphase comesaftera goodunderstandingof customer’srequirements,thisphase
definesthe elementsof asystem, the components,the securitylevel,modules,architectureand
the differentinterfacesandtype of data thatgoesthrough the system.
 A general systemdesigncanbe done witha penand a piece of paperto determine how
the systemwill looklikeandhow itwill function,andthenadetailedandexpanded
systemdesignisproduced,
and it will meetall functional and
technical requirements,logicallyandphysically.

Mais conteúdo relacionado

Mais procurados

Software life-cycle
Software life-cycleSoftware life-cycle
Software life-cycle
gnesoni
 
SOFTWARE LIFECYLE MODELS
SOFTWARE LIFECYLE MODELSSOFTWARE LIFECYLE MODELS
SOFTWARE LIFECYLE MODELS
guest1c0da72
 
Ch03-Software Engineering Model
Ch03-Software Engineering ModelCh03-Software Engineering Model
Ch03-Software Engineering Model
Bala Ganesh
 
What Is the Rational Unified Process
What Is the Rational Unified ProcessWhat Is the Rational Unified Process
What Is the Rational Unified Process
Robson Silva Espig
 
Study of solution development methodology for small size projects.
Study of solution development methodology for small size projects.Study of solution development methodology for small size projects.
Study of solution development methodology for small size projects.
Joon ho Park
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
Damian T. Gordon
 
Chapter 2 software_development_life_cycle_models
Chapter 2 software_development_life_cycle_modelsChapter 2 software_development_life_cycle_models
Chapter 2 software_development_life_cycle_models
Piyush Gogia
 

Mais procurados (20)

Software life-cycle
Software life-cycleSoftware life-cycle
Software life-cycle
 
SOFTWARE LIFECYLE MODELS
SOFTWARE LIFECYLE MODELSSOFTWARE LIFECYLE MODELS
SOFTWARE LIFECYLE MODELS
 
Ch03-Software Engineering Model
Ch03-Software Engineering ModelCh03-Software Engineering Model
Ch03-Software Engineering Model
 
Software development process basic
Software development process basicSoftware development process basic
Software development process basic
 
Softwaredevelopmentmodels windirohmaheny11453205427kelase
Softwaredevelopmentmodels windirohmaheny11453205427kelaseSoftwaredevelopmentmodels windirohmaheny11453205427kelase
Softwaredevelopmentmodels windirohmaheny11453205427kelase
 
What Is the Rational Unified Process
What Is the Rational Unified ProcessWhat Is the Rational Unified Process
What Is the Rational Unified Process
 
Study of solution development methodology for small size projects.
Study of solution development methodology for small size projects.Study of solution development methodology for small size projects.
Study of solution development methodology for small size projects.
 
OO Development 2 - Software Development Methodologies
OO Development 2 - Software Development MethodologiesOO Development 2 - Software Development Methodologies
OO Development 2 - Software Development Methodologies
 
+Software development methodologies
+Software development methodologies+Software development methodologies
+Software development methodologies
 
Notes on agile
Notes on agileNotes on agile
Notes on agile
 
Software Engineering Methodologies
Software Engineering MethodologiesSoftware Engineering Methodologies
Software Engineering Methodologies
 
Chapter 2 software_development_life_cycle_models
Chapter 2 software_development_life_cycle_modelsChapter 2 software_development_life_cycle_models
Chapter 2 software_development_life_cycle_models
 
3. ch 2-process model
3. ch 2-process model3. ch 2-process model
3. ch 2-process model
 
The Software Development Process
The Software Development ProcessThe Software Development Process
The Software Development Process
 
Sdlc
SdlcSdlc
Sdlc
 
Software Process Models
Software Process ModelsSoftware Process Models
Software Process Models
 
Software development process models
Software development process modelsSoftware development process models
Software development process models
 
Software Engineering concept
Software Engineering concept Software Engineering concept
Software Engineering concept
 
SDLC ITS MODEL AND SOFTWARE TESTING
SDLC ITS MODEL AND SOFTWARE TESTING SDLC ITS MODEL AND SOFTWARE TESTING
SDLC ITS MODEL AND SOFTWARE TESTING
 
Software engineering model
Software engineering modelSoftware engineering model
Software engineering model
 

Destaque

MDU Spec Flyer PP
MDU Spec Flyer PPMDU Spec Flyer PP
MDU Spec Flyer PP
Kyna Saidin
 
Danielle Nuzzo_Freelance Capabilities Deck
Danielle Nuzzo_Freelance Capabilities DeckDanielle Nuzzo_Freelance Capabilities Deck
Danielle Nuzzo_Freelance Capabilities Deck
Danielle Nuzzo
 

Destaque (7)

Qué es el reparto de utilidades
Qué es el reparto de utilidades  Qué es el reparto de utilidades
Qué es el reparto de utilidades
 
Relation of psychology and IT
Relation of psychology and ITRelation of psychology and IT
Relation of psychology and IT
 
MDU Spec Flyer PP
MDU Spec Flyer PPMDU Spec Flyer PP
MDU Spec Flyer PP
 
Danielle Nuzzo_Freelance Capabilities Deck
Danielle Nuzzo_Freelance Capabilities DeckDanielle Nuzzo_Freelance Capabilities Deck
Danielle Nuzzo_Freelance Capabilities Deck
 
Content marketing in healthcare - buzzwords or business driver?
Content marketing in healthcare - buzzwords or business driver?Content marketing in healthcare - buzzwords or business driver?
Content marketing in healthcare - buzzwords or business driver?
 
AWSome Day Intro - Copenhagen 20160309
AWSome Day Intro - Copenhagen 20160309AWSome Day Intro - Copenhagen 20160309
AWSome Day Intro - Copenhagen 20160309
 
Avis sur le Plan d'action d'application des Principes directeurs des Nations ...
Avis sur le Plan d'action d'application des Principes directeurs des Nations ...Avis sur le Plan d'action d'application des Principes directeurs des Nations ...
Avis sur le Plan d'action d'application des Principes directeurs des Nations ...
 

Semelhante a Software development life cycle

Different Methodologies Used By Programming Teams
Different Methodologies Used By Programming TeamsDifferent Methodologies Used By Programming Teams
Different Methodologies Used By Programming Teams
Nicole Gomez
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
John Lewis
 

Semelhante a Software development life cycle (20)

SoftwareEngineering.pptx
SoftwareEngineering.pptxSoftwareEngineering.pptx
SoftwareEngineering.pptx
 
SoftwareEngineering.pptx
SoftwareEngineering.pptxSoftwareEngineering.pptx
SoftwareEngineering.pptx
 
How Custom Software Development is Transforming the Traditional Business Prac...
How Custom Software Development is Transforming the Traditional Business Prac...How Custom Software Development is Transforming the Traditional Business Prac...
How Custom Software Development is Transforming the Traditional Business Prac...
 
SE-Lecture-2.pptx
SE-Lecture-2.pptxSE-Lecture-2.pptx
SE-Lecture-2.pptx
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Agile software process
Agile software processAgile software process
Agile software process
 
Agile Methodologies & Key Principles
Agile Methodologies & Key Principles Agile Methodologies & Key Principles
Agile Methodologies & Key Principles
 
SE Lecture 2.ppt
SE Lecture 2.pptSE Lecture 2.ppt
SE Lecture 2.ppt
 
Quality Software Development
Quality Software DevelopmentQuality Software Development
Quality Software Development
 
Soft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptxSoft.Engg. UNIT 1.pptx
Soft.Engg. UNIT 1.pptx
 
Software models
Software modelsSoftware models
Software models
 
reaserch ppt.pptx
reaserch ppt.pptxreaserch ppt.pptx
reaserch ppt.pptx
 
Tiara Ramadhani - Program Studi S1 Sistem Informasi - Fakultas Sains dan Tekn...
Tiara Ramadhani - Program Studi S1 Sistem Informasi - Fakultas Sains dan Tekn...Tiara Ramadhani - Program Studi S1 Sistem Informasi - Fakultas Sains dan Tekn...
Tiara Ramadhani - Program Studi S1 Sistem Informasi - Fakultas Sains dan Tekn...
 
Slcm sharbani bhattacharya
Slcm sharbani bhattacharyaSlcm sharbani bhattacharya
Slcm sharbani bhattacharya
 
16346915.ppt
16346915.ppt16346915.ppt
16346915.ppt
 
Different Methodologies Used By Programming Teams
Different Methodologies Used By Programming TeamsDifferent Methodologies Used By Programming Teams
Different Methodologies Used By Programming Teams
 
Process Models IN software Engineering
Process Models IN software EngineeringProcess Models IN software Engineering
Process Models IN software Engineering
 
Ch17
Ch17Ch17
Ch17
 
Materi Testing dan Implementasi System
Materi Testing dan Implementasi SystemMateri Testing dan Implementasi System
Materi Testing dan Implementasi System
 
Agile Engineering
Agile EngineeringAgile Engineering
Agile Engineering
 

Mais de Afrasiyab Haider

Mais de Afrasiyab Haider (19)

How to know value of a company
How to know value of a companyHow to know value of a company
How to know value of a company
 
Providing feedback for effective listening
Providing feedback for effective listeningProviding feedback for effective listening
Providing feedback for effective listening
 
Rectification of errors (Financial Accounting)
Rectification of errors (Financial Accounting)Rectification of errors (Financial Accounting)
Rectification of errors (Financial Accounting)
 
Octal to binary and octal to hexa decimal conversions
Octal to binary and octal to hexa decimal conversionsOctal to binary and octal to hexa decimal conversions
Octal to binary and octal to hexa decimal conversions
 
RUP - Rational Unified Process
RUP - Rational Unified ProcessRUP - Rational Unified Process
RUP - Rational Unified Process
 
Normalization in Database
Normalization in DatabaseNormalization in Database
Normalization in Database
 
Facts finding techniques in Database
Facts finding techniques in Database Facts finding techniques in Database
Facts finding techniques in Database
 
File organization in database
File organization in databaseFile organization in database
File organization in database
 
Expected value of random variables
Expected value of random variablesExpected value of random variables
Expected value of random variables
 
Class diagram of school management system (OOP)
Class diagram of school management system (OOP)Class diagram of school management system (OOP)
Class diagram of school management system (OOP)
 
What is difference between dbms and rdbms
What is difference between dbms and rdbmsWhat is difference between dbms and rdbms
What is difference between dbms and rdbms
 
Database development life cycle
Database development life cycleDatabase development life cycle
Database development life cycle
 
What is Psychology and variables in psychology?
What is Psychology and variables in psychology?What is Psychology and variables in psychology?
What is Psychology and variables in psychology?
 
History of operating systems
History of operating systemsHistory of operating systems
History of operating systems
 
Expected value of random variables
Expected value of random variablesExpected value of random variables
Expected value of random variables
 
File organization in database
File organization in databaseFile organization in database
File organization in database
 
Should prisoners be allowed to cast vote?
Should prisoners be allowed to cast vote?Should prisoners be allowed to cast vote?
Should prisoners be allowed to cast vote?
 
Politics and martial law in pakistan
Politics and martial law in pakistanPolitics and martial law in pakistan
Politics and martial law in pakistan
 
Html and its tags
Html and its tagsHtml and its tags
Html and its tags
 

Último

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Último (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 

Software development life cycle

  • 1. 1. What is software development? Software development is the process of developing software through successive phases in an orderly way. This process includes not only the actual writing of code but also the preparation of requirements and objectives, the design of what is to be coded, and confirmation that what is developed has met objectives. Before systems development methods came into being, the development of new systems or products was often carried out by using the experienceand intuition of management and technical personnel. However, the complexityof modern systems and computer products long ago made the need clear forsome kind of orderly development process. Typical phases of software development: 1) Identification of required software 2) Analysis of the software requirements 3) Detailed specification of the software requirements 4) Software design 5) Programming 6) Testing 7) Maintenance In general, the development of commercial software is usually a result of demand in the marketplace, while enterprise software developmentgenerally arises from a need or a problem within the enterprise environment. Related Links: Rafeeq Ur Rehman and Christopher Paul's Introduction to software development goes into more detail about the software development process. SearchVB offers a selection of resources about design and development. 2. How is software development guided? The software development process is almost invariably guided bysome systematic software development method (SDM). Referred to by a numberof terms, including process models,development guidelines,and systems development life cycle models (SDLC), software
  • 2. development methods nevertheless generally include the same development phases:  The existing systemis evaluated and its deficiencies identified, usually through interviewing system users and support personnel.  The new system requirements are defined. In particular, the deficiencies in the existing system must be addressed with specific proposals for improvement.  The proposed system is designed. Plans are laid out concerning the physical construction, hardware, operating systems, programming, communications, and security issues.  The new system is developed. The new components and programs must be obtained and installed. Users of the system must be trained in its use, and all aspects of performance must be tested. If necessary, adjustments must be made at this stage.  The systemis put into use. This can be done in various ways. The new systemcan phased in, according to application or location, andthe old systemgradually replaced. In some cases, it may be more cost-effective to shut down the old system and implement the new system all at once.  Once the new system is up and running for awhile, it should be exhaustively evaluated. Maintenance must be kept up rigorously at all times.Users of the system should be kept up- to-date concerning the latest modificationsand procedures. The systems development life cycle model was developed as a structured approach to information systemdevelopment that guides all the processesinvolved from an initial feasibility study through to maintenance of thefinished application. SDLC models take a variety of approaches to development. Systems development life cycle models include: · The waterfall model: This is the classic SDLC model, with a linear and sequential method that has goals for each developmentphase. The waterfall model simplifies task scheduling, because there areno iterative or overlapping steps. One drawback of the waterfall is thatit does not allow for much revision. · Rapid application development (RAD): This modelis based on the concept that better products can be developed more quicklyby: using workshops or focus groups to gather system requirements; prototyping and reiterative testing of designs; rigid adherence to schedule; and less formality of team communications such as reviews.
  • 3. · Joint application development (JAD): This modelinvolves the client or end user in the design and development of an application,through a series of collaborative workshops calledJAD sessions. · The prototyping model: In this model, a prototype (an early approximation of a final systemor product) is built, tested,and then reworked as necessary until an acceptable prototype is finallyachieved from which the complete systemor product can now be developed. · Synchronize-and-stabilize: This model involves teams working in parallel on individual application modules, frequently synchronizing their code with that of other teams and stabilizing code frequently throughout the development process. · The spiral model: This model of development combines the features of the prototyping model and the waterfall model. The spiral model is favored for large, expensive, and complicated projects. Related Links: Peter H. Gregory's SearchNetworking article explores "Security in the software development life cycle." The CTG also offers a white paper on the "Systems Development Process Model." Bender RBT provides their document on "Systems Development Life Cycle Objectives and Requirements." 3. How has the open source development process influenced software development in general? Open source software is developed collaboratively; source code is freely available for use and modification. The open source movement arose because some developers came to believe that competition amongst vendors leads to inferior products and that the best approach to development isa collaborative one.
  • 4. The OSI (Open Source Initiative) is an industry body that certifies products as open source if they conform to a number of rules: · The software being distributed must be redistributed to anyone else without any restriction · The source code must be made available (so that the receiving party will be able to improve or modify it) · The license can require improved versions of the software to carry a different name or version from the original software Despite its emphasis on the collaborative process, the biggest influence that open source has had on software development in general may be through competition: by competing with proprietary software products, open source products force vendors to work that much harder to hold their market share in the face of viable open source alternatives. Related Links: The OSI has a Web site. Margie Semilof's SearchWin2000 article is called "Battening down the Windows: Open source vs. commercial tools." Jan Stafford's SearchEnterpriseLinux article is called "Perens: IT pros must lobby for open source." 4. What are some generally accepted best practices common to all or most development models? Here's a collection of some of the top tips from a variety of industry sources: · Make sure that you've chosen a systems development life cycle model that suits your project, because every one of the processesinvolved depends on the model. That said, however,
  • 5. implementing any modelis better than none -- much of the success of a project depends upon howscrupulously the model is adhered to. · Reuse software components when it's appropriate, but don't use code that doesn't work perfectly for its intended purpose just because you have it on hand. · Be very thorough in gathering requirements, ensuring that all parties agree on what they are -- and make sure you document them. · Don't promise the moon, if you can't deliver it. Avoidletting someone who isn't fully informed negotiate with the client. · Make sure that the architecture you've chosen is appropriate for the application you're building. To retain perspective, you might want to look at the smaller picture and plan the architecture incrementally. · Change is part of life, including software development. You have to accept that various things - - requirements, for example -- are likely to change throughout the life of the project. Keep control of them, but not too rigidly. · Set up peer review processes for every element of the project. · Design thoroughly and with care, but remember the KISSprinciple: Keep it simple. · In your project plan, split big projects into manageable chunks, with concrete milestones and deadlines. · Ensure accountability: make sure that deadlines are clear and that people have to report on whether they made them, and explain why not if they don't. · Implement quality control procedures throughout the project.
  • 6. · Test exhaustively -- there's no point in doing a cursory run through only to have an application fail when you run it for the client. · After the project is completed, conduct a thorough post-mortem, with everyone involved. You'll see what worked well and what should havebeen differently, and your future projects will benefit. Related Links: The IBM Web site offers Mike Perk's article, "Best Practices for Software Development Projects." IEEE Software promotes the "Daily Build and Smoke Test" as a development best practice. The Standish group provides a "Recipe for Success." W. Edwards Deming offers more advice in his list, 14 Points for Software Development. Johanna Rothman advises developers to write out goals inplain English to help managers, team members and stakeholders find consensusin this Software Development Magazine article. (requires free registration) 5. What are some common mistakes in software development? According to a Standish Group report, corporations in the United States spend over $275 billion every year on software development projects, many of which are doomed to failure. Research by the group found that over 80% of projects fail for various reasons, and that fully 30% of projectswere cancelled prior to completion because of poor execution. David B. Stewart, at the University of Maryland, set out to document the 10 most common mistakes of software development. He found, however,that the sheer number of errors that were commonly practiced made it impossible to keep the number to ten. He ended up calling his article "Twenty-FiveMost Common Mistakes with Real-Time Software Development." Even so, afterthe title had been established, he found another five errors so common thathe felt compelled to add them.
  • 7. According to Dr. Michael Stovsky, of Stovsky and Associates, the most common project problems are due to failure to manage project elements successfully: · Requirements are not clearly and accurately defined, and agreed upon by all concerned. · Resources are not adequately planned and allocated. · Threats to project success are not clearly detected, identified, and protected against. · Critical path analysis is omitted, or poorly executed. · The project's progress is not tracked adequately. · Quality management is not carried out well enough throughout the life of the project. · Too little data is collected, or data is ignored or poorly understood. Correcting flaws identified during software security audits is expensive and time consuming. Worse, vast resources are spent on containing and recovering from exploits. Fortunately, providing development staff with the knowledge and tools to avoid many of these pitfalls is easy and inexpensive. Related Links: David B. Stewart lists the Twenty-Five Most Common Mistakes in Software Development . In this paper, Dr. Michael P. Stovsky explores Common Mistakes in Software Project Management.
  • 8. 6. Given a particular process model, is there a set of tools(a development environment) to support it? In general, a process model usually begins as a philosophy of "who does what development when" rather than a rigid methodology complete with tools. For example, rapid application development (RAD) is an approach that can make use of existing development tools. In general, tools for supporting all or part of a process model tend to arrive later, if at all. Historically, development tools have focused on the code-building, code archive management, documentation, testing, and packaging parts ofthe process, sometimes offered as a suite. Such a suite is generally knownas an integrated development environment (IDE). A set of tools for managing or supporting a development project is generally known as a computer-assisted software environment (CASE). A number of companies offer products that support early stages of development such as requirements gathering, design prototyping, and data modeling. A number of these provide tools that support data modeling with the Unified Modeling Language. Overall, there is a trend toward providing all or most of the tools for a development project in a single product or related set of products. Today, the main code-building development environments or program suites come from Microsoft with its Visual Studio and Visual Studio .NET, providing support for Visual Basic, Visual C#, Visual C++, and Visual J#; Sun Microsystems with its Java 2 Enterprise Environment; and numerous software vendors such as Borland who repackage these environments with some value-added features. Recently, almost all providers of software development environments have added features that enable the software to be used on the Web. Related Links: Microsoft provides a case study of a company that created an accounting system with its VisualBasic .NET product and additional products from PDSA. The Caldera OpenLinux Workstation describes several different integrated development environments it provides for Linux and Unix systems. Knowledgestorm lists many products that describe themselves as integrated development environment products. Carnegie-Mellon Software Engineering Institute answers the question "What is a CASE Environment?"
  • 9. 7. How do you choose the "right" programming language for your project? For most projects, the right language is easy to choose. Your company may have standardized on a particular development environment and language (and you may have been hired because you were already familiar with the language). Or you may be updating or enhancing an existing program; it's almost always best to use the same language the existing program is written in. In some cases, however, someone will need to select the best (or, since the best may be somewhat arguable, at least an appropriate language). In somecases, you or your team of developers may need to know several languages fordifferent purposes. General truisms about programming languages are that:  Perl or a similar script language is most suitable for small tasks and sometimes acting as a program that goes between other, largerprograms.  Visual Basic is most suitable for relatively novice programmers and relatively simple programs.  Java, C++, or comparable languages like Python and Tcl aremost suitable for larger applications using object orientation as a designmodel.  C is most suitable for programs where efficiency and performance are the primary concern.  The appropriate assembler language is most suitable where the program is relatively short and high performance is critical. Where constraints permit, some programmers may favor one object-oriented language over another (for example, Java, C++, Python, or Tcl). A programmer with skills in C is likely to prefer C++, which combines the proceduraland other concepts and syntax of C with object-oriented concepts. Related Links: Outback Software compares three object-oriented languages: C++, Smalltalk, and Java. Kuro5hin compares three Visual Studio languages: C#, C++, and Java. Jason Voegele's table compares 21 features of nine pure or hybrid object-oriented languages, including Perl and Basic. The Open Directory Project offers a list of links relating to programming language comparisons.
  • 10. 8. What are some trends regarding the future of software development? Blogs - A growing number of big-name softwaredevelopers are finding they can make better software applications if theyshare information with potential customers from the start and incorporate customer feedback into development decisions. While developers of gamessoftware have used this method for years, business software makers are nowalso catching on and using blogs (Web logs) as an important part of the development process. Big-name support for independent software vendors (ISVs) - Big players like Microsoft, IBM, and Sun have recognized that they cannot fill every niche industry's software demands, so they have begun to activelyseek partnerships with small ISVs, in hopes that by encouraging ISVs to focuson nichy vertical industry applications, everyone will benefit. Component-based development - In this approach, softwareis developed in modules that are linked dynamically to construct a completeapplication. Charles Simonyi (creator of the WYSIWYG editor) believes thateventually, software development will become so modular that even lay-peoplewill be able to assemble components effectively to create customizedsoftware applications. Continued improvements in refactoring tools - Eric Raymond,a leading philosopher about program development, maintains that the conceptof refactoring is consistent with the idea of get-something-working-now-and-perfect-it-laterapproach long familiar to Unix and open source programmers. The idea is alsoembodied in the approach known as Extreme Programming. As software applicationsbecome larger, better refactoring tools will be required to maintain codebases and diagnose bugs. Outsourcing - Using this approach, software companies hire employees around the world to take advantage of time zone and labor/cost differences.Proponents say that in effect, software development teams now have a 24-hourwork day, and are able to provide fast turn-around. Detractors say that outsourcingparts of a project leads to sloppy coding and only works if there is a highdegree of coordination regarding modularized tasks, and above-average communicationwithin the team. Related Links:
  • 11. Rormer CNET developers Dan Seewer and Kevin Cobb discuss the future of software development. Charles Simonyi, creator of the WYSIWYG, is in the process of designing programming tools for the future that are so simple that even laypeople can use them. Developers are using blogs to get closer to their users. IBM DeveloperWorks is one of many free resources available for developers 10. Software Development Words-to-GoGlossary: Browse through instant messaging vocabulary in a handy printable glossary. 11. Self-assessment: After you've looked at the glossary, quiz yourself to see what you've learned about software development terms.
  • 12.  The designphase comesaftera goodunderstandingof customer’srequirements,thisphase definesthe elementsof asystem, the components,the securitylevel,modules,architectureand the differentinterfacesandtype of data thatgoesthrough the system.  A general systemdesigncanbe done witha penand a piece of paperto determine how the systemwill looklikeandhow itwill function,andthenadetailedandexpanded systemdesignisproduced, and it will meetall functional and technical requirements,logicallyandphysically.