Software Construction
Steven J Zeil:
Last modified: Jan 5, 2017
1 Perspectives on Programming
Programming is…
-
a science (Gries)
-
an art (Knuth)
- a process (Humphries)
- like writing
- Literate Programming (Knuth)
- “Plan to throw one away; you will, anyhow.” (Brooks)
- like farming (Brooks, Hunt, Thomas)
- like hunting werewolves (Brooks)
- like construction (McConnell)
2 Software Construction
The collection of activities that actually produce the working software.
-
Coding and debugging at the center, plus supporting activities
-
Excludes management, reqts. analysis, architectural design, UI design, acceptance testing, maintenance
- “the only activity that’s guaranteed to be done” (McConnell)
- the fun part!
Importance of Construction
Questions
3 Key Construction Decisions
Some of the key decisions to be made before entering or during the early part of software construction:
3.1 Choice of Programming Language
What are the factors that would influence this?
- Expressiveness & Readability
- Familiarity
- Programmers with 3 or more yrs. experience are 30% more effective than similar programmers working in a new language (Boehm, COCOMO)
- Platform & Tool support
- Library support
3.2 Programming Conventions
- Naming conventions
- Documentation conventions
- Modularity conventions
- Style guides
3.3 Construction Practices
- Coding
- Up front versus incremental design (& reqts)
- Architectural decisions (e.g., error handling)
- Teamwork
- Team organization & roles
- Integration process
- Quality Assurance
- Testing standards and procedures
- Inspections, Pair programming
- Who has eyes on the code?
- Tools
- Version control
- Language & compiler choices
- language versions & features
- Frameworks
- Configuration control
- Integration tools
4 Looking Ahead
Through the rest of the semester we will look at
- Unit testing
- Build managers
- Version control
- Documentation tools
- Configuration managers
- System & regression test
- Code analysis tools
.
© 2015-2016, Old Dominion Univ.