software engineering
TRANSCRIPT
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.