software development l. grewe a definition of the software development: the application of a...
TRANSCRIPT
Software DevelopmentSoftware Development
L. GreweL. Grewe
A definition of the software A definition of the software development:development:
The application of a systemic, The application of a systemic, disciplined, quantifiable approach disciplined, quantifiable approach to development, operation, and to development, operation, and maintenance of softwaremaintenance of software..
IEEE Standard Computer Dictionary, 610, IEEE Standard Computer Dictionary, 610,
ISBN 1-55937-079-3ISBN 1-55937-079-3 Software Engineering: A Software Engineering: A Practitioner's Approach Practitioner's Approach
Why study Software Development?Why study Software Development?
UnderstandUnderstand• Development problemsDevelopment problems• Software FailuresSoftware Failures• Failure ImpactFailure Impact• Develop better softwareDevelop better software
Software EngineeringSoftware Engineering
is the application of a systematic, is the application of a systematic, disciplined, quantifiable approach to the disciplined, quantifiable approach to the development, operation, and maintenance development, operation, and maintenance of software of software
WikipediaWikipedia
The discipline of software engineering encompasses The discipline of software engineering encompasses knowledge, tools, and methods for defining software knowledge, tools, and methods for defining software requirements, and performing software design, requirements, and performing software design, computer programming, user interface design, computer programming, user interface design, software testing, and software maintenance tasks. software testing, and software maintenance tasks.
Who’s InvolvedWho’s Involved
CUSTOMER Sponsors systemdevelopment
USER
Usessystem
DEVELOPER
Buildssystem
Contractualobligation
$$$,needs
Software system
Needs
Software Development Lifecycle Software Development Lifecycle StepsSteps
PlanningPlanning AnalysisAnalysis DesignDesign DevelopmentDevelopment TestingTesting DeploymentDeployment MaintenanceMaintenance
Planning - Lifecycle StepPlanning - Lifecycle Step
establishing the plans for creating an information establishing the plans for creating an information system bysystem by
• Defining the system to be developed – based on Defining the system to be developed – based on the systems prioritized according to the the systems prioritized according to the organization’s critical success factor (CSF), a organization’s critical success factor (CSF), a system must be identified and chosen system must be identified and chosen
• the project scope – a high level of system the project scope – a high level of system requirements must be defined and put into a requirements must be defined and put into a project scope document project scope document
• Developing the project plan - – all details from Developing the project plan - – all details from tasks to be completed, who completed them and tasks to be completed, who completed them and when they were completed must be formalized when they were completed must be formalized
• Managing and monitoring the project plan – this Managing and monitoring the project plan – this allows the organization to stay on track, creating allows the organization to stay on track, creating project milestones and feature creeps which allow project milestones and feature creeps which allow you to add to the initial plan you to add to the initial plan
Analysis - Lifecycle StepAnalysis - Lifecycle Step
Developers with users collaborate to collect, Developers with users collaborate to collect, comprehend, and logistically formalize requirements comprehend, and logistically formalize requirements by by • Collaboratively discuss which tasks to Collaboratively discuss which tasks to
undertake to make the system most undertake to make the system most successfulsuccessful
• Define RequirementsDefine Requirements• Prioritize requirements Prioritize requirements
Design - Lifecycle StepDesign - Lifecycle Step
this is where the technical blueprint of the this is where the technical blueprint of the system is created by system is created by • Architecture: choosing design of Architecture: choosing design of
networking, hardware and other software networking, hardware and other software • Presentation Layer: GUI screen design,Presentation Layer: GUI screen design,• Data Layer: databases / data needs.Data Layer: databases / data needs.• Business Layer: Process design.Business Layer: Process design.• Test: possibly write test conditions (work Test: possibly write test conditions (work
with the end users to develop the test with the end users to develop the test scripts according to the system scripts according to the system requirements)requirements)
Development - Lifecycle StepDevelopment - Lifecycle Step
executing the design into a physical executing the design into a physical system by system by • Actual implementationActual implementation• Use good tools for layer/ component Use good tools for layer/ component
of system implmenting.of system implmenting.
Testing - Lifecycle StepTesting - Lifecycle Step
testing the developed system testing the developed system • (Q&A- quality and assurance) Test (Q&A- quality and assurance) Test
the system using the established test the system using the established test scripts – test conditions are scripts – test conditions are conducted by comparing expected conducted by comparing expected outcomes to actual outcomes. If outcomes to actual outcomes. If these differ, a bug is generated and a these differ, a bug is generated and a backtrack to the development stage backtrack to the development stage must occur. must occur.
Deployment - Lifecycle StepDeployment - Lifecycle Step the systems are placed and used in the the systems are placed and used in the
actual workforce and actual workforce and • The user manual is created The user manual is created • Training providedTraining provided
Maintenance - Lifecycle StepMaintenance - Lifecycle Step keeping the system up to date keeping the system up to date
• Help Help • RevisionsRevisions
Classic Life Cycle ModelsClassic Life Cycle Models Linear sequential (Waterfall)Linear sequential (Waterfall) PrototypingPrototyping Rapid Application Development (RAD) Rapid Application Development (RAD) Incremental (Block Release)Incremental (Block Release) SpiralSpiral Component AssemblyComponent Assembly Concurrent DevelopmentConcurrent Development Fourth Generation techniquesFourth Generation techniques
SO……TECHNIQUES?SO……TECHNIQUES?
A number of Lifecycle Models exist.A number of Lifecycle Models exist.
Waterfall ModelWaterfall Model
REQUIREMENTSANALYSIS
SYSTEMDESIGN
PROGRAMDESIGN
CODING
UNIT & INTE-GRATION TESTING
SYSTEMTESTING
ACCEPTANCETESTING OPERATION
& MAINTENANCE
Waterfall Model DescribedWaterfall Model Described
ANALOGY: Imagine a waterfall on the cliff of a steep mountain. Once ANALOGY: Imagine a waterfall on the cliff of a steep mountain. Once the water has flowed over the edge of the cliff and has begun its the water has flowed over the edge of the cliff and has begun its journey down the side of the mountain, it cannot turn back. journey down the side of the mountain, it cannot turn back.
• Once a phase of development is completed, the development proceeds to Once a phase of development is completed, the development proceeds to the next phase and there is no turning back. the next phase and there is no turning back.
ADVANTAGE:ADVANTAGE:• departmentalization and managerial control.departmentalization and managerial control.• schedule can be set with deadlines for each stage of development and a schedule can be set with deadlines for each stage of development and a
product can proceed step –by- step.product can proceed step –by- step.• Each phase of development proceeds in strict order, without any Each phase of development proceeds in strict order, without any
overlapping or iterative steps. overlapping or iterative steps. DISADVANTAGE:DISADVANTAGE:
• Does not allow for much reflection or revision.Does not allow for much reflection or revision.
PrototypingPrototyping quickly put together a working model quickly put together a working model
illustrate ideas or features and gather early user feedback. illustrate ideas or features and gather early user feedback.
More prototypes are made iteratively and incrementallyMore prototypes are made iteratively and incrementally
When the prototype is sufficiently refined and meets the When the prototype is sufficiently refined and meets the functionality, robustness, manufacturability and other functionality, robustness, manufacturability and other design goals, the product is ready for production. design goals, the product is ready for production.
ADVANTAGES:ADVANTAGES:it is believed to reduce project risk and cost.it is believed to reduce project risk and cost.
Prototyping CyclesPrototyping Cycles
LIST OFREVISIONS
LIST OFREVISIONS
LIST OFREVISIONS
PROTOTYPEREQUIREMENTS
PROTOTYPEDESIGN
PROTOTYPESYSTEM
TEST
DELIVEREDSYSTEMSYSTEM
REQUIREMENTS(sometimes informal
or incomplete)
reviseprototype
user/customer
review
Rapid Application Development Rapid Application Development (RAD) (RAD)
Response to fact that non-agile Response to fact that non-agile processes like waterfall TAKE LONG processes like waterfall TAKE LONG TIME.TIME.
involves iterative development, and involves iterative development, and the construction of prototypes. the construction of prototypes.
involves compromises in usability, involves compromises in usability, features, and/or execution speed. features, and/or execution speed.
development cycle expedited development cycle expedited ….thus, products developed faster.….thus, products developed faster.
RAD….how is the rapid done?RAD….how is the rapid done?
CASE Tools:CASE Tools: • use of Computer Aided Software use of Computer Aided Software
Engineering or CASE tools, which focus Engineering or CASE tools, which focus on converting requirements to code as on converting requirements to code as quickly as possiblequickly as possible
Time Boxing:Time Boxing:• features are pushed out to future features are pushed out to future
releases in order to complete a feature releases in order to complete a feature light version quickly. light version quickly.
RADRAD ADVANTAGES:ADVANTAGES:
• Increased speed of development through methods Increased speed of development through methods including rapid prototyping, virtualization of system including rapid prototyping, virtualization of system related routines, and other techniques. related routines, and other techniques.
• DecreasedDecreased end-user functionality (arising from end-user functionality (arising from narrower design focus), hence reduced complexity narrower design focus), hence reduced complexity
• Larger emphasis on simplicity and usability of GUI Larger emphasis on simplicity and usability of GUI design design
DISADVANTAGESDISADVANTAGES• Reduced Scalability, and reduced features when a RAD Reduced Scalability, and reduced features when a RAD
developed application starts as a prototype and developed application starts as a prototype and evolves into a finished application evolves into a finished application
• Reduced features occur when features are pushed to Reduced features occur when features are pushed to later versions in order to finish a release in a short later versions in order to finish a release in a short amount of timeamount of time
• The data needed should already be existing The data needed should already be existing
Spiral Model DescribedSpiral Model Described
combining elements of both design and combining elements of both design and prototyping-in-stages, in an effort to prototyping-in-stages, in an effort to combine advantages of top-down and combine advantages of top-down and bottom-up concepts. bottom-up concepts.
combines the features of the prototyping combines the features of the prototyping model and the waterfall model. model and the waterfall model.
intended for large, expensive and intended for large, expensive and complicated projects.complicated projects.
Spiral ModelSpiral Model
1.1. System RequirementsSystem Requirements2.2. Preliminary DesignPreliminary Design3.3. First Prototype doneFirst Prototype done4.4. Evaluations, redefining of requirements and Evaluations, redefining of requirements and
redesignredesign5.5. 22ndnd Prototype Prototype6.6. THE SPIRAL…..2THE SPIRAL…..2ndnd evaluation, redesign and so evaluation, redesign and so
on until customer satisfied.on until customer satisfied.7.7. The final system is thoroughly evaluated and The final system is thoroughly evaluated and
tested. Routine maintenance is carried out on a tested. Routine maintenance is carried out on a continuing basis to prevent large-scale failures continuing basis to prevent large-scale failures and to minimize downtime. and to minimize downtime.
Spiral ModelSpiral Model
Start Axis
Customer Communication
Planning
Risk Analysis
Development
Integration
Customer Evaluation
……..now some more models..now some more models
Extreme Programming (XP)Extreme Programming (XP) Agile methodAgile method early 2000's, the most popular of which is early 2000's, the most popular of which is
Extreme Programming. Extreme Programming. Kent Beck wrote the first book on the Kent Beck wrote the first book on the
topic in 1999 and expanded it with a topic in 1999 and expanded it with a second edition in 2005. second edition in 2005.
Extreme programming is a somewhat Extreme programming is a somewhat controversial methodology:controversial methodology:1.1. Deemphasizes formalized requirements Deemphasizes formalized requirements
gatheringgathering2.2. Short development cycles Short development cycles 3.3. Constant User feedbackConstant User feedback
Extreme Programming – The Core Extreme Programming – The Core IdeaIdea
prescribing a set of daily stakeholder prescribing a set of daily stakeholder practices that embody and encourage practices that embody and encourage particular XP values. particular XP values.
traditional software engineering practices traditional software engineering practices taken to so-called "extreme" levelstaken to so-called "extreme" levels
Hopes to be more responsive to customer Hopes to be more responsive to customer needs ("agile") needs ("agile")
WikipediaWikipedia
Extreme Programming ValuesExtreme Programming Values
Communication Communication Simplicity Simplicity Feedback Feedback Courage Courage Respect Respect
Extreme Programming – a Extreme Programming – a techniques (e.g. of controversy)techniques (e.g. of controversy)
Pair programmingPair programming • 2 programmers work together at one keyboard.2 programmers work together at one keyboard.• 1 types in code the 2nd reviews each line of code.1 types in code the 2nd reviews each line of code.
Reviewer also considers the strategic direction of Reviewer also considers the strategic direction of the work, coming up with ideas for improvements the work, coming up with ideas for improvements and likely future problems to address. and likely future problems to address.
This frees the coder to focus all of his or her This frees the coder to focus all of his or her attention on the "tactical" aspects of completing attention on the "tactical" aspects of completing the current task, using the observer as a safety the current task, using the observer as a safety net and guide.net and guide.
……..now some more models..now some more models
Multiple BuildsMultiple 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
Waterfall with PrototypingWaterfall with Prototyping
REQUIREMENTSANALYSIS
SYSTEMDESIGN
PROGRAMDESIGN
CODING
UNIT & INTE-GRATION TESTING
SYSTEMTESTING
ACCEPTANCETESTING OPERATION
& MAINTENANCE
PROTOTYPING
Verify
Validate
……..some things to consider about ..some things to consider about stagesstages
Stage 1: Stage 1: Defining the problemDefining the problem
What Happens in this Stage:What Happens in this Stage:To Identify and understand the problem you To Identify and understand the problem you
must look at the:must look at the: Needs of Needs of UsersUsers and and SystemSystem Objectives that the solution is to meet Objectives that the solution is to meet Boundaries of solution Boundaries of solution
Feasibility Study
Design Specifications
User Requirements System Requirements
Modelling System
The The design specificationdesign specification helps you form the helps you form the basis for the basis for the planningplanning and and designingdesigning the the final solution. final solution.
You will use this specification You will use this specification throughout the throughout the system developmentsystem development to help plan, build and to help plan, build and test the final solution.test the final solution.
The Design specifications give a workable The Design specifications give a workable framework to aid development of the framework to aid development of the system (and further understanding of the system (and further understanding of the system). system).
Stage 1:Stage 1: Design specification Design specification
A quote on the problem of ill-defined A quote on the problem of ill-defined system requirements:system requirements:
"the creation of software requirements is "the creation of software requirements is reminiscent of hiking in a fog that is reminiscent of hiking in a fog that is gradually lifting” gradually lifting”
Software Productivity Research Software Productivity Research Inc (1996)Inc (1996)
Stage 1:Stage 1:
Stage 1:Stage 1: Design specifications Design specifications
You need to consider the specification for You need to consider the specification for the USER and the System (Developer's) the USER and the System (Developer's) point of view.point of view.
Developer:Developer: Overall design specifications Overall design specifications User:User: Interface design specifications Interface design specifications
Stage 1:Stage 1: Activity:Activity:
Developer's perspectiveDeveloper's perspective• Algorithms,Algorithms,• VariablesVariables• Software design approachSoftware design approach• Modelling the systemModelling the system• DocumentationDocumentation
User's perspectiveUser's perspective• Screen designScreen design• Ergonomic issuesErgonomic issues• Appropriate iconsAppropriate icons• Appropriate screen messagesAppropriate screen messages• Social and ethical issuesSocial and ethical issues• Relevant data formats for displayRelevant data formats for display
Stage 1:Stage 1: System Documentation: System Documentation: Modelling different aspects of the SystemModelling different aspects of the System
Modelling tools are part of the documentation to Modelling tools are part of the documentation to be interpreted by developers, maintainers and be interpreted by developers, maintainers and users, and are used to represent a system. users, and are used to represent a system.
They use diagrammatic methods and include:They use diagrammatic methods and include: Input Process Output (IPO) diagramsInput Process Output (IPO) diagrams System FlowchartsSystem Flowcharts StoryboardsStoryboards Screen designsScreen designs Dataflow diagramsDataflow diagrams PrototypePrototype
Stage 1:Stage 1: Questions: Questions:
Q 1: What are the aims of the first stage of Q 1: What are the aims of the first stage of the development cycle?the development cycle?
Q 2: Why is the problem specification so Q 2: Why is the problem specification so important in this stage?important in this stage?
Q 3: Why are modelling tools used in this Q 3: Why are modelling tools used in this stage?stage?
Stage 2:Stage 2: Planning and Design of Planning and Design of Software Solution Software Solution
Documentation and Models developed in Documentation and Models developed in previous stage are used to give an previous stage are used to give an overall overall view of system designview of system design and help in the and help in the development of data structures and logicdevelopment of data structures and logic necessary to fully develop each module.necessary to fully develop each module.
Stage 2:Stage 2: Planning and Design of Planning and Design of Software Solution Software Solution
What Happens in this Stage: What Happens in this Stage:
The Planning stage consists of designing a solution. The Planning stage consists of designing a solution. So in this stage you need to:So in this stage you need to:
1: Identify all inputs, outputs and processes1: Identify all inputs, outputs and processes
2: Select and describe relevant Data Structures 2: Select and describe relevant Data Structures
3: Create the Algorithm for final solution. 3: Create the Algorithm for final solution.
Stage 2 :Stage 2 :
Use structured programming techniques of Use structured programming techniques of writing programs. writing programs.
You need to define your system's Data You need to define your system's Data Structures and files Structures and files
You need to be able to recognize the logic in You need to be able to recognize the logic in Standard AlgorithmsStandard Algorithms
You need to test your algorithm You need to test your algorithm Documentation tools used to represent the Documentation tools used to represent the
overall software solution in diagrammatic form overall software solution in diagrammatic form Chose your programming language wisely Chose your programming language wisely
Stage 2 Stage 2 : Questions:: Questions: Q 1:Q 1: Which Documentation tools in the above table are used Which Documentation tools in the above table are used
in "stage one" of the SDC to help you in "stage one" of the SDC to help you understand and understand and "model" the new system"model" the new system. .
Q 2:Q 2: Which Documentation tools in the above table are used Which Documentation tools in the above table are used in "stage two" of the SDC to help you in "stage two" of the SDC to help you Represent a Solution Represent a Solution to the problemto the problem..
Q 3:Q 3: What is the different between customised and standard What is the different between customised and standard algorithms?algorithms?
Q 4:Q 4: What information does a data dictionary hold? What information does a data dictionary hold? Q 5: Q 5: What is the term used for the ‘computer software’ that What is the term used for the ‘computer software’ that
the development team uses to help with analysis the development team uses to help with analysis documentation and development? documentation and development?
Q 6: Q 6: Say the Planning stage is complete and the Say the Planning stage is complete and the Programmer is about to start to code. Select any two of the Programmer is about to start to code. Select any two of the Representation Tools below and describe how they both can Representation Tools below and describe how they both can complement each other to give the programmer a better complement each other to give the programmer a better description of the systemdescription of the system
Data dictionary, structure diagram, algorithm, IPO chartData dictionary, structure diagram, algorithm, IPO chart
Stage 3Stage 3:: Implementation of Software Implementation of Software
SolutionSolution What happens in this stage:What happens in this stage: Source code written and tested., Ensure effective Source code written and tested., Ensure effective
user interface user interface
Stage 3Stage 3::
Use Use toolstools and and techniquestechniques that will help correct that will help correct and detect errors. and detect errors.
Understand the Type of errors :Understand the Type of errors :
Syntax, Logic, Run-time Syntax, Logic, Run-time Consider the Hardware and software requirement Consider the Hardware and software requirement
of new software. of new software.
Stage 3:Stage 3: QuestionsQuestions
Q 1: State one documentation prepared in this Q 1: State one documentation prepared in this stage and describe why it is important AND who stage and describe why it is important AND who
is it important for?is it important for?
Stage 4:Stage 4: Testing and Evaluation of Testing and Evaluation of Software Solution Software Solution
What happens in this stage:What happens in this stage: Verify program solution using test data both at Verify program solution using test data both at
program and system level. program and system level. Testing and Evaluation is integral to all stages.Testing and Evaluation is integral to all stages. Test that the Systems original “System Test that the Systems original “System
Requirements and Objectives” are being met.Requirements and Objectives” are being met. Are we doing the “RIGHT JOB?”Are we doing the “RIGHT JOB?” Are we doing the “JOB RIGHT?”Are we doing the “JOB RIGHT?”
Stage 4:Stage 4: Testing and Evaluation of Testing and Evaluation of
Software Solution Software Solution To ensure a quality product testing and To ensure a quality product testing and
evaluation is done.evaluation is done.
Quote: Quote: “definitions of software testing, however, “definitions of software testing, however, boil down to essentially the same thing: software boil down to essentially the same thing: software testing is the process of executing software in a testing is the process of executing software in a controlled manner, in order to answer the controlled manner, in order to answer the question ”Does the software behave as question ”Does the software behave as specified?” .” specified?” .”
Stage 4:Stage 4: Questions Questions
Q 1: What is the result from stage one of the SDC Q 1: What is the result from stage one of the SDC that is used in this stage to help rest the solution? that is used in this stage to help rest the solution?
Stage 5:Stage 5: Maintenance of Software SolutionMaintenance of Software Solution
What happens in this stage:What happens in this stage: On-going process of corrections and refinement.On-going process of corrections and refinement. Modifications to code, macro, and scripts are often Modifications to code, macro, and scripts are often
required. These modifications do not need to be made by required. These modifications do not need to be made by original developers.original developers.
In these situations, the original documentation is very In these situations, the original documentation is very important.important.
You need to keep in mind the ethical issues associated with You need to keep in mind the ethical issues associated with assessing and modifying the code of others.assessing and modifying the code of others.
For all Changes:For all Changes: Test changesTest changes Document changesDocument changes Modify present documentationModify present documentation