Presentation on theme: "Tools for Efficient Implementation Tools for efficient implementation: Design environments ----GUI design tools Configuration management Good coding habits--PSP."— Presentation transcript:
Tools for Efficient Implementation Tools for efficient implementation: Design environments ----GUI design tools Configuration management Good coding habits--PSP
Design Environments Design Environment chosen should match process goals Example: GUI design Eclipse—code: requires programmer to understand details of the GUI design can produce clean, understandable code can modify others’ code easily NetBeans—code + “form”: provides automatic support for a “quick and dirty” design to be generated good for quick implementation of a prototype difficult to modify, especially if someone else wrote it Examples: on blackboard page—calculator from first lab
Configuration management Configuration management: Goal: allow efficient file sharing but protect code integrity Important concepts (from IEEE standard 1042-1987): configuration items (e.g., a device driver) are grouped into a configuration management (CM) aggregate (e.g., Linux) change control mechanisms ensure project goals being met status accounting enables tracking of versions and overall project auditing by a quality control team ensures completeness, consistence, and quality of versions which are released build management minimizes recompilation; may also support customized versions for different environments process management goals are included, e.g., notification of affected developers, documentation updates, error notification Example: CVS
Personal Software Process Good coding practices: PSP--Personal Software Process
Capability Maturity Model CMM : capability maturity model--DEFINES LEVEL OF THE DEVELOPMENT PROCESS ITSELF (THIS DOES NOT refer to the process but to the MATURITY LEVEL OF THE PROCESS!!!!) 1. Initial: ad hoc 2. Repeatable: basic project management processes in place 3. Defined: documented process integrated into an organization-wide software process 4. Managed: detailed measures are collected 5. Optimizing--desired level: Continuous process improvement from quantitative feedback
CMU Software Engineering Institute CMM--developed by Carnegie Mellon Institute for Software Engineering designed to improve software development process for an organization what about improving performance of the individual developer / programmer?
Programming Practices How do you personally develop a program? 1. what planning do you do? 2. how do you estimate how long the job will take? 3. how do you keep track of the time you are spending on the project? 4. how do you learn from your mistakes? 5. how do you improve your coding for the next project? 6. do you think your coding ability is steadily improving? 7. how have your answers to these questions changed from when you completed your first programming course up until now? 8. how have you used coding standards, etc. to improve your team efficiency on the quarter project?
PSP PSP--Personal Software Process Apply similar strategies to the work of one individual requires: measurement planning analysis / modification of work habits
TSP TSP--Team Software Process For teams of programmers who have been trained in the PSP
PSP--reference Primary reference: Watts Humphrey, A Discipline for Software Engineering, 1996 additional useful reference: Example work by a programmer attempting to use the PSP http://www.nyx.net/~vputz/psp_index/book1.html Open Source project to make PSP available widely: http://www.processdash.com/ --the Software Process Dashboard initiative