PSI course curriculum
From Inforail
- Finding a problem in search of a solution
- Choose a problem that is relevant in the modern world
- Choose a problem you have the capacity to solve
- Avoiding solution in search of a problem cases
- Devising the requirements for the new system
- Observing people using existing solutions
- Defining user classes, their preferences and their agenda
- Interviewing users
- Understanding what's wrong with the current solutions
- Making a list of objectives for the new system
- Formal description of the requirements
- Types of representations (graphical, text, etc)
- Avoiding conflicting requirements
- Tracking the evolution of requirements
- Devising the WBS (work-breakdown structure)
- Split the system into components
- Estimate the complexity of each component
- Estimate the time needed to develop each component
- Define the order in which components are going to be developed
- Review the estimates at each milestone and verify how accurate they were; update the estimates for the remaining parts of the system
- Devising the user interface
- Question-oriented UI design
- Accessibility for people with disabilities
- DPI-awareness
Various
- Performance metrics (feature points, classes, functions, lines of code, etc)
- Localization
- Multiple storage back-ends
- Logging
- Installers
- Cross-platform compatibility
- OS (Windows, Solaris)
- hardware (ex: x86, x64)
- Integrating third-party components
- Taking into account the license of the component (ex: BSD, GPL, etc)
- Choosing a license for your release
- Creating a web-presence
- Logo
- Slogan
- Site
- Social networking
- Documentation
- End users
- Developers (ex: Doxygen)
- Copy-protection (registration numbers, keygens, etc)
- Energy efficiency (reasonable use of power sources, ex: on a laptop)
- Automatic updates
- Notifications
- Auto-download and install
- Selling software
- Debugging techniques
Other ideas (imported from List of PSI labs)
- Software update notification
- Playing nice with the security policies of the OS
- Microsoft application compatibility toolkit
- Vista UAC
- Where data should be written
- All users vs Current user
- http://technet.microsoft.com/en-us/library/cc766021(WS.10).aspx
- http://msdn.microsoft.com/en-us/library/bb756929.aspx
- GUI research tool (count the number of clicks on each widget, follow the user's clicking path, etc)
- Designing software with cross-platform support in mind
- Making the software 64-bit ready
- Pointer arithmetic
- Special data types
- http://msdn.microsoft.com/en-us/magazine/cc300794.aspx
- Deploying the program (installer, etc)
- Copyright, protection
- Trial version mechanism
- Registration numbers, keygens, cracks and patches
- Documentation - using specialized tools to generate the documentation for a program.
- DocBook, LaTeX
- Doxygen
- Various output formats (CHM, PDF, RTF, DOC), printable versions
- Separating style from contents
- Developing software with energy efficiency in mind
- High DPI screens (http://msdn.microsoft.com/en-us/library/dd464646(VS.85).aspx)
References
- Software requirements, Karl Wiegers
- Software estimation, Steve McConnell
- Code complete, Steve McConnell
- Programmers at work, Susan Lammers