210 likes | 441 Views
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
E N D
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
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
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
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)
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 ?
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)
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
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)
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 !
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)
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)
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 )
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
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
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
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 ?
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”
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