Presentation is loading. Please wait.

Presentation is loading. Please wait.

بسمه ‌ تعالیٰ. توسعه ‌ ي سريع نرم ‌ افزار تحقيق درس « مهندسي نرم ‌ افزار پيشرفته » استاد گرامي : دکتر ناصر نعمت ‌ بخش پژوهشگر : محسن مؤمني Agile Software.

Similar presentations


Presentation on theme: "بسمه ‌ تعالیٰ. توسعه ‌ ي سريع نرم ‌ افزار تحقيق درس « مهندسي نرم ‌ افزار پيشرفته » استاد گرامي : دکتر ناصر نعمت ‌ بخش پژوهشگر : محسن مؤمني Agile Software."— Presentation transcript:

1 بسمه ‌ تعالیٰ

2 توسعه ‌ ي سريع نرم ‌ افزار تحقيق درس « مهندسي نرم ‌ افزار پيشرفته » استاد گرامي : دکتر ناصر نعمت ‌ بخش پژوهشگر : محسن مؤمني Agile Software Development

3 تعريف Agile Software Development يک framework مفهومي که عهده ‌ دار انجام پروژه ‌ هاي مهندسي ‌ نرم ‌ افزار مي ‌ شود.

4 مانيفست توسعه ‌ ي نرم ‌ افزار سريع با انجام توسعه ‌ ي نرم ‌ افزار بدين سان و راهنمايي ديگران در انجام آن، ما در اينجا از راه ‌ هاي به ‌ تري براي توسعه ‌ ي نرم ‌ افزار پرده برمي ‌ داريم. به اين طريق که، به : 1) افراد و تقابل ‌ ها به ‌ جاي فرآيندها و ابزارها 2) نرم ‌ افزاري که کارمي ‌ کند به ‌ جاي مستندسازي حجيم 3) همياري با مشتري به ‌ جاي مذاکرات قراردادي 4) آمادگي براي تغيير به ‌ جاي پي ‌ گيري طرح (plan) ارج مي ‌ نهيم. به آنچه سمت چپ است ارج مي ‌ نهيم، ولي بيش از آن به آنچه سمت راست است. 2001 ، کنت بک و ديگران

5 The Manifesto for Agile Software Development “We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value: Individuals and interactions over processes and toolsIndividuals and interactions over processes and tools Working software over comprehensive documentationWorking software over comprehensive documentation Customer collaboration over contract negotiationCustomer collaboration over contract negotiation Responding to change over following a planResponding to change over following a plan That is, while there is value in the items on the right, we value the items on the left more.”

6 Wiki Notes هدف در agility کمينه ‌ کردن ريسک با توسعه ‌ ي نرم ‌ افزار در timebox هاي کوچکي است که iteration ناميده ‌ مي ‌ شوند. هر تکرار يک مينياتور از پروژه ‌ ي کامل است، و همه ‌ ي مراحل لازم ( اعم از طرح ‌ ريزي، تحليل نيازها، طراحي، کد، تست و مستندسازي ) را داراست : طرح ‌ ريزيتحليل نيازهاطراحي کدتستمستندسازي در توسعه ‌ ي سريع، ظرفيت توليد و release نرم ‌ افزار در پايان هر دوره وجوددارد.

7 Wiki Notes در پايان هر دوره، تيم تقدم ‌ هاي پروژه را بازارزيابي مي ‌ کند. تاکيد در اينجا بر realtime communication ، ترجيحاً face-to-face ، همراه با نوشتن مستندات است. غالباً تيم ‌ هاي agile در bullpen ساکن مي ‌ شوند. ( در bullpen همه ‌ ي افراد لازم براي تمام ‌ کردن کار نرم ‌ افزار، حضور دارند.) حداقل بايد برنامه ‌ سازها و مشتريان آن ‌ ها ( کساني که محصول را تعريف کرده ‌ اند.) حضور داشته ‌ باشند.

8 Bullpen Programmers Product Managers + Business Analysts + Actual Customers Testers Interaction Designers Technical Writers Managers

9 Wiki Notes تاکيد ديگر بر نرم ‌ افزاري است که کار مي ‌ کند (Working Software). پايه ‌ ي اصلي اندازه ‌ گيري پيشرفت نيز همين است. اين عامل به همراه عامل ارتباط رو - در - رو باعث شده، روش ‌ هاي agile نسبت به ديگر روش ‌ ها خيلي کم مستندهاي نوشته داشته ‌ باشند. و نقد مهمي که به روش ‌ هاي سريع مي ‌ شود، بر همين پايه است، و از اين لحاظ آن ‌ ها را به بي ‌ نظمي متهم مي ‌ کند. پاسخ اين است، که agility با توسعه ‌ هاي نامنظم و cowboy coding تفاوت ‌ هاي عمده ‌ دارد.

10 Principles

11

12 What is “Agility”? Effective (rapid and adaptive) response to change Effective communication among all stakeholders Drawing the customer onto the team Organizing a team so that it is in control of the work performed Yielding … Rapid, incremental delivery of software

13 تاريخچه تعريف مدرن در اواسط دهه ‌ ي 90 در عکس العمل به Heavy weight SE Heavily Regulated Heavily Regimented Heavily micro-managed Waterfall Oriented SE Bureaucratic Slow Demeaning Contradicated Bureaucratic Slow Demeaning Contradicated Light weight Methods (agile)

14 پيش ‌ فرض ‌ ها

15 مقايسه با ديگر روش ‌ ها Adaptive Predictive

16 تفاوت با روش آبشاري مديريت طرح انجام وظايف مديريت طرح انجام وظايف مديريت طرح انجام وظايف

17 تفاوت با روش تکرار

18 تفاوت با Cowboy Programming آنچه احساس مي ‌ کني خوب است انجام بده. تيم سريع مرتباً به بازارزيابي طرح ‌ ها مي ‌ پردازد. دنباله ‌ روي از فرآيندهاي تعريف ‌ شده

19 چه زماني از روش ‌ هاي agile بهره ‌ گيريم؟ براي تيم ‌ هاي توسعه ‌ ي کم ‌ تر از 10 نفر براي رودررويي با نيازمندي ‌ هايي که سريع تغيير مي ‌ کنند و غير قابل پيش ‌ بيني ‌ اند. گزارش از موفقيت در موارد جز اين هم وجود دارد. براي تيم ‌ هاي بزرگ ( بيش از 20 توسعه ‌ دهنده ) ؟ براي توسعه ‌ ي توزيع ‌ شده؟ مأموريت ‌ ها و کاربردهاي حياتي؟ شرکت ‌ هاي تحت فرهنگ ( دستور - کنترل ) ؟

20 روش بوهم - ترنر ( مبتني بر ريسک ) با مطالعه در ساختارها و روابط حاکم بر ريسک. پيشنهاد : تحليل ريسک براي انتخاب (agile,plan-driven) Plan-driven home groundAgile home ground High Criticality Junior developers Low reqirements change Large number of developers Culture that demands order Low criticality Senior developers High requirements Change Small number of developers Culture that thrives on chaos

21 نقدها ميزان ساختاربندي و مستندات لازم  آيا تنها بايد با توسعه ‌ دهندگان Senior-level کارکنيم؟  طراحي نرم ‌ افزار مي ‌ تواند به ‌ شکلي ناکافي ترکيب و تثبيت شود؟  نياز به تغيير فرهنگ فراواني براي پذيرفتنه شدن وجوددارد؟

22 فاکتورهای انسانی

23 فرآيندهاي سريع توسعه ‌ ي نرم ‌ افزار

24 An Agile Process Is driven by customer descriptions of what is required (scenarios) Recognizes that plans are short-lived Develops software iteratively with a heavy emphasis on construction activities Delivers multiple ‘ software increments ’ Adapts as changes occur

25 Agile methods Some of well-known agile software development methods include Extreme Programming (XP) Scrum Adaptive Software Development (ASD) Crystal Clear and Other Crystal Methodologies DSDM Feature Driven Development Lean software development Other approaches include Agile documentation Agile ICONIX Microsoft Solutions Framework (MSF) Agile Data Agile Modeling

26 Extreme Programming (XP) The most widely used agile process, originally proposed by Kent Beck XP Planning Begins with the creation of “ user stories ” Agile team assesses each story and assigns a cost Stories are grouped to for a deliverable increment A commitment is made on delivery date After the first increment “ project velocity ” is used to help define subsequent delivery dates for other increments

27 Extreme Programming (XP)

28 XP Planning

29 XP Design Follows the KIS principle Encourage the use of CRC cards (see Chapter 8) For difficult design problems, suggests the creation of “ spike solutions ”— a design prototype Encourages “ refactoring ”— an iterative refinement of the internal program design XP Coding Recommends the construction of a unit test for a store before coding commences Encourages “ pair programming ” XP Testing All unit tests are executed daily “ Acceptance tests ” are defined by the customer and excuted to assess customer visible functionality

30

31 Adaptive Software Development (ADS) Originally proposed by Jim Highsmith ASD — distinguishing features Mission-driven planning Component-based focus Uses “ time-boxing ” (See Chapter 24) Explicit consideration of risks Emphasizes collaboration for requirements gathering Emphasizes “ learning ” throughout the process

32 Adaptive Software Development

33

34 شنيدن را دوست ‌ دارم، نکاتي شگفت با دقيق شنيدن آموخته ‌ ام. بيش ‌ تر مردم هرگز نشنيده ‌ اند. «ارنست همينگوي»

35 Dynamic Systems Development Method

36 Promoted by the DSDM Consortium (www.dsdm.org)www.dsdm.org DSDM — distinguishing features Similar in most respects to XP and/or ASD Nine guiding principles Active user involvement is imperative. DSDM teams must be empowered to make decisions. The focus is on frequent delivery of products. Fitness for business purpose is the essential criterion for acceptance of deliverables. Iterative and incremental development is necessary to converge on an accurate business solution. All changes during development are reversible. Requirements are baselined at a high level Testing is integrated throughout the life-cycle.

37 Scrum Originally proposed by Schwaber and Beedle Scrum — distinguishing features Development work is partitioned into “ packets ” Testing and documentation are on-going as the product is constructed Work occurs in “ sprints ” and is derived from a “ backlog ” of existing requirements Meetings are very short and sometimes conducted without chairs “ demos ” are delivered to the customer with the time- box allocated

38 Scrum

39 Crystal Proposed by Cockburn and Highsmith Crystal — distinguishing features Actually a family of process models that allow “ maneuverability ” based on problem characteristics Face-to-face communication is emphasized Suggests the use of “ reflection workshops ” to review the work habits of the team

40 Feature Driven Development Originally proposed by Peter Coad et al FDD — distinguishing features Emphasis is on defining “ features ” a feature “ is a client-valued function that can be implemented in two weeks or less. ” Uses a feature template the a(n) A features list is created and “ plan by feature ” is conducted Design and construction merge in FDD

41 Feature Driven Development Reprinted with permission of Peter Coad

42 Agile Modeling Originally proposed by Scott Ambler Suggests a set of agile modeling principles Model with a purpose Use multiple models Travel light Content is more important than representation Know the models and the tools you use to create them Adapt locally

43

44

45 تاريخچه Scrum (1986- in management) FDD (1995) ASD (1995) DSDM (1995) [first agile in europe] XP (1996) Crystal (996)

46 منابع و مأخذ Wikipedia definition of “Agile Software Development”, (http://en.wikipedia.org/wiki/Agile_software_development )http://en.wikipedia.org/wiki/Agile_software_development Bwck, K. et al., “Manifesto of Agile Software Development”, 2001, (http://www.agilemanifesto.org )http://www.agilemanifesto.org Agile Alliance Home Page (http://www.agilealliance.com/home/ )http://www.agilealliance.com/home/ Pressman, R. S., “Software Engineering: A Practitioner’s Approach”, 6/e, 2005, McGraw-Hill. (http://www.mhhe.com/ )http://www.mhhe.com/ Booch, G., Martin, R. C., Newkirk, J., “Object Oriented Analysis and Design with Applications”, 2d ed., 1998, Addison-Wesley.

47 منابع و مأخذ Dubinsky, Y. and Hazzan, O., “Roles in Agile Software Development Teams”, Technion, Israel, 2004. Highsmith, J., “What Is Agile Software Development?”,CMM, 2002. Szalvay, V., “An Introduction to Agile Software Development”, DANUBE, 2004 (http://www.danube.com )http://www.danube.com Cohen, D. and et al., “Agile Software Development (A DACS State- of-the-Art Report)”, 2004, Draft Version, DACS. Kalermo, J. and Rissanen, J., “Agile Software Development in Theory and Practice”, 2002, SBP.

48 نقدها [1] Boehm, B. and Turner, R., “Balancing Agility and Discipline: A Guide for the perplexed”, Addision-Wesley, Boston, 2004. [2] McBreen, P.,“Questioning Extreme Programming”, Addision- Wesley,Boston, 2003.

49 Agile Methods site ’ s Scrum (http://www.controlchaos.com/)http://www.controlchaos.com/ ASD (http://www.adaptivesd.com/)http://www.adaptivesd.com/ DSDM (http://na.dsdm.org/)http://na.dsdm.org/ Crystal (http://alistair.cockburn.us/crystal/wiki)http://alistair.cockburn.us/crystal/wiki Crystal (http://crystalmethodologies.org)http://crystalmethodologies.org FDD (http://www.featuredrivendevelopment.com/)http://www.featuredrivendevelopment.com/


Download ppt "بسمه ‌ تعالیٰ. توسعه ‌ ي سريع نرم ‌ افزار تحقيق درس « مهندسي نرم ‌ افزار پيشرفته » استاد گرامي : دکتر ناصر نعمت ‌ بخش پژوهشگر : محسن مؤمني Agile Software."

Similar presentations


Ads by Google