1 / 18

Software Development Activities, Processes, Techniques & Assessment

Software Development Activities, Processes, Techniques & Assessment. Software Development Activities : Req. Processing, Architecting, Designing, Coding, Testing, Integrating, etc. Software Development Processes Waterfall Spiral Prototyping : Rapid & Evolutionary Iterative Agile

Download Presentation

Software Development Activities, Processes, Techniques & Assessment

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Development Activities,Processes,Techniques & Assessment • Software Development Activities: Req. Processing, Architecting, Designing, Coding, Testing, Integrating, etc. • Software Development Processes • Waterfall • Spiral • Prototyping : Rapid & Evolutionary • Iterative • Agile • Software Development Techniques and Methodologies • Structured Programming, Functional Decomposition, Entity-Relationship analysis • Object Oriented Programming • Clean Room set of techniques (formal specification, formal design and verification, statistical testing, quality modeling) • Defect Prevention set of techniques (root cause analysis, reviews & formal inspections, implementing preventive actions) • Agile Methodologies • Assessments: • SEI’s Capability Maturity Model (CMM/CMMI) • Software Productivity Research (SPR) • Malcolm Baldrige National Quality Award (MBNQA) • ISO 9000

  2. Software Development Activities • “Direct” Development Activities (Pre-Release): • Requirement Gathering and Analysis (of all deliverables) • Design and Specifications • Implementation (of code, test cases, documentation, help, etc.) • Unit and Functional Test • Component Test • Regression Test and System Test • Packaging and Release • Customer Alpha and Beta Tests • “Direct” Development Activities (Post-Release): • Problem Identification or “debugging” (for fixing bugs) • Problem Tracking (for managing bug fixes) • (same activities as above ---- for multiple releases of product) • Special Package and Release for Emergency Fixes and releases

  3. Supporting Software Development Activities • “Indirect” Activities that Support Development : • Reviews and Inspections (may be considered “direct” like testing activity) • Test Scaffolding • Estimation and Projection • Status Management & Reports (big area) • Change Control • Configuration Management • Quality Assurance • Customer Satisfaction Survey and Analysis • Measurements and Analysis • Development Tools: • All phases of Development and post-release Support tool • Version and configuration management tool supports indirect activities: • All types of Management Activities and Reports • All types Measurements, Estimation, Projection

  4. 2 Well Known Processes • Waterfall • Go through the development activities sequentially like a cascading “waterfall” and relatively rigid • Focus on the deliverables from each stage of the process (great for contracts and mile-stones tracking) • Started some 30 years ago, and used by large complex projects • Spiral • A refinement over the Waterfall approach development by Boehm at TRW (applied to several government contracts --- for risk averse projects) • Divides the Process into 4 major portions • Identify objectives (allows incorporation of goals) • Analyze risks and prototyping (this requires skills) • Develop and Test (perform the task) • Review and Plan (allows incorporation of good planning)

  5. Other Process Models • Prototyping • Iterate in the gathering and understanding of the requirements • Include the building prototypes before full scale development • Prototypes may include low-tech paper user interface diagramsall the way to using very advanced tools to create scenarios • Has two major approaches: • Rapid Prototypes - where the prototypes are built but may be thrown away ( e.g. high risk, proof of concept or ‘quick and dirty’ ) • Evolutionary Prototypes - where the first prototype is built based on some relatively well established requirements, refined, and evolved as opposed to thrown away • Iterative • First establish the requirements and put together a solid design • Iterate in the implementation of risk analysis, prototype, code, tests, and integration of the pieces as they get completed. When do you stop prototyping ? ; When do you stop the Design ?

  6. Software Development Techniques • Early Techniques: • Structured Programming • Functional Decomposition • Strong cohesion • Loose coupling • Focus on data : Entity Relationship • Clean Room : • Championed by Rick Linger & Harlan Mills of Structured Prog. • Based on Formal Correctness and Verification Methods • Defect Prevention: • Analyze problem and identify root cause • Suggest preventive actions and elimination of root causes • Implement the suggestions • Test to “show correctness” versus test to “find error” • Object Oriented Programming: • Views and models the user requirements as “objects” or classes • Design and develops using “objects” or classes which includes both • attributes (data) • functional capabilities (functions)

  7. Agile Development Methodologies • Common points of preference and focus: • People and interaction .vs. Process and tools • User/customer collaboration .vs. Negotiation and contracts • Flexibility and change .vs. Plan driven • Executable software .vs. Complete documentation • Incremental .vs. Complete system • Some noteworthy Agile methods: • Extreme programming – K. Beck • Scrum - (Taheuchi & Nonaka); or Schwaber • Crystal family – A. Cockburn • Feature Driven Development – Palmer and Felsing

  8. Extreme Programming (XP) • A Programmingpractice or set of principles originated by Kent Beck in the mid-90’s. • Based on the concept of quick and constant “Feedback Mechanism”involving: • Planning Game (Small Units of Requirements) • Onsite Customer (Immediate and better feedback) • Metaphor (Use one set of metaphor for design/architecture) • Simple Design (Just enough to cover what’s needed) • Coding Standard (Facilitates better communication) • Collective Code Ownership (Peer pressure to improve code) • Pair Programming (Feedback and shared improvements) • Refactoring (Continuous examination to improve code) • Continuous Functional and Unit Testing (100% completion) • Continuous Integration (integrating small functional “releases”) • 40 hour work (high morale and energy level)

  9. Extreme Programming “Process” “loosely defined” Onsite Customers Coding standards Simple Design Planning Game Pair Programming Functional &Unit Test Small Release System Metaphors Continuous Integration Refactoring Collective Code Ownership Larger Release Adhere to 40 hour work week as much as possible !

  10. Scrum • Currently (2010 – 2013 ----201x) popular methodology • Another Agile process --- similar to XP: • Small time-boxed unit of development (1wk - 1 month) --- called SPRINT. • Has time- boxed daily scrum meeting to share: • what was done yesterday, • what is to be done today, and • what impediment, if any, exist • Burn chart to show sprint status • Sprint Planning meeting to plan each sprint • 3 major roles of people: • Product owner – represents users and stakeholders • Development team – designers, coders, testers, etc. • Scrum master – leads team in enforcing rules and remove impediments (not a people manager)

  11. What about all these processes and methodologies? • Do we gain productivity ? • Do we gain quality ? • Do we reduce cost? • Do we gain on technology, function/features ? • How would we know and what do we use to measure these? • Are there “limits” to these methodologies and processes? • “Large” increments of work? (size limitation) • “Large” team? (size limitation) • Physically remote and multi-located (e.g. offshore & distributed) ? (mode limitation)

  12. Software Development Process Assessment • More Recognized: • SEI’s Capability Maturity Model (CMM) and CMMI • ISO 9000 (the software registration 9001;9003) • Others (Less Recognized): • Software Productivity Research (SPR) • Malcolm Baldrige National Quality Award • IEEE Standards (730-1984; 983-1986 )

  13. SEI’s Capability Maturity Model • Level 1: Initial stage where there is no process and activities are chaotic • Level 2: Fundamental Processes in place and Repeatable • Requirements Management • Software Project Planning • Software Project Tracking and Oversight • Software Configuration Management • Software Quality Assurance • Software Subcontract Management • Level 3: Management Processes getting integrated and Defined • Organization Process Focus • Organization process Definition • Training Program • Integrated software Management • Software Product Engineering • Intergroup Coordination • Peer Reviews • Level 4: Processes are measurable and Managed • Process Measurement and Analysis • Quality Management • Level 5: Continuous improvement of processes and Optimizing • Defect Prevention • Technology Innovation • Process Change Management

  14. ISO 9000 • International Standards Organization sponsored • Very Popular in Europe in 1980’s & 1990’s • Popular in the Manufacturing Industry • ISO 9001 is for the software industry and 9003 is the guideline describing 9001 • Has a total of 20 categories (see text book- chapter 2) including: • Design control • Inspection • Purchasing • -statistical techniques (product metrics & process metrics) etc. • Heavy Emphasis on Document “Control” • Document must be adequate for purpose of performance • Properly approved . . • Pages numbered . Note

  15. Other Assessments See Textbook chapter-2 for more details • Malcolm Baldrige • US Government sponsored Quality Award • Touches on more than quality processes (1: leadership, 2: customersat., 3: human resources, 4:quality results, 5: strategic quality planning, 6: information analysis, 7: quality assurance of products and services) – total of 7 categories • Not just for software • SPR • Much like CMM • Started by Caper Jones (like Watts Humphrey who started SEI was an IBMer) • IEEE Standard • Not an assessment but more of a quality plan

  16. Integrated “Quality” Management System Software Development Activities (pre-release) Software Post-Release Activities Req. Gathering & Analysis Design Coding & Implem. Testing & integration Packaging, Releasing, & Installing Problem identif. & support Problem resolution & adaptation Product update & releasing Measurements ? Supporting Activities Reviews & Inspect. Recruit. & team bld. Change Control Config. mgmt Status tracking & report. Q.A. Cust. Survey Cust. support Escalat. Translat. Measurements ? Tools Req. Mgmt. Design & Prototyp. Coding & Debug. Library & Config. Mgmt Testing & Test Mgmt Help Desk & Problem Mgmt Transl. Packaging & Distribution Schedule, Defect, Call, etc. Modeling Measurements ?

  17. Some “Recent” Emphasis on Process Realization of the need for “active management” of process • Get Full Management “buy in” • Understanding and focusing on customers • Usage of statistical analysis and control • Strive for “continuous improvement”

  18. We talked about processes, methodology and assessment. Don’t forget ---- we care about assessing the PRODUCT, too! * Once Again ---- More IMPORTANTLY : * Spending time, effort and money on the topics in this lecture and in this course must produce a return such as: - faster to market - improved customer satisfaction - improved product (reliability, functionality, performance, etc.) - higher morale and more efficient/productive work force

More Related