End Notes
Michael L. Collard, Ph.D.
Department of Computer Science, The University of Akron
Society
Software is designed to perform tasks for
people
Critical to society at large
A significant part of progress in any field relies on software
Lack of agility of software constrains all other activities
Non-Functional Issues
User stories capture functional issues, e.g.,
Can a student see their remaining courses in DPR?
A good process assures that the issues are completed
Non-functional issues, e.g.,
How easy is it for a student to view and understand their remaining courses in DPR?
Very difficult to capture
Most difficult is
usability
(especially in mobile)
gestalt
An organized whole that is perceived as more than the sum of its parts
Principle of proximity
Principle of closure
Principle of similarity
Principle of continuity
Principles of perception
Principle of organization
Principle of symmetry
Solution
Non-functional issues must be part of the conversation between developers and users and among developers
All parts of the process must lead to interaction and conversation
Documents do not capture all of this
Security Issues
goto fail
(Apple SSL/TLS bug)
OpenSSL bug
Heartbleed
(OpenSSL bug)
Proposed solution: Better programming languages
Proposed solution: Better coding standards
Proposed solution: More sleep/less caffeine for developers
Solution
Better
process
Little previous funding for OpenSSL (years previous to the event, $2,000)
The setup and support of process requires money
Development
Software Engineering is a process that includes many different people in many different roles
You have to deal with antiquated technologies, languages, and people
What you think of as modern technologies and languages are not in the future
Lifespan
Initial Development
Evolution
Servicing
Phaseout
Close Down
Lifespan Factors
Code Decay
Reengineering
Lehman's Laws
All make staying in evolution difficult
Forecast (No Surprises)
Best time in history to be a Software Engineer in terms of job satisfaction, pay, and opportunities
With few exceptions, hardware is commonplace and inexpensive
Platforms to easily distribute software, e.g., app stores
Cloud services remove many barriers to entry
Post-PC and rise of mobile, e.g., tablets, smartphones
To some, these are challenges, but they can be opportunities
Challenges
Refinement of any process never stops
Abstractions such as cloud computing remove many issues but introduce new ones
How to create for mobile and post-pc devices, i.e., the "
jobs to be done
".
Things to Avoid
Letting your attitudes get in the way of serving your customers or employer
Confusing what you need to do your job with what other people need
Confusing traditional ways of doing things with newer approaches
Improve Your Skills
Use version control for everything
Learn to write good commit messages
Learn to write and use build files and associated software
Practice your workflows and use them in all your classwork