Professional Documents
Culture Documents
Software Engeneering
Software Engeneering
Software Engeneering
20MCA24—Software Engineering
2021-2022 Batch
CO1: Identify and define different requirements for the given problem and present in the IEEE format.
CO2: Use modern tool to create dynamic diagrams to represent the design for the given problem.
CO3: Draw class diagram , analyze the different types of association that exists as per the given problem
and represent them using UML notations.
CO4: Analyze the given system to identify actors, use cases to design use case diagrams for the given
problem using Rational Software Architect (RSA)/open source tool.
CO5: Design the static/dynamic models to meet application requirements of the given system and
generate code (skeleton) using the modern tool.
Module -1:
•Overview
•Software Process & Agile Software Development
Module -2:
•Requirements Engineering Process
•Requirements Elicitation
Module -3:
•Object Modelling Design
•Architectural Design
Module -4:
•Architectural Design and State Modelling
•Use cases
Module -5
•Planning a software Project
•Software Testing
Text Books:
1. Ian Sommerville: Software Engineering, 9th Edition, Pearson Education Ltd, 2011
2. Pankaj Jalote, Software Engineering, Wiley India Pvt Ltd (2010) Paul C Jorgensen Software
Testing A Craft Man’s Approach, 2nd edition, CRC Press.
3. Michel Blaha, James Rumbaugh: Object-Oriented Modelling and Design with UML, 2nd
edition, Pearson, 2007.
Reference Books:
1. Stephan R. Schach, “Object oriented software engineering”, Tata McGrawHill,2008
2. Craig Larman, Applying UML and Patterns, 3rd ed, Pearson Education,2005.
3. Roger S Pressman: Software Engineering-A Practitioners approach, 6th Edition, McGraw-Hill,
2010.
Overview
Introduction: Professional Software Development Attributes of good software, software engineering
diversity, IEEE/ACM code of software engineering ethics, case studies.
Instructions
Alphabets A,B,C,D………………………………Z
a,b,c,d……………………………….z
Digits 0,1,2,3,4,5,6,7,8,9
Special symbol
• Software engineering
• Computer science
serves as a base for application Is a set of tools to aid is intended to perform certain tasks.
software. System software includes developers in writing Examples of application
device drivers, operating systems programs. The various software include office suites,
(OSs), compilers, disk formatters, tools available are gaming applications, database
text editors and utilities helping the compilers, linkers, systems and educational
computer to operate more debuggers, interpreters software. Application software can
efficiently. It is also responsible for and text editors. be a single program or a
managing hardware components collection of small programs. This
and providing basic non-task- type of software is what consumers
specific functions. most typically think of as
"software."
An information system is software that helps you organize and analyze data.
This makes it possible to answer questions and solve problems relevant to the
mission of an organization.
Maintainability:
– Software must evolve to meet changing needs;
Dependability:
– Software must be trustworthy;
Efficiency:
– Software should not make wasteful use of system resources;
Acceptability:
– Software must accepted by the users for which it was designed. This means it must be understandable, usable
and compatible with other systems.
Useability:
Usability is the measure of a product's potential to accomplish the goals of the user. Some factors used in
determining product usability are ease-of-use, visual consistency, and a clear, defined process for evolution.
Reliability:
Software Reliability is the probability of failure-free software operation for a specified period of time in a specified
environment. Software Reliability is also an important factor affecting system reliability.
Scalability:
Scalability is an attribute that describes the ability of a process, network, software or organization to grow and manage
increased demand. A system, business or software that is described as scalable has an advantage because it is more
adaptable to the changing needs or demands of its users or clients.
Portability:
Portability in high-level computer programming is the usability of the same software in different environments. The
prerequirement for portability is the generalized abstraction between the application logic and system interfaces.
Reusability:
Software reuse is the process of implementing or updating software systems using existing software components. A
good software reuse process facilitates the increase of productivity, quality, and reliability, and the decrease of costs
and implementation time.
• Heterogeneity
– Developing techniques for building software that can cope with heterogeneous platforms
and execution environments;
• Delivery
• Trust
– Developing techniques that demonstrate that software can be trusted by its users.
Professional
and
Ethical Responsibility
• Software engineering involves wider responsibilities than simply the application of technical
skills.
• Software engineers must behave in an honest and ethically responsible way if they are to be
respected as professionals.
• Confidentiality
Engineers should normally respect the confidentiality of their employers or clients irrespective
of whether or not a formal confidentiality agreement has been signed.
▪ Competence
Engineers should not misrepresent their level of competence. They should not knowingly
accept work which is out with their competence.
Engineers should be aware of local laws governing the use of intellectual property such as
patents, copyright, etc. They should be careful to ensure that the intellectual property of
employers and clients is protected.
• Computer misuse
Software engineers should not use their technical skills to misuse other people’s computers.
Computer misuse ranges from relatively trivial (game playing on an employer’s machine,
say) to extremely serious (dissemination of viruses).
• The professional societies in the US have cooperated to produce a code of ethical practice.
• The Code contains Eight Principles related to the behaviour of and decisions made by
• Public
– Software engineers shall act in a manner that is in the best interests of their client and
employer consistent with the public interest.
• Product
– Software engineers shall ensure that their products and related modifications meet the
highest professional standards possible.
• Judgment
– Software engineers shall maintain integrity and independence in their professional judgment.
• Management
– Software engineering managers and leaders shall subscribe to and promote an ethical
approach to the management of software development and maintenance.
• Profession
– Software engineers shall advance the integrity and reputation of the profession consistent with
the public interest.
• Colleagues
• Self
– Software engineers shall participate in lifelong learning regarding the practice of their
profession and shall promote an ethical approach to the practice of the profession.
CBIS
Safety-critical system as low blood sugars can lead to brain malfunctioning, coma and death;
high blood sugar levels Have long-term consequences such as eye and kidney damage.
The system must therefore be designed and implemented to ensure that the system always
meets these requirements.
Students
Learning
Activity
SDA-1
Creative Work
A. Analyse different categories of software engineering diversity
B. Justify inclusion of diversity
Submission:
1. Submission Date on 21-7-2022 by 8pm.
2. Submission to be done as Hand written and PDF copy in the google class room
3. Write your USN , Name in Capital Letter Top Right Corner in your paper
Department of Computer Application 20MCA24-Software Engineering 25 July 2022
Module-1 – Part-1 Important Questions 44
Software Process
and
Agile Software Development
Topics covered
❑ Software Process models:
❑ Waterfall,
❑ incremental development,
❑ reuses oriented,
❑ Process activities; Coping with change,
❑ The rational Unified process.
❑ Agile methods, Plan-driven and agile Development,
❑ Extreme Programming, Agile project management,
❑ Scaling agile methods.
• When we describe and discuss processes, we usually talk about the activities in these processes
such as specifying a data model, designing a user interface, etc. and the ordering of these
activities.
• Process descriptions may also include:
– Products, which are the outcomes of a process activity;
– Roles, which reflect the responsibilities of the people involved in the process;
– Pre- and post-conditions, which are statements that are true before and after a process
activity has been enacted or a product produced.
• Plan-driven processes are processes where all of the process activities are
planned in advance and progress is measured against this plan.
• 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.
Sno Model Definition Features When to use the Model Advantages Disadvantages
1 Waterfall The Waterfall There are Requirements are well Easy to All requirements must
Model was first separate understand, easy be known upfront – in
known and stable
Process Model to be identified
to use, especially most projects
introduced. It is very phases in the
simple to understand waterfall Technology is by inexperienced requirement change
and use. In model: understood staff occurs after project
a Waterfall model, •Requirements start
each phase must be analysis and Milestones are
Development team
completed before definition well understood Can give a false
the next phase can •System and have experience with
by the team impression of progress
begin and there is software design similar projects
no overlapping in •Implementatio Provides Integration is one big
the n and unit bang at the end
requirements
phases. Waterfall testing
model is the earliest •Integration stability during
Little opportunity for
SDLC approach that and system development
customer to pre-view
was used for testing
software •Operation and Facilitates strong the system.
development. maintenance management
control (plan,
staff, track)
Department of Computer Application 20MCA24-Software Engineering 25 July 2022
Incremental Development Model 58
A A A
B B
– 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.
Sno Model Definition Features When to use the Model Advantages Disadvantages
1 Incremental Incremental System development is Such models are used Generates working Each phase of an
Development Model is a broken down into many where requirements are software quickly iteration is rigid
Model process of mini development clear and can and early during and do not
software projects implement by phase the software life overlap each
development Partial systems are wise. From the figure it’s cycle. other.
where successively built to clear that the More flexible – Problems may
requirements are produce a final total requirements is divided less costly to arise pertaining
broken down into system into R1, R2……….Rn change scope and to system
multiple Highest priority and delivered requirements. architecture
standalone requirement is tackled accordingly. Easier to test and because not all
modules of first Mostly such model is debug during a requirements are
software Once the incremented used in web applications smaller iteration. gathered up front
development portion id developed, and product based Easier to manage for the entire
cycle. Incremental requirements for that companies. risk because risky software life
development is increment are frozen pieces are cycle.
done in steps from identified and
analysis design, handled during its
implementation, iteration.
testing/verificatio Each iteration is an
n, maintenance. easily managed
milestone.
▪ Reuse is one of the most important concepts of today's software engineering since it can not only
save a given amount of work when existing components providing a given functionality are
reused but existing components might have lots of testing received so far so we can possibly build
more reliable systems based on them.
▪ Reuse often happens in an informal way when people working on the project know of designs or
code that are similar to what is required.
▪ They look for these, modify them as needed, and incorporate them into their system. This is
basically the application of patterns in the development process.
• Real software processes are inter-leaved sequences of technical, collaborative and managerial
activities with the overall goal of specifying, designing, implementing and testing a software
system.
• The four basic process activities of specification(SRS), development, validation and evolution are
organized differently in different development processes. In the waterfall model, they are
organized in sequence, whereas in incremental development they are inter-leaved.
The process of establishing what services are required and the constraints on the system’s
operation and development.
• Requirements engineering process
– Feasibility study
• Is it technically and financially feasible to build the system?
– Requirements elicitation and analysis
• What do the system stakeholders require or expect from the system?
– Requirements specification
• Defining the requirements in detail
– Requirements validation
• Checking the validity of the requirements
• Architectural design, where you identify the overall structure of the system, the
principal components (sometimes called sub-systems or modules), their relationships
and how they are distributed.
• Interface design, where you define the interfaces between system components.
• Component design, where you take each system component and design how it will
operate.
• Database design, where you design the system data structures and how these are to
be represented in a database.
Software Processes
Coping with Change
• Change leads to rework so the costs of change include both rework (e.g. re-analysing
requirements) as well as the costs of implementing new functionality
• Change avoidance, where the software process includes activities that can anticipate possible
changes before significant rework is required.
– For example, a prototype system may be developed to show some key features of the
system to customers.
• Change tolerance, where the process is designed so that changes can be accommodated at
relatively low cost.
– This normally involves some form of incremental development. Proposed changes may be
implemented in increments that have not yet been developed. If this is impossible, then only
a single increment (a small part of the system) may have be altered to incorporate the
change.
1.System prototyping,
where a version of the system or part of the system is developed quickly to check the
customer’s requirements and the feasibility of design decisions. This is a method of change
anticipation as it allows users to experiment with the system before delivery and so refine their
requirements. The number of requirements change proposals made after delivery is therefore
likely to be reduced.
2.Incremental delivery,
where system increments are delivered to the customer for comment and
experimentation. This supports both change avoidance and change tolerance. It avoids the
premature commitment to requirements for the whole system and allows changes to be
incorporated into later increments at relatively low cost.
3. Spiral Model
• Improved maintainability.
– Prototype should focus on areas of the product that are not well-understood;
• Rather than deliver the system as a single delivery, the development and
delivery is broken down into increments with each increment delivering part of
the required functionality.
• User requirements are prioritised and the highest priority requirements are
included in early increments.
• Incremental development
– Develop the system in increments and evaluate each increment before proceeding to the
development of the next increment;
– Normal approach used in agile methods;
– Evaluation done by user/customer proxy.
• Incremental delivery
– Deploy an increment for use by end-users;
– More realistic evaluation about practical use of software;
– Difficult to implement for replacement systems as increments have less functionality than the
system being replaced.
Objectives determination and identify alternative solutions: Requirements are gathered from the customers and the
objectives are identified, elaborated, and analyzed at the start of every phase. Then alternative solutions possible for
the phase are proposed in this quadrant.
Identify and resolve Risks: During the second quadrant, all the possible solutions are evaluated to select the best
possible solution. Then the risks associated with that solution are identified and the risks are resolved using the best
possible strategy. At the end of this quadrant, the Prototype is built for the best possible solution.
Develop next version of the Product: During the third quadrant, the identified features are developed and verified
through testing. At the end of the third quadrant, the next version of the software is available.
Review and plan for the next Phase: In the fourth quadrant, the Customers evaluate the so far developed version of
the software. In the end, planning for the next phase is started.
• Describe the main activities in the software design process and the outputs of these activities. Using a diagram, show
possible relationships between the outputs of these activities
• Explain why change is inevitable in complex systems and give examples (apart from prototyping and incremental
delivery) of software process activities that help predict changes and make the software being developed more
resilient to change.
• What is software process model? Explain the essential attributes of good software
• Discuss the various issues in software engineering professional responsibility and code of ethics
• Discuss the key challenges facing software engineering professionals that are common to all software processes
• Discuss the process involved in waterfall and incremental development model with advantages and disadvantages.
• Describe the difference between software engineering and system engineering product
• What differences has the Web made to software engineering? and explain Software engineering diversity
• Explain in detail about Reuse Oriented software engineering.
• Justify which process model will be suitable to design insulin pump system
• Explain Spiral model of Software Process with neat diagram.
• Explain Prototyping of software process with example
• Explain why incremental development is the most effective approach for developing business software systems. Why
is this model less appropriate for real-time systems engineering?
• Suggest why it is important to make a distinction between developing the user requirements and developing system
requirements in the requirements engineering process.
Department of Computer Application 20MCA24-Software Engineering 25 July 2022