Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
Skip header Section
Agile Software Development: Principles, Patterns, and PracticesSeptember 2003
Publisher:
  • Prentice Hall PTR
  • Upper Saddle River, NJ
  • United States
ISBN:978-0-13-597444-5
Published:01 September 2003
Pages:
710
Skip Bibliometrics Section
Bibliometrics
Skip Abstract Section
Abstract

From the Publisher: Best selling author and world-renowned software development expert Robert C. Martin shows how to solve the most challenging problems facing software developers, project managers, and software project leaders today. This comprehensive, pragmatic tutorial on Agile Development and eXtreme programming, written by one of the founding father of Agile Development: Teaches software developers and project managers how to get projects done on time, and on budget using the power of Agile Development. Uses real-world case studies to show how to of plan, test, refactor, and pair program using eXtreme programming. Contains a wealth of reusable C++ and Java code. Focuses on solving customer oriented systems problems using UML and Design Patterns. Robert C. Martin is President of Object Mentor Inc. Martin and his team of software consultants use Object-Oriented Design, Patterns, UML, Agile Methodologies, and eXtreme Programming with worldwide clients. He is the author of the best-selling book Designing Object-Oriented C++ Applications Using the Booch Method (Prentice Hall, 1995), Chief Editor of, Pattern Languages of Program Design 3 (Addison Wesley, 1997), Editor of, More C++ Gems (Cambridge, 1999), and co-author of XP in Practice, with James Newkirk (Addison-Wesley, 2001). He was Editor in Chief of the C++ Report from 1996 to 1999. He is a featured speaker at international conferences and trade shows. Author Biography: ROBERT C. MARTIN is President of Object Mentor Inc. Martin and his team of software consultants use Object-Oriented Design, Patterns, UML, Agile Methodologies, and eXtreme Programming with worldwide clients. He is the author of the best-selling book Designing Object-Oriented C++ Applications Using the Booch Method (Prentice Hall, 1995), Chief Editor of, Pattern Languages of Program Design 3 (Addison Wesley, 1997), Editor of, More C++ Gems (Cambridge, 1999), and co-author of XP in Practice, with James Newkirk (Addison-Wesley, 2001). He was Editor in Chief of the C++ Report from 1996 to 1999. He is a featured speaker at international conferences and trade shows.

Cited By

  1. Reimanis D and Izurieta C (2024). A study of behavioral decay in design patterns, Journal of Software: Evolution and Process, 36:7, Online publication date: 14-Jul-2024.
  2. ACM
    Connolly Bree D and Ó Cinnéide M Weighted Metrics for the Development of Energy Efficient Software Proceedings of the 1st International Workshop on Designing Software, (64-69)
  3. Navas-Su J, Gonzalez-Torres A, Hernandez-Vasquez M, Solano-Cordero J, Hernandez-Castro F and Bener A (2023). A Metrics Suite for Measuring Indirect Coupling Complexity, Programming and Computing Software, 49:8, (735-761), Online publication date: 1-Dec-2023.
  4. Jong-Yih K, Ti-Feng H, Yu-De L and Hui-Chi L (2024). The Study on Software Architecture Smell Refactoring, International Journal of Software Innovation, 12:1, (1-17), Online publication date: 1-Nov-2023.
  5. ACM
    Nardone V, Muse B, Abidi M, Khomh F and Di Penta M (2023). Video Game Bad Smells: What They Are and How Developers Perceive Them, ACM Transactions on Software Engineering and Methodology, 32:4, (1-35), Online publication date: 31-Oct-2023.
  6. Mumtaz H, Singh P and Blincoe K (2023). Identifying refactoring opportunities for large packages by analyzing maintainability characteristics in Java OSS, Journal of Systems and Software, 202:C, Online publication date: 1-Aug-2023.
  7. ACM
    Arcelli Fontana F, Camilli M, Rendina D, Taraboi A and Trubiani C Impact of Architectural Smells on Software Performance: an Exploratory Study Proceedings of the 27th International Conference on Evaluation and Assessment in Software Engineering, (22-31)
  8. Uyaguari F, Guevara‐Vega C, Quiña‐Mera A, Uyaguari A and Acosta C (2023). Effect of requirements specification using native language on external software quality, IET Software, 17:3, (287-300), Online publication date: 13-Jun-2023.
  9. Zhong C, Zhang H, Li C, Huang H and Feitosa D (2023). On measuring coupling between microservices, Journal of Systems and Software, 200:C, Online publication date: 1-Jun-2023.
  10. González-Pérez A, Matey-Sanz M, Granell C, Díaz-Sanahuja L, Bretón-López J and Casteleyn S (2023). AwarNS, Journal of Biomedical Informatics, 141:C, Online publication date: 1-May-2023.
  11. ACM
    Altoyan N and Batory D (2022). On Proving the Correctness of Refactoring Class Diagrams of MDE Metamodels, ACM Transactions on Software Engineering and Methodology, 32:2, (1-42), Online publication date: 30-Apr-2023.
  12. ACM
    Bertolotti F and Cazzola W (2022). Fold2Vec: Towards a Statement-Based Representation of Code for Code Comprehension, ACM Transactions on Software Engineering and Methodology, 32:1, (1-31), Online publication date: 31-Jan-2023.
  13. ACM
    Tempero E, Blincoe K and Lottridge D An Experiment on the Effects of Modularity on Code Modification and Understanding Proceedings of the 25th Australasian Computing Education Conference, (105-112)
  14. Iovan M and Cruzes D Data-Driven Improvement of Static Application Security Testing Service: An Experience Report in Visma Product-Focused Software Process Improvement, (157-170)
  15. Vayanos P, Jin Q and Elissaios G (2022). ROC++, INFORMS Journal on Computing, 34:6, (2873-2888), Online publication date: 1-Nov-2022.
  16. Boutaib S, Elarbi M, Bechikh S, Coello C and Said L (2022). Uncertainty-wise software anti-patterns detection, Applied Soft Computing, 129:C, Online publication date: 1-Nov-2022.
  17. Ahrendt W, Gurov D, Johansson M and Rümmer P TriCo—Triple Co-piloting of Implementation, Specification and Tests Leveraging Applications of Formal Methods, Verification and Validation. Verification Principles, (174-187)
  18. Lübke D An Overview About Terravis Architecture Large-Scale Business Process Integration for Swiss Land Register Processes Software Architecture. ECSA 2022 Tracks and Workshops, (11-18)
  19. ACM
    Fernandes S, Aguiar A and Restivo A A Live Environment to Improve the Refactoring Experience Companion Proceedings of the 6th International Conference on the Art, Science, and Engineering of Programming, (30-37)
  20. Paltoglou K, Zafeiris V, Diamantidis N and Giakoumakis E (2022). Automated refactoring of legacy JavaScript code to ES6 modules, Journal of Systems and Software, 181:C, Online publication date: 1-Nov-2021.
  21. Giray G (2021). A software engineering perspective on engineering machine learning systems, Journal of Systems and Software, 180:C, Online publication date: 1-Oct-2021.
  22. ACM
    Fernandes S A live environment for inspection and refactoring of software systems Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, (1655-1659)
  23. ACM
    Uchôa A Unveiling multiple facets of design degradation in modern code review Proceedings of the 29th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, (1615-1619)
  24. ACM
    Athanasopoulos D Composite Pattern for Autonomic Switching of Service Back-Ends between the Fog and the Cloud 26th European Conference on Pattern Languages of Programs, (1-10)
  25. ACM
    Benito-Santos A, Dorn A, Gómez A, Palfinger T, Sánchez R and Wandl-Vogt E (2021). Playing Design, Journal on Computing and Cultural Heritage , 14:2, (1-19), Online publication date: 1-Jun-2021.
  26. Lefever J, Cai Y, Cervantes H, Kazman R and Fang H On the lack of consensus among technical debt detection tools Proceedings of the 43rd International Conference on Software Engineering: Software Engineering in Practice, (121-130)
  27. Schröder C, van der Feltz A, Panichella A and Aniche M Search-based software re-modularization Proceedings of the 43rd International Conference on Software Engineering: Software Engineering in Practice, (81-90)
  28. Mashkoor A, Leuschel M and Egyed A Validation obligations Proceedings of the 43rd International Conference on Software Engineering: New Ideas and Emerging Results, (1-5)
  29. ACM
    Braun S, Bieniusa A and Elberzhager F Advanced Domain-Driven Design for Consistency in Distributed Data-Intensive Systems Proceedings of the 8th Workshop on Principles and Practice of Consistency for Distributed Data, (1-12)
  30. Sobrinho E, De Lucia A and Maia M (2021). A Systematic Literature Review on Bad Smells–5 W's: Which, When, What, Who, Where, IEEE Transactions on Software Engineering, 47:1, (17-66), Online publication date: 1-Jan-2021.
  31. Ebert F, Castor F, Novielli N and Serebrenik A (2021). An exploratory study on confusion in code reviews, Empirical Software Engineering, 26:1, Online publication date: 1-Jan-2021.
  32. ACM
    Jin W, Cai Y, Kazman R, Zhang G, Zheng Q and Liu T Exploring the architectural impact of possible dependencies in Python software Proceedings of the 35th IEEE/ACM International Conference on Automated Software Engineering, (758-770)
  33. Sileno G, Boer A, Gordon G and Rieder B Like Circles in the Water: Responsibility as a System-Level Function AI Approaches to the Complexity of Legal Systems XI-XII, (198-211)
  34. Rathee A and Chhabra J (2019). Mining Reusable Software Components from Object-Oriented Source Code using Discrete PSO and Modeling Them as Java Beans, Information Systems Frontiers, 22:6, (1519-1537), Online publication date: 1-Dec-2020.
  35. ACM
    Wei Y, Yu Y, Pan M and Zhang T A Feature Table approach to decomposing monolithic applications into microservices Proceedings of the 12th Asia-Pacific Symposium on Internetware, (21-30)
  36. Sarkar S, PP A and Ramaswamy S Analysis, Evaluation, and Assessment for Containerizing an Industry Automation Software 2020 IEEE International Conference on Systems, Man, and Cybernetics (SMC), (1972-1979)
  37. ACM
    Nunes I, Treude C and Calefato F The Impact of Dynamics of Collaborative Software Engineering on Introverts Proceedings of the 17th International Conference on Mining Software Repositories, (619-622)
  38. ACM
    Buffardi K Assessing Individual Contributions to Software Engineering Projects with Git Logs and User Stories Proceedings of the 51st ACM Technical Symposium on Computer Science Education, (650-656)
  39. Baig J, Mahmood S, Alshayeb M and Niazi M (2022). Package-Level stability evaluation of object-oriented systems, Information and Software Technology, 116:C, Online publication date: 1-Dec-2019.
  40. ACM
    Li M, Li X, Chen F, Hao H and Li R Implementation of Agile Development Software Based on Project Management Proceedings of the 4th International Conference on Intelligent Information Processing, (397-404)
  41. Paspallis N (2019). An MDD‐based method for building context‐aware applications with high reusability, Journal of Software: Evolution and Process, 31:11, Online publication date: 15-Nov-2019.
  42. ACM
    Källén M and Wrigstad T Performance of an OO compute kernel on the JVM: revisiting Java as a language for scientific computing applications Proceedings of the 16th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes, (144-156)
  43. Silva D, Rabelo R, Neto P, Britto R and Oliveira P A Test Case Prioritization Approach Based on Software Component Metrics 2019 IEEE International Conference on Systems, Man and Cybernetics (SMC), (2939-2945)
  44. ACM
    Yeomans L, Zschaler S and Coate K (2019). Transformative and Troublesome? Students' and Professional Programmers' Perspectives on Difficult Concepts in Programming, ACM Transactions on Computing Education, 19:3, (1-27), Online publication date: 30-Sep-2019.
  45. ACM
    Sousa B, Bigonha M and Ferreira K Analysis of Coupling Evolution on Open Source Systems Proceedings of the XIII Brazilian Symposium on Software Components, Architectures, and Reuse, (23-32)
  46. ACM
    Carvalho L, Garcia A, Assunção W, Bonifácio R, Tizzei L and Colanzi T Extraction of Configurable and Reusable Microservices from Legacy Systems Proceedings of the 23rd International Systems and Software Product Line Conference - Volume A, (26-31)
  47. Alkharabsheh K, Crespo Y, Manso E and Taboada J (2019). Software Design Smell Detection: a systematic mapping study, Software Quality Journal, 27:3, (1069-1148), Online publication date: 1-Sep-2019.
  48. Mazouzi H, Boussetta K and Achir N (2019). Maximizing mobiles energy saving through tasks optimal offloading placement in two-tier cloud, Computer Communications, 144:C, (132-148), Online publication date: 15-Aug-2019.
  49. Arcelli Fontana F, Lenarduzzi V, Roveda R and Taibi D (2019). Are architectural smells independent from code smells? An empirical study, Journal of Systems and Software, 154:C, (139-156), Online publication date: 1-Aug-2019.
  50. Rathee A and Chhabra J (2019). Reusability in multimedia softwares using structural and lexical dependencies, Multimedia Tools and Applications, 78:14, (20065-20086), Online publication date: 1-Jul-2019.
  51. Yasir R, Asad M, Galib A, Ganguly K and Siddik M GodExpo Proceedings of the 3rd International Workshop on Refactoring, (47-50)
  52. Eapen B, Archer N, Sartipi K and Yuan Y Drishti Proceedings of the 1st International Workshop on Software Engineering for Healthcare, (49-52)
  53. Sharma T How deep is the mud Proceedings of the Second International Conference on Technical Debt, (59-60)
  54. Cai Y and Kazman R DV8 Proceedings of the Second International Conference on Technical Debt, (53-54)
  55. Perez D and Chiba S Cross-language clone detection by learning over abstract syntax trees Proceedings of the 16th International Conference on Mining Software Repositories, (518-528)
  56. Kortum F, Klünder J and Schneider K Behavior-driven dynamics in agile development Proceedings of the International Conference on Software and System Processes, (34-43)
  57. Kanakis G, Fischer S, Khelladi D and Egyed A Supporting a flexible grouping mechanism for collaborating engineering teams Proceedings of the 14th International Conference on Global Software Engineering, (119-128)
  58. ACM
    Ampatzoglou A, Tsintzira A, Arvanitou E, Chatzigeorgiou A, Stamelos I, Moga A, Heb R, Matei O, Tsiridis N and Kehagias D Applying the Single Responsibility Principle in Industry Proceedings of the 23rd International Conference on Evaluation and Assessment in Software Engineering, (347-352)
  59. ACM
    Kouros P, Chaikalis T, Arvanitou E, Chatzigeorgiou A, Ampatzoglou A and Amanatidis T JCaliper Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing, (1721-1730)
  60. Kim D, Nam S and Hong J (2019). A dynamic control technique to enhance the flexibility of software artifact reuse in large-scale repository, The Journal of Supercomputing, 75:4, (2027-2057), Online publication date: 1-Apr-2019.
  61. Famelis M and Chechik M (2019). Managing design-time uncertainty, Software and Systems Modeling (SoSyM), 18:2, (1249-1284), Online publication date: 1-Apr-2019.
  62. ACM
    Ghanbari H, Vartiainen T and Siponen M (2018). Omission of Quality Software Development Practices, ACM Computing Surveys, 51:2, (1-27), Online publication date: 31-Mar-2019.
  63. Lenhard J, Blom M and Herold S (2019). Exploring the suitability of source code metrics for indicating architectural inconsistencies, Software Quality Journal, 27:1, (241-274), Online publication date: 1-Mar-2019.
  64. ACM
    Aniche M, Hermans F and van Deursen A Pragmatic Software Testing Education Proceedings of the 50th ACM Technical Symposium on Computer Science Education, (414-420)
  65. Favi C, Marconi M, Germani M and Mandolini M (2019). A design for disassembly tool oriented to mechatronic product de-manufacturing and recycling, Advanced Engineering Informatics, 39:C, (62-79), Online publication date: 1-Jan-2019.
  66. ACM
    Tzoref-Brill R and Maoz S Modify, enhance, select: co-evolution of combinatorial models and test plans Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, (235-245)
  67. ACM
    Mello P, Ximenes P, Lemos R, Bessa A, Cortés M and Rocha C On the applicability of BDD in a Business Intelligence project Proceedings of the XVII Brazilian Symposium on Software Quality, (296-304)
  68. ACM
    Shumaiev K, Bhat M, Klymenko O, Biesdorf A, Hohenstein U and Matthes F Uncertainty expressions in software architecture group decision making Proceedings of the 12th European Conference on Software Architecture: Companion Proceedings, (1-8)
  69. ACM
    Silva I, Alves E and Machado P Can automated test case generation cope with extract method validation? Proceedings of the XXXII Brazilian Symposium on Software Engineering, (152-161)
  70. ACM
    Luz W, Agilar E, de Oliveira M, de Melo C, Pinto G and Bonifácio R An experience report on the adoption of microservices in three Brazilian government institutions Proceedings of the XXXII Brazilian Symposium on Software Engineering, (32-41)
  71. ACM
    Rizzi L, Fontana F and Roveda R Support for architectural smell refactoring Proceedings of the 2nd International Workshop on Refactoring, (7-10)
  72. Saito S, Iimura Y, Massey A and Antón A (2018). Discovering undocumented knowledge through visualization of agile software development activities, Requirements Engineering, 23:3, (381-399), Online publication date: 1-Sep-2018.
  73. Assal H and Chiasson S Security in the software development lifecycle Proceedings of the Fourteenth USENIX Conference on Usable Privacy and Security, (281-296)
  74. ACM
    Blasquez I and Leblanc H Experience in learning test-driven development: space invaders project-driven Proceedings of the 23rd Annual ACM Conference on Innovation and Technology in Computer Science Education, (111-116)
  75. Rivero J, Urbieta M, Firmenich S, Witkin M, Serrano R, Cajas V and Rossi G Improving Legacy Applications with Client-Side Augmentations Web Engineering, (162-176)
  76. ACM
    Sousa L, Oliveira A, Oizumi W, Barbosa S, Garcia A, Lee J, Kalinowski M, de Mello R, Fonseca B, Oliveira R, Lucena C and Paes R Identifying design problems in the source code Proceedings of the 40th International Conference on Software Engineering, (921-931)
  77. ACM
    Stevenson J and Wood M Inheritance usage patterns in open-source systems Proceedings of the 40th International Conference on Software Engineering, (245-255)
  78. Zheng Y, Wang Z, Fan X, Chen X and Yang Z (2018). Localizing multiple software faults based on evolution algorithm, Journal of Systems and Software, 139:C, (107-123), Online publication date: 1-May-2018.
  79. ACM
    Machado M and Choren R Improving the detection of evolutionary coupling Proceedings of the 33rd Annual ACM Symposium on Applied Computing, (1410-1416)
  80. ACM
    Gestwicki P Design and Evaluation of an Undergraduate Course on Software Development Practices Proceedings of the 49th ACM Technical Symposium on Computer Science Education, (221-226)
  81. ACM
    Fronza I, Ioini N and Corral L (2017). Teaching Computational Thinking Using Agile Software Engineering Methods, ACM Transactions on Computing Education, 17:4, (1-28), Online publication date: 31-Dec-2018.
  82. Paschali M, Ampatzoglou A, Bibi S, Chatzigeorgiou A and Stamelos I (2017). Reusability of open source software across domains, Journal of Systems and Software, 134:C, (211-227), Online publication date: 1-Dec-2017.
  83. Ahmed I, Brindescu C, Mannan U, Jensen C and Sarma A An empirical examination of the relationship between code smells and merge conflicts Proceedings of the 11th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, (58-67)
  84. Dantas C and de A. Maia M On the actual use of inheritance and interface in Java projects Proceedings of the 27th Annual International Conference on Computer Science and Software Engineering, (151-160)
  85. Wirfs-Brock R Are software patterns simply a handy way to package design heuristics? Proceedings of the 24th Conference on Pattern Languages of Programs, (1-15)
  86. Bettini L and Damiani F (2017). Xtraitj, Journal of Systems and Software, 131:C, (419-441), Online publication date: 1-Sep-2017.
  87. Kebir S, Borne I and Meslati D (2017). A genetic algorithm-based approach for automated refactoring of component-based software, Information and Software Technology, 88:C, (17-36), Online publication date: 1-Aug-2017.
  88. ACM
    Van Heesch U, Theunissen T, Zimmermann O and Zdun U Software Specification and Documentation in Continuous Software Development Proceedings of the 22nd European Conference on Pattern Languages of Programs, (1-13)
  89. ACM
    Athanasopoulos D Service Decoupler Proceedings of the 22nd European Conference on Pattern Languages of Programs, (1-9)
  90. Fucci D, Erdogmus H, Turhan B, Oivo M and Juristo N (2017). A Dissection of the Test-Driven Development Process: Does It Really Matter to Test-First or to Test-Last?, IEEE Transactions on Software Engineering, 43:7, (597-614), Online publication date: 1-Jul-2017.
  91. Mashkoor A, Yang F and Jacquot J (2017). Refinement-based Validation of Event-B Specifications, Software and Systems Modeling (SoSyM), 16:3, (789-808), Online publication date: 1-Jul-2017.
  92. ACM
    Possignolo R and Renau J LiveSynth Proceedings of the 54th Annual Design Automation Conference 2017, (1-6)
  93. Singi K, Kaulgud V, Sharma V, Dubash N and Podder S Test optimization from release insights Proceedings of the 3rd International Workshop on Rapid Continuous Software Engineering, (16-19)
  94. Fabijan A, Dmitriev P, Olsson H and Bosch J The evolution of continuous experimentation in software product development Proceedings of the 39th International Conference on Software Engineering, (770-780)
  95. ACM
    Greenhalgh C, Benford S, Hazzard A and Chamberlain A Playing Fast and Loose with Music Recognition Proceedings of the 2017 CHI Conference on Human Factors in Computing Systems, (4302-4313)
  96. Arvanitou E, Ampatzoglou A, Chatzigeorgiou A, Galster M and Avgeriou P (2017). A mapping study on design-time quality attributes and metrics, Journal of Systems and Software, 127:C, (52-77), Online publication date: 1-May-2017.
  97. Ganea G, Verebi I and Marinescu R (2017). Continuous quality assessment with inCode, Science of Computer Programming, 134:C, (19-36), Online publication date: 1-Feb-2017.
  98. Zulkafli Z, Perez K, Vitolo C, Buytaert W, Karpouzoglou T, Dewulf A, De Bièvre B, Clark J, Hannah D and Shaheed S (2017). User-driven design of decision support systems for polycentric environmental resources management, Environmental Modelling & Software, 88:C, (58-73), Online publication date: 1-Feb-2017.
  99. ACM
    Cemus K and Cerny T (2017). Automated extraction of business documentation in enterprise information systems, ACM SIGAPP Applied Computing Review, 16:4, (5-13), Online publication date: 13-Jan-2017.
  100. Bimonte S, Sautot L, Journaux L and Faivre B (2017). Multidimensional Model Design using Data Mining, International Journal of Data Warehousing and Mining, 13:1, (1-35), Online publication date: 1-Jan-2017.
  101. ACM
    Andersson J and Caporuscio M Aligning architectures for sustainability Proccedings of the 10th European Conference on Software Architecture Workshops, (1-6)
  102. ACM
    Chandramohan M, Xue Y, Xu Z, Liu Y, Cho C and Tan H BinGo: cross-architecture cross-OS binary search Proceedings of the 2016 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, (678-689)
  103. Almugrin S, Albattah W and Melton A (2016). Using indirect coupling metrics to predict package maintainability and testability, Journal of Systems and Software, 121:C, (298-310), Online publication date: 1-Nov-2016.
  104. Ergin H, Syriani E and Gray J (2016). Design pattern oriented development of model transformations, Computer Languages, Systems and Structures, 46:C, (106-139), Online publication date: 1-Nov-2016.
  105. ACM
    Cemus K and Cerny T Business Documentation Derivation from Aspect-driven Enterprise Information Systems Proceedings of the International Conference on Research in Adaptive and Convergent Systems, (153-158)
  106. Wanderley G, Abel M, Barthès J and Paraiso E An advanced collaborative environment for software development 2016 IEEE International Conference on Systems, Man, and Cybernetics (SMC), (002917-002922)
  107. MacCormack A and Sturtevant D (2016). Technical debt and system architecture, Journal of Systems and Software, 120:C, (170-182), Online publication date: 1-Oct-2016.
  108. ACM
    Aniche M, Gerosa M and Treude C Developers' Perceptions on Object-Oriented Design and Architectural Roles Proceedings of the XXX Brazilian Symposium on Software Engineering, (63-72)
  109. Lee J, Kim D, Kim S and Park S (2016). Decomposing class responsibilities using distance-based method similarity, Frontiers of Computer Science: Selected Publications from Chinese Universities, 10:4, (612-630), Online publication date: 1-Aug-2016.
  110. Goubali O, Girard P, Guittet L, Bignon A, Kesraoui D, Berruet P and Bouillon J Designing Functional Specifications for Complex Systems Proceedings, Part I, of the 18th International Conference on Human-Computer Interaction. Theory, Design, Development and Practice - Volume 9731, (166-177)
  111. ACM
    Preschern C API patterns in C Proceedings of the 21st European Conference on Pattern Languages of Programs, (1-11)
  112. Bonner N, Kulangara N, Nerur S and Teng J (2016). An Empirical Investigation of the Perceived Benefits of Agile Methodologies Using an Innovation-Theoretical model, Journal of Database Management, 27:3, (38-63), Online publication date: 1-Jul-2016.
  113. Silva B, Sant'Anna C, Rocha N and Chavez C (2016). The effect of automatic concern mapping strategies on conceptual cohesion measurement, Information and Software Technology, 75:C, (56-70), Online publication date: 1-Jul-2016.
  114. ACM
    Patelli A and Mottola L Model-based Real-time Testing of Drone Autopilots Proceedings of the 2nd Workshop on Micro Aerial Vehicle Networks, Systems, and Applications for Civilian Use, (11-16)
  115. Paschali M, Ampatzoglou A, Bibi S, Chatzigeorgiou A and Stamelos I A Case Study on the Availability of Open-Source Components for Game Development Proceedings of the 15th International Conference on Software Reuse: Bridging with Social-Awareness - Volume 9679, (149-164)
  116. ACM
    Gamal M, Ramadan T and El Adawy H Case Study Applying Agile Service-Oriented Modeling and Architecture Approach for Better Business-Services Alignment Proceedings of the 2nd Africa and Middle East Conference on Software Engineering, (66-71)
  117. ACM
    Sharma T, Fragkoulis M and Spinellis D Does your configuration code smell? Proceedings of the 13th International Conference on Mining Software Repositories, (189-200)
  118. ACM
    Mannan U, Ahmed I, Almurshed R, Dig D and Jensen C Understanding code smells in Android applications Proceedings of the International Conference on Mobile Software Engineering and Systems, (225-234)
  119. ACM
    Politowski C, Fontoura L, Petrillo F and Guéhéneuc Y Are the old days gone? Proceedings of the 5th International Workshop on Games and Software Engineering, (22-28)
  120. ACM
    Le D and Medvidovic N Architectural-based speculative analysis to predict bugs in a software system Proceedings of the 38th International Conference on Software Engineering Companion, (807-810)
  121. ACM
    Savor T, Douglas M, Gentili M, Williams L, Beck K and Stumm M Continuous deployment at Facebook and OANDA Proceedings of the 38th International Conference on Software Engineering Companion, (21-30)
  122. ACM
    Oizumi W, Garcia A, da Silva Sousa L, Cafeo B and Zhao Y Code anomalies flock together Proceedings of the 38th International Conference on Software Engineering, (440-451)
  123. ACM
    Kim J, Batory D, Dig D and Azanza M Improving refactoring speed by 10X Proceedings of the 38th International Conference on Software Engineering, (1145-1156)
  124. ACM
    Alshara Z, Seriai A, Tibermacine C, Bouziane H, Dony C and Shatnawi A (2015). Migrating large object-oriented Applications into component-based ones: instantiation and inheritance transformation, ACM SIGPLAN Notices, 51:3, (55-64), Online publication date: 11-May-2016.
  125. Harvie D and Agah A (2016). Targeted Scrum: Applying Mission Command to Agile Software Development, IEEE Transactions on Software Engineering, 42:5, (476-489), Online publication date: 1-May-2016.
  126. Chahal K and Saini M (2016). Open Source Software Evolution, International Journal of Open Source Software and Processes, 7:1, (1-27), Online publication date: 1-Jan-2016.
  127. ACM
    Proksch S, Lerch J and Mezini M (2015). Intelligent Code Completion with Bayesian Networks, ACM Transactions on Software Engineering and Methodology, 25:1, (1-31), Online publication date: 2-Dec-2015.
  128. ACM
    Alshara Z, Seriai A, Tibermacine C, Bouziane H, Dony C and Shatnawi A Migrating large object-oriented Applications into component-based ones: instantiation and inheritance transformation Proceedings of the 2015 ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences, (55-64)
  129. ACM
    Cabezuelo A, Conde M and Rodríguez J 6th International Workshop on Software Engineering for E-Learning (ISELEAR15) Proceedings of the 3rd International Conference on Technological Ecosystems for Enhancing Multiculturality, (661-665)
  130. Gestwicki P (2015). Teaching game programming with PlayN, Journal of Computing Sciences in Colleges, 31:1, (90-97), Online publication date: 1-Oct-2015.
  131. Stephan M and Cordy J Identification of simulink model antipattern instances using model clone detection Proceedings of the 18th International Conference on Model Driven Engineering Languages and Systems, (276-285)
  132. ACM
    Alenezi M and Khellah F Architectural Stability Evolution in Open-Source Systems Proceedings of the The International Conference on Engineering & MIS 2015, (1-5)
  133. ACM
    Bosnić I, Ciccozzi F, Čavrak I, Di Nitto E, Feljan J and Mirandola R Introducing SCRUM into a Distributed Software Development Course Proceedings of the 2015 European Conference on Software Architecture Workshops, (1-8)
  134. ACM
    Kilamo T, Leppänen M and Mikkonen T The social developer: now, then, and tomorrow Proceedings of the 7th International Workshop on Social Software Engineering, (41-48)
  135. ACM
    Malhotra R, Chug A and Khosla P Prioritization of Classes for Refactoring Proceedings of the Third International Symposium on Women in Computing and Informatics, (228-234)
  136. Ampatzoglou A, Chatzigeorgiou A, Charalampidou S and Avgeriou P (2015). The Effect of GoF Design Patterns on Stability: A Case Study, IEEE Transactions on Software Engineering, 41:8, (781-802), Online publication date: 1-Aug-2015.
  137. Ampatzoglou A, Ampatzoglou A, Chatzigeorgiou A and Avgeriou P (2015). The financial aspect of managing technical debt, Information and Software Technology, 64:C, (52-73), Online publication date: 1-Aug-2015.
  138. ACM
    Nebro A, Durillo J and Vergne M Redesigning the jMetal Multi-Objective Optimization Framework Proceedings of the Companion Publication of the 2015 Annual Conference on Genetic and Evolutionary Computation, (1093-1100)
  139. Chaikalis T and Chatzigeorgiou A (2015). Forecasting Java Software Evolution Trends Employing Network Models, IEEE Transactions on Software Engineering, 41:6, (582-602), Online publication date: 1-Jun-2015.
  140. ACM
    Segall I and Tzoref-Brill R Feedback-driven combinatorial test design and execution Proceedings of the 8th ACM International Systems and Storage Conference, (1-6)
  141. Wijnhoven F and Brinkhuis M (2015). Internet information triangulation, Journal of the Association for Information Science and Technology, 66:4, (684-701), Online publication date: 1-Apr-2015.
  142. ACM
    Liikkanen L, Kilpiö H, Svan L and Hiltunen M Lean UX Proceedings of the 8th Nordic Conference on Human-Computer Interaction: Fun, Fast, Foundational, (1095-1100)
  143. Dibble C and Gestwicki P (2014). Refactoring code to increase readability and maintainability, Journal of Computing Sciences in Colleges, 30:1, (41-51), Online publication date: 1-Oct-2014.
  144. ACM
    Bettini L and Damiani F Generic traits for the Java platform Proceedings of the 2014 International Conference on Principles and Practices of Programming on the Java platform: Virtual machines, Languages, and Tools, (5-16)
  145. Davies J, Gibbons J, Welch J and Crichton E (2014). Model-driven engineering of information systems, Science of Computer Programming, 89:PB, (88-104), Online publication date: 1-Sep-2014.
  146. ACM
    Stevanetic S, Haitzer T and Zdun U Supporting Software Evolution by Integrating DSL-based Architectural Abstraction and Understandability Related Metrics Proceedings of the 2014 European Conference on Software Architecture Workshops, (1-8)
  147. ACM
    Moreira R and Paiva A Towards a pattern language for model-based GUI testing Proceedings of the 19th European Conference on Pattern Languages of Programs, (1-8)
  148. ACM
    Beller M, Bacchelli A, Zaidman A and Juergens E Modern code reviews in open-source projects: which problems do they fix? Proceedings of the 11th Working Conference on Mining Software Repositories, (202-211)
  149. ACM
    Goldstein M and Moshkovich D Improving software through automatic untangling of cyclic dependencies Companion Proceedings of the 36th International Conference on Software Engineering, (155-164)
  150. ACM
    Fucci D Understanding the dynamics of test-driven development Companion Proceedings of the 36th International Conference on Software Engineering, (690-693)
  151. ACM
    Wagstrom P and Datta S Does latitude hurt while longitude kills? geographical and temporal separation in a large scale software development project Proceedings of the 36th International Conference on Software Engineering, (199-210)
  152. ACM
    Huang P, Ma X, Shen D and Zhou Y Performance regression testing target prioritization via performance risk analysis Proceedings of the 36th International Conference on Software Engineering, (60-71)
  153. ACM
    Munir H, Wnuk K, Petersen K and Moayyed M An experimental evaluation of test driven development vs. test-last development with industry professionals Proceedings of the 18th International Conference on Evaluation and Assessment in Software Engineering, (1-10)
  154. ACM
    Stevanetic S and Zdun U Exploring the relationships between the understandability of components in architectural component models and component level metrics Proceedings of the 18th International Conference on Evaluation and Assessment in Software Engineering, (1-10)
  155. ACM
    Lu W, Sun C, Bleeker T, You Y, Kitazawa S and Do E Sensorendipity Proceedings of the Second International Symposium of Chinese CHI, (11-18)
  156. ACM
    da Silva B, Sant'Anna C and Chavez C An empirical study on how developers reason about module cohesion Proceedings of the 13th international conference on Modularity, (121-132)
  157. ACM
    Gurgel A, Macia I, Garcia A, von Staa A, Mezini M, Eichberg M and Mitschke R Blending and reusing rules for architectural degradation prevention Proceedings of the 13th international conference on Modularity, (61-72)
  158. Kart M (2014). What Sunday brunch can teach us about system design, Journal of Computing Sciences in Colleges, 29:4, (68-73), Online publication date: 1-Apr-2014.
  159. Frey M, Große F and Günes M libARA Proceedings of the 7th International Conference on Performance Evaluation Methodologies and Tools, (304-309)
  160. Kächele S, Spann C, Hauck F and Domaschka J Beyond IaaS and PaaS Proceedings of the 2013 IEEE/ACM 6th International Conference on Utility and Cloud Computing, (75-82)
  161. Collier N and Ozik J Test-driven agent-based simulation development Proceedings of the 2013 Winter Simulation Conference: Simulation: Making Decisions in a Complex World, (1551-1559)
  162. Tomas P, Escalona M and Mejias M (2013). Open source tools for measuring the Internal Quality of Java software products. A survey, Computer Standards & Interfaces, 36:1, (244-255), Online publication date: 1-Nov-2013.
  163. ACM
    Bettini L and Damiani F Pure trait-based programming on the Java platform Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, (67-78)
  164. Igler B Feature evaluation for mobile applications Proceedings of the Second international conference on Design, User Experience, and Usability: web, mobile, and product design - Volume Part IV, (673-681)
  165. ACM
    Samimi H, Hicks R, Fogel A and Millstein T Declarative mocking Proceedings of the 2013 International Symposium on Software Testing and Analysis, (246-256)
  166. ACM
    Hu C (2013). The nature of software design and its teaching, ACM Inroads, 4:2, (62-72), Online publication date: 1-Jun-2013.
  167. McHugh M, Cawley O, McCaffery F, Richardson I and Wang X An agile v-model for medical device software development to overcome the challenges with plan-driven software development lifecycles Proceedings of the 5th International Workshop on Software Engineering in Health Care, (12-19)
  168. Yamashita A and Moonen L Exploring the impact of inter-smell relations on software maintainability: an empirical study Proceedings of the 2013 International Conference on Software Engineering, (682-691)
  169. ACM
    Sun C, Du J, Chen N, Khoo S and Yang Y Mining explicit rules for software process evaluation Proceedings of the 2013 International Conference on Software and System Process, (118-125)
  170. ACM
    Spacek P, Dony C, Tibermacine C and Fabresse L (2012). An inheritance system for structural & behavioral reuse in component-based software programming, ACM SIGPLAN Notices, 48:3, (60-69), Online publication date: 10-Apr-2013.
  171. Sinnott R, Bayliss C, Morandini L and Tomko M Tools and processes to support the development of a national platform for urban research Proceedings of the Eleventh Australasian Symposium on Parallel and Distributed Computing - Volume 140, (39-48)
  172. Dąbrowski R, Timoszuk G and Stencel K (2013). One Graph to Rule Them All Software Measurement and Management, Fundamenta Informaticae, 128:1-2, (47-63), Online publication date: 1-Jan-2013.
  173. Barišić A, Monteiro P, Amaral V, Goulão M and Monteiro M Patterns for evaluating usability of domain-specific languages Proceedings of the 19th Conference on Pattern Languages of Programs, (1-34)
  174. ACM
    Ampatzoglou A, Stamelos I, Gkortzis A and Deligiannis I A methodology on extracting reusable software candidate components from open source games Proceeding of the 16th International Academic MindTrek Conference, (93-100)
  175. ACM
    McNely B, Gestwicki P, Burke A and Gelms B Articulating everyday actions Proceedings of the 30th ACM international conference on Design of communication, (95-104)
  176. Fokaefs M, Tsantalis N, Stroulia E and Chatzigeorgiou A (2012). Identification and application of Extract Class refactorings in object-oriented systems, Journal of Systems and Software, 85:10, (2241-2260), Online publication date: 1-Oct-2012.
  177. Colanzi T and Vergilio S Applying search based optimization to software product line architectures Proceedings of the 4th international conference on Search Based Software Engineering, (259-266)
  178. ACM
    Spacek P, Dony C, Tibermacine C and Fabresse L An inheritance system for structural & behavioral reuse in component-based software programming Proceedings of the 11th International Conference on Generative Programming and Component Engineering, (60-69)
  179. Lin L, Yang W and Lin J (2012). A layer-based method for rapid software development, Computers & Mathematics with Applications, 64:5, (1364-1375), Online publication date: 1-Sep-2012.
  180. ACM
    Barros M An analysis of the effects of composite objectives in multiobjective software module clustering Proceedings of the 14th annual conference on Genetic and evolutionary computation, (1205-1212)
  181. Ruiz J, Comar C and Moy Y Source code as the key artifact in requirement-based development Proceedings of the 17th Ada-Europe international conference on Reliable Software Technologies, (49-59)
  182. Mahamood S and Reiter E Working with clinicians to improve a patient-information NLG system Proceedings of the Seventh International Natural Language Generation Conference, (100-104)
  183. Clarke P, Power J, Babich D and King T (2012). A testing strategy for abstract classes, Software Testing, Verification & Reliability, 22:3, (147-169), Online publication date: 1-May-2012.
  184. ACM
    Frantz R and Corchuelo R A software development kit to implement integration solutions Proceedings of the 27th Annual ACM Symposium on Applied Computing, (1647-1652)
  185. ACM
    Macia I, Garcia J, Popescu D, Garcia A, Medvidovic N and von Staa A Are automatically-detected code anomalies relevant to architectural modularity? Proceedings of the 11th annual international conference on Aspect-oriented Software Development, (167-178)
  186. Chen N, Hoi S and Xiao X Software process evaluation Proceedings of the 26th IEEE/ACM International Conference on Automated Software Engineering, (333-342)
  187. Akiyama M, Hayashi S, Kobayashi T and Saeki M Supporting design model refactoring for improving class responsibility assignment Proceedings of the 14th international conference on Model driven engineering languages and systems, (455-469)
  188. Contieri A, Correia G, Colanzi T, Gimenes I, Oliveira E, Ferrari S, Masiero P and Garcia A Extending UML components to develop software product-line architectures Proceedings of the 5th European conference on Software architecture, (130-138)
  189. ACM
    Beck F and Diehl S On the congruence of modularity and code coupling Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering, (354-364)
  190. ACM
    Cantor M (2011). Calculating and improving ROI in software and system programs, Communications of the ACM, 54:9, (121-130), Online publication date: 1-Sep-2011.
  191. Bergel A Counting messages as a proxy for average execution time in pharo Proceedings of the 25th European conference on Object-oriented programming, (533-557)
  192. Steimann F, Kollee C and von Pilgrim J A refactoring constraint language and its application to eiffel Proceedings of the 25th European conference on Object-oriented programming, (255-280)
  193. Esteves M and Andrade V Designing interaction concepts, managing customer expectation and mastering agile development in rich application product development Proceedings of the 14th international conference on Human-computer interaction: design and development approaches - Volume Part I, (54-62)
  194. Falleri J, Denier S, Laval J, Vismara P and Ducasse S Efficient retrieval and ranking of undesired package cycles in large software systems Proceedings of the 49th international conference on Objects, models, components, patterns, (260-275)
  195. ACM
    Durdik Z Towards a process for architectural modelling in agile software development Proceedings of the joint ACM SIGSOFT conference -- QoSA and ACM SIGSOFT symposium -- ISARCS on Quality of software architectures -- QoSA and architecting critical systems -- ISARCS, (183-192)
  196. ACM
    Koziolek H Sustainability evaluation of software architectures Proceedings of the joint ACM SIGSOFT conference -- QoSA and ACM SIGSOFT symposium -- ISARCS on Quality of software architectures -- QoSA and architecting critical systems -- ISARCS, (3-12)
  197. ACM
    Chow J and Tempero E Stability of Java interfaces Proceedings of the 2nd International Workshop on Emerging Trends in Software Metrics, (38-44)
  198. ACM
    Borg R and Kropp M Automated acceptance test refactoring Proceedings of the 4th Workshop on Refactoring Tools, (15-21)
  199. ACM
    Kumar M and Kumar R Architectural refactoring of a mission critical integration application Proceedings of the 4th India Software Engineering Conference, (77-83)
  200. ACM
    Nair T, Aravindh S and Selvarani R (2010). Design property metrics to maintainability estimation, ACM SIGSOFT Software Engineering Notes, 35:6, (1-6), Online publication date: 27-Nov-2010.
  201. Vogelsang A, Fehnker A, Huuck R and Reif W Software metrics in static program analysis Proceedings of the 12th international conference on Formal engineering methods and software engineering, (485-500)
  202. ACM
    Sanders W Learning OOP with weakly typed web programming languages Proceedings of the ACM international conference companion on Object oriented programming systems languages and applications companion, (189-192)
  203. Simperl E, Bürger T and Hofer C FOLCOM or the costs of tagging Proceedings of the 17th international conference on Knowledge engineering and management by the masses, (163-177)
  204. ACM
    Do Vale Pereira D and Kulesza U Refactoring a web academic information system using design patterns Proceedings of the 8th Latin American Conference on Pattern Languages of Programs, (1-14)
  205. ACM
    Hattori L, Lungu M and Lanza M Replaying past changes in multi-developer projects Proceedings of the Joint ERCIM Workshop on Software Evolution (EVOL) and International Workshop on Principles of Software Evolution (IWPSE), (13-22)
  206. Hussain I, Kosseim L and Ormandjieva O Towards approximating COSMIC functional size from user requirements in agile development processes using text mining Proceedings of the Natural language processing and information systems, and 15th international conference on Applications of natural language to information systems, (80-91)
  207. ACM
    Conboy K and Fitzgerald B (2010). Method and developer characteristics for effective agile method tailoring, ACM Transactions on Software Engineering and Methodology, 20:1, (1-30), Online publication date: 1-Jun-2010.
  208. ACM
    Hoda R, Noble J and Marshall S Balancing acts Proceedings of the 2010 ICSE Workshop on Cooperative and Human Aspects of Software Engineering, (5-12)
  209. ACM
    Hoda R, Noble J and Marshall S Organizing self-organizing teams Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1, (285-294)
  210. ACM
    Scanniello G, D'Amico A, D'Amico C and D'Amico T An approach for architectural layer recovery Proceedings of the 2010 ACM Symposium on Applied Computing, (2198-2202)
  211. Augustyniak P (2010). Autoadaptivity and optimization in distributed ECG interpretation, IEEE Transactions on Information Technology in Biomedicine, 14:2, (394-400), Online publication date: 1-Mar-2010.
  212. ACM
    Rama G A desiderata for refactoring-based software modularity improvement Proceedings of the 3rd India software engineering conference, (93-102)
  213. ACM
    Rouson D, Adalsteinsson H and Xia J (2010). Design patterns for multiphysics modeling in Fortran 2003 and C++, ACM Transactions on Mathematical Software, 37:1, (1-30), Online publication date: 1-Jan-2010.
  214. ACM
    Mahoney M Software evolution and the moving picture metaphor Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications, (525-528)
  215. ACM
    Curino C, Moon H and Zaniolo C Automating database schema evolution in information system upgrades Proceedings of the 2nd International Workshop on Hot Topics in Software Upgrades, (1-5)
  216. ACM
    Mahoney M (2009). Software evolution and the moving picture metaphor, ACM SIGPLAN Notices, 44:10, (525-528), Online publication date: 25-Oct-2009.
  217. Küster J, Gschwind T and Zimmermann O Incremental Development of Model Transformation Chains Using Automated Testing Proceedings of the 12th International Conference on Model Driven Engineering Languages and Systems, (733-747)
  218. ACM
    Welicki L, Yoder J and Wirfs-Brock R Adaptive object-model builder Proceedings of the 16th Conference on Pattern Languages of Programs, (1-8)
  219. ACM
    Sooriamurthi R (2009). Introducing abstraction and decomposition to novice programmers, ACM SIGCSE Bulletin, 41:3, (196-200), Online publication date: 25-Aug-2009.
  220. ACM
    Sooriamurthi R Introducing abstraction and decomposition to novice programmers Proceedings of the 14th annual ACM SIGCSE conference on Innovation and technology in computer science education, (196-200)
  221. ACM
    Kaur K and Singh H (2009). Evaluating an evolving software component, ACM SIGSOFT Software Engineering Notes, 34:4, (1-4), Online publication date: 6-Jul-2009.
  222. Bartlett R Integration strategies for Computational Science & Engineering software Proceedings of the 2009 ICSE Workshop on Software Engineering for Computational Science and Engineering, (35-42)
  223. ACM
    Brandt J, Guo P, Lewenstein J, Dontcheva M and Klemmer S Two studies of opportunistic programming Proceedings of the SIGCHI Conference on Human Factors in Computing Systems, (1589-1598)
  224. ACM
    Caspersen M and Kolling M (2009). STREAM, ACM Transactions on Computing Education, 9:1, (1-29), Online publication date: 1-Mar-2009.
  225. ACM
    Padula A, Scott S and Symes W (2009). A software framework for abstract expression of coordinate-free linear algebra and optimization algorithms, ACM Transactions on Mathematical Software, 36:2, (1-36), Online publication date: 1-Mar-2009.
  226. Gupta V and Chhabra J (2009). Package coupling measurement in object-oriented software, Journal of Computer Science and Technology, 24:2, (273-283), Online publication date: 1-Mar-2009.
  227. Garzás J, García F and Piattini M (2009). Do rules and patterns affect design maintainability?, Journal of Computer Science and Technology, 24:2, (262-272), Online publication date: 1-Mar-2009.
  228. Soma R and Prasanna V Detecting Dirty Queries during Iterative Development of OWL Based Applications Proceedings of the OTM 2008 Confederated International Conferences, CoopIS, DOA, GADA, IS, and ODBASE 2008. Part II on On the Move to Meaningful Internet Systems, (1500-1516)
  229. Chatzigeorgiou A, Tsantalis N and Deligiannis I (2008). An empirical study on students' ability to comprehend design patterns, Computers & Education, 51:3, (1007-1016), Online publication date: 1-Nov-2008.
  230. ACM
    Welicki L, Yoder J and Wirfs-Brock R The dynamic factory pattern Proceedings of the 15th Conference on Pattern Languages of Programs, (1-7)
  231. ACM
    Khomh F and Guéhéneuc Y DEQUALITE Proceedings of the 15th Conference on Pattern Languages of Programs, (1-7)
  232. ACM
    Louridas P, Spinellis D and Vlachos V (2008). Power laws in software, ACM Transactions on Software Engineering and Methodology, 18:1, (1-26), Online publication date: 1-Sep-2008.
  233. Chow T and Cao D (2008). A survey study of critical success factors in agile software projects, Journal of Systems and Software, 81:6, (961-971), Online publication date: 1-Jun-2008.
  234. Capiluppi A and Boldyreff C Identifying and Improving Reusability Based on Coupling Patterns Proceedings of the 10th international conference on Software Reuse: High Confidence Software Reuse in Large Systems, (282-293)
  235. ACM
    Tan C, Tan W and Teo H Training students to be agile information systems developers Proceedings of the 2008 ACM SIGMIS CPR conference on Computer personnel doctoral consortium and research, (88-96)
  236. Koehler J, Hauser R, Küster J, Ryndina K, Vanhatalo J and Wahler M (2008). The Role of Visual Modeling and Model Transformations in Business-driven Development, Electronic Notes in Theoretical Computer Science (ENTCS), 211, (5-15), Online publication date: 1-Apr-2008.
  237. ACM
    Bidarra R, Boers J, Dobbe J and Huijser R Bringing a pioneer games project to the next level Proceedings of the 3rd international conference on Game development in computer science education, (11-15)
  238. Schieferdecker I, Grabowski J, Vassiliou-Gioles T and Din G The test technology TTCN-3 Formal methods and testing, (292-319)
  239. ACM
    Landre E, Wesenberg H and Olmheim J Agile enterprise software development using domain-driven design and test first Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion, (983-993)
  240. ACM
    Welicki L, Yoder J, Wirfs-Brock R and Johnson R Towards a pattern language for adaptive object models Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion, (787-788)
  241. Allison C and Harrison N (2007). Teaching design patterns, Journal of Computing Sciences in Colleges, 23:1, (206-211), Online publication date: 1-Oct-2007.
  242. ACM
    Caspersen M and Bennedsen J Instructional design of a programming course Proceedings of the third international workshop on Computing education research, (111-122)
  243. Jenkins S and Kirk S (2007). Software architecture graphs as complex networks, Information Sciences: an International Journal, 177:12, (2587-2601), Online publication date: 20-Jun-2007.
  244. Zang J Financial organization transformation strategy Proceedings of the 8th international conference on Agile processes in software engineering and extreme programming, (188-192)
  245. Zang J Project bid on iteration basis Proceedings of the 8th international conference on Agile processes in software engineering and extreme programming, (179-183)
  246. Sato D, Goldman A and Kon F Tracking the evolution of object-oriented quality metrics on agile projects Proceedings of the 8th international conference on Agile processes in software engineering and extreme programming, (84-92)
  247. Hu J, Ross P, Feijs L and Qian Y UML in action Proceedings of the 2nd international conference on Technologies for e-learning and digital entertainment, (489-498)
  248. ACM
    Noonan R and Hott J (2007). A course in software development, ACM SIGCSE Bulletin, 39:1, (135-139), Online publication date: 7-Mar-2007.
  249. ACM
    Noonan R and Hott J A course in software development Proceedings of the 38th SIGCSE technical symposium on Computer science education, (135-139)
  250. Van Court T and Herbordt M (2007). Families of FPGA-based accelerators for approximate string matching, Microprocessors & Microsystems, 31:2, (135-145), Online publication date: 1-Mar-2007.
  251. Chen Z, Li X, Liu Z, Stolz V and Yang L Harnessing rCOS for tool support Formal methods and hybrid real-time systems, (83-114)
  252. ACM
    Caspersen M and Kölling M A novice's process of object-oriented programming Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, (892-900)
  253. ACM
    Welicki L, Manuel J, Lovelle C and Aguilar L Patterns meta-specification and cataloging Companion to the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications, (679-680)
  254. ACM
    Falessi D, Cantone G and Becker M Documenting design decision rationale to improve individual and team design decision making Proceedings of the 2006 ACM/IEEE international symposium on Empirical software engineering, (134-143)
  255. Kraft N, Lloyd E, Malloy B and Clarke P (2006). The implementation of an extensible system for comparison and visualization of class ordering methodologies, Journal of Systems and Software, 79:8, (1092-1109), Online publication date: 1-Aug-2006.
  256. ACM
    Seng O, Stammel J and Burkhart D Search-based determination of refactorings for improving the class structure of object-oriented systems Proceedings of the 8th annual conference on Genetic and evolutionary computation, (1909-1916)
  257. Madeyski L The impact of pair programming and test-driven development on package dependencies in object-oriented design — an experiment Proceedings of the 7th international conference on Product-Focused Software Process Improvement, (278-289)
  258. ACM
    Wang Z, Zhan D and Xu X (2006). STCIM, ACM SIGSOFT Software Engineering Notes, 31:3, (1-14), Online publication date: 1-May-2006.
  259. Fruhling A and Vreede G (2006). Field Experiences with eXtreme Programming, Journal of Management Information Systems, 22:4, (39-68), Online publication date: 1-Apr-2006.
  260. ACM
    Rist R Modeling object-oriented design Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (344-349)
  261. Perez-Torres J and Mejia M Software Development Using Agile Methodologies Proceedings of the Sixth Mexican International Conference on Computer Science, (129-135)
  262. Navarrete F, Botella P and Franch X How Agile COTS Selection Methods are (and can be)? Proceedings of the 31st EUROMICRO Conference on Software Engineering and Advanced Applications, (160-167)
  263. Tsantalis N, Chatzigeorgiou A and Stephanides G (2005). Predicting the Probability of Change in Object-Oriented Systems, IEEE Transactions on Software Engineering, 31:7, (601-614), Online publication date: 1-Jul-2005.
  264. ACM
    Seng O, Bauer M, Biehl M and Pache G Search-based improvement of subsystem decompositions Proceedings of the 7th annual conference on Genetic and evolutionary computation, (1045-1051)
  265. Song X, Rudorfer A, Hwong B, Matos G and Nelson C S-RaP Proceedings of the 2005 international conference on Unifying the Software Process Spectrum, (164-176)
  266. Beyer D, Noack A and Lewerentz C (2005). Efficient Relational Calculation for Software Analysis, IEEE Transactions on Software Engineering, 31:2, (137-149), Online publication date: 1-Feb-2005.
  267. ACM
    Sun T, Zhao W and Zhao Z An architecture of pattern-oriented distributed meta-search engine Proceedings of the 3rd international conference on Information security, (171-174)
  268. Kim J and Bae D An Approach to Feature Based Modelling by Dependency Alignment for the Maintenance of the Trustworthy System Proceedings of the 28th Annual International Computer Software and Applications Conference - Volume 01, (416-423)
  269. Kontio J, Hoglund M, Ryden J and Abrahamsson P Managing Commitments and Risks Proceedings of the 26th International Conference on Software Engineering, (732-733)
  270. Chatzigeorgiou A, Xanthos S and Stephanides G Evaluating Object-Oriented Designs with Link Analysis Proceedings of the 26th International Conference on Software Engineering, (656-665)
  271. Chatzigeorgiou A (2003). Mathematical Assessment of Object-Oriented Design Quality, IEEE Transactions on Software Engineering, 29:11, (1050-1053), Online publication date: 1-Nov-2003.
  272. ACM
    Kaufmann R and Janzen D Implications of test-driven development Companion of the 18th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, (298-299)
  273. Rajlich V and Xu S Analogy of Incremental Program Development and Constructivist Learning Proceedings of the 2nd IEEE International Conference on Cognitive Informatics
Contributors

Reviews

Fernando Berzal

Martin has distilled his knowledge and experience in this excellent book, using the peculiar style that characterizes his craftsman's columns in Software Development magazine. The book could be considered a software design book, or just an object-oriented programming book, but, as Jack Reeves' reprinted paper [1] points out in one of the book appendices, the source code is the design, and engineers produce designs, so this book is actually about software engineering. As the book's subtitle suggests, it covers practices, principles, and patterns that have been demonstrated to be useful in software development. It does so by presenting examples, with plenty of source code. This is one of the book's strongest points, since programmers can immediately learn how to apply well-known design patterns in programming languages such as C++ or Java. Moreover, code reading is a usually neglected activity in a software developer's education. Such activity, however, is a suitable tool for transferring programming expertise, as well as the proper way to illustrate the importance of the practices and principles discussed in the text. The book starts with the manifesto of the so-called agile movement. Basically, agile development emphasizes the fact that people are the most important factor of success in software development, a statement present in almost every software development book since the word peopleware was coined. Among its principles, agile development promotes simplicity as "the art of maximizing the amount of work not done" in order to maximize the business value of software development. Once the stage for agile development is set, the book presents the set of extreme programming practices, and devotes a few chapters to describing some of them in greater detail (the planning game, test-first design, and refactoring). Apart from the aforementioned development practices, the book includes two sections devoted to design principles. The first of them addresses class design problems, while the second covers package design. Using an analogy that compares software designers to surgeons, the author makes it clear that a design must remain clean. In order to achieve that licit goal, which boils down to improving cohesion and decreasing coupling, several design principles are studied. For instance, with regard to class design, inheritance use and abuse is regulated by the Liskov Substitution Principle ("subtypes must be substitutable for their base types"). With respect to package design, in my opinion the best section of the book, Martin explains how to avoid undesirable dependencies between packages, why they are not desirable, and how they can be detected using software metrics. The book also presents a good overview of some of the most well-known software design patterns. Martin groups them according to their applications, and discusses them in the chapters that precede each one of the three main case studies included in the book. The first case study illustrates how quick analysis and design sessions lead to unit tests, which in turn are used to implement actual applications, where interfaces are clearly separated from implementation details. The second case study shows how a system design evolves over time, and how design patterns are incorporated into it as they are needed. Finally, the last big case study describes the decisions that lead to the construction of a software framework for big applications. These case studies include literally thousands of lines of C++ and Java source code, which let the reader grasp how practices, principles, and patterns are used in the real world. Finally, the book's appendices include clear-cut explanations of the unified modeling language (UML) notations, a satire of two antagonistic software development approaches, and a reprint of the article mentioned in the first paragraph of this review. The parody of the development companies is overstretched, but enlightening; it describes common situations that would arise in a bureaucracy-driven management environment (namely, a strict waterfall development model), and it underscores the best qualities of agile development (namely, fluid communication among project stakeholders, and value maximization through feature prioritization and incremental development). In short, Martin has done an excellent job of writing an entertaining and instructive "bible of agile practices and design concepts." No wonder this book received the Software Development 13th Jolt Product Excellence Award. Its 30 chapters and four appendices contain a mix of textual explanations, dialogues, and code listings that make it stand out over other books in its category. Online Computing Reviews Service

Diomidis Spinellis

Agile software development can be described as an uprising against the tyranny of excessively structured software processes. According to its manifesto, it values individuals and interaction over processes and tools, working software over comprehensive documentation, customer collaboration over contract negotiation, and response to change over a strict adherence to a plan. The importance that agile software development principles place on the fluid and fleeting parts of the development process, like human interactions, changing requirements, working software, and customer satisfaction, makes one wonder how these aspects can be documented and communicated in a concrete way, to software professionals looking for hands-on advice. Robert C. Martin (Uncle Bob, as he is affectionately known in the object-oriented programmer community) succeeds brilliantly in this task, thanks to his more than 30 years of software development experience. This book can be roughly divided into three parts. The first, "Agile Development," provides an overview of the agile alliance and extreme programming (XP) practices. Separate chapters address the most important elements of agile development: planning, testing, and refactoring. This part ends with a case study of a bowling game score calculator, developed following XP practices. Interestingly, the case study is presented in the form of a dialogue between the author and a colleague, working as a pair-programming team. We are thus able to witness programmer interactions, design, mistakes, testing, refactoring, and coding as the project evolves toward its final form. The book's second part addresses agile design. Agile software development practices abhor the creation of grand and detailed designs before a single line of code is written, advocating instead the practice of always having the code comprising the system structured in the best possible way. Martin, taking the lead from a paper by Jack Reeves, provided in an appendix, argues convincingly that the only software documentation that actually satisfies the criteria of engineering design, as most disciplines understand it, is the system's source code. To improve a software project's design, one has to recognize symptoms of poor design: rigidity, fragility, needless complexity and repetition, immobility, viscosity, and opacity. Martin illustrates five important principles of agile design, using code examples, and clear unified modeling language (UML) diagrams. The book's last part illustrates the coding practices of agile development, by means of three case studies: a payroll system, a weather station, and excerpts from a real-life project (the automation of an educational testing service). Each of the three allows Martin to examine different aspects of software development using agile methods: data-driven systems, embedded systems, and life cycle issues. More importantly, the case studies are used as a backdrop to illustrate important design patterns. The pattern names can be bewildering: command, active object, template method, strategy, facade, mediator, singleton, monostate, null object, factory, composite, observer, abstract server, adapter, bridge, proxy, stairway to heaven, visitor, and state. However, any experienced developer working on object-oriented artifacts will, deliberately or by accident, have used or encountered at least one of them. The text's interweaving of the pattern descriptions with the development of the actual code makes learning the patterns a pleasure. Traditionally organized design pattern catalogues are useful, but can be tiresome to read. I readily admit that I never succeeded in completing more than a couple of chapters in a single "pattern catalogue" reading session; with Martin's exposition, I found myself going through more than five patterns before I could put the book down. The book is chock-full of UML diagrams, illustrating design principles and patterns. For those not yet well versed in UML notation, two to-the-point appendices describing the most important diagram elements are included, to bring readers up to speed. On the other hand, all readers will benefit from seeing UML used in the context of concrete case studies, together with code; some nitpickers may wonder why a generalization instead of a realization relationship is sometimes used to denote the implementation of an interface, or a navigable association relationship is used in places one would expect to see a dependency. None of these problems, however, obfuscates the presentation, or distracts the reader. The only important shortcoming of the book is its presentation. A small text font, laid out as a single column on an unusually wide page, makes following the lines a challenge. Then again, the wide pages allow for the faithful presentation of the numerous C++ and Java code samples and UML diagrams. Agile software development favors working software over comprehensive documentation, so the decision to make space for the code appears to follow the book's spirit. Online Computing Reviews Service

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.

Recommendations