Introduction to Software Engineering

Introduction to Software Engineering

Course Code : 105

Workshop : Training

Duration : 4 Days

COURSE OUTLINE

Software development depends on an in-depth understanding of how the phases and activities of the software development life cycle work together. The application of software engineering practices throughout the cycle improves the likelihood of delivering a quality software project on time, in scope and within budget. After taking this course, trainees should be able to:

· Deliver high-quality, maintainable software projects on time and within budget

· Select an appropriate software development life cycle model for your project

· Apply appropriate requirements, analysis, design and testing methodologies

· Identify and assess language, database, software architecture and quality issues

· Exploit verification and validation activities throughout the life cycle

· Employ techniques that help achieve SEI CMMI and IEEE 9000 goals

· Enhance the impact of CASE tools, formal methods and Web engineering

techniques.

COURSE OBJECTIVES

This course provides an introduction to the software engineering discipline and the roles within it. You will learn how each phase of the life cycle contributes to a product that satisfies user/client requirements.

TARGET AUDIENCE

Programmers, software project managers, business analysts, QA testers and those who want an introduction to modern software development.

COURSE CONTENTS

INTRODUCTION AND OVERVIEW

Software development challenges

· Defining project success

· Containing maintenance costs

· Meeting user/client requirements

Software engineering fundamentals

· The scope of software

· The software engineering discipline

SOFTWARE LIFE CYCLES

Life cycle phases

· Understanding the problem

· Developing the solution

· Verifying the product

· Maintaining the system

Popular software life cycle models

· Waterfall

· V

· Phased

· Evolutionary

· Spiral

Alternative techniques

· UP

· DSDM

· JAD

· PSP/TSP

· Extreme programming

· Prototyping

· Agile software development

Standards

· The role and types of standards

· ISO 12207: life cycle standard

· IEEE standards for software engineering processes and specifications

PLANNING AND MANAGING REQUIREMENTS

Eliciting requirements

· Determining what you need to know

· Devising a strategy

· Translating user requirements into system and software requirements

Documenting requirements

· Functional requirements

· Non-functional requirements

Managing requirements

· Laying a foundation for the entire project life cycle

· Traceability and change control

ANALYZING AND DESIGNING YOUR SYSTEM

The roles of analysis and design

· Identifying the "what"

· Translating to the "how"

Traditional structured approaches

· Data modeling

· Process modeling

Object-oriented (OO) strategies

· Modeling with UML

· Class diagrams

Deciding on your approach

· Comparing the alternatives

· Allowing adequate time for analysis and design

BUILDING YOUR SOFTWARE

Language and platform issues

· Procedural vs. OO languages

· Operating systems

· CBSE

Database issues

· Traditional databases

· Object-oriented databases

VERIFYING AND VALIDATING YOUR RESULTS

Static confirmation

· Reviews, walkthroughs and inspections

· How static confirmation processes improve software quality

Dynamic testing

· Objectives of the various types of testing

· Determining who performs testing

Traceability matrices

· Their importance throughout the life cycle

· Creating and maintaining the matrices

BUILDING QUALITY INTO THE PROCESS

Configuration management (CM)

· The CM process, activities

· The role and responsibilities of a CCB

Software quality assurance (SQA)

· Determining quality measurements

· Enriching CPI

· Incorporating an SQA program

Project measurements

· People/project issues

· Technical metrics

Quality and process standards and guidelines

· IEEE 9000

· ISO 15504

· SEI CMMI

ADDITIONAL PROJECT CONSIDERATIONS

Project and risk management

· The cooperative roles of software engineering and project management

· Developing risk response strategies

Software engineering ethics

· Code of ethics

· Responsibility issues

CASE tools

· Types of tools available

· Selecting appropriate tools

Utilizing formal methods

· Employing set theory and logic notation

· Verifying requirements mathematically

Applying Web engineering techniques

· Delivering a complex array of content and functionality

· Employing a user-centered process