Skip navigation.

Contact Us

Department of Computer Science

Janssen Engineering
Room 236
PO Box 441010
Moscow, Idaho
83844-1010

phone: 208-885-6592
fax: 208-885-9052

e-mail:
dept chair
graduate info
undergrad info
sys admin
webmaster

CS Department Banner Graphic

CS 383 Software Engineering I

Total Credits: 3 cr

Course Coordinator: Clinton Jeffery

URL: http://www2.cs.uidaho.edu/~jeffery/courses/383

Current Catalog Description: Current topics in development of software systems; software life cycle model, requirements definition, design, verification and validation, and project management techniques. Prereq: CS 270 or perm.

Textbook: The course uses a book that provides a comprehensive coverage of software engineering presenting a variety of commonly used approaches, methods, and techniques.

References: Numerous piece of reference material are provided on the course web site.

Course Goals: The fundamental goal of this course is to develop each student's ability to apply a systematic and engineering approach to the development of software systems and products.

This course is the first of a two semester sequence in software engineering with concentration on the early phases of the software development process. Topics selected for presentation and discussion will change as the field of software engineering matures and advances. CS 383 provides a focus on software development life cycles, requirements elicitation, and architectural design and design decomposition, while the subsequent course will concentrate on implementation, and testing. The course teaches students about a wide spectrum of modern techniques available for performing activities in each of these areas. Material presented in this course addresses topics identified in the Software Engineering Body of Knowledge, SWEBOK, developed and published by the IEEE Computer Society.

Students are exposed to material in major areas of software engineering and then given the opportunity to apply what they have studied to the development of a non-trivial application program. The course exposes students to team-based development by using small groups to complete major project development activities. The student's communication skills will be enhanced by activities requiring both written and oral communication. Discussions of legal, ethical, social, and professional issues are covered in conjunction with presentation of software engineering concepts.

Grading is based on a combination of individual work as evidenced by performance on homework assignments, exams, and a written report, as well as how each student performed in team-based activities. At the start of each major section or phase of the course, small teams of students will be formed. Teams will be used to develop a requirements specification and a software design specification. In each team, students will collaborate to accomplish the work needed to successfully complete that phase of the project. All teams will be given the same work product to use as a baseline. With the exception of the initial baseline for the product specification, this work product is selected from among those submitted in the previous phase and which represents a solid, reasonable starting point for the current project phase.

After completing this course a student should be able to effectively determine a lifecycle approach appropriate for a specific development situation, elicit and document software requirements, and perform and document a software design. Through the required work in small teams, students will improve their team participation skills.

Prerequisites by Topic:

  • Proficient programming skills in a high level language such as C++ or Java (IV-8)(CS 121)
  • Understanding of basic concepts of programming languages and the benefits and limitations associated with them (IV-6)(CS 210)
  • Ability to use basic software development tools (CS 270)
  • Understand fundamental concepts of computer organization, computer architecture, operating systems and their relationship to application programs (IV-6) (CS 150, CS 240)

Major Topics Covered in the Course: The following major topics are covered in the course. Along with each topic are listed the ABET Criteria associated with the topic and the CS Body of Knowledge topic identified in the CC 2001.

  • Motivation for and fundamentals of an engineering approach to software product development (IV-7) (SP2, SP5)
  • Software development life cycles (IV-7) (SE 4, SE 7)
  • Software development processes (IV-7) (SE 4, SE 7)
  • Initial project planning (IV-7) (SE 8)
  • Software development tools (IV-7) (SE 3)
  • Documentation during development (IV-7, IV-16)
  • Software requirements elicitation, definition, and modeling (IV-7) (SE 5)
  • Quality and performance considerations (IV-7) (SE 11)
  • Design process and design representation (IV-7) (SE 1)
  • Software architectural design (IV-7) (SE 1)
  • Design decomposition (IV-7) (SE 1)
  • User Interface Design (IV-7) (HC1, HC 2)
  • Using libraries and APIs (IV-7) (SE 2)
  • Review, verification, and validation of technical work (IV-7) (SE 6)
  • Legal, ethical, social, and professional issues in software product development (IV-17) (SP 2, SP 4, SP 5, SP 6, SP 7)

Laboratory projects (specify number of weeks on each): Some of the laboratory activities identified below may overlap.

  • Development of a requirements specification for the assigned application (3 weeks) (team activity) (IV-16) (SE 5)
  • Development of a design specification for the assigned application (3 weeks) (team activity) (IV-15, IV-16) (SE 1)
  • Study, evaluate, and present a software development tool (2 weeks) (team activity) (IV-15) (SE 3)
  • Write a paper on legal, ethical, social and/or professional issues in software engineering (2 weeks) (individual) (IV-16, IV-17) (SP 2, SP 4, SP 5, SP 6, SP 7)

Estimated Curriculum Category Content:

Area Core Advanced Area Core Advanced
Algorithms     Data Structures    
Software Design   3 cr Prog. Languages    
Computer Arch     Other    

In this course, we have assigned all the credits to the Software Design Category to indicate the course's primary focus on application of the software analysis and design techniques in the context of an application under development. Although the vast majority of activity in this course is contained within the Software Design category, some attention is paid to other areas as needed to support effective development of the application.

Oral and Written Communications: Every student is required to submit at least 4 written reports (not including exams, tests, quizzes, or commented programs) of typically 3-20 pages and to make 3 oral presentations of typically 10 - 15 minutes duration. Specific requirements are:

  • Individually, each student will be required to write a technical report on a topic in the general area of legal, social, ethical, and professional issues for the portion of development covered in this course. This report will be in the range of 3 to 5 pages.
  • As a member of a small team, each student will contribute to the development of an requirements specification, a design specification for the assigned application, and a report describing the capabilities of an assigned software development tool. A portion of each student's grade on these activities is based on input from other members from his/her team. This helps ensure that each student does a reasonable share of the work. For each assignment, each team is required to make a formal presentation of their work to the class. All team members will participate in the preparation and delivery of the presentation.

Social and Ethical Issues: The foundation of an engineering approach to software product development was created in direct response to the need to achieve legal, ethical, moral, and professional objectives. Each student will be required to write a technical report on a topic in the general area of legal, social, ethical, and professional issues. This report will be in the range of 3 to 5 pages.

Theoretical Content: Software architectural styles and design patterns.

Problem Analysis: Working with a project sponsor to identify, define, and document the specific needs and requirements to be satisfied by the project.

Solution Design: Beginning with a set of software requirements, develop an architectural design and design decomposition that will satisfy those requirements.

Course Outcomes: The following list documents the course outcomes and crossreferences them to the BSCS program outcomes. The letter at the beginning of each reference identifies the program outcome supported. The numbers sequentially identify the course outcome for this course. After completing CS 383 a student should know or be able to:

  • Define and compare several development models. (a-1)
  • Construct a project plan and schedule. (b-1)
  • Develop a set of questions for a customer in order to elicit requirements. (b-2)
  • Develop a software requirements specification document. (b-3)
  • Develop UML use case descriptions and diagrams. (b-4)
  • Develop user interface descriptions and prototypes. (b-5)
  • Develop a software design document. (c-1)
  • Develop UML class diagrams, statecharts, and collaboration diagrams. (c-2)
  • Define inheritance, aggregation, and user-defined associations/responsibilities between classes. (c-3)
  • Establish and maintain mappings between requirements and design documents, and between design documents and code. (c-4)
  • Define major architectural styles for computer-based systems. Identify an appropriate architecture for a given requirements specification. (c-5)
  • Seek out, evaluate, select, and utilize appropriate function libraries and class libraries to address the needs of an application domain or software design. (c-6)
  • Work together in small groups and report effectively on group activities and decisions. (d-1)
  • Make oral presentations as a team. (d-2)
  • Define multiple team organizational styles and roles. (d-3)
  • Perform a software code review or walkthrough. (d-4)
  • Summarize the Software Engineering Code of Ethics and the ACM Code of Ethics, and apply these principles in hypothetical scenarios. (e-1)
  • Write weekly reports on project activity. (f-1)
  • Write technical reports on issues relevant to the success of a software project. (f-2)
  • Make oral presentations. (f-3)
  • Review technical documents and provide constructive feedback. (f-4)
  • Describe several primary sources for software engineering research and information. (h-1)
  • Summarize the current state and trends in professional certification mechanisms for software engineering. (h-2)
  • Study and report on the function and usage of unfamiliar software development tools. (h-3)
  • Effectively use a user interface builder or similar prototyping or code generating tool. (i-1)
  • Describe the application of design patterns. (k-1)
  • Define several of the most widely applicable design patterns. (k-2)