Se Notes Unit I
Se Notes Unit I
LECTURE NOTES
* * *
PREPARED BY
Dr. J. Malla Reddy
Professor, Dept. of CSE
* * *
SEP, 2021
1
SOFTWARE ENGINEERING
Course : B.Tech [CSE] III YR / I SEM
SYLLABUS :
• UNIT – I : Introduction to Software Engineering, A Generic View of process, Process
Models.
• UNIT- II : Software Requirements, Requirement Engineering Process, System Models.
UNIT –III : Design Engineering, Creating a Architectural Design.
• UNIT-IV : Testing Strategies, Product Metrics.
• UNIT –V : Metrics for Process & Products, Risk Management.
Prescribed Books :
• 1. Software Engineering, A practitioner’s Approach -
Roger S. Pressman, 6th edition, Mc Graw Hill ,International
Edition. Prescribed [ UNITS – 1,3,4,5 ]
• 2. Software Engineering -
Sommerville, 7th edition, Pearson Education. [ UNITS-2]
3. The unified modeling language user guide - [LAB]
Grady Booch, James Rambaugh, Ivar Jacobson, Pearson Education.
IMPORTANCE:
* The software technology plays an important role from the past three decades making world as
digital with its rapid emergent technology.
* The software is the youngest industry compared with other industries, but now it is nucleus for
other industries.
• The economies of all developed nations are dependent on software.
• More and more systems are software controlled ( transportation, medical,
telecommunications, military, industrial, entertainment)
2
• Software engineering is concerned with theories, methods and tools for professional
software development.
• 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.
• The Objective of the Software Engineering is committed to build the software projects
within the budget, time and required quality.
• The software engineering discipline that focus on the cost effective development of high
quality software.
• Many software organizations have been seriously concentrating on effective ways to
improve the product quality.
• The quality culture ultimately leads to development of more effective approaches in the
software engineering.
• As many companies in the software industry still not following software engineering
approaches effectively in their software development projects still produces software wi.th
time delay, over budget and not realistic
• The main objective of Software Engineering is to produce the satisfactory systems on time
and within the budget.
• The software product is intangible which consists of programs and associated
documentation.
• Vast number of advanced process models, tools, methods has been developed to enable the
software engineers in developing user friendly software products.
• The subject embedded concept Project Planning, Project Tracking, Formal Technical
inspections, Configuration Management, Software Quality Assurance and Risk
Management
- As the vehicle for delivering the other products. Ex : Operating Systems, Network s/w,
Software tools, and environments.
- The role of computer software has undergone significant change over a span of little more
than 50 years.
3
Hardware : Dramatic improvements in H/w performance and profound changes in computer
architectures, vast increases in memory and storage capacity, Wide variety of exotic I/O options
with sophisticated and complex computer based systems.
- Popular books published during (1970-80) provide useful historical insight into the changing
perception of computers/software and impact on culture.
- In 1990, Toffler described as “ power shift” in which old organizations (govt, educational,
industrial, economical and military) disintegrate as computers and software lead to
“democratization of knowledge”.
- Yourdon worried that US companies might lose their competitive edge related businesses and
predicted”
- Today, a huge software industry has become a dominant factor in the economies of the
industrialized world.
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 editing, 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.
4
SOFTWARE : Software is
Set of instructions (i.e Computer Programs) – Provide desired feature, function,
performance
Data structures that enable the programs – adequately manipulate the data
Documents that describe the operations & use of programs.
- The characters of software are different than other than that the human build.
- Software is logical than a physical system.
Characteristics :
1. Software is developed or engineered , it is not manufactured in the classical sense.
Software [developed/engineered ] and Hardware [manufactured)
High quality achieved through the good design
The both activities depends on people but relationship between people applied /& work
accomplished is entirely different.
Bothe activates require construction of a “product” , but approaches are different.
5
Idealized Curve [SOFTWARE] :
3. Although the industry is moving toward component –based construction, most software
continues to be custom built.
- Modern reusable components encapsulate data and processing into software parts to be
reused by different programs. E.g. graphical user interface, window, pull-down menus in
library etc.
Hardware designed, built, catalog, off shelf
Software- Reusable, custom-built, encapsulated , user interface, interfaces contains
libraries
6
2. THE CHANGING NATURE OF SOFTWARE :
System software : System software is collection of programs writer to service other programs.
Ex : Compilers, editors, and file management utilities,
Other – O/.S components, drivers, networking software, telecommunication
processors.
- Heavy interaction with hardware.
- Heavy usage by multiple users, concurrent operation that require scheduling.
- Resource sharing, process management, multiple interfaces.
Application software :
- Stand alone programs that solve specific business need.
- Ex : Conventional data processing applications,
- application software is used to control the business functions in real-time.
Engineering/ Scientific software :
- Crunching algorithms for scientific applications
- Engineering and scientific algorithms range from astronomy to volcanology
- Conventional numerical algorithms
- Computer –aided design , system simulation and other interactive applications.
Automotive Stress Analysis, Molecular Biology, orbital dynamics etc.
Embedded Software :
- Embedded software resides within a product or system
- Used to implement and control functions for the end user and system itself.
- Embedded software can perform limited and esoteric functions
- Ex : Keypad control of a microwave oven, digital functions of dash board display in car.
Product – line software :
- Designed to provide a specific capability for use by many different customers.
- Product –line software focus on limited and market place.
- Ex : Inventory control products, word-processing, graphics, multimedia, entertainment,
database management financial, personal.
Web-applications :
- “Webapps” span a wide array of applications.
- Linked with hypertext files that present in formation using test and limited graphics.
- Webapps – sophisticated computing environments not only provide standalone features,
computing functions,
- Integrated with databases and business applications.
- Ex: E-commerce and B2B applications
7
7. Artificial Intelligence [AI] :
- AI Software uses non-numerical algorithms to solve complex problem
- Robotics, expert system, pattern recognition [Image/voice], game playing
8. Ubiquitous Computing :
- The rapid growth of wireless networking may soon lead to true distributed computing.
- The ubiquitous computing allows small devices, personal computers and enterprise system
to communicated across vast networks.
9. Net sourcing :
- The WWW is rapidly becoming a computing engine as well as content provider.
- Ex : Search Engines.
10. Open Source : - Self descriptive, free available developed by third party.
LEGACY SOFTWARE :
Older programs – often referred by “Legacy Software”.
Outdated but Still usable.
The quality of Legacy Software:
- Poor quality.
- ie. Inextensible designs, convoluted code, poor and nonexistent documentation,
Test cases and results were never achieved.
8
SOFTWARE MYTHS :
- Erroneous Belief about S/W & Process used to built it , Myths have a no.of attributes.
- False expectations.
- Myths to be reasonable statements,
- Myths are misleading attributes (beliefs) that caused serious problems for managers,
Technical people and other practitioners
1. MANAGEMENT MYTHS:
- S/W Management is Responsibility and maintains the disciplines.
- Management is always under pressure with to maintain budgets, time schedules to
improve the quality.
Myth 1: We already have a book that full of stands & procedures for build software. We
not provide my people with every thing need to known
Reality : The book of standards may very well exist, but is it used ?
Is it adoptable ?, Whether practitioners knows ?.
In many cases answer is “No”.
Myth 2 : If we get behind people. We can add more programmers and catch-up
( Sometimes called i.e Mongolian horde concept ).
Reality : If an organization (Third party) does not understand internal operations (mange
& control) of the organization.
- It leads to ambiguity in final project(i.e. without understanding internal operations).
9
CUSTOMER MYTHS:
- Customer (end user) of the software who is other side desk.
- Customer believes myths about software.
- Myths leads to false expectations and ultimately leads dissatisfaction with
developer.
Myth 2 : Project requirement continually change, but change can be easily accommodated
because software is flexible.
Myth 2 : Until I get the program running, I have no way of assessing its quality
Reality : - One of the most software mechanisms such as Formal Technical Reviews are
Quality filters to find the errors.
- Quality filters are more effective than testing for finding certain classes of software
errors.
10
Myth 3 : The only deliverable work product for successful project is the working program.
Reality : - A working program is only one part of software configuration that includes many
elements.
Myth 4:Software engineering will make us create voluminous and unnecessary documentation
and will invariably slow us down.
11
QUALITY FOCUS :
- Quality focus is Bedrock of Software Layered Technology
- Quality measured with Total Quality Management (TQM), Six Sigma methods and
Statistical Methods
PROCESS LAYER:
- Software Engineering is set of framework with activities for effective delivery of software.
- Establish the context where products (model, data, report, and forms) are produced,
- Milestone are established, quality is ensured and change is managed.
- The process forma the basis for management control of software projects.
METHODS LAYER :
- Methods provides technical “ how to’s” for building software process.
- It encompasses many tasks such as communication, requirement analysis, design modeling,
program construction, testing and support.
12
Framework activities :
Communication : - Communication between customer & Developer
- Set of Frame work activities.
- Requirement gathering , other related activities
Planning : Plan for
Overcome the Risks, mobilize the Resources,
Fix the Work Schedules and Work Products.
Modeling : - Models for better understanding .
- Full fil the software requirements.
Construction : - Code Generation, Testing, ( Manual & Automated)
Deployment : - Evaluation , Feed back
Task sets : - Work products, millstones, schedules, quality assurance
- For many software projects, these framework activities are applied iteratively as a
project progresses. Each iteration produces a software increment that provides a
subset of overall software features and functionality.
13
UMBRELLA ACTIVITIES :
The five process framework activities and help team manage and control progress, quality,
change, and risk.
Software project tracking and control : - Assess progress against the plan and take actions to
maintain the schedule.
Risk management : Assesses risks that may affect the outcome and quality.
Software quality assurance : Defines and conduct activities to ensure quality.
Technical reviews : Assesses work products to uncover and remove errors before
going to the next activity.
Software configuration management: Manage the effects of change throughout the software
process.
Reusability management : Defines criteria for work product reuse and establishes mechanism
to achieve reusable components.
Work product preparation and production: Create work products such as models, documents,
logs, forms and lists.
Modeling :
Analysis : Requirement Gathering , Elaboration , Negotiation, specification, validation
validation
Design : Data Design, Architectural Design, Interface Design, Component. Design,
Prescriptive process models stress detailed definition, identification, and application of process
activates and tasks. Intent is to improve system quality, make projects more manageable, make
delivery dates and costs more predictable, and guide teams of software engineers as they perform
the work required to build a system.
– Unfortunately, there have been times when these objectives were not achieved
Agile process models emphasize project “agility” and follow a set of principles that lead to a
more informal approach to software process. It emphasizes maneuverability and adaptability. It is
particularly useful when Web applications are engineered.
- Quick analysis , Design and implementation.
14
International Standard Organization [ISO] :
- Describes an evolutionary improvement path for software organizations from an ad hoc,
immature process to a mature, disciplined one.
- Provides guidance on how to gain control of processes for developing and maintaining
software & how to evolve toward a culture of software engineering and management excellence.
- Created by the Software Engineering Institute, a research center founded by Congress in 1984.
- A structure designed to direct IT organizations through software process improvement
- Philosophy of “continuous process improvement”.
15
CAPABILITY MATURITY MODEL INTEGRATION [CMMI]
LEVEL 0 : [INCOMPLETE]
The process area [Ex :Requirement Management -RE] is either not performed or doesn’t
achieve all the goals and objectives defined by CMMI for level 1 Capability.
LEVEL 1 : [PERFORMED]
All the specific goals of the process area (as defined by CMMI) have been satisfied. Work
tasks required to produce work products are being conducted.
LEVEL 2 : [MANAGED]
- Process area confirms to an organizationally defined policy
- All people doing the work have to adequate resources to get the job done.
- Stake holders involved in the process area.
- Monitored , Controlled , Reviewed and evaluated.
- Process management is well established to track cost, schedule, and functionality. .
LEVEL 3 : [ DEFINED]
- Tailored form the organization’s set of standard process according to the
organization’s Tailoring guidelines.
16
LEVEL 4: [QUANTITATIVELY MANAGED ]
- Measures of the software process and product quality are collected.
- Software process and products are quantitatively understood and controlled.
* Quantitative Assessment * Process performance
LEVEL 5 : [OPTIMIZED] : - Change management process / technology
- Adapted and optimized using quantitative (statistical) means to meet customer needs to
continually improve efficiency.
17
SG-3 : Obtain commitment to the plan.
SP3.1 Review plans that affect the project.
SP3.2 Reconcile work and resource levels.
SP3.3. Obtain plan commitment.
GENERIC :
GG-1 : Achieve specific goals.
GP1.1. Perform base practices.
GG-2 : Institutionalize a managed process.
GP2.1. Establish an organizational policy.
GP2.2 Plan the process
GP2.3 Provide resources.
GP2.4 Assign responsibility
GP2.5 Train People
GP2.6 Manage Configurations.
GP2.7 Identify and involve relevant stakeholders.
GP2.8. Monitor and control the process.
GP2.9 Objectively evaluate adherence.
GP2.10 Review status with higher level management.
GG -3 : Institutionalize a defined process.
GP 3.1 Establish a defined process.
GP 3.2 Collect improvement information.
GG -4 : Institutionalize a quantitatively managed process.
GP 4.1 Establish quantitative objectives for the process.
GP 4.2 Stabilize sub process performance.
GG -5 : Institutionalize an optimizing process.
GP 5.1 Ensure continuous process improvement.
GP 5.2. Correct root causes of problems
PROCESS PATTERNS :
• A process pattern
– describes a process-related problem that is encountered during software
engineering work.
–
– identifies the environment in which the problem has been encountered, and
– suggests one or more proven solutions to the problem.
– Stated in more general terms, a process pattern provides you with a template
[Amb98]—a consistent method for describing problem solutions within the context
of the software process.
18
TYPES OF PATTERNS :
• Stage patterns—defines a problem associated with a framework activity for the process.
• Phase patterns—define the sequence of framework activities that occur with the process,
even when the overall flow of activities is iterative in nature.
* Process can be assessed to ensure that it meets a set of basic process criteria
- Process patterns must be coupled with solid software engineering.
• ISO 9001:2000 for Software : A generic standard that applies to any organization that
wants to improve the overall quality of the products, systems, or services that it provides.
Therefore, the standard is directly applicable to software organizations and companies.
[Ant06]
• High-level design review. Formal verification methods (Chapter 21) are applied to
uncover errors in the design. Metrics are maintained for all important tasks and work
results.
• Development. The component level design is refined and reviewed. Code is generated,
reviewed, compiled, and tested. Metrics are maintained for all important tasks and work
results.
19
Postmortem. Using the measures and metrics collected (this is a substantial amount of
data that should be analyzed statistically), the effectiveness of the process is determined.
Measures and metrics should provide guidance for modifying the process to improve its
effectiveness
• Show managers how to coach and motivate their teams and how to help them sustain peak
performance.
• Accelerate software process improvement by making CMM Level 5 behavior normal and
expected.
– The Capability Maturity Model (CMM), a measure of the effectiveness of a
software process, is discussed in Chapter 30.
– Provide improvement guidance to high-maturity organizations.
20
PROCESS MODELS
Prescriptive process models :
- Prescriptive process models advocate an orderly approach to software engineering.
- Focuses on structure, order & project consistency in software development .
- Define a prescribed set of process elements and a predictable process work flow.
- Every S/W organization should describe a unique set of frame work activities for software
process. Each frame work activity with set of S/E actions. Each action in terms of a task
set that identifies the work to be accomplished to meet the goals.
- Apart from the framework activities the other activities like Q.A, Config.Mgnt, Control
mechanism
- The manner in which the process elements are interrelated to one another
WATERFALL MODEL :
- A classic life cycle which suggests a systematic, sequential approach to software
development. It is Linear fashion, Sequential life cycle, Classic Life Cycle.
Drawbacks:
• Real time Projects rarely follow. Although the linear model can accommodate iteration. -
Changes can cause confusion
• It is difficult for the customer to state all requirements explicitly. Requirements are not
reveled initially, it is problematic to accommodate in mean time.
• The stake holder should patience. A working version of the program will not be available
until late in the project time span.
• Blacking states. – (Some of the team members should wait for tasks of other members
should complete).
• However, it can serve as a useful process model in situations where requirements are fixed
and work is to proceed to completion in a linear manner.
21
INCREMENTAL MODEL :
• The incremental model elements Combine the Waterfall Model - Iteration fashion.
• The incremental model applies linear sequence in staggered fashion in Calendar time
progress.
• Incremental model like prototyping and other evolutionary approaches are iterative
nature.
Advantages :
• Incremental process model is particularly useful when staffing is unavailable for complete
implementation by the business deadline that has been establish for the project.
• Early increments can be implemented with fewer people. If the core product is well
received, additional staff can be added to implement the next increment.
22
RAPID APPLICATION DEVELOPMENT MODEL [ RAD ] :
• The Rapid Application Development (RAD) is an incremental software process model that
emphasizes a short development cycle.
• RAD Model is “high speed” adaption of water fall model., in which rapid development is
achieved by using a component based construction approach.
• RAD process enables a development team to create a “ fully functional system” within
very short time period .
• The RAD model will also contains the frame work activities like other models.
• The planning is made for the multiple software teams work in parallel on different s/w
teams.
• Construction emphasizes the use of pre existing software components and the application
of automatic code generation. Finally deployment establishes a basis for subsequent
iterations.
• Each major function can be addressed by a separate RAD teams and then integrated as
whole.
23
Advantages & Disadvantages :
• For Large Scalable projects , the RAD requires more man power needed to form right
No.of RAD teams.
• Developers & Customers are not committed, it is not possible to complete in within the
time frame.
• If the system cannot be properly modularized, building the components necessary for
RAD will be problematic.
• RAD may not be appropriate when technical risk are high (e.g when a new application
makes heavy use of new technology).
- A set of core product or system requirements is well understood, but the details of product
or system extensions have yet to be defined.
- We need a process model that has been explicitly designed to accommodate a product that
grows and changes .
- Produce an increasingly more complete version of the software with each iteration .
PROTOTYPE MODEL :
Communication : You meet with other stakeholders to define the overall objectives, identify
known requirements, and outline areas where further definition are mandatory.
24
• Prototype is made first and based on it final product is developed.
• A prototype is a model or a program which is not based on strict planning, but is an early
approximation of the final product or software system.
• A prototype acts as a sample to test the process. From this sample we learn and try to
build a better final product.
• Please note that this prototype may or may not be completely the final system we are
trying to develop.
Advantages :
- When prototype is shown to the user, he gets a proper clarity and 'feel' of the functionality of
the software and he can suggest changes and modifications.
- This type of approach of developing the software is used for non-IT-literate people.
- When client is not confident about the developer's capabilities, he asks for a small prototype to
be built. Based on this model, he judges capabilities of developer.
- Sometimes it helps to demonstrate the concept to prospective investors to get funding for
project.
- It reduces risk of failure, as potential risks can be identified early and mitigation steps can be
taken.
- Iteration between development team and client provides a very good and conductive
environment during project.
Disadvantages :
- Prototyping is usually done at the cost of the developer. So it should be done using
minimal resources. It can be done using Rapid Application Development (RAD) tools.
- Once we get proper requirements from client after showing prototype model, it may be of
no use. That is why, sometimes we refer to the prototype as "Throw-away" prototype.
- It is a slow process.
- Too many changes can disturb the rhythm of the development team.
25
THE SPIRAL MODEL :
- Spiral Model proposed by Boehm.
- It provides the potential for rapid development, yields more complete versions of s/w.
planning
estimation
scheduling
risk analysis
communication
modeling
analysis
design
start
deployment
construction
delivery code
feedback test
- As Evolutionary process begins, S/W teams perform activities that are implied by circuit
around the spiral clock wise direction begins at centre.
- Anchor Milestones - a combination of work products and conditions that are attained
along the path of the spiral.
- The first circuit around spiral might result in development of a product specification, the
subsequent passes around the spiral might be used to develop a prototype and then
progressively more sophisticated version of software.
• The first circuit around the spiral might represent a “concept development project”, which
starts at core of spiral and continuous for multiple iterations until the concept development
is completed.
•
• New product development project - > spiral model is project enhancement project.
Advantages :
- The spiral model is realistic approach to the development of large-scale software systems.
- The Spiral model is systematic stepwise approach suggested by the classic life cycle, but
incorporates into an iterative framework. That more realistically reflects the real world.
26
SPECIALIZED PROCESS MODELS
Features :
• Reuse - Reusability leads to measureable benefits.
• 70% development time , 84% - cost,
- The aspects encapsulate behaviors that affect multiple classes into reusable modules. The
aspects for protecting the modularity, transactions, security, authorization, exception
handling, transaction management, optimistic concurrency, etc
- In the aspect oriented programming the code scattering and tangling can be avoided. The
cross-cutting functionality is now encapsulated within well defined modules.
27
UNIFIED PROCESS :
- 1980-1990 Object oriented methods and programming language.
- A wide variety of object-oriented analysis and design (OOAD) methods were proposed
during the same time period
- 199O James Raumbaugh , Grady Booch began work on a unified methods that would
combine the OO features.
- The result was UML – A Unified modeling language that contain a robust notation of the
modeling and development of OO systems.
- The Rational Corporation and other venders developed automated tools to support UML
Methods.
- The Unified modeling language is standard language for writing software blue prints.
- The UML may be used to visualize, specify, construct, and document the artifacts of a
software-intensive system.
- It is a very expressive language, addressing all the views needed to develop and then
deploy such systems.
- The UML provides a vocabulary and the rules for combining words in that vocabulary for
the purpose of communication.
- A Modeling language consisting the vocabulary and rules focus on the conceptual and
physical representation of a system.
Characteristics :
• Visualizing : Algorithm is set of instructions [textually], which can’t visualizing the
problem graphically. The UML is graphical language which contain the bunch of
graphical symbols. Each symbol in the UML notation is a well-defined semantics. We
can express solution of the problem more unambiguously.
• Specifying : Specifying means that the models are more precise, unambiguous and
complete. The UML addresses the specification of all the important analysis, design, and
implementation stages of software intensive system.
• Constructing : The UML is not a visual language, but its models can be directly
connected/ maps to such as java, C++, Visual Basic etc. The mapping permits forward
engineering. The generation of code from a UML model into a programming language.
.
• Document : The UML languages can supports the documentation of the software
artifacts.
28
Unified process
Elaboration Phase:
- The elaboration phase encompasses the customer communication and modeling activities
of the generic process model.
- The elaboration refines and expands the preliminary uses-cases , architectural
representation in five different view of the software. i.e use-case model, analysis model,
design model, implementation model and deployment model.
- The elaboration creates an “ executable architectural baseline”. The culmination of
elaboration phase to ensure that scope, risks and delivery dates reasonable. The
modification to the phase may be at this time.
29
Construction Phase : The construction phase of UP is defined to construction activity
defined for the generic software process. he architectural model as input, the construction
phase develops or acquires the software components that will make each use-case
operation of end users. The required features and function of software increment are then
implemented as source code. The Testing can be made ( Assembly/ integration testing )
made in this phase.
Transition Phase: The transition phase of the UP encompasses the later stages of the
generic construction activity and first part of the generic deployment activity. The
Software is given to end users for beta testing, and user feedback reports both defects and
necessary changes. The software teams creates the support documentation for the
software.
Production Phase : The production phase of UP with the deployment activity of the
generic process..construction phase, transition, production phase that represent a “first cut”
of the executable system .
IMPORTANT QUESTIONS
30