Module 1 SE
Module 1 SE
BCS501
Sem V - AIML
The term software engineering is the combination of two words, software and
engineering.
Information Transformer:
• Software transforms personal data, manages business information, and provides
access to global networks like the Internet.
The Evolving Role Of Software
Evolution of Software:
• Significant changes in computer software over the past 50 years:
• Hardware improvements and new computing architectures.
• Increased memory/storage and innovative input/output options.
• Shift from solo programmers to specialized teams for complex applications.
Nature Of Software
Software is:
(3) document that describes the operation and use of the programs.
Nature Of Software
Characteristics of software
- Manufacturing h/w quality pbms --- non-existent (easily corrected) for s/w
Unlike physical products (e.g., machinery), software does not deteriorate over
time due to usage
Nature Of Software
Hardware follows a "bathtub curve," showing high initial stable operation, and wear-out
over time.
Software doesn’t wear out but fails due to changes (bug fixes, updates), which can
introduce new errors, increasing the failure rate over time.
Nature Of Software
Hardware:
• Defects are corrected then failure rate drops to a steady-state level for some
period of time.
• As time passes, the failure rate rises again as hardware components suffer from
the cumulative effects of dust, vibration, abuse,
• Ideally, software failure rates should follow an "idealized curve," where defects
cause high failure rates early on, and then the rates decrease as bugs are fixed.
• Unlike hardware, software doesn't wear out physically, but it can still fail due to
undiscovered defects.
• Software will inevitably change and evolve throughout its life to meet new
requirements or fix issues.
Nature Of Software
Characteristics of software
Involves writing new code, crafting unique architectures, and creating new
features.
Software Applications
Seven Broad Categories of software are challenges for software engineers
3.Open Source: More source code is shared freely, so engineers must write clear
code and track changes for everyone to understand.
Legacy Software
Definition: Legacy software refers to older computer programs that have been modified over
time to meet new business requirements.
Challenges: These systems often have poor design, outdated documentation, and convoluted
code, making them costly to maintain and risky to update.
Importance: Despite their issues, legacy systems maintain business operations and support core
functions.
Handling Legacy Systems:
1. If the system works well and meets user needs, it's best to leave it as is.
2. Changes may be necessary to adapt to new technology, meet business requirements, or
enable integration with modern systems.
3. Adapted / enhanced / extended /re-architected to meet the changing requirements
The Unique Nature of Web Apps
• Web applications (WebApps) are a unique type of software that blend elements
of print publishing, software development, marketing, computing,
communications, and art.
• Data-Driven: They often present multimedia content and access external databases.
• Content-Sensitive: Quality content and visuals are crucial for user satisfaction.
• Continuous Evolution: WebApps evolve quickly without strict release schedules.
• Immediacy: Quick time-to-market, often within days or weeks.
• Security: Network access makes it challenging to protect sensitive information.
• Aesthetics: A good design is vital, especially for marketing or sales purposes.
Software Engineering
3. Methods
Software Engineering- Layered technology
• Methods encompass broad array of tasks including
communication, requirement analysis, design modelling,
program construction, testing and support
4. Tools
• S/w engg tools provide automated / semi-automated support for
the process and the methods.
• Software products that aid software engineers in developing,
managing, and maintaining software projects efficiently. These
tools are at the top layer, building on the foundational layers of
The Software Process
A generic process framework for software engineering encompasses five activities that are
applied repeatedly through a number of project iterations:
Communication
Engage with customers and stakeholders to understand objectives and gather requirements
for software features and functions.
Planning
Create a project plan to outline tasks, risks, resources, and the schedule needed to complete
the software engineering work.
The Software Process
• Modeling
Build models to better understand software requirements and design solutions that meet
those requirements.
• Construction
Generate code (manually or automatically) and conduct testing to identify and correct
errors in the code.
• Deployment
Deliver the software to the customer, who provides feedback after evaluating the product.
The Software Process
• Measurement
defines and collects process, project and product measures to deliver s/w that meets
stakeholders’ needs
• Software Configuration Management
Manage changes throughout the software process to control their impact.
• Reusability Management
Set criteria for reusing components and establish mechanisms to promote reuse.
• Work Product Preparation and Production
Prepare and produce work products like models, documents, logs, forms, and lists.
Software Engineering Practices
analysis).
A software system exists to provide value to its users; every decision should be
• Management Myths
Myth: "We have a standards book for software development, so my team has all they need."
Reality: The book might exist, but often it's outdated, unused, incomplete, and not adapted to
Myth: If I decide to outsource the software project to a third party, I can just relax and let
that firm build it.
Reality: If an organization does not understand how to manage and control software projects
internally, it will invariably struggle when it outsources software projects.
Software Myths
• Customer Myths
Myth: A general statement of objectives is enough to start coding; details can be added
later.
Reality: Vague objectives lead to disaster; clear requirements require ongoing
communication between customer and developer.
Myth: Software requirements continually change, but change can be easily accommodated
because software is flexible.
Reality: It is true that software requirements change, but the impact of change varies with
the time at which it is introduced. When requirements changes are requested early (before
design or code has been started), the cost impact is relatively small. However, as time
passes, the cost impact grows rapidly—resources have been committed, a design framework
has been established, and change can cause upheaval that requires additional resources and
major design modification.
Software Myths
Practitioner’s Myths
Myth: Once we write the program and get it to work, our job is done.
Reality: Someone once said that “the sooner you begin ‘writing code,’ the
longer it’ll take you to get done.” Industry data indicate that between 60 and 80
percent of all effort expended on software will be expended after it is delivered
to the customer for the first time.
Myth: Until I get the program “running” I have no way of assessing its quality.
Reality: One of the most effective software quality assurance mechanisms can
be applied from the inception of a project—the technical review. Software
reviews are a “quality filter” that have been found to be more effective than
testing for finding certain classes of software defects
Software Myths
Practitioner’s Myths
Myth: The only deliverable work product for a successful project is the
working program.
Reality: A working program is only one part of a software configuration
that includes many elements. A variety of work products (e.g., models,
documents, plans) provide a foundation for successful engineering and,
more important, guidance for software support.
Process Models
A Generic Process Model
• Software Process Framework
• Process flow
• Process Patterns
A Generic Process Model
• A generic process framework for software engineering defines five
framework activities—communication, planning, modeling, construction,
and deployment.
• In addition, a set of umbrella activities—project tracking and control, risk
management, quality assurance, configuration management, technical
reviews, and others—are applied throughout the process.
• Process flow—describes how the framework activities and the actions and
tasks that occur within each framework activity are organized with respect
to sequence and time.
A Generic Process Model
For a small software project, the communication activity phone call with the appropriate
stakeholder. Therefore, the only necessary action is phone conversation, and the work tasks
(the task set) that this action encompasses are:
1. Make contact with stakeholder via telephone.
2. Discuss requirements and take notes.
3. Organize notes into a brief written statement of requirements.
4. E-mail to stakeholder for review and approval.
Resulting Context. Describes the conditions that will result once the
pattern has been successfully implemented.
Related Patterns. Provide a list of all process patterns that are directly
related to this one. This may be represented as a hierarchy or in some
other diagrammatic form.
Process Assessment And Improvement
• Existence of a s/w process no guarantee that it will be delivered on time and
meets the needs
• Process itself needs to be assessed
Approaches:
• Standard CMMI Assessment Method for Process Improvement (SCAMPI)
• CMM-Based Appraisal for Internal Process Improvement (CBA IPI)
• SPICE—The SPICE (ISO/IEC15504) standard
• ISO 9001:2000 for Software
Process Assessment And Improvement
Process Assessment And Improvement
• A number of different approaches to software process assessment and improvement have
five step process assessment model that incorporates five phases: initiating, diagnosing,
establishing, acting and learning. uses the SEI CMM as the basis for the assessment.
diagnostic technique for assessing the relative maturity of a software organization; uses the
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,
points
• Each process model also prescribes a process flow (work flow) how
Concurrent Models
• The plan addresses the modification of the core product to better meet the needs of the
• This process is repeated following the delivery of each increment, until the complete
product is produced.
• The incremental process model focuses on the delivery of an operational product with each
increment. Early increments are stripped-down versions of the final product, but they do
provide capability that serves the user and also provide a platform for evaluation by the user
Incremental Process Models
first increment – basic file management, editing, and document production functions
1) Communication: In this phase, developer and customer meet and discuss the overall
objectives of the software.
2) Quick Plan : A prototyping iteration is planned quickly
Evolutionary Process Models
The Prototyping model
Advantages
It reduces high amount of risk.
It is good for large and critical projects because of its iterative nature.
It gives strong approval and documentation control.
In spiral model, the software is produced early in the life cycle process.
Early iterations result in prototypes or initial versions of the software that can
be tested, validated, and demonstrated to stakeholders.
Evolutionary Process Models
The Spiral model
Disadvantages
It can be costly to develop a software model.
Complexity and Management Challenges.
It is not used for small projects.
Requires Highly Skilled Teams.
Documentation Overhead.
Inconsistent Risk Management Practices: If risk assessment is not conducted
rigorously at each iteration, the model’s benefits can be undermined.
Evolutionary Process Models
Aspect Prototype
Prototype Model Model VS SpiralSpiral
model Model
the event analysis model correction. This will trigger the requirements analysis action from
the done state into the awaiting changes state.
• Concurrent modeling is applicable to all types of software development and provides an
accurate picture of the current state of a project.
• Rather than confining software engineering activities, actions, and tasks to a sequence of
events, it defines a process network.
• Each activity, action, or task on the network exists simultaneously with other activities,
actions, or tasks.
• Events generated at one point in the process network trigger transitions among the states.
The concurrent development model
Advantages of the concurrent development model
This model is applicable to all types of software development processes.
It is easy for understanding and use.
It gives immediate feedback from testing.
It provides an accurate picture of the current state of a project.
Disadvantages of the concurrent development model
It needs better communication between the team members. This may not be achieved all
the time.
It requires to remember the status of the different activities.
A Final Word on Evolutionary Processes
Computer software continual change, tight time lines, customer–user satisfaction.
Evolutionary process models these issues; they too have weaknesses:
• The first concern is that prototyping [and other more sophisticated evolutionary processes] poses a
problem to project planning because of the uncertain number of cycles required to construct the
product. Most project management and estimation techniques are based on linear layouts of
activities, so they do not fit completely.
• Second, evolutionary software processes do not establish the maximum speed of the evolution.
If the evolutions occur too fast process will fall into chaos. If the speed is too low
productivity is affected.
• Third, software processes should be focused on flexibility and extensibility rather than on high
quality. We should prioritize the speed of the development over zero defects. Extending the
development in order to reach high quality could result in a late delivery of the product, when the
opportunity niche has disappeared.
The intent of evolutionary models is to develop high-quality software in an iterative or incremental
manner. However, it is possible to use an evolutionary process to emphasize flexibility, extensibility,
and speed of development. The challenge for software teams and their managers is to establish a
proper balance between these critical project and product parameters and customer satisfaction.
Specialized Process Models
• Specialized process models are tailored versions of traditional software
development models designed to address specific types of projects,
particular project requirements, or unique development environments.
• What is a Component?
software that does a specific job, like handling user input or managing data.
higher-level interface.
Specialized Process Models
Component-Based Development:
• Commercial off-the-shelf (COTS) software components, developed by vendors who offer
them as products, provide targeted functionality with well-defined interfaces that enable
the component to be integrated into the software that is to be built.
• The component-based development model incorporates many of the characteristics of
the spiral model and it is evolutionary in nature requiring Iterative Development
• The component-based development model constructs applications from prepackaged
software components.
• In Component-Based Development (CBD), the modeling and construction activities focus
on identifying and designing components that serve as the building blocks of the
software system.
Specialized Process Models
Component-Based Development:
1. Component Identification
•User Management Component: Handles user registration, authentication, and profile
management.
•Product Catalog Component: Manages product listings, categories, and search functionality.
•Order Processing Component: Handles order creation, payment processing, and order
tracking.
•Inventory Management Component: Manages stock levels, inventory updates, and supplier
interactions.
•Payment Gateway Component: Processes payments and handles different payment methods.
Specialized Process Models
Component-Based Development: E-commerce Application
3. Component Testing and Verification: Component interfaces serve as the basis for testing
and verification. Unit tests can be written to validate the behavior of each component based on
its interface, ensuring that it meets the specified requirements.
Specialized Process Models
The Formal Methods Model
• When formal methods are used during design, they serve as a basis for
• Although not a mainstream approach, the formal methods model offers the
Imagine a turnstile gate at a subway station that controls access based on two actions:
inserting a coin and pushing the turnstile.
States:
1.Locked: The turnstile is locked and requires a coin to unlock.
2.Unlocked: The turnstile is unlocked and can be pushed to allow entry.
Inputs:
3.Insert Coin: An action that transitions the turnstile from Locked to Unlocked.
4.Push: An action that transitions the turnstile from Unlocked to Locked.
Specialized Process Models
The Formal Methods Model : Example
FSM for the turnstile: Finite State Machine (FSM) is a mathematical model used to
represent systems with a finite number of states.
FSM Representation:
1.States: Locked, Unlocked
2.Inputs: Coin, Push
3.Initial State: Locked
4.Transitions:
1. From Locked to Unlocked on Coin 2.From Unlocked to Locked on Push
Specialized Process Models
The Formal Methods Model : Example
• AOSD defines “aspects” that express customer concerns that cut across multiple system
• Aspectual requirements define those crosscutting concerns that have an impact across the
software architecture.
(AOP), is a relatively new software engineering paradigm that provides a process and
2) Elaboration phase - encompasses the planning and modeling activities of the generic process model.
Preliminary use cases refined and expanded.
Architectural representation is expanded to include five different views of the software—the use case
model, the requirements model, the design model, the implementation model, and the deployment
model.
In some cases, elaboration creates an “executable architectural baseline” [Arl] that represents a
“first cut” executable system. The architectural baseline demonstrates the viability of the architecture
but does not provide all features and functions required to use the system. In addition, the plan is
carefully reviewed at the culmination of the elaboration phase to ensure that scope, risks, and delivery
dates remain reasonable. Modifications to the plan are often made at this time.
The Unified Process Phases
3) Construction phase – identical to the construction activity defined for the generic software process.
Using the architectural model as input, the construction phase develops or acquires the software
components that will make each use case operational for end users. To accomplish this, requirements and
design models that were started during the elaboration phase are completed to reflect the final version of
the software increment. All necessary and required features and functions for the software increment are
then implemented in source code. As components are being implemented, unit tests are designed and
executed for each. In addition, integration activities (component assembly and integration testing) are
conducted. Use cases are used to derive a suite of acceptance tests that are executed prior to the initiation
of the next UP phase.
4) Transition phase – encompasses the latter stages of the generic construction activity and the first part
of the generic deployment (delivery and feedback) activity. Software is given to end users for beta testing
and user feedback reports both defects and necessary changes. In addition, the software team creates the
necessary support information (e.g., user manuals, troubleshooting guides, installation procedures) that is
required for the release. At the conclusion of the transition phase, the software increment becomes a usable
software release.
The Unified Process Phases
5) Production phase – coincides with the deployment activity of the generic process.
During this phase, the ongoing use of the software is monitored, support for the
operating environment (infrastructure) is provided, and defect reports and requests for
changes are submitted and evaluated.
It is likely that at the same time the construction, transition, and production phases are
being conducted, work may have already begun on the next software increment. This
means that the five UP phases do not occur in a sequence, but rather with staggered
concurrency. A software engineering workflow is distributed across all UP phases. In
the context of UP, a workflow is analogous to a task set. That is, a workflow identifies
the tasks required to accomplish an important software engineering action and the work
products that are produced as a consequence of successfully completing the tasks.
Personal and Team Process Models
If a software process model has been developed at a corporate or organizational
level effective only if accepted by the project team
Alternatively, the team itself can create its own process, and at the same time meet
the narrower needs of individuals and the broader needs of the organization
• TSP defines the following framework activities: project launch, high-level design,
implementation, integration and test, and postmortem.
• TSP makes use of scripts, forms, and standards. “Scripts” define specific process activities
(i.e., project launch, design, implementation, integration and system testing, postmortem) and
other more detailed work functions (e.g., development planning, requirements development,
software configuration management, unit test) that are part of the team process.
• TSP recognizes that the best software teams are self-directed. Team members set project
objectives, adapt the process to meet their needs, control the project schedule, and through
measurement and analysis of the metrics collected, work continually to improve the team’s
approach to software engineering.
Summary
•Prescriptive Models: Models like the waterfall and V models provide structured and
orderly approaches to software development, performing generic activities such as
communication, planning, modeling, construction, and deployment.
•Incremental and Evolutionary Models: Incremental models are iterative and produce
working versions rapidly. Evolutionary models, like prototyping and the spiral model,
accommodate change and produce incremental work products quickly, covering the full