software development activities
play

Software development activities Note activities not steps l - PowerPoint PPT Presentation

Software development activities Note activities not steps l Often happening simultaneously l Not necessarily discrete l Planning: mostly study the requirements 1. Domain analysis: study the problem area 2. System design:


  1. Software development activities Note “ activities ” – not “ steps ” l Often happening simultaneously l Not necessarily discrete l Planning: mostly study the requirements 1. Domain analysis: study the problem area 2. System design: devise computer solution 3. Implementation: write the code 4. Testing, documentation, maintenance, … 5.

  2. Software engineering l A subset of system engineering l Covers all software development activities, planning through maintenance l Also includes various management tasks – Determine project roles, and assign personnel – Create and monitor development schedules – Some client relations and customer support l Guided by CS theory – But really just heuristics, and often ad hoc

  3. Professional, ethical responsibility l Above all, do no harm! (Hippocratic Oath) – NO VIRUSES or other malicious programs – Avoid inventing “ the bomb ” or a plague, or … l Basically demonstrate loyalty to employer, clients, co-workers, country, humanity, … l See “ Software Engineering Code of Ethics and Professional Practice ” by ACM/IEEE-CS at https://www.acm.org/about-acm/code-of-ethics

  4. Development process modeling l The Requirements classic: Analysis The l Step System Design Waterfall after Program Model step, Design after Coding step, … Testing l Never (several steps) Operation & back up Maintenance

  5. Alternatives to waterfall model Requirements l Okay, we Analysis all agree – System Maintenance Design this extreme Program doesn ’ t Delivery Design work either System Coding Testing l Is there a middle Integration Unit Testing Testing ground? Software Development Reality

  6. Considering risk Requirements Integrate & Design Implement Analysis System Test Potential In a waterfall lifecycle, impact of high risk issues such as risks being integration and load test tackled may be tackled late. Time l Research conclusion: it is wise to do some implementing and testing early in the process

  7. Engineering the risk factor l Spiral Model – Includes frequent risk analyses l Frequent reevaluation during an extended planning stage

  8. Testing and iterating The V Model l Accounts for Requirements Operation & Analysis Maintenance requirement changes and Acceptance System Validate requirements Testing mistakes Design l Key idea: System Testing Verify design Program plan to iterate Design Unit & Inte- l But still a bit gration Testing too rigid? Coding

  9. Incremental / iterative process l Hmmm … a hybrid that makes sense! Feedback from Requirements Requirements iteration N leads to refinement and Design Design Time adaptation of the requirements and Implementation & Implementation & design in iteration Test & Integration Test & Integration N+1. & More Design & More Design Final Integration Final Integration & System Test & System Test 4 weeks (for example) Iterations are fixed in The system grows length, or timeboxed . incrementally.

  10. Iterating reduces risk overall Iteration Potential In an iterative lifecycle, impact of high-risk issues are risks being tackled early, to drive tackled down the riskiest project elements. Time l Especially if thorny issues are tackled early

  11. Unified Process (UP) l By Rumbaugh, Jacobson, Booch, others l Iterative and incremental through 4 phases l Use case driven l Architecture-centric l Risk-focused l UML-heavy – Static models – Dynamic models

  12. Agile Software Development l Agility – observed to be a common feature of successful processes l Different projects need different processes l Generally better to focus on skills, communication, and community instead of processes l Fruitful to consider it “ a cooperative game of invention and communication ” (Cockburn, 2002) l See Agile Manifesto: http://agilemanifesto.org/ – And related Principles of Agile Software

  13. Extreme Programming (XP) l Very popular agile development process today – Started by Kent Beck, Agile Alliance member l Mostly means adhering to some basic principles – Client representative on-site – Always practice pair programming – Perform constant, at least daily testing – Keep iterations short, and clearly time-boxed – Do frequent, incremental builds l See www.extremeprogramming.org

  14. About OOA and OOD l Means: analyzing and designing a system from an object perspective – System composed of objects or Catalog Library concepts Book Librarian l What things or ideas are involved? l How do objects/concepts interact? l Means not: function-oriented • Record loans – System composed of processes, functions • Add resources l What to do, and how to do it? • Report fines l Mostly worry about “ flow of control ”

  15. Doing OOA and OOD l Not easy to do it well – But worth it for: big systems, big teams, long-term productivity (software reuse, etc.) – Takes skill: experience, practice, learning l OOA – investigation of the problem – What must the system do? – Focus on learning the problem domain . l OOD – find solution to the problem – How will system fulfill requirements? – Define logical software objects and associations to solve the problem.

  16. Tools for doing OOA and OOD l UML – Unified Modeling Language – Standardized notation – now well accepted l CASE tools – computer-aided software engineering tools (like “ Rational Rose ” ) – Getting highly sophisticated now l Can generate code from modeling diagrams l Can do reverse engineering, … – Not necessary for CS 48 (but could help with diagrams, and other requirements) – may cost $

  17. Start by not even thinking about programming l Try to focus on domain concepts at first – Not software constructs (wait until design stage) – Avoids complexity overload – Design and eventual system will be better too! l Create and maintain a steady stream of artifacts – Mostly pre-programming – diagrams, class specifications, glossary, … – Guides initial implementation, and aids subsequent modification, maintenance, and software reuse

  18. CS 48 development schedule l Overview: a planning phase, followed by at least 2 complete development iterations – each iteration produces a working system – Call it “ relaxed UP ” reflecting agile principles l Planning phase – Requirements Analysis – First be the client – describe the project – Then analyze the requirements l Itemize system functions and characteristics l Write use cases, and assign use cases to development iterations

  19. CS 48 schedule (cont.) l Early iteration(s) –draft project (report and current system) – Analyze the domain pertinent to the iteration l Identify classes, class attributes, and associations l Identify system behavior (as a “ black box ” ) – Design the current system l Specify the way objects will behave and interact l Tie to other systems/tools as necessary – Implement and test l Complete at least 1 more iteration – final project – Analyze/design/implement/test and update documents l Also demonstrate system to class during last week of quarter

  20. Next Requirements Analysis

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend