Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
5 views

Module 01

Uploaded by

omegajoel14
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Module 01

Uploaded by

omegajoel14
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

Software

Engineering
COURSE CODE:CSC502
SE
Course Objectives:
1 To provide the knowledge of software engineering discipline.

2 To apply analysis, design and testing principles to software project development.

3 To demonstrate and evaluate real world software projects.

Course Outcomes: On successful completion of course, learners will be able to:


CSC502.1: Understand and demonstrate basic knowledge in software engineering.

CSC502.2: Identify requirements, analyze and prepare models.

CSC502.3: Plan, schedule and track the progress of the projects.

CSC502.4: Understands the concepts of software design principles.

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

2 Ian Sommerville, “Software Engineering”, 9th edition, Pearson Education, 2011

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

3 Jibitesh Mishra and Ashok Mohanty, “Software Engineering”, Pearson , 2011

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.

More and more systems are software controlled

Software engineering is concerned with theories, methods and tools for professional
software development.

Expenditure on software represents a significant fraction of GNP in all developed


countries.
Software costs
Software costs often dominate computer system costs. The costs of software on a PC
are often greater than the hardware cost.

Software costs more to maintain than it does to develop. For systems with a long life,
maintenance costs may be several times development costs.

Software engineering is concerned with cost-effective software development.


Software products
Generic products
◦ Stand-alone systems that are marketed and sold to any customer who wishes to buy them.
◦ Examples – PC software such as graphics programs, project management tools; CAD software;
software for specific markets such as appointments systems for dentists.

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.

All aspects of software production


◦ Not just technical process of development. Also project management and the development of
tools, methods etc. to support software production.
Need of Software Engineering
To manage Large software

For more Scalability

Cost Management

To manage the dynamic nature of software

For better quality Management


Capability maturity model (CMM)

CMM was developed by the Software Engineering Institute (SEI) at Carnegie Mellon
University in 1987.

The model defines a five-level evolutionary stage of increasingly organized and


consistently more mature processes.

Capability Maturity Model is used as a benchmark to measure the maturity of an


organization's software process.
Key Process Areas (KPA) of a
software organization
Capability Maturity Model
Integration (CMMI)
CMMI- is a successor of CMM and is a more evolved model that incorporates best
components of individual disciplines of CMM like Software CMM, Systems Engineering
CMM, People CMM, etc.
Objectives of CMMI :
Fulfilling customer needs and expectations.
Value creation for investors/stockholders.
Market growth is increased.
Improved quality of products and services.
Enhanced reputation in Industry.
Advanced Trends in SE
1. Everyone’s first Preference – Python

2. DevSecOps – The new normal

3. Craze for Progressive Web Apps –mobile apps

4. Demand for Automated Code Reviews – Enhanced Code Quality

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 specifications: The functionality of the software and constraints on its


operation must be defined.

Software development: The software to meet the requirement must be produced.

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.

Stage2: Defining Requirements - “What do we want?”

This is accomplished through "SRS"- Software Requirement Specification document


which contains all the product requirements to be constructed and developed during the
project life cycle.
Stage3: Designing the Software - “How will we get what we want?”

The next phase is about to bring down all the knowledge of requirements, analysis, and
design of the software project.

Stage4: Developing the project - “Let’s create what we want.”

The implementation of design begins concerning writing code.

Stage5: Testing - “Did we get what we want?”

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.

Stage7: Maintenance – “Let’s get this closer to what we want.”

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

Evolutionary Process Model

Agile Process Model


Software process models
The waterfall model
◦ Plan-driven model. Separate and distinct phases of specification and development.

Incremental development
◦ Specification, development and validation are interleaved. May be plan-driven or agile.

Reuse-oriented software engineering


◦ The system is assembled from existing components. 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.

Example- Customer Relationship Management –CRM,HRMS, Government and


Defense Projects
Incremental development
Incremental development benefits
The cost of accommodating changing customer requirements is reduced.
◦ The amount of analysis and documentation that has to be redone is much less than is required
with the waterfall model.

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.

More rapid delivery and deployment of useful software to the customer is


possible.
◦ Customers are able to use and gain value from the software earlier than is possible with a
waterfall process.
Incremental development problems
The process is not visible.
◦ Managers need regular deliverables to measure progress. If systems are developed quickly, it
is not cost-effective to produce documents that reflect every version of the system.

System structure tends to degrade as new increments are added.


◦ Unless time and money is spent on refactoring to improve the software, regular change tends to
corrupt its structure. Incorporating further software changes becomes increasingly difficult and
costly.

Real-life example : Building a new website for a small business

You might also like