Module 01
Module 01
Engineering
COURSE CODE:CSC502
SE
Course Objectives:
1 To provide the knowledge of software engineering discipline.
CSC502.5: Identify risks, manage the change to assure quality in software projects.
CSC502.6: Apply testing principles on software project and understand the maintenance concepts.
Reference / Text books
Textbooks:
1 Roger Pressman, “Software Engineering: A Practitioner‘s Approach”, 9th edition , McGraw-Hill Publications, 2019
3 Ali Behfrooz and Fredeick J. Hudson, "Software Engineering Fundamentals", Oxford University Press, 1997
4 Grady Booch, James Rambaugh, Ivar Jacobson, “The unified modeling language user guide”, 2nd edition, Pearson Education, 2005
References:
1 Pankaj Jalote, "An integrated approach to Software Engineering", 3rd edition, Springer, 2005
2 Rajib Mall, "Fundamentals of Software Engineering", 5th edition, Prentice Hall India, 2014
4 Ugrasen Suman, “Software Engineering – Concepts and Practices”, Cengage Learning, 2013
5 Waman S Jawadekar, “Software Engineering principles and practice”, McGraw Hill Education, 2004
Module 01: Introduction to Software
Engineering
The economies of ALL developed nations are dependent on software.
Software engineering is concerned with theories, methods and tools for professional
software development.
Software costs more to maintain than it does to develop. For systems with a long life,
maintenance costs may be several times development costs.
Customized products
◦ Software that is commissioned by a specific customer to meet their own needs.
◦ Examples – embedded control systems, air traffic control software, traffic monitoring systems.
Software engineering
Software engineering is an engineering discipline that is concerned with all aspects of
software production from the early stages of system specification through to maintaining
the system after it has gone into use.
Engineering discipline
◦ Using appropriate theories and methods to solve problems bearing in mind organizational and
financial constraints.
Cost Management
CMM was developed by the Software Engineering Institute (SEI) at Carnegie Mellon
University in 1987.
5. Hype of AI and ML
Software process activities
A software process is the set of activities and associated outcome that produce a
software product.
Software validation: The software must be validated to ensure that it does what the
customer wants.
Software evolution: The software must evolve to meet changing client needs.
Software Crisis
1) Size
2) Quality
3) Cost
4) Delayed Delivery
Program vs. Software
Software Development Life Cycle (SDLC)
Stage1: Planning and requirement analysis - “What are the current problems?”
Business analyst and Project organizer set up a meeting with the client to gather all the
data like what the customer wants to build, who will be the end user, what is the
objective of the product. Before creating a product, a core understanding or knowledge
of the product is very necessary.
The next phase is about to bring down all the knowledge of requirements, analysis, and
design of the software project.
During this stage, unit testing, integration testing, system testing, acceptance testing are
done.
Stage6: Deployment - “Let’s start using what we got.”
Once the software is certified, and no bugs or errors are stated, then it is deployed.
Once when the client starts using the developed systems, then the real issues come up
and requirements to be solved from time to time.
Process Models
Perspective Process Model
Incremental development
◦ Specification, development and validation are interleaved. May be plan-driven or agile.
In practice, most large systems are developed using a process that incorporates
elements from all of these models.
The waterfall model
The waterfall model
There are separate identified phases in the waterfall model:
◦ Requirements analysis and definition
◦ System and software design
◦ Implementation and unit testing
◦ Integration and system testing
◦ Operation and maintenance
The main drawback of the waterfall model is the difficulty of accommodating change
after the process is underway. In principle, a phase has to be complete before moving
onto the next phase.
Waterfall model problems
Inflexible partitioning of the project into distinct stages makes it difficult to
respond to changing customer requirements.
◦ Therefore, this model is only appropriate when the requirements are well-understood and
changes will be fairly limited during the design process.
◦ Few business systems have stable requirements.
The waterfall model is mostly used for large systems engineering projects where a
system is developed at several sites.
◦ In those circumstances, the plan-driven nature of the waterfall model helps coordinate the work.
It is easier to get customer feedback on the development work that has been
done.
◦ Customers can comment on demonstrations of the software and see how much has been
implemented.