Transcript Document

Software Engineering I
Lecture 1
Introduction
Zaheer Ahmed
Introduction
•
•
•
•
•
•
–
BS(Computer Science)
NCBA&E, Pakistan
MS(Information Engineering)
Jonkoping University, sweden
Lecturer
Punjab University New Campus (Lahore)
Lecturer
NCBA&E
Lecturer
Lahore Garrison University
Lecturer
CIIT Vehari Campus (Present)
Software Engineer
Course Outline
Introduction to Computer-based System
Engineering;
Project Management;
Software Specification;
Requirements Engineering,
System Modeling;
Requirements Specifications; Software
Course Outline
Prototyping;
Software Design: Architectural Design, ObjectOriented Design,
Function-Oriented Design,
User Interface Design;
Quality Assurance; Processes & Configuration
Management;
Course Outline
• Reusability,
• Patterns;
• Assignments and projects on various
stages and deliverables of SDLC.
Objective
• To study various software development
models and phases of software
development life cycle. The concepts of
project management, change control,
process management, software
development and testing are introduced
through hands-on Team Projects.
Assessment & Evaluation
•
•
•
•
•
Assignments (Projects)
Quizzes
First Sessional
Second Sessional
Final Exam
• Total:
10%
15%
10%
15%
50%
100
Course Literature
• Recommended Books
• Software Engineering by Ian
Somerville
• Software Engineering by R.S.
Pressman
• Software Engineering
James F.
Peters, Witold Pedrycz
Introduction
• The term software (SW) is very generic and can be define by
many ways.
• Set of all program that are available to the computer. The
program can be defined as set of instructions group to gather in
a logical manner to accomplish of perform some task.
• Set of instruction which and when executed to perform the
desired task
• It is a structure that holds data/information in order to enable
the program to manipulate it. The data is raw facts about
people, objective and organizations whereas information is the
process data in the form of output from the computer.
MAIN ATTRIBUTE OF SW
• The main attribute of the SW are as follow.
–
–
–
–
–
Hardware based
Requirement based
Complexity
Size
Cost
–
–
–
–
–
What kind of MIS
What should be the main functionalities?
Who are the users?
What kind of interface?
What reports it should generate?
• The SW is always developed after gathering the requirements. It is not
possible to developed the SW without having requirements for
example: if I asked you to developed MIS SW. Immediately you will ask
many question such as.
Main Behaviors if SW
• The software main behaviors are as
follow.
– The SW does not wear out
– Exhibits coupling and cohesion
– Always response to users
– Is an information transformer
– Is developed or engineered not
manufactured
The main advantages of
Modular Approach
• Divide and conquer approach to solve the problem
• More experienced programmers can be assigned more
complex modules to develop as compared to fresh
developers.
• A large project become easier to monitor, control and
manage
• Help to reuse the code
• Each modules can be assigned a separate task.
• Avoid repetition of code
• Increase performance and efficiency of programmer.
• Each of debugging the code.
• The SW always response to users in term of
error or correct processing. The software always
transform the data (input) to information
(output). The registration form or the course
enrollment form are the data or raw facts. It is
possible to display such form to voice chancellor
(VC) of university in term of report if he inquires
that?
• How many student have registered or enrolled
• What are their names?
• What are their previous educational background?
• What are their addresses?
• What are the guardian name?
Steps to develop a software
program
• There are seven steps to developed a
SW program
– Problem definition
– Outline the logic
– Algorithm development
– Algorithm testing
– Coding
– Execute the SW
– Maintain the SW
Introduction to Software
Engineering
Software Engineering is the set of processes and tools to develo
software. Software Engineering is the combination of all the too
techniques, and processes that used in software production. Th
Software Engineering encompasses all those things that are use
software production like:
•
•
•
•
•
•
•
Programming Language
Programming Language Design
Software Design Techniques
Tools
Testing
Maintenance
Development etc.
Software Engineering - IEEE
1. The application of a 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.
Software Engineering
‘all aspects of software production’ - Software
engineering is not just concerned with the
technical processes of software development but
also with activities such as software project
management and with the development of tools,
methods and theories to support software
production.
-Sommerville
A software engineer is challenged to
produce high-quality software with
finite amount of resources and to a
predicted schedule and budget.
Cost
Law of diminishing returns
Benefit
Making the engineering decision!
Software Engineering
Software Engineering is not just about producing software,
but about producing software in a COST-EFFECTIVE
manner.
The Balancing Act!
Potentially conflicting requirements
 Cost vs. Efficiency
 Cost vs. Reliability
 Efficiency vs. User-interface
Challenge is to balance these requirements.
Software Development Loop
Problem
Definition
Technical
Development
Status Quo
Solution
Integration
The name of the game is continuous
change and evolution in all dimensions!
Well-Engineered Software
 Provides the required functionality
 Reliable
 User-friendly
 Cost-effective
 Efficient
 Maintainable
Breakdown of Effort Cost - Software
Cost Estimation by Capers Jones
No. Activity
1 Requirements
2 Prototyping
3 Architecture
4 Project Plans
5 Initial Design
6 Detailed Design
7 Design Reviews
8 Coding
9 Reuse acquisition
10 Package Purchase
11 Code Inspection
12 Independent V&V
Effort
3.84%
4.50%
2.25%
1.33%
3.84%
4.50%
3.02%
13.50%
1.13%
1.69%
4.50%
5.42%
13
14
15
16
17
18
19
20
21
22
23
24
25
Configuration Mgt.
Integration
User Documentation
Unit Testing
Function Testing
Integration Testing
System Testing
Beta Testing
Acceptance Testing
Independent Testing
Quality Assurance
Installation and Training
Project Management
0.41%
2.71%
9.67%
4.50%
4.50%
3.84%
3.38%
3.02%
1.94%
3.38%
4.50%
1.94%
6.75%
Effort Breakdown
•
•
•
•
•
•
•
•
Project Management
Requirements
Design
Coding
SQA
SCM
Integration
Misc.
8.08%
14.43%
11.36%
13.50%
30.64%
13.02%
6.54%
~3%
Software Engineering Practices
•
•
•
•
•
Software
Software
Software
Software
Software
product realization
project management
process management
quality assurance
configuration management
Management
project planning and
management
configuration management
quality assurance
installation and training
etc.
Construction
Requirements
Design
Coding
Testing
Maintenance
etc.
A Software Engineering Framework
Method
Task Set
Process
Quality Focus
T
O
O
L
S
Common Process Framework
Framework Activities
Task Sets
TASKS
MILESONES, DELIVERABLES
SQA POINTS
Umbrella Activities
The Process
• A software process is a road map that helps you create a timely,
high quality result.
• It is the way we produce software
• Provides stability and control
• Work Product
– Programs, documents, and data produced as a consequence of
the software engineering activities
Process Maturity
• SEI – Software Engineering Institute
• 5 maturity levels
• Capability Maturity Model (CMM)
CMM Maturity Levels
OPTIMIZED – Process Improvement
MANAGED – Process Measurement
DEFINED – Process Definition
REPEATABLE – Project Management
INITIAL – Ad hoc Process
Key Process Areas (KPAs)
• Goals
• Abilities
• Commitments
• Activities
• Methods for monitoring
implementation
• Methods for verifying
implementation
Level 2 KPAs
• Software Configuration Management
• Software Quality Assurance
• Software subcontract Management
Level 2 KPAs - Continued
• Software project tracking and oversight
• Software project planning
• Requirement management
Level 3 KPAs
•
•
•
•
Peer reviews
Inter-group coordination
Software product Engineering
Integrated software management
Level 3 KPAs - Continued
• Training program
• Organization process management
• Organization process focus
Level 4 KPAs
• Software quality management
• Quantitative process management
Level 5 KPAs
• Process change management
• Technology change management
• Defect prevention
Software Lifecycle Models
• The way you organize your activities
• Lifecycle model is a series of steps through which the
product progresses
Software Engineering Phases
1. Vision
2. Definition
2. Development
3. Maintenance
Vision
–
–
–
–
focus
focus
focus
focus
Definition
on
on
on
on
why
what
how
change
Development
Maintenance