Intoduction to software engineering part 1

54
1

Transcript of Intoduction to software engineering part 1

Page 1: Intoduction to software engineering part 1

1

Page 2: Intoduction to software engineering part 1

Unit-1Introduction to Software and

Software Engineering

2

Page 3: Intoduction to software engineering part 1

Software’s Dual Role (Nature of Software)

• Software is a product– Transforms information - produces, manages, acquires,

modifies, displays, or transmits information– Delivers computing potential of hardware and networks

(WITHOUT S/W DIFFICULT TO OPERATE H/W)• Software is a vehicle for delivering a product

– Controls other programs (operating system)– Effects communications (networking software)– Helps build other software (software tools & environments)

3

Page 4: Intoduction to software engineering part 1

Software Products• Generic products:

– Stand-alone systems which are produced by a development organization and sold on the open market to any customer.(e.g. Microsoft Products)

• Customized products:– Systems which are commissioned by a specific

customer and developed specially by some contractor.(e.g. College Mgmt. S/W)

4

Page 5: Intoduction to software engineering part 1

Software Applications

5

(1) System Software:• System software is a collection of programs written to

service other programs.• It is characterized by heavy interaction with computer

hardware; heavy usage by multiple users; concurrent operation that requires scheduling, resource sharing, and sophisticated process management; complex data structures; and multiple external interfaces.

Ex. Compilers, operating system, drivers etc.

Page 6: Intoduction to software engineering part 1

(2) Application Software :• Application software consists of standalone

programs that solve a specific business need. • Application software is used to control the

business function in real-time. • E.g. :Medical Store Mgmt. System

6

Page 7: Intoduction to software engineering part 1

(3) Engineering /Scientific software:• Characterized by "number crunching" algorithms.• Applications range from astronomy to volcano logy,

from automotive stress analysis to space shuttle orbital dynamics, and from molecular biology to automated manufacturing.

Ex. Computer Aided Design (CAD), system stimulation etc.

7

Page 8: Intoduction to software engineering part 1

(4) Embedded Software:• It resides in read-only memory and is used to

control products and systems• Embedded software can perform limited and

esoteric functions. Ex. keypad control for a microwave oven or

timer

8

Page 9: Intoduction to software engineering part 1

(5) Product line software:• Designed to provide a specific capability for

use by many different customers, product line software can focus on a limited and esoteric marketplace.

Ex. Word processing, spreadsheet, CG, multimedia, etc.

9

Page 10: Intoduction to software engineering part 1

(6) Web Applications:• Web apps can be little more than a set of linked

hypertext files.• It evolving into sophisticated computing

environments that not only provide standalone features, functions but also integrated with corporate database and business applications.

10

Page 11: Intoduction to software engineering part 1

(7) Artificial Intelligence software:• AI software makes use of numerical & non-

numerical algorithms to solve complex problems those are not amenable(easily controlled) to computation or straightforward analysis.

Ex. Robotics, expert system, game playing, etc.

11

Page 12: Intoduction to software engineering part 1

Characteristics of Software

1] Software is developed or engineered2] Software doesn’t “wear out.”3] Although the industry is moving toward component-based construction, most software continues to be custom built.

12

Page 13: Intoduction to software engineering part 1

Manufacturing vs. Development• Once a hardware product has been manufactured, it is

difficult or impossible to modify. In contrast, software products are routinely modified and upgraded.

• In hardware, hiring more people allows you to accomplish more work, but the same does not necessarily hold true in software engineering.

• Unlike hardware, software costs are concentrated in design rather than production.(Once demo is ready then can produce multiple copy)

13

Page 14: Intoduction to software engineering part 1

Wear vs. DeteriorationFailure curve for Hardware

14

Earlier Failure rate in its life

Affection from Dust, Abuse, Temperature,

Environment etc

Page 15: Intoduction to software engineering part 1

Wear vs. DeteriorationSoftware deteriorate over time

15

Page 16: Intoduction to software engineering part 1

Component Based vs. Custom Built

• Hardware products typically employ many standardized design components.

• Most software continues to be custom built.• The software industry does seem to be moving

(slowly) toward component-based construction.

16

Page 17: Intoduction to software engineering part 1

Hardware vs. SoftwareHardware Software

Manufactured Wears out Built using components Relatively simple

Developed / Engineered Deteriorates Custom built Complex

17

Page 18: Intoduction to software engineering part 1

S/W Engineering• Software Engineering is the science and art of building significant software systems that are:

– 1) on time– 2) on budget– 3) with acceptable performance– 4) with correct operation.

18

Page 19: Intoduction to software engineering part 1

S/W Engineering

19

–  A discipline whose aim is the production of quality software, delivered on time, within budget, and satisfying users' needs

–  The specification, development, management, and evolution of software systems – Designing and developing high-quality software

Page 20: Intoduction to software engineering part 1

S/W Engineering• The economies of all developed nations are

dependent on software.• More and more systems are software

controlled.• Software engineering is concerned with

theories, methods and tools for professional software development.

20

Page 21: Intoduction to software engineering part 1

Software Myths

Definition: Beliefs about software and the process used to build it.

Myths have number of attributes that have made them insidious (i.e. dangerous).

• Misleading Attitudes - caused serious problem for managers and technical people.

Page 22: Intoduction to software engineering part 1

Management mythsManagers in most disciplines, are often under pressure to maintain budgets, keep schedules on time, and improve quality.

Myth1: We already have a book that's full of standards and procedures for building software, it does provide my people with everything they need to know.

Reality : • Are software practitioners aware of existence standards?• Does it reflect modern software engineering practice?• Is it complete? Is it streamlined to improve time to delivery while still maintaining a focus on quality?

•In many cases, the answer to all of these questions is "no."

Page 23: Intoduction to software engineering part 1

Customer Myths• Myth: A general statement of objectives is sufficient to begin writing

programs— we can fill in the details later. (E.g. only def. is der clg mgmt sys.)

• Reality: A poor up-front definition is the major cause of failed software efforts.

• A formal and detailed description of the information domain, function, behavior, performance, interfaces,

design constraints, and validation criteria is essential.

characteristics can be determined only after thorough communication between customer and developer.

Page 24: Intoduction to software engineering part 1

• Myth: Project requirements continually change, but change can be easily accommodated because software is flexible. (E.g. Wipro-IPCA exp.)

• Reality: It is true that software requirements change, but the impact of change varies with the time at which it is introduced. • If serious attention is given to up-front definition, early requests for change can be accommodated easily with

relatively little impact on cost.

When changes are requested during software design, during implementation (code and test) the cost impact grows rapidly.

Page 25: Intoduction to software engineering part 1

Software Myths• Myth: If we get behind schedule, we can add more programmers

and catch up (sometimes called the Mongolian horde concept). • Reality Software development is not a mechanistic process like

manufacturing.

• In the words: "adding people to a late software project makes it later." At first, this statement may seem counterintuitive.

• However, as new people are added, people who were working must spend time educating the newcomers, thereby reducing the amount of time spent on productive development effort.

• People can be added but only in a planned and well- coordinated manner.

Page 26: Intoduction to software engineering part 1

Software Myths• Once we write a working program, we’re done.• Until I get the program running, I have no way of

assessing its quality.• The only deliverable work product for a successful

project is the working program.• Software engineering will make us create too much

documentation and will slow us down.

26

Page 27: Intoduction to software engineering part 1

Practitioner's myths• Myth: Once we write the program and get it to

work, our job is done. • Reality: Expert said "the sooner you begin

'writing code', the longer it'll take you to get done."

• Industry data indicate that between 60 and 80 percent of all effort expended on software will be expended after it is delivered to the customer for the first time.

Page 28: Intoduction to software engineering part 1

• Myth: Until I get the program "running" I have no way of assessing its quality.

• Reality: One of the most effective software quality assurance mechanisms can be applied from the inception of a project—the formal technical review.

• Software reviews are a "quality filter" that

have been found to be more effective than testing for finding certain classes of software defects.

Page 29: Intoduction to software engineering part 1

• Myth: The only deliverable work product for a successful project is the working program.

• Reality: A working program is only one part of a software configuration that includes many elements.

• Documentation provides a foundation for successful engineering and, more important, guidance for software support.

Page 30: Intoduction to software engineering part 1

• Myth: Software engineering will make us create voluminous and unnecessary documentation and will invariably slow us down.

• Reality: Software engineering is not about creating documents. It is about creating quality

• Better quality leads to reduced rework. And reduced rework results in faster delivery times.

Page 31: Intoduction to software engineering part 1

The Software Process • What? A software process – as a framework for the

tasks that are required to build high-quality software.

• Who does? Managers, software engineers, and customers.

• Why? Provides stability, control, and organization otherwise chaotic(disorder) activity.

• Steps? General activities are common to all software processes, details vary.

• Work product? Programs, documents, and data.

Page 32: Intoduction to software engineering part 1

What is software Engg.?• Definition :

– (1) The application of systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

– (2) The study of approaches as in (1) above• Its a discipline that is concerned with all aspects of software production.

• Software engineers should adopt – Systematic and organized approach to their work – Use appropriate tools and techniques depending on the problem

to be solved– The development constraints and the resources available

• Apply Engineering Concepts to developing Software

• Challenge for Software Engineers is to produce high quality software with finite amount of resources & within a predicted schedule

Page 33: Intoduction to software engineering part 1

Software Engineering – Layered Technology

Layered Technology

A quality focus: the A quality focus: the ““bedrockbedrock””

Process model: the Process model: the ““frameworkframework””

Methods: technical Methods: technical ““how tohow to’’ss””

Tools: CASE preferredTools: CASE preferred

Page 34: Intoduction to software engineering part 1

Layered TechnologyA quality Focus• Every organization is rest on its commitment to quality.• Total quality management, Six Sigma, or similar continuous

improvement culture and it is this culture ultimately leads to development of increasingly more effective approaches to software engineering.

• The bedrock(foundation) that supports software engineering is a quality focus.

Process:• It’s a foundation layer for software engineering.• It’s define framework for a set of key process areas (KPA) for effectively

manage and deliver quality software in a cost effective manner • The processes define the tasks to be performed and the order in which

they are to be performed • Provides the glue that holds the layers together;

Page 35: Intoduction to software engineering part 1

Layered Technology

Methods:• It provide the technical how-to's for building software.• Methods encompass a broad array of tasks that include requirements analysis,

design, program construction, testing, and support.• There could be more than one technique to perform a task and different

techniques could be used in different situations.

Tools:• Provide automated or semi-automated support for the process, methods and

quality control. • When tools are integrated so that information created by one tool can be used

by another, a system for the support of software development, called computer-aided software engineering (CASE)

Page 36: Intoduction to software engineering part 1

Generic Process Framework

• A process framework establishes the foundation for a complete software process by identifying a small number of framework activities.

• Frame work activities are applicable to all software projects.

Page 37: Intoduction to software engineering part 1

Generic Process Model

A generic process framework for software engineering defines five framework activities-communication, planning, modeling, construction, and deployment.

In addition, a set of umbrella activities- project tracking and control, risk management, quality assurance, configuration management, technical reviews, and others are applied throughout the process.

Next question is: how the framework activities and the actions and tasks that occur within each activity are organized with respect to sequence and time?

Page 38: Intoduction to software engineering part 1

Process frameworkWhy process :

A process defines who is doing what, when and how to reach a certain goal to build complete software process.

• Identified a small number of framework activities that are applicable to all software projects, regardless of their size or complexity.

• It encompasses a set of umbrella activities that are applicable across the entire software process.

Page 39: Intoduction to software engineering part 1

Process Framework•Each framework activities is populated by a set for software engineering actions – a collection of related tasks.• Each action has individual work task.

Page 40: Intoduction to software engineering part 1

Generic Process Framework Activities

• Communication: – Heavy communication with customers, stakeholders, team– Encompasses requirements gathering and related activities

• Planning: – Workflow that is to follow– Describe technical task, likely risk, resources will require,

work products to be produced and a work schedule.• Modeling:

– Help developer and customer to understand requirements (Analysis of requirements) & Design of software

• Construction:– Code generation: either manual or automated or both– Testing – to uncover error in the code.

• Deployment:– Delivery to the customer for evaluation– Customer provide feedback

Page 41: Intoduction to software engineering part 1

Umbrella Activities• Software project Management or tracking and control

– Assessing progress against the project plan.– Take adequate action(Sufficient) to maintain schedule.

• Formal technical reviews– Assessing software work products in an effort to uncover and remove

errors before goes into next action or activity. • Software quality assurance

– Define and conducts the activities required to ensure software quality. • Software configuration management

– Manages the effects of change. • Document preparation and production

– Help to create work products such as models, documents, logs, form and list. • Reusability management

– Define criteria for work product reuse– Mechanisms to achieve reusable components.

• Measurement– Define and collects process, project, and product measures– Assist the team in delivering software that meets customer’s needs.

• Risk management– Assesses risks that may effect that outcome of project or quality of product (i.e.

software)

Page 42: Intoduction to software engineering part 1

Capability Maturity Model Integration (CMMI)

• The Software Engineering Institute (SEI) has developed process meta-model to measure organization different level of process capability and maturity.

• CMMI – developed by SEI• The CMMI defines each process area in terms of “specific

goals” and the “specific practices” required to achieve these goals.

• Specific goals establish the characteristics that must exist if the activities implied by a process area are to be effective.

• Specific practices refine a goal into a set of process-related activities.

Page 43: Intoduction to software engineering part 1

CMMI LevelLevel 1: Initial. The software process is characterized as

ad hoc and occasionally even chaotic.

Few processes are defined, and success depends on individual effort.

Level 2: Repeatable. Basic project management processes are established to track cost, schedule, and functionality.

The necessary process discipline is in place to repeat earlier successes on projects with similar applications.

Page 44: Intoduction to software engineering part 1

CMMI Level (cont.)Level 3: Defined. The software process for both management and engineering activities is documented,

standardized, and integrated into an organization wide software process. All projects use a documented and approved version of the organization's process

for developing and supporting software. This level includes all characteristics defined for level 2.

Level 4 (Quantitatively Managed) -– All level 3 criteria have been satisfied.– Software process and products are quantitatively understood– Controlled using detailed measures and assessment.

Level 5 (Optimized) – This level includes all characteristics defined for level 4. – Continuous process improvement is enabled by quantitative feedback from the

process and testing innovative ideas & technology

Page 45: Intoduction to software engineering part 1

HemalKumar Rajyaguru

Page 46: Intoduction to software engineering part 1

• The process model can be defined as the abstract representation of process.

• Process models prescribe a distinct set of activities, actions, tasks, milestones, and work products required to engineer high quality software.

• Process models are not perfect, but provide roadmap for software engineering work.

• Software models provide stability, control, and organization to a process that if not managed can easily get out of control

• Software process models are adapted to meet the needs of software engineers and managers for a specific project.

Software process model / SDLC

Page 47: Intoduction to software engineering part 1

HemalKumar Rajyaguru

Waterfall Model or Classic Life Cycle(CPMCD)

Page 48: Intoduction to software engineering part 1

• Requirement Analysis and Definition: The systems services, constraints and goals are defined by customers with system users.

• Scheduling tracking - – Assessing progress against the project plan.– Require action to maintain schedule.

• System and Software Design: How –It establishes and overall system architecture. Software design involves fundamental system abstractions and their relationships.

• Integration and system testing: The individual program unit or programs are integrated and tested as a complete system to ensure that the software requirements have been met. After testing, the software system is delivered to the customer.

• Operation and Maintenance: Normally this is the longest phase of the software life cycle. The system is installed and put into practical use. Maintenance involves correcting errors which were not discovered in earlier stages of the life-cycle.

Waterfall Model or Classic Life Cycle

Page 49: Intoduction to software engineering part 1

Limitations of the waterfall model The nature of the requirements will not change very much During

development; during evolution

The model implies that you should attempt to complete a given stage before moving on to the next stage

Does not account for the fact that requirements constantly change. It also means that customers can not use anything until the entire

system is complete. The model implies that once the product is finished, everything else is

maintenance.

Surprises at the end are very expensive

Some teams sit ideal for other teams to finish

Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.

Page 50: Intoduction to software engineering part 1

• Problems:1. Real projects are rarely follow the sequential

model.

2. Difficult for the customer to state all the requirement in advance.

3. Assumes patience from customer - working version of program will not available until programs not getting change fully.

Problem

Page 51: Intoduction to software engineering part 1

Waterfall Model with Feedback(Diagram)

CommunicationProject initiation

Requirements gathering

PlanningEstimatingSchedulingTracking Modeling

AnalysisDesign Construction

CodeTest Deployment

DeliverySupport

Feedback

Page 52: Intoduction to software engineering part 1

Incremental Process Model

C- CommunicationP - PlanningM – ModelingC - ConstructionD - Deployment

Delivers software in small but usable pieces, each piece builds on pieces already delivered

Page 53: Intoduction to software engineering part 1

• Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.

• First Increment is often core product– Includes basic requirement– Many supplementary features (known & unknown) remain

undelivered• A plan of next increment is prepared

– Modifications of the first increment– Additional features of the first increment

• It is particularly useful when enough staffing is not available for the whole project

• Increment can be planned to manage technical risks.• Incremental model focus more on delivery of operation product

with each increment.

The Incremental Model

Page 54: Intoduction to software engineering part 1

• User requirements are prioritised and the highest priority requirements are included in early increments.

• Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve.

• Customer value can be delivered with each increment so system functionality is available earlier.

• Early increments act as a prototype to help obtain requirements for later increments.

• Lower risk of overall project failure.• The highest priority system services tend to receive the most

testing.

The Incremental Model