Resources
- This is now a subset of John Bell's Resources for Students, customized for CS 442 Spring 2019. Last updated Spring 2019, originated 2017.
- ( The top part of this page is in the process of compiling results from surveys conducted by the Spring 2017 class on available Software Engineering tools, and topics of interest for possible further study. This part of the page is currently under development, and may change rapidly. )
Table of Contents
Spring 2020 Research Results
Three or More References
- Disciplined Agile Delivery ( DAD )
- Reverse Engineering
Two or More References
Single References
Scrum
Required Reading - For CS 442 Spring 2019 ( This list will be updated throughout the term. )
- Wikipedia on Scrum( software development )
- Ken Schwaber & Jeff Sutherland, "The Scrum Guide", from scrum.org
- Wikipedia on Extreme Programming
- Wikipedia on Extreme Programming Practices
- Excerpt of "Planning Extreme Programming" by Beck & Foweler, posted to Blackboard. ( Front & back covers, title & copyright pages, preface, table of contents, Bills of Rights from chapter 2, index. )
- Class Handout from Kent Beck and Martin Fowler, "Planning Extreme Programming", Addison-Wesley, 2001, ISBN 0-201-71091-9, posted to Blackboard.
Required Reading - For CS 442 Spring 2018
- Class Handout from Martin Fowler, "Refactoring: Improving the Design of Existing Code", Addison-Wesley, 1999, ISBN 978-0-201-48567-7.
- Mauro Pezze & Michal Young, "Software Testing and Analysis: Process, Principles, and Techniques", Wiley, 2008, ISBN 978-0-471-45593-6, Chapters 9 to 13, 14.2, 15, 17, 18, 23
- See also the Course Notes page.
Books Online via the UIC Library.
- Start by reading sections 1.4 and 1.5. Other material TBD.
- "Version Control with Git" by Loeliger & McCullough - Excerpt on hooks for automating tests.
- Wikipedia on Scrum( software development )
- Ken Schwaber & Jeff Sutherland, "The Scrum Guide", from scrum.org
- Wikipedia on Extreme Programming
- Wikipedia on Extreme Programming Practices
- Excerpt of "Planning Extreme Programming" by Beck & Foweler. ( Front & back covers, title & copyright pages, preface, table of contents, Bills of Rights from chapter 2, index. )
- Wikipedia on Test Driven Development
- Class Handout from Kent Beck, "Test-Driven Development By Example", Addison-Wesley, 2003, ISBN 978-0-321-14653-3.
- Patterns for Test-Driven Development, from the same source, with JTB Notes
- Paul Hamill, "Unit Test Frameworks", O'Reilly, ISBN 978-0-596-00689-1, Available from Safari Books Online via the UIC Library.
- Read chapters 1 to 4, and the chapter corresponding to your language of development. ( You may also find the appendices useful. )
- See also copies of slides on the Notes page.
- Items beyond this point are future plans, and may change:
- Gamma et. al., "Design Patterns: Elements of Reusable Object-Oriented Software", Addison-Wesley, ISBN 978-0-201-63361-0, Available from Safari
Required Reading - For CS 442 Spring 2017
- Wikipedia on Extreme Programming
- Wikipedia on Extreme Programming Practices
- Wikipedia on Test Driven Development
- Class Handout from Kent Beck and Martin Fowler, "Planning Extreme Programming", Addison-Wesley, 2001, ISBN 0-201-71091-9.
- Class Handout from Kent Beck, "Test-Driven Development By Example", Addison-Wesley, 2003, ISBN 978-0-321-14653-3.
- Class Handout from Martin Fowler, "Refactoring: Improving the Design of Existing Code", Addison-Wesley, 1999, ISBN 978-0-201-48567-7.
- Mauro Pezze & Michal Young, "Software Testing and Analysis: Process, Principles, and Techniques", Wiley, 2008, ISBN 978-0-471-45593-6, Chapters 9 to 13, 14.2, 15, 17, 18, 23
- See also the Course Notes page.
- ( After first Midterm ) Wikipedia on Version Control Systems
- Paul Hamill, "Unit Test Frameworks", O'Reilly, ISBN 978-0-596-00689-1, Available from Safari Books Online via the UIC Library.
- Read chapters 1 to 4, and the chapter corresponding to your language of development. ( You may also find the appendices useful. )
- Gamma et. al., "Design Patterns: Elements of Reusable Object-Oriented Software", Addison-Wesley, ISBN 978-0-201-63361-0, Available from Safari Books Online via the UIC Library.
- Start by reading sections 1.4 and 1.5. Other material TBD.
Extreme Programming
- Wikipedia page on Extreme Programming, last accessed 19 Jan 2017.
- Wikipedia page on Extreme Programming Practices, last accessed 19 Jan 2017.
- Kent Beck and Cynthia Andres, "Extreme Programming Explained: Embrace Change", Second Edition. ( Link is to Amazon. I use the Kindle edition of this one. )
- Kent Beck and Martin Fowler, "Planning Extreme Programming", Addison-Wesley, 2001, ISBN 0-201-71091-9. ( Link to Amazon search results. )
- Excerpt distributed in class. ( Front & back covers, title & copyright pages, preface, table of contents, Bills of Rights from chapter 2, index. )
Test Driven Development
- Originated by Kent Beck, the originator of Extreme Programming
- Wikipedia on Test Driven Development ( includes Anti-Patterns. )
- Kent Beck, "Test Driven Development by Example", Addison Wesley, 2003. Available from Amazon.
Code Repositories / Version Control
- Wikipedia on Version Control Systems
- Bazaar
- Bitbucket (4)
- Bitkeeper
- CloudForge (2)
- Git (*)
- Github (5)
- Quick Look plugin - Preview files in jpg, pdf, doc, etc. formats.
- ShareX plugin - Record / capture screen area and share it.
- Gitlab
- Google Docs / Google Code
- Mercurial (3)
- MS Team Foundation Server
- Office 365
- Perforce: Helix Versioning Engine
- ProjectLocker (2)
- SourceTree - Supports both git and Mercurial
- Subversion, SVN
The following sections are results from student surveys, somewhat organized.
Requested Topics, other than specific tools
- Case Studies
- Data Modelling
- Design Patterns (2)
- Economics
- Flexible Data Schemas
- Generic Programming
- List of software development philosophies, from Wikipedia
- Maintenance
- Mind Mapping
- Open Source Development
- Project Management
- Reverse Engineering
- Security
- Software Licenses
- UI Design(2) - See CS 422
- Usability Testing
Unsorted Survey Results
- Wikipedia on CASE, Computer Aided Software Engineering - Provides a good general overview of the subject, and a nice organization and classification scheme. Ironically does not have much information on or links to specific tools.
- Ajax (2)
- Akka
- AppFollow
- Card View
- CASPER
- Category: Agile softwae development from Wikipedia
- Category: Software comparisons from Wikipedia
- Design Tools - Balsamiq Mockups, Unity 2D/3D, Adobe Photoshop, InDesign, & Illustrator.
- JSON / XML (2)
- Lean Startup
- Martin Fowler - Leading proponent of UML, refactoring, continuous integration, and other agile topics.
- Meteor.js - JavaScript web-development framework
- Methodologies
- Microservices - Independently deployable web services
- NoSQL DB (2)
- Patchwork
- PHP
- Puppet - Configuration Management
- Realm - DB platform for mobile devices
Agile/XP Planners / Groupware
- Wikipedia on Collaborative software
- AceProject
- Agile Manager by HP
- Asana (4) - Alternative to iceScrum
- Apache Kafka - distributed messaging system
- Axosoft OnTime Scrum
- Basecamp (3)
- CA Agile Central
- Craft
- CodeBunk - Collaborative ( code ) editor, with integrated audio and video calling built in.
- Dapulse
- Gerrit( )
- iceScrum (*) - See Below
- Intraboom
- Jama
- Jira - Agile alternative to iceScrum (9)
- Jive
- Leankit - Sticky note on whiteboard paradigm
- MS Visual Studio Team Foundation Server
- Pivotal Tracker
- Planbox
- Slack - A communication tool for teams.(3)
- Smartsheet
- Taiga - competitor to iceScrum
- Trello - A scrum-style site for project management. (2)
- Twilio - Communication Tool
- Twproject
AntiPatterns - Patterns of common pitfalls to avoid
- E.g. Code smell, Blind faith, Cargo cult programming, Magic Numbers
- W.J. Brown, H.W. McCormick, et al. "Anitpatterns in Project Management". Wiley,
2000.
- J. Kerievski. "Refactoring to Patterns". Addison Wesley, 2004.
- C.J. Neill, and P.A. Laplante. "Antipatterns: identification, refactoring, and
management". CRC Press, 2005.
Testing Frameworks / Test Automation
- Wikipedia Software Testing Portal
- Wikipedia list of unit testing frameworks
- https://techbeacon.com/6-top-open-source-testing-automation-frameworks-how-choose
- C++ - Boost, QA Systems Cantata, CppTest
- Jasmine(2) - JavaScript
- Java - JSST, JUnit (5)
- JBehave
- Jubula
- Mockito - create mock objects for testing. (2)
- .Net, C# - csUnit, Moq, Typemock Isolator
- Quality Assurance ( Subject, not a specific tool )
- Ranorex
- RedwoodHQ - Web interface testing
- Robolectric - Android
- Selenium - Automated testing for web apps. (2)
- Serenity
- Sikuli Script - GUI testing
- SoapUI
- Squish GUI Tester
- TAP - Test Anything Protocol ( language independent )
- Tellurium
- Webload by RadView - Tests pages using WebSocket, PUSH, AJAX, SOAP, HTML5, WebDAV, etc.
- xUnit
Test Case Generation Tools
- Databene Benerator
- DataFactory
- DataGenerator
- Spawner
Requirements Analysis
- ArgoUMLO
- LucidChart - free online diagramming tool
- Rational Rhapsody ( Rational Rose )
- Robertson and Robertson, "Mastering the Requirements Process: Getting Requirements Right", Third edition available from Safari via the UIC Library.
- StarUML (2)
Design Strategies
- Component-Based DEsign (CBD)
- Data Structure-Centered Design
- Function Oriented ( Structured )
- OO
Reverse Engineering Tools
- Apache Commons BCEL, Byte Code Engineering Library
- Boomerang
- Reverse Engineering Compiler
- Sandmark
Build Tools / Code Generation Tools
- Atomweaver
- Bugsnag
- Celerio
- CodeClimate - Analysis for refactoring and optimization
- Coding Environments
- Cloud 9 (3) - Online IDE
- Kobra - Online IDE, with integrated audio / video calling features.
- Koding
- CPlusPlus.com
- Eclipse
- GeneXus
- gdb
- Gradle
- Maven (4) - Eclipse build in for Jar files
- MS Visual Studio LightSwitch
- Stack Overflow
- Valgrind - profile
Code Refactoring Tools
- Wikipedia on Code Refactoring - Includes list of automated code refactoring tools, with links: IntelliJ IDEA, WebStorm, Eclipse, NetBeans, JDeveloper, Embarcadero Delphi, Visual Studio, CodeRush, Visual Assist, DMS Software Reengineering Toolkit, Photran, Xcode, AppCode, PyCharm, Wing IDE, PyDev )
- AutoRefactor - Eclipse plug-in
- Eclipse
- Martin Fowler, "Refactoring: Improving the Design of Existing Code", available from Amazon.
- IntelliJ IDEA
- Klocwork - Code refactoring (2)
- ReSharper
- VersionOne
- Visustin
Continuous Build and Integration
- Bamboo by Atlassian - extension to Bitbucket? (2)
- Buildbot - automates compile/test cycle
- Feature Toggles ( as opposed to feature branches. )
- Jenkins - Automated server for continuous delivery (7)
- Snap by ThoughtWorks
- TeamCity by Jetbrains
- Continuous Deployment / Deployment Pipeline ( Goes beyond in-house build and test )
Automated Code Review
- Code Analysis - Application Analytics by CAST
- Collaborator
- Crucible ( Atlassian ) (2)
- Gerrit ( on top of git. ) (3)
- lint
Virtual Machines, VM / Cloud Computing
- AWS / EC2 (4)
- Azure (2)
- Linode
- Microsoft Azure (2)
- Serverless Architecture - as-needed VM in the cloud
- Virtual Box
- VMWare
- Vultr
Topics below this line were part of this resources file prior to Spring 2017
iceScrum
git