### Software Engineering

Course Code: CSPC34Course Title: Software EngineeringNumber of Credits: 3-0-1-4Course Type: PC

#### Engineering?

A car is well-engineered if it is usable, maintainable and is well engineered when it works flawlessly over a long period of time.

When the users are dissatisfied, when it is error-prone, always giving trouble, gets harder to use it, bad things can and do happen. Is an example of bad engineering.

#### Software

That piece of logic and computing which is coded, which is there in your mobile phone, the applications, the piece of code in your washing machine which washes the clothes, on your watch, television, space shuttle, Netflix, Uber, online classes, moodle, Mars mission etc...

The software can be used to create sophisticated solutions, as well as to automate and ease the tasks that we do on a day to day basis.

#### Software Engineering?

Engineering is the process, and Software Engineering is a stream which focuses on making the process of creation and maintenance of Software better, to make it less prone to errors.

When computer software succeeds—when it meets the needs of the people who use it, when it performs flawlessly over a long period of time when it is easy to modify and even easier to use—it can and does change things for the better.

But when the software fails—when its users are dissatisfied, when it is error-prone, when it is difficult to change and even harder to use—bad things can and do happen. We all want to build software that
makes things better, avoiding the bad things that lurk in the shadow of failed efforts. To succeed, we need discipline when the software is designed and built. We need an engineering approach.

#### Objectives

• To understand the Software Engineering Practice& Process Models
• To understand Design Engineering, Web applications, and Software Project Management
• To gain knowledge of the overall project activities.

#### Syllabus

Unit-I
Introduction: Role of Software Engineer, Software Components, Software Characteristics, Software Crisis, Software Engineering Processes, Similarity and Differences from Conventional Engineering Processes, Quality Attributes.
Assessment: How Software Engineering Changes? Software Development Life Cycle (SDLC) Models: Water Fall Model, Prototype Model, Spiral Model, Evolutionary Development Models, Iterative Enhancement Models, Choosing a social relevant problem-Summary Team Report.

Unit-II
Requirement Engineering Process: Elicitation, Analysis, Documentation, Review and Management of User Needs, Feasibility Study, Information Modelling, Data Flow Diagrams, Entity Relationship Diagrams, Designing the architecture.
Assessment: Impact of Requirement Engineering in their problem. Decision Tables, SRS Document, IEEE Standards for SRS, Architectural design, component-level design, user interface design, WebApp Design.Submission of SRS Document for Team Project.

Unit-III
Quality concepts, Review techniques, Software Quality Assurance (SQA): Verification and Validation, SQA Plans, Software Quality Frameworks.
Assessment: Framing SQA Plan. ISO 9000 Models, SEI-CMM Model and their relevance to project Management-other emerging models like People CMM.

Unit –IV
Testing Objectives, Unit Testing, Integration Testing, Acceptance Testing, Regression Testing, Testing for Functionality and Testing for Performance, Top-Down and Bottom-Up Testing, Software Testing Strategies -Strategies: Test Drivers and Test Stubs, Structural Testing (White Box Testing), Functional Testing (Black Box Testing), Testing conventional applications, object-oriented applications, and Web applications, Formal modelling and verification, Software configuration management, Product metrics.
Assessment: Team Analysis in Metrics Calculation.

Unit-V
Project Management Concepts, Process and Project Metrics, Estimation for Software projects, Project Scheduling, Risk Management, Maintenance and Reengineering.
Assessment: Preparation of Risk mitigation plan.