13
INTRODUCTION TO SOFTWARE ENGINEERING ABSTRACT This file contains the lectures of the subject “Introduction to Software Engineering” delivered to BSCS 3rd Aqeel Rafique Software Engineering

Software engineering

Embed Size (px)

Citation preview

INTRODUCTION

TO SOFTWARE

ENGINEERING

ABSTRACT This file contains the lectures of the subject

“Introduction to Software Engineering” delivered

to BSCS 3rd

Aqeel Rafique Software Engineering

Software: Software is the set of executable instructions that are written to achieve some desired

output, the data structure that enables the instructions to properly perform some action and the

documentation which explain about all aspect of software.

Documentation: Documentation involves the following.

I. Technical manual

II. User manual

Technical manual: It is writer for technical people. It contains all the technical information related to the

software.

User manual: It is written for the users. It contains the information related to software functionality and

benefits.

Characteristics of software:

I. Software is not manufactures because it is a logical stuff, we must use develop or engineer

like word.

II. Software does not wear out/ expired.

III. The main characteristics of a software is reusability.

Note:

There are two approaches to analyze, design or program something.

I. Structure

II. Object oriented

Feature of software: I. User friendly

II. Reliable

III. Accurate

IV. Reusability

V. Secure

VI. Efficient

Software myths: The misconception and erroneous beliefs about the software are called software myths.

I. Management myths

II. Customer myths

III. Practitioner’s myths

Software process model: The steps that are followed to develop a software are called software process model.

Waterfall process model/classical life cycle/sequential process model:

Waterfall process model

System engineering: System engineering is a document the contains information about

I. Software

II. Hardware

III. Human

These information are either relevant or may be irrelevant.

The process of obtaining relevant information from the system engineering is called analysis.

Modelling the analyzed information is called designing. Designing is performed to better understand

the analyzed information. Coding is the process of converting the model into a programming language.

Implementation is the collection of codes that are developed by different people. Maintenance is the

modification in the software without changing the basic structure.

Advantages: I. Simple and easy to use.

II. Each phase has specific deliverable.

III. Less time consuming in general.

IV. Best for short time projects (1-6 month)

Disadvantages: I. Time consuming of problem occur.

II. Doesn’t reflect iterative nature if exploratory development.

III. Unrealistic to expect accurate requirements so early in project.

IV. Difficult to integrate risk management.

V. Difficult and expensive to make changes to document.

VI. Costly for small teams and projects.

4 P’s of software development: I. People

II. Process

III. Project

IV. Product

These are the four key elements in software engineering. Almost every topic on the field of

software engineering can be categories into one of them. So none of the 4 P’s may be omitted in

software engineering. The 4 P’s concept is an important approach as it give a large platform and a

comprehensive learning for software engineering students. The early build-up of basic concept of the

4 P’s and their relationship allow student to easily map each activity in the project to the related

concept and actively participate in those activities. A common concern is how the project can be

finished and how the required principle of software engineering and the knowledge can be learned at

the sometime. The major P is product as all other three Ps is learned through various activities in

developing the product.

Prototype process model:

Prototype Process model

Advantages: I. The user can suggest changes and modifications when prototype is shown to him.

II. Best for non-IT literate people.

III. The client can judge the capabilities of developer.

IV. It reduce the risk of failure, as potential risk can be identified early and mitigation steps can

be taken.

V. Iteration between development team and client provides a very good and conductive

environment during project.

Disadvantages: I. Prototype is done at the cost of developer.

II. Sometimes the prototype model is of no use after showing to the client.

III. It is a slow process.

IV. Too much involvement of client is not always preferred by the developer.

V. Too many changes can be disturb the rhythm of the development team.

Spiral process model:

Advantages: I. High amount if risk analysis.

II. Good for large and mission critical projects.

III. Software is produced early in the software life cycle.

Disadvantages: I. It can be a costly model to use.

II. Risk analysis required highly specific expertise.

III. Projects success is highly dependent on the risk analysis phase.

IV. Doesn’t work well for smaller projects.

Spiral process model

Risk analysis (types of risks): I. Technical risk

II. Business risk

III. Customer risk

Risk management: I. Identify the risk

II. Avoid the risk

III. If not avoided then try to minimize its effect.

Win-Win spiral model: The win-win spiral model uses the theory (win-win) approach to coverage on a system’s next-

level objectives, constraints and alternatives. This theory approach involve identifying the system’s

stakeholders and their win conditions and using negotiation process to determine a mutually

satisfactory set of objectives, constraints and alternatives for the stakeholders.

It has the following steps:

I. Determine objectives

II. Determine constraints

III. Identify and evaluate alternatives

IV. Cycle though the spiral

Advantages: I. The customer and the developer both are in winning condition.

II. It provides a satisfactory environment to the customer.

III. The win-win result is achieved in initial steps.

Disadvantages:

The RAD Model: Rapid Application Development (RAD) is an incremental software development process model

that emphasizes an extremely short development cycle. The RAD model is a high speed adaption of

the linear sequential model in which rapid development is achieved by using component-based

construction. The tasks of the project are assigned to different teams in this way the development is

done rapidly.

RAD

Advantages: I. It is extremely short development cycle.

II. Automated tools are used in the development.

III. The project can be completed in 60-90 days.

IV. There is more creativity is present in this model as different teams have different experts.

Disadvantages: I. More resources are required.

II. It requires committed developer teams to achieve the goal within time.

III. RAD is not appropriate when technical risks are high.

IV. A large budget is required.

4th Generation Techniques: The team 4th generation techniques (4GT) encompasses a broad array of software tools that

have one thing in common, each enable a software engineering to specify some characteristics of the

software at a high level. The tool then automatically generates sources code based on the developer’s

specification.

It focuses on the ability to specify software using specialized form or graphics notation that

describes the problem to be solved in term that the customer can understand. The drag and drop

policy is used.

Front page is an example of this types of tool.

Advantages: I. It is time saving.

II. There is no need of coding like procedural languages.

III. It is a rapid approach.

IV. It is more efficient for small projects.

Disadvantages: I. It is costly.

II. It is a bit difficult.

III. It requires more software development activities.

IV. Without designing it will cause the same problem as encountered by conventional

approaches.

Project management: Project management is a layer starts before the technical things has started and ends after

the technical things ended.

Timeline

Factor that involved in project management:

I. Scope of the project.

II. The risk to be incurred.

III. Task to be accomplished.

IV. The required resources.

V. Milestone to be tracked. (Time management i.e. timeline)

VI. Cost to be expended (money management)

VII. The schedule to be followed.

VIII. Realistic breakdown of tasks. (It means divide the whole team into parts and assign the tasks

and then combine them).

IX. Objective information

Software engineering definitions Definition 1:

Software engineering is multi-person development of multi-version software. Multi-person

mean the whole project team.

Definition 2: It is a sequence of different activities like any other engineering process in which we have

technical and managerial skills involved at the same time.

Definition 3: The establishment & use of sound engineering principles to obtain economical software that

is reliable.

Software Risks: Risk always involve two characteristics.

I. Uncertainty

II. Loss

Uncertainty: It means that risks may or may not happen. There is no 100 % probable risks.

Loss: If the risks becomes a reality then unwanted losses will occur.

Types of risks: I. Technical risk

II. Business risk

III. Customer’s risk

Technical risk: Technical risk threaten the quality and timeliness of the software to be produced. If a

technical risk becomes a reality, then implementation may become difficult of impossible. Technical

risk identify potential design and implementation, interface, verification and maintenance problems.

Technical risk occur because the problem is harder to solve than we thought it would be.

Business risk: Business risks threaten the capability/feasibility of the software to be built. These risks are

often dangers for project or product.

Business risk are as follows:

I. Market risk

II. Strategic risk

III. Managerial risk

IV. Budget risk

Customer’s risk: Customer’s risk is also a factor that can become an issue for the project manager, sometimes

customer refuse to pay the already settled amount to follow the timeline and discuss the things with

customer and take payment time to time and more than the work done. Legal agreement must be

there to avoid any type of risk like this one.

Resources: It is a software planning task for estimation of the resources required to accomplish the

software development effort. The hardware and software resources sits the foundation of the

development efforts. At a higher level, we encounter reusable software components, software

building blocks that can dramatically reduce development costs and accelerate delivery. People are

the primary resources.

Resources are of two types:

I. Human resources

II. Software resources

III. Hardware resources

Human resources: The planner begins by evaluating scope and selecting the skills required to complete

development. For small projects (one person – one year or less) a single individual may performed all

software engineering tasks, consulting with specialists as required. The number of people required

for a software project can be determined only after an estimate of development effort is made.

Software resources: The existing software and software building blocks that are reused in the development are

called components.

These are four in numbers:

I. Off the shelf components

II. Full experience components

III. Partial experience components

IV. New components

Hardware resources: Hardware provide a platform that supports the tools required in development. When a

computer based system is to be engineered, the software team may require access to hardware

elements being developed by other engineering teams. Each hardware element must be specified by

the software project planner.

Umbrella activities: These are project management activities. These activities start as the project starts and end

with the project end.

Umbrella Activities

The umbrella activities are as follows:

I. Project tracking

II. FTR (Formal Technical Review)

III. Risk management

IV. Quality assurance

V. Documentation

Project tracking: In this stage the following activities are done

I. First of all the schedule is tracked.

II. Then the weightage of work is checked either the goal is completed or not.

III. Project details are discussed i.e.: members, communication infrastructure and cost

establishment.

IV. Task level details are defined such as: manager and members, assigning roles,

identifying task resources, identifying task deliverables, task progress and task level

costing.

V. Generating reports about: project progress, task progress. Schedule if slipping and

about the schedule delay impacts.

FTR (Formal Technical Review): It is a technical meeting of all managers and project members. In this the following things

are done.

I. Conflicting issues are discussed.

II. Faults are identified

III. Solutions are proposed.

IV. Plan is modified.

Quality assurance: At this stage the following steps are taken

I. Correctness

II. Completeness

III. Flexibility

IV. Maintainability

V. Testing

Documentation: At each and every step the answer of these questions must be documented

I. What is to be done?

II. What has been done?

III. How has been done?

IV. What problems were faced?

Risk management: At this stage do the following

I. Identify the risk

II. Avoid the risk

III. If not then minimize the effects.

Requirement analysis process:

Requirement Analysis Cycle

Requirement engineering: Categories of requirements:

I. Functional requirements

II. Non-functional requirements

III. Interface requirements

Functional requirement: Functional requirement are the primary and main requirements that a system must provide.

These are the basic services for which the system is being developed.

Non-functional requirement: These are other than actual requirement. These are for making the system more efficient

and to build up the customer’s trust on the expertness of engineer. These requirement are

I. Reliability

II. Efficiency

III. Portability

IV. Privacy

V. Ethical

VI. Safety

VII. Standards

VIII. Delivery

Interface requirement: These are the requirements related to the outlook of the system. Sometimes these are also

provided by customer but in most case these are the domain knowledge base requirements of the

engineer. These are as follows

I. Color scheme

II. Buttons

III. Tools used

IV. Banners

V. Foreground color

VI. Background color

VII. Animations

Hardware engineering: The selection of some combinations of hardware components to manufacture a new

hardware is known as hardware engineering.

Selection characteristics:

I. Components packed as an individual building block.

II. Interface amongst themselves is standardized (standardized means acceptable for all).

III. Off the shelf alternatives (available anywhere)

IV. Cost

V. Performance

VI. Reliability

Phases of hardware engineering: There are three phases of hardware engineering

I. Planning and specification

II. Design and prototype implementation (bread board design)

III. Manufacturing, distribution and field services.

Human engineering: It is a multi-disciplinary activity that applies knowledge derived from psychology and

technology to specify and design high quality HCL (Human Computer interface)

Characteristics that affect human engineering.

I. Human memory and knowledge representation:

i. Short term memory

ii. Long term memory

II. Visual perceptions:

Every user like different types of interface. It should be developed by considering

each user.

III. Human dialog construction:

The statements related to dialog boxes that appear on the screen. It should be

standardized mean it should easily understand by all users.

System engineering: System engineering focuses on a verity of elements, then analyzing, designing and organizing

these elements into a system that can be a product, services or a technology for the transformation

of information or control.

System engineering diagram

Analysis modelling: It uses a combination of text and diagrammatic forms to depict requirement for data,

functions and behavior in a way that is relatively easy to understand and more importantly straight

forward to review for correctness, completeness and consistency.

Analysis Modeling

ERD is related to data

DFD is related to function

STD is related to control or behavior.

STD:

For state

For method, data flow

For loop

State: state is any observable mode of behavior.