Software Engineering & Project Management (Bcs501)
Software Engineering & Project Management (Bcs501)
MANAGEMENT(BCS501)
Module-1
Software and Software
Engineering
TEXT BOOKS
Software engineering is the establishment and use of sound engineering principles in order to obtain
economically software that is reliable and works efficiently on real machines.
Quality focus:-
Main principle of Software Engineering is Quality focus.
An engineering approach must have a focus on quality.
Total Quality Management(TQM), Six Sigma, ISO 9001, ISO 9000-3 , Capability Maturity Model(CMM) ,
CMMI & similar approaches encourages a continuous process improvement culture.
Process :-
The foundation for software engineering is the process layer.
Software engineering process is the glue that holds the technology layers together.
Process defines a framework activities for effective delivery of software engineering technology.
EX:Timely development of software,management & control of software projects.
Methods :-
Software engineering methods provide the technical how-to's for building software.
Methods encompass a broad array of tasks that include requirements analysis, design, program construction,
testing, and support.
Tools :-
Software engineering tools provide automated or semi-automated support for the process and the methods.
When tools are integrated so that information created by one tool can be used by another, a system for the support
of software development, called computer-aided software engineering, is established.
CASE combines software, hardware, and a software engineering database (a repository containing important
information about analysis, design, program construction, and testing) to create a software engineering
environment analogous to CAD/CAE (computer-aided design/engineering) for hardware.
SOFTWARE PROCESS
Software process:-
A Process is a collection of activites,actions and tasks that are performed when some work product
is to be created.
Activity:An activity refers to a specific task or set of tasks that individuals or groups engage in to
accomplish a particular goal or objective.
Ex:Communication with stake holder.
Action:In a general sense, an action refers to the process of doing something, often in pursuit of a goal
or objective.
Ex:Architectural design.
Task:A task is a specific, individual piece of work or duty that needs to be completed as part of a larger
project or goal.
Ex:Conducting a Unit test.
Common Process Framework Activities
COMMUNICATION Communication with PLANNING Software Project Plan which
customers/ stackeholders defines workflow that is to
to understand project follow. It describes technical
requirements for defining task, risks, resources, product
software features. to be produced & work
schedule.
MODELING Creating models to CONSTRUCTIONS Code generation (manual or
understand requirements automated) & testing (to
and shows design of uncover errors in the code)
software to achieve
requirements.
What are the unknowns? What data, functions, and features are required to
properly solve the problem?
Has a similar problem been solved? If so, are elements of the solution
reusable?
Can subproblems be defined? If so, are solutions readily apparent for the
subproblems?
Myth: If we get behind schedule, we can add more programmers and catch
up(sometimes called the ―Mongolian horde‖ concept).
Myth: If I decide to outsource the software project to a third party, I can just
relax and let that firm build it.
SOFTWARE MYTHS
Customer Myth
Myth: A general statement of objectives is sufficient to begin writing programs—
we can fill in the details later.
Developers/Practioners Myth
Myth: Once we write the program and get it to work, our job is done.
Myth: Until I get the program ―running‖ I have no way of assessing its quality.
Myth: The only deliverable work product for a successful project is the working
program.
• Iterative Process flow: This flow repeats one or more activities that are listed above
before starting the next activity.
• Evolutionary Process flow: This flow carries out the activities listed above in a
circular manner. Each circle leads to the more complete version of the software
Parallel process flow: This flow executes the activities listed above in parallel with
each other activites.
How does a framework activity change as the nature of the
project changes?
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.
PROCESS PATTERN TYPES
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]
PRESCRIPTIVE MODELS
Prescriptive process models advocate an orderly approach to software
engineering
That leads to a few questions …
If prescriptive process models strive for structure and order, are they
inappropriate for a software world that thrives on change?
Yet, if we reject traditional process models (and the order they imply) and
replace them with something less structured, do we make it impossible to
achieve coordination and coherence in software work?
WATERFALL MODEL
WHAT IS V-MODEL
• The V-shaped model should be used for small to medium sized projects where
• The V-Shaped model should be chosen when sample technical resources are available
• Verification Phase
• Validation Phase
PICTORIAL VIEW OF V-MODEL
VERIFICATION PHASE
• Requirements Analysis:
the first step in the verification process, the requirements of the system are collected by
analyzing the needs of the user.
• System design:
In this phase system engineers analyze and understand the business of the proposed
system by studying the user requirements document.
VERIFICATION PHASE
• Architecture design
The baseline in selecting the architecture is that it should realize all which typically consists of
the list of modules, brief functionality of each module, their interface
relationships, dependencies, database tables, architecture diagrams, technology details etc.
The integration testing design is carried out in the particular phase.
VERIFICATION PHASE
• Module design
The module design phase can also be referred to as low-level design. The designed system is
broken up into smaller units or modules and each of them is explained so that the
programmer can start coding directly. The low level design document or program
specifications will contain a detailed functional logic of the module, in pseudo-code:
database tables, with all elements, including their type and size
all interface details with complete API references
all dependency issues
error message listings
complete input and outputs for a module.
CODING
• This is at the bottom of the V-Shape model. Module design is converted into code
by developers.
VALIDATION PHASE
• Unit testing
Unit Test Plans (UTPs) are developed during module design phase. These UTPs
are executed to eliminate bugs at code level or unit level.
A unit is the smallest entity which can independently exist, e.g. a program
module. Unit testing verifies that the smallest entity can function correctly when
isolated from the rest of the codes/units.
VALIDATION PHASE
• Integration testing
Integration Test Plans are developed during the Architectural Design Phase. These tests
verify that units created and tested independently can coexist and communicate among
themselves.
• System testing
System Tests Plans are developed during System Design Phase. Unlike Unit and
Integration Test Plans, System Test Plans are composed by client's business team. System
Test ensures that expectations from application developed are met.
VALIDATION PHASE
elaboration
inception
UP WORK PRODUCTS
PERSONAL SOFTWARE PROCESS (PSP)
Planning. This activity isolates requirements and develops both size and resource estimates. In
addition, a defect estimate (the number of defects projected for the work) is made. All metrics
are recorded on worksheets or templates. Finally, development tasks are identified and a project
schedule is created.
High-level design. External specifications for each component to be constructed are developed
and a component design is created. Prototypes are built when uncertainty exists. All issues are
recorded and tracked.
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.
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.
TEAM SOFTWARE PROCESS (TSP)
Build self-directed teams that plan and track their work, establish goals, and own their
processes and plans. These can be pure software teams or integrated product teams (IPT) of
three to about 20 engineers.
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.
Facilitate university teaching of industrial-grade team skills.