CSC 4700 Software Engineering
Dr. Tom Way CSC 4700 1
What have we learned?
• What is Software?
• What is Software Engineering?
• Why is it important?
• What are the careers in SE?
• What are requirements?
• User requirements, system requirements
• Functional vs non-functional requirements
• Domain requirements
Dr. Tom Way CSC 4700 2
What else have we learned?
• Natural language can produce lack of clarity
• Requirements vs. software specification
• Fred Brooks says “No silver bullet!”
• Specify tying shoe laces
• Project brainstorming
• Team management
• Agile software development
Dr. Tom Way CSC 4700 3
What more have we learned?
• Agile Manifesto
• Extreme programming, pair programming
• Bad smells in code, lots of examples
• The rule of 3 (third time you code something,
make it reusable instead)
• Hands-on refactoring with Eclipse
• Designing a prototype
Dr. Tom Way CSC 4700 4
What other stuff did we learn?
• Throw-away prototyping
• Incremental development
• Evolutionary development
• Prototyping tools and toolkits (e.g., PowerPoint)
• Joel on Software, great site for SE info
• More and more about SCRUM
• User interface design, good vs bad ideas
• Downfall of Agile Hitler
Dr. Tom Way CSC 4700 5
What other things were learned?
• Project presentations
• Informal demos of software
• Pitfalls of live software demos
• Impact of early design choices
• Impact of early technology choices
• Impact of early organizational choices
• Speed prototyping – simple web browser
• Porting code – from C to Java
Dr. Tom Way CSC 4700 6
What else was learned?
• Team member evaluation
• Team-based collaboration, what works, what
• Software design specifications
• IEEE standard specification template
• What goes into a specification
• Purpose and goal of specification
• Project management – people make it tricky
Dr. Tom Way CSC 4700 7
What are other things learned?
• The HOPE method is not a great approach
• What’s it like working at Google
• What things help at a job interview
• Open source vs free software
• Who is Richard Stallman?
• Losing momentum is painful on software project
• Multi-location collaboration is hard
• Multi-location collaboration happens a lot
Dr. Tom Way CSC 4700 8
What are ideas were learned?
• Test-driven development is a good thing
• Eclipse (or NetBeans) and JUNIT enable TDD
• Bug tracking is vital
• FogBugz is easy to use and widely used
• Design patterns are important
• There are lots of design patterns
• Anti-patterns are important (to recognize)
• There are lots of anti-patterns (to fix)
Dr. Tom Way CSC 4700 9
What is possible in a semester?
• Develop a desktop widget (Rita’s Water Ice)
• Google Maps enable cool running route app
• GameMaker helps with RPG games
• Sprite editor tools are needed, not too hard
• Swipe tracking app on iPhone is not too hard
• University technology bureaucracy is hard
• Visual basic and automate spreadsheet analysis
• GameMaker is good for retro-style game design
Dr. Tom Way CSC 4700 10
What is possible in a semester?
• MyNova is universally despised
• MyNova Mobile is a welcome and steal-able idea
• Assume users will do dumb things
• Interactive storytelling software exists, is usable
• Java provide encryption support, apps doable
• Online APIs are available for lots of things
• MovieGame API speeds up development
• Interactive iPhone Pong is tricky, timing hard
Dr. Tom Way CSC 4700 11
One last thing
• No idea is too crazy to try
Dr. Tom Way CSC 4700 12