Вы находитесь на странице: 1из 27

Lecture 1

Introduction to Software
Engineering

Engr. Hafiza Sundus Waleed


Introduction
Instructor: Hafiza Sundus Farooq

Qualification:
 BSc Computer Engineering, UET Taxila.
 MS in Signal and Image Processing, UET Taxila.

Research Area:
 Digital Image Processing
 Computer Vision
 Digital Image Forensics.

E-Mail: sundus.waleed@comsats.edu.pk

Contact Hours: 10AM to 1PM Monday.

Office: Room 102, 1st floor, Academic Block 2.


Course
• To-the-point
 This course introduces software engineering as a discipline. It starts with a
general introduction of the software life-cycle, software processes i.e.
requirement analysis, planning, modeling and construction. It covers the
various Software Development Processes and requires students to
appreciate and apply various aspects of software engineering principles.
Classical Software Development Life-cycles from waterfall, spiral,
incremental, evolutional to recent lean, agile methods and component
based systems are covered. Special emphasis is put on quality and process
improvement models.

• Text Books:
 Software Engineering by Roger Pressman 7th / 8th edition.
 Software Engineering by Ian Sommerville (10th edition).
Today’s Overview
• Software
• Software vs. Hardware
• Software Products
• Software Application Domain
• Legacy Software
• Unique Nature of WebApps
• Software Engineering
• Software Process Framework
• Umbrella Activities
• Software Process Issues
• Software Engineering vs. system Engineering
Software
• Program, data and documentation.

• Instructions (computer programs) that when executed provide desired


features, function, and performance;

• Data structures that enable the programs to adequately manipulate


information;

• Descriptive information in both hard copy and virtual forms that describes
the operation and use of the programs.
Software vs. Hardware
• Software is developed not manufactured
 Quality is easy to achieve.

• Software does not “wear out”

• Although the industry is moving toward component-based construction,


most software continues to be custom built.
 Reusable components are natural in hardware development.
 Modern interfaces with reusable components enable creation of graphics
windows, pull-down menus.
Software Products
• Generic products:
 Stand-alone systems that are produced by a development organization
and sold on the open market to any customer who is able to buy them.
 Examples: Databases, word processors, drawing packages, and project-
management tools.

• Customized (or bespoke) products:


 Systems that are commissioned by a particular customer. A software
contractor develops the software especially for that customer.
 Examples: Control systems for electronic devices, systems written to
support a particular business process, and air traffic control systems.
Software Application Domain
• System Software
 a collection of programs written to service other programs e.g. OS

• Application Software
 stand-alone programs that solve a specific business need.

• Embedded software
 resides within a product or system and is used to implement and control
features and functions for the end user e.g. key pad control for a
microwave oven.

• Product-line software
 designed to provide a specific capability for use by many different
customers e.g. spreadsheets
Software Application Domain Contd.
• Web applications
 spans a wide array of applications. WebApps are evolving into
sophisticated computing environments that not only provide stand-alone
features, computing functions, and content to the end user, but also are
integrated with corporate databases and business applications.

• Artificial intelligence software


 makes use of nonnumeric algorithms to solve complex problems e.g.
robotics

• Engineering/scientific software
 Micro biology softwares
Legacy Software
• Developed decades ago and have been continually modified to meet changes
in business requirements and computing platforms.

• However, to cope with modern technologies:


 The software must be adapted to meet the needs of new computing
environments or technology.
 The software must be enhanced to implement new business requirements.
 The software must be extended to make it interoperable with other more
modern systems or databases.
 The software must be re-architected to make it viable within a network
environment.
Unique Nature of WebApps
• Network intensiveness
• Concurrency
• Unpredictable Load
• Performance
• Availability
• Data driven
• Content sensitive
• Continuous evolution
• Immediacy
• Security
• Aesthetics
Software Engineering
“Software engineering is an engineering discipline that is concerned with all
aspects of software production from the early stages of system specification to
maintaining the system after it has gone into use.”

Software engineering is not just concerned with the technical processes of


software development. It also includes activities such as software project
management and the development of tools, methods, and theories to support
software production.
Why Software Engineering
• To produce reliable and trustworthy systems economically and quickly.

• To make it cheaper for the software product to be used in long run by using
engineering methods and techniques. As the majority of costs are the costs of
changing the software after it has gone into use.

• Software without software engineering are:


 Hard to extend and improve.
 Hard to use i.e. accompanied with frequent errors.
 Take more time and costs than expected.
Software Process Framework
“A process is a collection of activities, actions, and tasks that are performed
when some work product is to be created. “

A process framework establishes the foundation for a complete software


engineering process by identifying a small number of framework activities
that are applicable to all software projects, regardless of their size or
complexity. It encompasses five activities:

1. Communication: collaborate with customer

2. Planning: build an initial map

3. Modeling: understand the big picture

4. Construction: code generation

5. Deployment: delivered to customer


Communication and Planning
Communication and Planning
Modeling

Cause: overflow error in the software code


Construction
Umbrella Activities
Software engineering process framework activities are complemented by a
number of umbrella activities which help to control progress, quality, change,
and risk. Typical umbrella activities include:

1. Software project tracking and control—allows the software team to assess


progress against the project plan and take any necessary action to
maintain the schedule.

2. Risk management—assesses risks that may affect the outcome of the


project or the quality of the product.

3. Software quality assurance—defines and conducts the activities required


to ensure software quality.

4. Technical reviews—assesses software engineering work products in an


effort to uncover and remove errors before they are propagated to the next
activity.
Umbrella Activities Contd.
1. Measurement—defines and collects process, project, and product measures
that assist the team in delivering software that meets stakeholders’ needs;
can be used in conjunction with all other framework and umbrella
activities.

2. Software configuration management—manages the effects of change


throughout the software process.

3. Reusability management—defines criteria for work product reuse


(including software components) and establishes mechanisms to achieve
reusable components.

4. Work product preparation and production—encompasses the activities


required to create work products such as models, documents, logs, forms,
and lists.
Attributes of Good Software
• Maintainability
 To easily meet the changing needs of customers. This is a critical attribute
because software change is an inevitable requirement of a changing
business environment.
• Dependability and security
 Software dependability includes a range of characteristics including
reliability, security, and safety. Dependable software should not cause
physical or economic damage in the event of system failure. Malicious
users should not be able to access or damage the system.
• Efficiency
 Should not make wasteful use of system resources such as memory and
processor cycles and should be responsive.
• Acceptability
 Must be acceptable to the type of users for which it is designed.
Software Process Issues
• Heterogeneity:
 You often have to integrate new software with older legacy systems
written in different programming languages.
 The challenge here is to develop techniques for building dependable
software that is flexible enough to cope with this heterogeneity.

• Business and social change:


 Business and society are changing incredibly quickly as emerging
economies develop and new technologies become available.
 They need to be able to change their existing software and to rapidly
develop new software.
 Many traditional software engineering techniques are time consuming and
delivery of new systems often takes longer than planned.
 They need to evolve so that the time required for software to deliver value
to its customers is reduced.
Software Process Issues (contd.)
• Security and trust:
 As software is intertwined with all aspects of our lives, it is essential that
we can trust that software.
 This is especially true for remote software systems accessed through a web
page or web service interface.
 We have to make sure that malicious users cannot attack our software and
that information security is maintained.
Software Engineering vs. Computer
Science vs. System Engineering
• Computer science focuses on theory and fundamentals whereas software
engineering is concerned with the practicalities of developing and delivering
useful software.

• System engineering is concerned with all aspects of computer-based systems


development including hardware, software and process engineering.
Software engineering is part of this process.
Thank you!

Вам также может понравиться