You are on page 1of 26

CO 251 Software Engineering

Dec 2017 – May 2018

Instructor: Prof. K.Chandrasekaran


Email: kc.csenitk@gmail.com
In this class
• OBE, NBA and NITK – CSE
• Our Software Engineering Course related
messages – Course Plan
• Announcements and our class room
teaching-learning
• My (instructor) role and your (students) role
PROGRAMME EDUCATIONAL OBJECTIVES (PEOs)

• PEO1: To provide students with sound foundations in


Basic Sciences and fundamentals in Engineering Sciences.
PEO2: To inculcate strong problem solving skills through
the courses of CSE.
PEO3: To provide students with hands on experience in
implementing various software development concepts.
PEO4: Train the students in project based assignments.
PEO5: To impress upon students the importance of good
ethical practices, right professional conduct and
responsible team leadership.
PROGRAMME OUTCOMES (POs)
• After the completion of the B.Tech. programme, the graduates of the
Computer Science and Engineering department will have the

• PO1: Ability to apply knowledge of computing, mathematics, science


and engineering fundamentals to the solution of complex engineering
problems.
• PO2: Ability to formulate and analyze a problem, and define the
computing requirements appropriate to its solution using basic
principles of mathematics, science and computer engineering.
• PO3: Ability to design, implement, and evaluate a computer based
system, process, component, or software to meet the desired needs.
• PO4: Ability to design and conduct research based experiments,
perform analysis and interpretation of data and provide valid
conclusions.
PROGRAMME OUTCOMES (POs)
• PO5: Ability to use current techniques, skills, and tools necessary for
computing practice.
• PO6: Understanding of legal, health, security, cultural and social issues, and
the consequent responsibilities relevant to the professional engineering
practice.
• PO7: Understanding of the impact of professional engineering solutions on
environmental context and the need for sustainable development.
• PO8: Understanding and commitment towards the professional and ethical
responsibilities of an engineer.
• PO9: Ability to function effectively as an individual, and as a team member /
leader in accomplishing a common goal.
• PO10: Ability to communicate effectively, make effective presentations and
write and comprehend technical reports and publications.
• PO11: Ability to learn and adopt new technologies, and use them effectively
towards continued professional development throughout the life.
• PO12: Understanding of engineering and management principles and their
application to manage projects in the software industry.
CO 251 SW Engg- Course Objectives
(COs)
• To understand the different Software models and basic
concepts of a Software Engineering.
• To understand the various software requirement process.
• To understand the various design concepts and principles
• To improve the software quality and software testing
methodologies.
• To verify and maintain the software document.
Course Aim – in general

• How to develop/build software systems - use of


systematic procedure / approach / methodology
• What is “engineering” in software development? And
follow it up in the entire software process
SWEngg course syllabus
• System and software development
• Software engineering process and SWDLC models
• Requirements engineering
• Design and Development
• Software Architecture
• Cost estimation
• Testing
• Current trends
Course Plan
• L-T-P: 3-1-0
• Credits : 4
• Pre-requisites: Knowledge on programming, data structures and algorithms.
• COs – in the previous slide
• References:
– Books: (a) Ian Sommerville, Software Engineering, 9th Edition, Addison-
Wesley, 2010. (b) Pressman, SW Engg Practitioner’s Approach TMH 2012
– Web references: (sample):
https://www.utdallas.edu/~chung/CS6354/
https://www.cise.ufl.edu/class/cen5035/lecture_notes_fa09.html
https://courses.cs.washington.edu/courses/cse403/16sp/resources.html & many more

• Evaluation plan
– End sem Exam: 40%, Mid sem Exam 30%, Mini Project (includes assignment, quizzes and
paper) 30%
Additional Web references
• https://ocw.mit.edu/courses/aeronautics-and-astronautics/16-355j-software-engineering-
concepts-fall-2005/lecture-notes/
• https://www.youtube.com/watch?v=nWScAkGn-zw
SOFTWARE ENGINEERING
COURSE LECTURE SESSIONS
Systemic aspects of software
• System and software development
– Systemic / holistic view
– System characteristics – synergy, adaptable and
cooperative
– Problems in System Development – Dev. Time,
UI, Test & Integrate, Maintenance and Lack of
common purpose
• System Engineering – art and science,
provable properties, optimization in the
process of development and systemic
procedure
• System Analysis
• System Design and Architecture
• System level project planning
• System level project planning:
• Scope, System Description, Contract Description,
Project organization, Work breakdown structure,
Resources profile, Schedules, Technical Reviews,
Risk Management, Work assignment and
monitoring, Management, Change Control,
procedures and Standards
• System Development Life Cycle Models

• Evolution of Software Development


• DoD
• MIS oriented
• Resource-schedule driven
• Survey- current, new requirements,
develop-logical and physical, construct,
install, test and maintain
• Software Development - follow a
mechanized / systematic way
• Historical aspects
• Economic aspects
• Maintenance - phases (easy-to-follow up),
sustainable, customizable, change-driven
What is Software Engineering?
• The practical application of scientific knowledge to the
design and construction of computer programs and the
associated documentation required to develop, operate, and
maintain them [Boehm].
• The systematic approach to the development, operation,
maintenance, and retirement of software [IEEE].
• The establishment and use of sound engineering principles
(methods) in order to obtain economically software that is
reliable and works on real machines [Bauer].
• Multi-person construction of multi-version software
[Parnas].
Why study Software Engineering?

• Building software without discipline is problematic


• Software is critical to society
• Building a large complete software project is hard
• There is a perceived crisis in our ability to build software
• It’s fun!
• $$$$
Software is critical to society

• Economically important
• Essential for running most enterprises
• Key part of most complex systems
• Essential for designing many engineering products
• In many if not in most cases, the software is embedded in
the system you are using — you don’t see the software
Software is big
Code sizes due to Jon Jacky (mostly); KLOC = 1000 lines of
code; MLOC = 1,000,000 lines of code

Bar code scanners 10-50KLOC


4-speed transmissions 20KLOC

ATC ground system 130KLOC

Automatic teller machine 600KLOC

Call router 2.1MLOC


B-2 Stealth Bomber 3.5MLOC
Seawolf submarine combat 3.6MLOC

NT 4.0 10MLOC
NT 5.0 60+LMLOC
(NTFS alone) (250K source lines or 100KLOC )
Software is big, so what?

• Delivered source lines per person


• Common estimates are that a person can deliver about
1000 source lines per year (including documentation,
scaffolding, etc.)
• Therefore, most complex systems require many people –
team to build
• This would be true even with an order of magnitude
increase in productivity
• Hence the critical need for coordination
• Brooks reminds us that people ≠ time
Accuracy and real-time?

• We’ll look at some classic software failures later on in the


quarter
• But it’s not fully accurate
• Given the context, we do pretty well
• We surely can, should and must improve
• Some so-called software “failures” are not
– They are often management errors (the choice not to do something
that would have helped)
• In some areas, in particular safety-critical real-time
embedded systems, we may indeed have a looming crisis
Some “crisis” issues

• Relative cost of hardware/software


• Low productivity
• “Wrong” products
• Poor quality
• Constant maintenance
• Technology transfer is slow
Why is it hard?

• There is no single reason software engineering is hard—


it’s a “wicked problem”
• Lack of well-understood representations of software makes
customer and engineer interactions hard [Brooks]
• Still a relatively young field
• Software intangibility is deceptive
– Norman Augustine [Wulf]: “Software is like entropy. It is difficult
to grasp, weighs nothing, and obeys the second law of
thermodynamics; i.e., it always increases.” [Law XXIII]
As the size of the software system grows, the dominant
discipline changes (due to Stu Feldman)

Code Size (LOC) Dominant Discipline


103 Mathematics
104 Science
105 Engineering
106 Social Science
107 Politics
108 Legal?

You might also like