Software Design Architecture Comparison
Title | Software Design and Architecture Comparison (Eclipse vs Openstack) |
Overview | Students will research existing software design documents and resources for both projects and then write a report detailing their differences and helpfulness to various levels of developers. |
Prerequisite Knowledge |
|
Learning Objectives | What should the student be able to do after completing completed this activity?. |
Background:
Is there background reading material?
Are there other activities the student should have done first?
What is the rational for this activity?
Include helpful hints to faculty here.
Background reading:
- https://en.wikipedia.org/wiki/Software_design
- https://en.wikipedia.org/wiki/Software_design_pattern
- http://www.openu.ac.il/personal_sites/download/galezer/SoftwareDesign.pdf
- This paper describes how they had to get students to re-think how they write code. The students needed to think more outside of the syntax of the actual language, and more toward software design / repeatable design patterns that dont depend on the coding language.
- I am looking at this paper and thinking about the various tasks or activities that they show were done in their classroom. I may be able to use these ideas.
- “It should be re-emphasized that practical programming does not play a central role in the unit. At the end of the year students and teachers realized that programming in itself is not the main goal.”
- http://stackoverflow.com/questions/268231/how-to-learn-good-software-design-architecture
- http://cc2e.com/
- Code Complete Book - Design chapter
- ‘Design’ is similar to my definition of ‘software-architecture’, except that design can pervade into lower levels of classes and routines and code
- Gof Design Patterns
- GoF Design Patterns Explained
- Research Paper: Design patterns in open source
- Book: Architecture of Open Source Applications - from Tom
- Openstack Oslo - from email to listserv
Directions:
What should the student do?
Deliverables:
What will the student hand in?
Assessment:
How will the activity be graded?
How will learning will be measured?
Include sample assessment questions/rubrics.
Criteria | Level 1 (fail) | Level 2 (pass) | Level 3 (good) | Level 4 (exceptional) |
---|---|---|---|---|
The purpose of the project | ||||
Why the project is open source |
Comments:
What should the instructor know before using this activity?
What are some likely difficulties that an instructor may encounter using this activity?
Additional Information:
ACM Knowledge Area/Knowledge Unit | What ACM Computing Curricula 2013 knowledge area and units does this activity cover? ACM_Body_of_Knowledge |
ACM Topic | What specific topics are addressed? The Computing Curriucula 2013 provides a list of topics - https://www.acm.org/education/CS2013-final-report.pdf |
Level of Difficulty | Is this activity easy, medium or challenging? |
Estimated Time to Completion | How long should it take for the student to complete the activity? |
Materials/Environment | What does the student need? Internet access, IRC client, Git Hub account, LINUX machine, etc.? |
Author | Nick Yeates |
Source | Is there another activity on which this activity is based? If so, please provide a link to the original resource. |
License | Creative Commons CC-BY |
Suggestions for Open Source Community:
Suggestions for an open source community member who is working in conjunction with the instructor.
This work is licensed under a Creative Commons Attribution 4.0 International License
Appendix
Note: Can be removed later, or kept as a resource to teaches looking into other communities.
Software design - Potential communities to look into:
- Look at openshift’s software architecture
- Software architecture?
- Talk to someone on the team - get someone who is an expert and quiz them
- GNOME Shell - graphical environment - UI of Fedora - public iterative design to implementation
- GNOME Documents and Photos - iterative design
- Inkscape community
- Hacking and Contributing files
- Openstack design process - blueprints idea, where you write feature and how you want to do it, get sign off from community and then patches are reviewed and go through significant revision
- Developers Guide - http://docs.openstack.org/infra/manual/developers.html
- http://docs.openstack.org/project-team-guide/project-setup/python.html
- https://www.python.org/dev/peps/pep-0008/
- http://docs.openstack.org/project-team-guide/open-community.html#technical-committee-and-ptl-elections
- https://github.com/openstack-dev/hacking/blob/master/HACKING.rst
- hacking.md files, Style Guides, Pep8,
- http://docs.openstack.org/project-team-guide/open-design.html
- https://wiki.openstack.org/wiki/Blueprints
- https://review.openstack.org/#/q/status:open
- http://docs.openstack.org/infra/manual/developers.html
- https://review.openstack.org/Documentation/intro-quick.html
- http://docs.openstack.org/infra/system-config/gerrit.html
- Developers Guide - http://docs.openstack.org/infra/manual/developers.html