Fundamental Tactics for Solving Problems Prepared by Almira Cattleya L. Cariño.
CHAPTER ONE Problem Solving © Prepared By: Razif Razali1.
-
Upload
eileen-ferguson -
Category
Documents
-
view
223 -
download
0
Transcript of CHAPTER ONE Problem Solving © Prepared By: Razif Razali1.
CHAPTER ONECHAPTER ONEProblem Solving
© Prepared By:Razif Razali 1
“ Do Something. If it doesn’t work, do something else. No idea is too crazy”
- Jim Hightower
© Prepared By:Razif Razali
2
OBJECTIVESOBJECTIVES
To list types of software development life cycle (SDLC).
To understand the use of SDLC.To differentiate between types of
SDLC approach.To have a view the use of
programming tool
© Prepared By:Razif Razali
3
What is Software?What is Software?
Instructions (computer programs) that when executed provide desired function and performance
Data structures enable the programs to adequately manipulate information
Documents that describe the operation and use of the program
Software engineering : A Practitioner's Approach
A definition of the software development:
The application of a systemic, disciplined, quantifiable approach to development, operation, and maintenance of software.
EEE Standard Computer Dictionary, 610,
ISBN 1-55937-079-3 Software Engineering: A Practitioner's Approach
Who’s Who
CUSTOMER Sponsors systemdevelopment
USER
Usessystem
DEVELOPER
Buildssystem
Contractualobligation
$$$,needs
Software system
Needs
What is the Software Life Cycle?
Software Engineering is a series of steps for producing software.
Methods, procedures, and tools are defined.
Engineering discipline
Metrics and measures - prediction
Classic Life Cycle ModelsLinear sequential (Waterfall)PrototypingRapid Application Development
(RAD) Incremental (Block Release)SpiralComponent AssemblyConcurrent DevelopmentFourth Generation techniques
Waterfall Model
REQUIREMENTSANALYSIS
SYSTEMDESIGN
PROGRAMDESIGN
CODING
UNIT & INTE-GRATION TESTING
SYSTEMTESTING
ACCEPTANCETESTING OPERATION
& MAINTENANCE
Waterfall Strengths
Easy to understand, easy to useProvides structure to inexperienced staffMilestones are well understoodSets requirements stabilityGood for management control (plan, staff,
track)Works well when quality is more important
than cost or schedule
Waterfall Deficiencies
All requirements must be known upfrontDeliverables created for each phase are
considered frozen – inhibits flexibilityCan give a false impression of progressDoes not reflect problem-solving nature of
software development – iterations of phases
Integration is one big bang at the endLittle opportunity for customer to preview
the system (until it may be too late)
When to use the Waterfall Model?
Requirements are very well knownProduct definition is stableTechnology is understoodNew version of an existing productPorting an existing product to a new
platform.
“Interactive” (Chaotic) Model
REQUIREMENTSANALYSIS
SYSTEMDESIGN
PROGRAMDESIGN
PROGRAMIMPLEMENTATION
UNITTESTING
INTEGRATIONTESTING
SYSTEMTESTING
DELIVERY
MAINTENANCE
Waterfall with PrototypingWaterfall with Prototyping
REQUIREMENTSANALYSIS
SYSTEMDESIGN
PROGRAMDESIGN
CODING
UNIT & INTE-GRATION TESTING
SYSTEMTESTING
ACCEPTANCETESTING OPERATION
& MAINTENANCE
PROTOTYPING
Verify
Validate
Prototyping Cycles
LIST OFREVISIONS
LIST OFREVISIONS
LIST OFREVISIONS
PROTOTYPEREQUIREMENTS
PROTOTYPEDESIGN
PROTOTYPESYSTEM
TEST
DELIVEREDSYSTEMSYSTEM
REQUIREMENTS(sometimes informal
or incomplete)
reviseprototype
user/customer
review
Structured Evolutionary Prototyping Model
Developers build a prototype during the requirements phase
Prototype is evaluated by end usersUsers give corrective feedback Developers further refine the prototypeWhen the user is satisfied, the
prototype code is brought up to the standards needed for a final product.
Multiple Builds
Development systems
Production systems
DEV
ELO
PER
SU
SER
S
Build Release 1
Use Release 1
Build Release 2
Use Release 2
Build Release 3
Use Release 3
Time
Spiral Model
Start Axis
Customer Communication
Planning
Risk Analysis
Development
Integration
Customer Evaluation
Spiral Model Strengths
Provides early indication of insurmountable risks, without much cost
Users see the system early because of rapid prototyping tools
Critical high-risk functions are developed firstThe design does not have to be perfect Users can be closely tied to all lifecycle stepsEarly and frequent feedback from usersCumulative costs assessed frequently
Spiral Model Weaknesses
Time spent for evaluating risks too large for small or low-risk projects
Time spent planning, resetting objectives, doing risk analysis and prototyping may be excessive
The model is complex Risk assessment expertise is requiredSpiral may continue indefinitelyDevelopers must be reassigned during non-
development phase activitiesMay be hard to define objective, verifiable
milestones that indicate readiness to proceed through the next iteration
Rapid Application Development (RAD)
A good model for small VB systemsThe IDE is designed to allow us to
develop the small system.
Rapid Application Model (RAD)Rapid Application Model (RAD)
Requirements planning phase (a workshop utilizing structured discussion of business problems)
User description phase – automated tools capture information from users
Construction phase – productivity tools, such as code generators, screen generators, etc. inside a time-box. (“Do until done”)
Cutover phase -- installation of the system, user acceptance testing and user training
RAD Strengths
Reduced cycle time and improved productivity with fewer people means lower costs
Time-box approach mitigates cost and schedule risk
Customer involved throughout the complete cycle minimizes risk of not achieving customer satisfaction and business needs
Focus moves from documentation to code (WYSIWYG).
Uses modeling concepts to capture information about business, data, and processes.
RAD Weaknesses
Accelerated development process must give quick responses to the user
Risk of never achieving closure Hard to use with legacy systemsRequires a system that can be modularizedDevelopers and customers must be committed to
rapid-fire activities in an abbreviated time frame.
“You’ve got to be very careful if you don’t know where you’re going, because you might not get there.”
- Yogi Berra
© Prepared By:Razif Razali
25
PROGRAMMING TOOL
A programming tool or software development tool is a program or application that software developers use to create, debug, maintain, or otherwise support other programs and applications.
The term usually refers to relatively simple programs that can be combined together to accomplish a task, much as one might use multiple hand tools to fix a physical object.
© Prepared By:Razif Razali
26
CATEGORIES
Software development tools can be roughly divided into the following categories:◦ performance analysis tools◦ debugging tools◦ static analysis and formal verification tools◦ correctness checking tools◦ memory usage tools◦ application build tools◦ integrated development environment
© Prepared By:Razif Razali
27
LIST OF TOOLLIST OF TOOL
Compilation and linking tools: GNU toolchain, Microsoft Visual Studio, CodeWarrior, ICC
Scripting languages: Awk, Perl, Python, REXX, Ruby, Shell, Tcl Search: grep, find
© Prepared By:Razif Razali
28
SUMMARY
Types of SDLC approach.The differences between the
approaches.The use of programming tools
© Prepared By:Razif Razali
29
END OF CHAPTER ONEEND OF CHAPTER ONE
© Prepared By:Razif Razali
30