Introduction to Software Engineering
Copyright © 1985, 1986, 1987 by Herb Weiner. All rights reserved.
A student successfully completing the course will be able to:
- Explain the purpose of dividing software activities into phases, list the phases of the software life cycle, explain why each of these phases is important, and list the key objectives, activities, tool requirements, deliverables, and milestones for each phase.
- Identify and describe five external (user-oriented) software quality attributes and five internal (software-oriented) software quality attributes.
- Identify five techniques or methodologies which reduce the cost of software development and/or improve the quality of the resulting software.
- Identify the three approaches provided by the legal system for protecting software and state the advantages and disadvantages of each approach.
- Identify the three key types of statements incorporated into programming languages.
- Describe the difference between algorithmic and heuristic solutions to problems and the importance of this difference to software design.
- Describe the role of teamwork in software engineering (what, why, how).
- Identify the key abilities, skills, and knowledge required by a successful software engineer.
- Describe the difference between "programming" and "software engineering".
- Define "configuration control" and describe the role of configuration control in product development.
In order to achieve a grade of "A", students must achieve the following additional objectives. Not all students are expected to achieve these objectives:
- Given a set of requirements for extending the capabilities of a familiar product, the student will be able to specify a user interface (the set of controls and indicators on the product and the sequence of operations required to use the product).
- Given a user interface specification for a familiar product, the student will be able to design (in English) software which implements the user interface.
- Given a user interface specification for a familiar product, and a software design (in English) which contains a bug (error), the student will be able to locate the bug.