Specialized Process Model
Specialized Process Model
Introduction to Software
Engineering
Syllabus
A. Nature of Software
B. Software Process
C. Software Engineering Practice
D. Software Myths
E. Generic Process model
F. Process Assessment and Improvement
G. Perspective Process Models
H. Specialized Process Models
I. Personal and Team Process Models
Agile Process models:
J. Agile process
K. Extreme programming
General definition of Software Engineering
Software engineering involves a process, a collection
of methods (practice) and an array(collection) of
tools that allow professionals to build high quality
computer software.
1
THE NATURE OF SOFTWARE
❖ Defining Software
Software is: (1) instructions (computer programs) that when
executed provide desired features, function, and
performance; (2) data structures that enable the programs
to effectively manipulate information, and (3) descriptive
information in both hard copy and virtual forms that
describes the operation and use of the programs.
❖ software characteristics
1. Software is developed or engineered; it is not
manufactured in the classical sense.
2. Although the industry is moving toward component-based
construction, most software continues to be custom built.
3. Software doesn’t “wear out.” But it does deteriorate!
4. Although the industry is moving toward component-based
construction, most software continues to be custom built.
Figure 1: Failure curve
for hardware
• Embedded software
software—resides within a product or system and is used to implement and
control features and functions for the end user and for the system itself
• Product-line software
designed to provide a specific capability for use by many different customers.
Product-line software can focus on a limited and esoteric marketplace (e.g.,
inventory control products)
• Web applications
called “WebApps,” this network-centric software category spans a wide array
of applications. In their simplest form, WebApps can be little more than a set of
linked hypertext files that present information using text and limited graphics
• Artificial intelligence software
- makes use of nonnumerical algorithms to solve complex problems that are
not amenable to computation or straightforward analysis. Applications within
this area include robotics, expert systems, pattern recognition
New Challenges
•Open-world computing
•Netsourcing
•Open source
Legacy software (A poor quality software)
•Some other programs are older, in some cases much older.
•Legacy software systems . . . were developed decades ago
and have been continually modified to meet changes in
business requirements and computing platforms. The
production of such systems is causing headaches for large
organizations who find them costly to maintain and risky to
evolve.
1
Legacy Software
• Many legacy systems remain supportive to core business
functions and are ‘essential’ to the business. What to do?
• What types of changes are made to legacy systems?
▪ The software must be adapted to meet the needs of new
computing environments or technology.
▪ The software must be enhanced to implement new business
requirements.
▪ The software must be extended to make it interoperable with
other more modern systems or databases.
▪ The software must be re-architected to make it feasible within a
network environment.
1
THE SOFTWARE PROCESS
A process is a collection of activities, actions, and tasks that are performed when
some work product is to be created.
A generic process framework for software engineering encompasses five activities:
⮚ Communication
important to communicate and collaborate with the customer and other
stakeholders. The intent is to understand stakeholders’ objectives for the project
and to gather requirements
⮚ Planning
planning activity creates a “map” that helps, guide .The map—called a software
project plan—defines the software engineering work by describing the technical
tasks to be conducted
⮚ Modeling
creating models to better understand software requirements and the design that
will achieve requirements.
⮚ Construction
This activity combines code generation (either manual or automated) and the
testing that is required to uncover errors in the code.
⮚ Deployment
The software (as a complete entity or as a partially completed increment) is
delivered to the customer who evaluates the delivered product and provides
feedback based on the evaluation
Software engineering process framework activities are complemented by a
number of umbrella activities
⮚ Software project tracking and control
allows the software team to assess progress against the project plan and
take any necessary action to maintain the schedule.
⮚ Risk management
assesses risks that may affect the outcome of the project or the quality of
the product.
⮚ Technical reviews
assesses software engineering work products in an effort to uncover and
remove errors before they are propagated to the next activity.
⮚ Software quality assurance
defines and conducts the activities required to ensure software quality.
⮚ Measurement
Measurement—defines and collects process, project, and product
measures that assist the team in delivering software that meets
stakeholders’ needs
⮚ Software configuration management
manages the effects of change throughout the software
process
⮚ Reusability management
defines criteria for work product reuse (including software
components) and establishes mechanisms to achieve
reusable components.
⮚ Work product preparation and production
encompasses the activities required to create work
products such as models, documents, logs, forms, and lists.
SOFTWARE ENGINEERING PRACTICE
❖ The Essence of Practice
• Understand the problem (communication and analysis).
• Plan a solution (modeling and software design).
• Carry out the plan (code generation).
• Examine the result for accuracy (testing and quality assurance).
❖ General Principles
1. The Reason It All Exists
-A software system exists for one reason: to provide value to its
users . “Does this add real value to the system?” If the answer is
“no,” don’t do it.
2. KISS (Keep It Simple, Stupid!)
All design should be as simple as possible, but no simpler. This
facilitates having a more easily understood and easily maintained
system.
3. Maintain the Vision
A clear vision is essential to the success of a software project
4. What You Produce, Others Will Consume
always specify, design, and implement knowing someone else will have to
understand what you are doing
5. Be Open to the Future
system with a long lifetime has more value. systems must be ready to
adapt to these and other changes. Never design yourself into a corner.
Always ask “what if,” and prepare for all possible answers by creating
systems that solve the general problem.
6. Plan Ahead for Reuse
Reuse saves time and effort. Achieving a high level of reuse is arguably
the hardest goal to accomplish in developing a software system.
Planning ahead for reuse reduces the cost and increases the value of
both the reusable components and the systems into which they are
incorporated.
7. Think!
Placing clear, complete thought before action almost always produces
better results. When you think about something, you are more likely to
do it right. You also gain knowledge about how to do it right again
Software Myths
Management Myths
i)Myth: We already have a book that's full of standards and
procedures for building software,
Reality: but is it used? Are software practitioners aware of its
existence? Is it complete
ii)Myth: My people have state-of-the-art software
development tools,
Reality: Computer-Aided Software Engineering (CASE)
tools are more important than hardware for achieving good
quality and productivity, yet the majority of software
developers still do not use them effectively.
1
iii)Myth: If we get behind schedule, we can add more
programmers and catch up
Reality: “Adding people to a late software project makes it
later”. However, as new people are added, people who were
working must spend time educating the newcomers. People
can be added but only in a planned and well-coordinated
manner.
iv)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 be
problematic to build that project.
1
Customer’s Myths
i)Myth: A general statement of objectives is sufficient to begin
writing programs, we can fill in the details later.
Reality: A poor up-front definition is the major cause of failed
software efforts. A formal and detailed description of the
information domain, function, behavior, performance,
interfaces, design constraints, and validation criteria is
essential which is determined only after thorough
communication between customer and developer.
ii)Myth: Project 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 & cost is increases.
1
Practitioner Myths
(Related To Practitioner or Programmer)
i)Myth: Once we write the program and get it to work, our
job is done.
Reality: “ The sooner you begin 'writing code', the longer
it'll take you to get done”.
ii)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. Documentation
provides a foundation for successful engineering and, more
important, guidance for software support.
1
A GENERIC PROCESS MODEL
✔Readiness assessment
(1) an appropriate development environment exists to support IXP, (2) the
team will be populated by the proper set of stakeholders, (3) the
organization has a distinct quality program and supports continuous
improvement, (4) the organizational culture will support the new values of
an agile team, and (5) the broader project community will be populated
appropriately.
✔ Project community
- people on the team must be well-trained, adaptable and skilled, and
have the proper temperament to contribute to a self-organizing team
✔ Project chartering
- examines the context of the project to determine how it complements,
extends, or replaces existing systems or processes
✔ Test-driven management
- requires measurable criteria for assessing the state of the project and
the progress
✔ Retrospectives
-IXP team conducts a specialized technical review after a software
increment is delivered. Called a retrospective
✔ Continuous learn
- XP team are encouraged (and possibly, incented) to learn new methods
and techniques that can lead to a higher quality product.
❖ The XP Debate