0% found this document useful (0 votes)
83 views3 pages

Software Engineering Course Overview

CIS 434 Software Engineering at Cleveland State University covers software development life-cycle stages, documentation, quality software components, and teamwork. The course includes topics such as software design, cost estimation, verification, and testing, with a focus on both structured and object-oriented approaches. Prerequisites include CIS 433, and students will utilize textbooks by Karl Wiegers, Joy Beatty, and Craig Larman.

Uploaded by

karanjoshi1101
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
83 views3 pages

Software Engineering Course Overview

CIS 434 Software Engineering at Cleveland State University covers software development life-cycle stages, documentation, quality software components, and teamwork. The course includes topics such as software design, cost estimation, verification, and testing, with a focus on both structured and object-oriented approaches. Prerequisites include CIS 433, and students will utilize textbooks by Karl Wiegers, Joy Beatty, and Craig Larman.

Uploaded by

karanjoshi1101
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Cleveland State University

Department of Electrical Engineering and Computer Science

CIS 434: Software Engineering

Catalog Description: CIS 434 Software Engineering (3-0-3)


Pre-requisite: CIS 433
Topics in software engineering and performance engineering, including
comparison between structured and object-oriented software development,
verification and testing, software design for concurrent and real-time
systems, and system re-engineering for increased performance.

Textbook: Software Requirements, 3rd Edition, Karl Wiegers and Joy Beatty,
Publisher: Microsoft Press, 2014, ISBN: 978-0-7356-7966-5
Applying UML and Patterns: An Introduction to Object-Oriented Analysis
and Design and Iterative Development, 3rd Edition, Craig Larman,
Publisher: Prentice Hall, ISBN: 0-13-148906-2

Reference: Reference: Software Engineering, 8th Edition. Ian Sommerville, Addison-


Wesley, 2006

Coordinator: Dr. Sanchita Mal-Sarkar


Associate Professor of Electrical Engineering and Computer Science
Phone: 216-523-7524
Email: [Link]@[Link]
Course URL: [Link]
Blackboard Learn: https: //[Link]/MACAuth/[Link]

Expected Outcomes: Upon successful course completion, a student will be able to:
 Be familiar with the different stages of the software development life-
cycle.
 Be familiar with the different kinds of documentation generated
throughout the development life-cycle
 Understand the fundamental components of quality software and cost
estimation
 Be able to work successfully in a group with colleagues
 Be introduced to various new technologies that are being used to produce
software in the industry

Fulfillment of EE, CE and CIS Program Objectives and Outcomes:


Objectives:
1. Graduates will apply the concepts of the discipline including analysis,
design, and implementation of information and computing systems.
2. Graduates will be employed in the computing profession, and will be
engaged in life-long learning, understanding, and applying new ideas and
technologies as the field evolves.
3. Graduates will be informed and involved members of their communities,
and responsible engineering and computing professionals.
Outcomes:
1. An ability to apply knowledge of computing and mathematics
appropriate to the program’s student outcomes and to the discipline
2. An ability to analyze a problem, and identify and define the computing
requirements appropriate to its solution
3. An ability to function effectively on teams to accomplish a common goal
4. An ability to communicate effectively with a range of audiences
5. An ability to translate fundamental computing concepts to a variety of
emerging technologies

Student Characteristics:
(a) An ability to apply knowledge of computing and mathematics
appropriate to the program’s student outcomes and to the discipline
(b) An ability to analyze a problem, and identify and define the computing
requirements appropriate to its solution
(c) An ability to design, implement, and evaluate a computer-based system,
process, component, or program to meet desired needs
(d) An ability to function effectively on teams to accomplish a common
goal
(f) An ability to communicate effectively with a range of audiences

Prerequisites by Topic:
Basic systems principles and concepts; logical analysis, design, and
modeling of software systems.
Topics:

1. Introduction to Software Engineering and course policies,


Software Product
2. Software Process, Prescriptive Process

3. Programming and problem solving

4. Software Cost Estimation Requirements

5. Analysis Modeling

6. Classes and Objects

7. Introduction to Software Design, Software Architectural


Design
8. Object-Oriented Design, Contract-based Design

9. Design Patterns

10. Aspect-Oriented Programming Verification and Validation

11. Black-Box Testing, White-Box Testing

12. Object-Oriented Testing, Software Model Checking

13. Model Checking with SPIN

Common questions

Powered by AI

Black-box testing treats the software as a 'black box' and focuses on input-output relationships without considering internal code structure, making it applicable primarily for validation testing. White-box testing, conversely, involves examining the internal workings and logic of the software, aiming to test paths, branches, and conditions for verification purposes. Both methods are applied to different phases and aspects of testing to ensure comprehensive coverage .

Aspect-oriented programming (AOP) is a programming paradigm that aims to separate concerns, specifically addressing cross-cutting concerns such as logging, security, and error handling. It enables the modularization of aspects that cut across multiple modules, thereby improving code maintainability and reducing redundancy by cleanly isolating functional behavior and orthogonal aspects .

The understanding and application of design patterns significantly benefit software architectural design by offering proven solutions to common design problems. They promote reuse, reduce complexity, and enhance communication among developers through shared vocabulary, thereby leading to more robust and scalable architectural designs .

Introducing students to new technologies during their education is imperative to prepare them for the evolving nature of the software industry. Awareness and familiarity with contemporary tools, frameworks, and methodologies enable students to adapt quickly to industry standards, enhancing employability and fostering the ability for lifelong learning to accommodate continuous changes in the technological landscape .

Software model checking with tools like SPIN is significant because it allows for the exhaustive analysis of concurrent systems to verify properties such as deadlocks, race conditions, and logical errors, which are difficult to detect through traditional testing. It enhances reliability and correctness by providing formal proof of properties, which is essential for critical systems .

Verification is concerned with evaluating the software to ensure it meets specifications and design plans through activities like reviews and inspections. Validation, contrastingly, checks if the software accomplishes its intended use, aligning with end-user needs. Together, they ensure quality by confirming the product is built correctly and fulfills its intended purpose, reinforcing reliability and user satisfaction .

Cost estimation in software development is critical for budgeting, planning, and resource allocation, ensuring projects are financially viable and constraints are managed. Challenges include accurately forecasting costs due to uncertain requirements, rapid technological changes, and the dynamic nature of software projects, which can lead to overruns and resource shortages if not carefully managed .

Structured software development follows a linear and sequential approach, often seen in the waterfall model, emphasizing process-centric phases like requirements, design, implementation, test, and maintenance. Object-oriented development, on the other hand, focuses on modeling software based on objects and interactions, often using UML to support its reflective and iterative processes. It emphasizes reusability, scalability, and maintainability, allowing for flexible and adaptive software development practices .

Understanding the software development life-cycle helps students conceptualize and navigate the roles, responsibilities, and timelines inherent to software projects. This awareness fosters collaboration by enabling team members to anticipate dependencies, manage expectations, and coordinate tasks efficiently, ultimately contributing to successful group work outcomes .

UML supports object-oriented analysis and design by providing a standardized language to specify, visualize, and document models of software systems. It helps in characterizing elements like structure, behavior, and interaction in a system through various diagram types such as class diagrams, sequence diagrams, and use-case diagrams, thereby facilitating clear communication and understanding among stakeholders .

You might also like