Development lifecycle models are presented. Issues in configuration management, integration and testing, software quality, quality assurance, security, fault tolerance, project economics, operations, human factors, and organizational structures are considered. This course introduces students to the discipline of software engineering. Although it is a relatively new engineering discipline, software engineering's impact on our personal and professional lives will increase proportionally with the role of software and computer systems in our lives. The development of software for large computer systems is the focus of the course.
Software development spans the life-cycle of software from problem definition to product testing.
Although several software development methodologies and processes will be studied, the tasks of software development are relatively constant. The requirements for large computer systems have grown to the extent today that they are beyond the capability of one developer or even of several developers. Teams of developers are required to develop large complex computer systems over several years. In addition, the developer no longer can be simply a computer programmer, but must be a professional with skills including problem analysis, system and software design, test planning and test case design, and maintenance. We will study the discipline of software engineering by examining contemporary and short-term software development methodologies, processes, procedures, techniques, and tools.