560 likes | 575 Vues
Learn about the systematic and disciplined approach to software development, including planning, analysis, design, development, testing, deployment, and maintenance. Explore different lifecycle models and understand the importance of each step.
E N D
CS3340: Software Development L. Grewe
A definition of the software development: • The application of a systemic, disciplined, quantifiable approach to development, operation, and maintenance of software. • IEEE Standard Computer Dictionary, 610, ISBN 1-55937-079-3Software Engineering: A Practitioner's Approach
Why study Software Development? • Understand • Development problems • Software Failures • Failure Impact • Develop better software
Software Engineering • is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software • Wikipedia • The discipline of software engineering encompasses knowledge, tools, and methods for defining software requirements, and performing software design, computer programming, user interface design, software testing, and software maintenance tasks.
Sponsors system development CUSTOMER $$$, needs DEVELOPER Contractual obligation USER Uses system Builds system Needs Software system Who’s Involved
Software Development Lifecycle Steps • Planning • Analysis • Design • Development • Testing • Deployment • Maintenance
Planning - Lifecycle Step establishing the plans for creating an information system by • Defining the system to be developed – based on the systems prioritized according to the organization’s critical success factor (CSF), a system must be identified and chosen • the project scope – a high level of system requirements must be defined and put into a project scope document • Developing the project plan - – all details from tasks to be completed, who completed them and when they were completed must be formalized • Managing and monitoring the project plan – this allows the organization to stay on track, creating project milestones and feature creeps which allow you to add to the initial plan
Analysis - Lifecycle Step • Developers with users collaborate to collect, comprehend, and logistically formalize requirements by • Collaboratively discuss which tasks to undertake to make the system most successful • Define Requirements • Prioritize requirements
Design - Lifecycle Step • this is where the technical blueprint of the system is created by • Architecture: choosing design of networking, hardware and other software • Presentation Layer: GUI screen design, • Data Layer: databases / data needs. • Business Layer: Process design. • Test: possibly write test conditions (work with the end users to develop the test scripts according to the system requirements)
Development - Lifecycle Step • executing the design into a physical system by • Actual implementation • Use good tools for layer/ component of system implmenting. Refactoring • The system should be as simple as possible. • Eliminate all duplicate code. • Adding code can make it more complex than necessary. • Refactor after adding code. • If it is easier to refactor before you add code, refactorbefore you add code.
Testing - Lifecycle Step • testing the developed system • (Q&A- quality and assurance) Test the system using the established test scripts – test conditions are conducted by comparing expected outcomes to actual outcomes. If these differ, a bug is generated and a backtrack to the development stage must occur.
Deployment - Lifecycle Step • the systems are placed and used in the actual workforce and • The user manual is created • Training provided
Maintenance - Lifecycle Step • keeping the system up to date • Help • Revisions
Classic Life Cycle Models • Linear sequential (Waterfall) • Prototyping • Rapid Application Development (RAD) • Incremental (Block Release) • Spiral • Component Assembly • Concurrent Development • Fourth Generation techniques
SO……TECHNIQUES? • A number of Lifecycle Models exist.
REQUIREMENTS ANALYSIS SYSTEM DESIGN PROGRAM DESIGN CODING UNIT & INTE- GRATION TESTING SYSTEM TESTING ACCEPTANCE TESTING OPERATION & MAINTENANCE Waterfall Model
Waterfall Model Described • 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 journey down the side of the mountain, it cannot turn back. • Once a phase of development is completed, the development proceeds to the next phase and there is no turning back. • ADVANTAGE: • departmentalization and managerial control. • schedule can be set with deadlines for each stage of development and a product can proceed step –by- step. • Each phase of development proceeds in strict order, without any overlapping or iterative steps. • DISADVANTAGE: • Does not allow for much reflection or revision.
Prototyping • quickly put together a working model • illustrate ideas or features and gather early user feedback. • More prototypes are made iteratively and incrementally • When the prototype is sufficiently refined and meets the functionality, robustness, manufacturability and other design goals, the product is ready for production. • ADVANTAGES:it is believed to reduce project risk and cost.
LIST OF REVISIONS LIST OF REVISIONS LIST OF REVISIONS user/ customer review revise prototype PROTOTYPE REQUIREMENTS PROTOTYPE DESIGN PROTOTYPE SYSTEM TEST DELIVERED SYSTEM SYSTEM REQUIREMENTS (sometimes informal or incomplete) Prototyping Cycles
Rapid Application Development (RAD) • Response to fact that non-agile processes like waterfall TAKE LONG TIME. • involves iterative development, and the construction of prototypes. • involves compromises in usability, features, and/or execution speed. • development cycle expedited ….thus, products developed faster.
RAD….how is the rapid done? • CASE Tools: • use of Computer Aided Software Engineering or CASE tools, which focus on converting requirements to code as quickly as possible • Time Boxing: • features are pushed out to future releases in order to complete a feature light version quickly.
RAD • ADVANTAGES: • Increased speed of development through methods including rapid prototyping, virtualization of system related routines, and other techniques. • Decreased end-user functionality (arising from narrower design focus), hence reduced complexity • Larger emphasis on simplicity and usability of GUI design • DISADVANTAGES • Reduced Scalability, and reduced features when a RAD developed application starts as a prototype and evolves into a finished application • Reduced features occur when features are pushed to later versions in order to finish a release in a short amount of time • The data needed should already be existing
Spiral Model Described • combining elements of both design and prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts. • combines the features of the prototyping model and the waterfall model. • intended for large, expensive and complicated projects.
Spiral Model • System Requirements • Preliminary Design • First Prototype done • Evaluations, redefining of requirements and redesign • 2nd Prototype • THE SPIRAL…..2nd evaluation, redesign and so on until customer satisfied. • The final system is thoroughly evaluated and tested. Routine maintenance is carried out on a continuing basis to prevent large-scale failures and to minimize downtime.
Spiral Model Planning Risk Analysis Customer Communication Start Axis Customer Evaluation Development Integration
Extreme Programming (XP) • Agile method • early 2000's, the most popular of which is Extreme Programming. • Kent Beck wrote the first book on the topic in 1999 and expanded it with a second edition in 2005. • Extreme programming is a somewhat controversial methodology: • Deemphasizes formalized requirements gathering • Short development cycles • Constant User feedback
Extreme Programming – The Core Idea • prescribing a set of daily stakeholder practices that embody and encourage particular XP values. • traditional software engineering practices taken to so-called "extreme" levels • Hopes to be more responsive to customer needs ("agile") • Wikipedia
Extreme Programming Values • Communication • Simplicity • Feedback • Courage • Respect
Extreme Programming – a techniques (e.g. of controversy) • Pair programming • 2 programmers work together at one keyboard. • 1 types in code the 2nd reviews each line of code. • Reviewer also considers the strategic direction of the work, coming up with ideas for improvements and likely future problems to address. • This frees the coder to focus all of his or her attention on the "tactical" aspects of completing the current task, using the observer as a safety net and guide.
Use Release 1 Use Release 2 Use Release 3 Multiple Builds Development systems DEVELOPERS Build Release 1 Build Release 2 Build Release 3 Time USERS Production systems
REQUIREMENTS ANALYSIS Validate SYSTEM DESIGN Verify PROGRAM DESIGN CODING PROTOTYPING UNIT & INTE- GRATION TESTING SYSTEM TESTING ACCEPTANCE TESTING OPERATION & MAINTENANCE Waterfall with Prototyping
…..some things to consider about stages REGARDLESS of the modeling/SW Engineering techniques used.
Stage 1: Defining the problem What Happens in this Stage: To Identify and understand the problem you must look at the: • Needs of Users and System • Objectives that the solution is to meet • Boundaries of solution Feasibility Study Modelling System Design Specifications User Requirements System Requirements
Stage 1: Design specification • The design specification helps you form the basis for the planning and designing the final solution. • You will use this specification throughout the system development to help plan, build and test the final solution. • The Design specifications give a workable framework to aid development of the system (and further understanding of the system).
Stage 1: • A quote on the problem of ill-defined system requirements: • "the creation of software requirements is reminiscent of hiking in a fog that is gradually lifting” Software Productivity Research Inc (1996)
Stage 1: Design specifications • You need to consider the specification for the USER and the System (Developer's) point of view. • Developer: Overall design specifications • User: Interface design specifications
Stage 1:Activity: • Developer's perspective • Algorithms, • Variables • Software design approach • Modelling the system • Documentation • User's perspective • Screen design • Ergonomic issues • Appropriate icons • Appropriate screen messages • Social and ethical issues • Relevant data formats for display
Stage 1:System Documentation: Modelling different aspects of the System • Modelling tools are part of the documentation to be interpreted by developers, maintainers and users, and are used to represent a system. • They use diagrammatic methods and include: • · Input Process Output (IPO) diagrams • · System Flowcharts • · Storyboards • · Screen designs • · Dataflow diagrams • · Prototype
Stage 1: Questions: • Q 1: What are the aims of the first stage of the development cycle? • Q 2: Why is the problem specification so important in this stage? • Q 3: Why are modelling tools used in this stage?
Stage 1: Questions: • Q 1: What are the aims of the first stage of the development cycle? • Understanding and defining problem and documenting related initial design • Q 2: Why is the problem specification so important in this stage? • If you are solving the WRONG problem, your system will not work • Q 3: Why are modelling tools used in this stage? • “A picture is worth a 1000 words”, pictures can more clearly convey ideas, some tools can take pictures-> code
Stage 2:Planning and Design of Software Solution • Documentation and Models developed in previous stage are used to give an overall view of system design and help in the development of data structures and logic necessary to fully develop each module.
Stage 2:Planning and Design of Software Solution What Happens in this Stage: The Planning stage consists of designing a solution. So in this stage you need to: 1: Identify all inputs, outputs and processes 2: Select and describe relevant Data Structures 3: Create the Algorithm for final solution.
Stage 2 : • Use structured programming techniques of writing programs. • You need to define your system's Data Structures and files • You need to be able to recognize the logic in Standard Algorithms • You need to test your algorithm • Documentation tools used to represent the overall software solution in diagrammatic form • Chose your programming language wisely
Stage 3:Implementation of Software Solution What happens in this stage: • Source code written and tested., Ensure effective user interface
Stage 3: • Use tools and techniques that will help correct and detect errors. • Understand the Type of errors : Syntax, Logic, Run-time • Consider the Hardware and software requirement of new software.
Stage 4: Testing and Evaluation of Software Solution What happens in this stage: • Verify program solution using test data both at program and system level. • Testing and Evaluation is integral to all stages. • Test that the Systems original “System Requirements and Objectives” are being met. • Are we doing the “RIGHT JOB?” • Are we doing the “JOB RIGHT?”
Stage 4: Testing and Evaluation of Software Solution • To ensure a quality product testing and evaluation is done. • Quote: “definitions of software testing, however, boil down to essentially the same thing: software testing is the process of executing software in a controlled manner, in order to answer the question ”Does the software behave as specified?” .”
Stage 5:Maintenance of Software Solution What happens in this stage: • On-going process of corrections and refinement. • Modifications to code, macro, and scripts are often required. These modifications do not need to be made by original developers. • In these situations, the original documentation is very important. • You need to keep in mind the ethical issues associated with assessing and modifying the code of others. • For all Changes: • ·Test changes • ·Document changes • Modify present documentation