Soft Engg 1
Soft Engg 1
Soft Engg 1
1. Software - is a set of instructions, data or programs used to operate computers and execute
specific tasks.
Types of Software
System software- enables the application S/W to interact with the comp H/W. System software
is designed to run a computer’s hardware and provides a platform for applications to run on top
of. It is collection of programs. In include. OSs, utilities and Device drivers and Compilers.
General purpose- Browser, WS, DBMS & Excel
Special application-Graphics, CAD/CAM
Mobile apps
Application S/W- fulfills a specific need or perform tasks. An application can be self-contained,
or it can be a group of programs that run the application for the user.
o Batch
o Online
o Online Real Time
2. Hardware -physical component-All tangible equipment’s e.g. computer set, printer, UPS,
servers, CD/DVD, external HDD, camera, audio devices, Laptop, tabs, Smart phone, super
computers, pen drive, secondary storage & discs.
Types of data
4. People
Important part of information
Develop S/W and run it
Enter the data
Determines the success or failure of system
It is easy to overlook people as one of the parts of information system
System Analyst Developer, H/W Engg, System administrator, DBA, Operational user, End users,
Management persons, S/W tester and Deployment Engg are the roles of peoples.
5. Procedures -
Rules, instructions and descriptions how things are done. The rules or guidelines which are to
be followed by people when working on S/W and data are known as procedures.
Internet: Almost all in information system connect and interact with other people and computers.
Software engineering principles have evolved over the last sixty years with contributions from
numerous researchers and software professionals.
To get feel of these contributions and how they have shaped the evolution of the software engineering
discipline, let us recount a few glimpses (partial view) of the past.
Build and fix programming style – exploratory, normally a poor-quality program is quickly developed
without making any specifications plan, or design. The different imperfections that are subsequently
noticed while using or testing are fixed.
Cost
Organizations are spending larger portions of their budget on software as compared to hardware.
How many engineers are required for project to develop and establish a schedule during
planning stage i. e. manpower employed. Cost of developing software is generally measured in
terms of person-months of effort spent in development.
Line of code (LOC) or thousands of lines of code (KLOC) delivered is by far the most commonly
used measure of software size in the software industry.
The productivity in software industry for writing fresh code generally ranges from 300 to 1000
LOC per person-month.
Increasing software cost is most important symptom of the present software crisis.
Software products are difficult to alter, debug and enhance
often fail to meet the user requirements; are far from being reliable
frequently crash
Survey of 600 firms found more than 35% reported having some computer-related development
project that they categorized runaway. A runaway is not a project that is somewhat late or
somewhat over budget – it is one where budget and schedule out of control. The problem has
become so severe that it has spawned (cause something new) an industry of its own; there are
consultancy companies that advise how to rein (direct with) such projects which additional cost as
software development cost.
Similarly, a large number of instances have been quoted regarding the unreliability of software; the
software does not do what it is supposed to do or does something it is not supposed to do. In one
defense survey; it was reported that more than 70% of all the equipment failures were due to
software! This just indicates that all other engineering disciplines have advanced more than software
engineering, and a system comprising the products of various engineering disciplines find that
software is the weakest component. In software failures occur due to bugs or errors that get
introduced during the design and development process.
Schedule is an important factor in many projects. Business trends are dictating that
the time to market of a product should be reduced; that is, the cycle time from
concept to delivery should be small. Any business also requires that the cycle time
for building a software needed by the business be small. Scheduling includes
following factors: -
4. Effort validation: Every project has a defined number of people on the software
team. The project manager must ensure that no more than the allocated number of
people have been scheduled at any given time.
Quality
One of the major factors driving any production discipline is Quality. IEEE defines
“Quality as the degree to which a system, component, or process meets specified
requirements, and customer or user needs or expectations”.
The international standard on software product quality [55] suggests that software
quality comprises six main attributes,
improvements, or adaptation.
6) Portability: The capability to be adapted for different specified environments
without applying actions or means other than those provided for this purpose in the
product.
Maintenance and Rework
Once the software is delivered and deployed, it enters the maintenance phase. Why is
maintenance needed for software, when software does not age? Software needs to be maintained
not because some of its components wear out and need to be replaced, but because there are often
some residual errors, or bugs, in it. Many of these surfaces only after the system has been in
operation, sometimes for a long time. These errors, once discovered, need to be removed, leading
to the software being changed. Sometimes called corrective maintenance.
Even without bugs, software frequently undergo change. The main reason is that, software often
must be upgraded and enhanced to include more features and provide more services. This also
requires modification of the software. It has been argued that once a software system is deployed,
the environment in which it operates changes. Hence, needs that initiated the software development
also change to reflect the needs of the new environment. Hence, the software must adapt to the
needs of the changed environment. The changed software then changes the environment, which in
turn requires further change. This phenomenon is sometimes called the law of software evolution.
Maintenance due to this phenomenon is sometimes called adaptive maintenance.
Maintenance revolves around understanding existing software and maintainers spend most of
their time trying to understand the software they have to modify. Understanding the software involves
understanding not only the code but also the related documents. During the modification of the
software, the effects of the change have to be clearly understood by the maintainer because
introducing undesired side effects in the system during the modification is easy. To test whether
those aspects of the system that are not supposed to be modified are operating as they were before
modification, regression testing is done.
One of the biggest problems in software development, particularly for large and complex
systems, is that what is desired from software (i.e. the requirements) is not understood. To
completely specify the requirements, all the functionality, interfaces and constraints have to be
specified before software development has commenced! In other words, for specifying the
requirements, the clients and the developers have to visualize what the software behavior should
be once it is developed. This is very hard to do, particularly for large and complex systems. So, what
generally happens is that the development proceeds when it is believed that the requirements are
generally in good shape. However, as time goes by and the understanding of the system improves,
the clients frequently discover additional requirements they had not specified earlier. This leads to
requirements getting changed. This change leads to rework; the requirements. The design, the code
all have to be changed to accommodate the new or changed requirements.
Software development of large and complex systems can take few years. And with passage of
time, the needs of the clients change. In fact, changing requirements and associated rework are a
major problem of software industry. It is estimated that re
project is progressing towards achieving goal according to procedure and whether it takes
corrective action or not.
A Key challenge that software engineering faces is how to ensure that successful results can be
repeated, and there can be some degree of consistency in quality and productivity. A goal of software
engineering methods is that system after system can be produced with high quality and productivity.
That are methods that are being used are repeatable across projects leading to consistency in the
quality of software produced. Without consistency, even estimating cost for a project will become
difficult.
Achieving consistency is an important problem that software engineering has to tackle. There are no
globally accepted methodologies and different organizations use different ones.
The support phase focuses on change associated with error correction, adaptations
required as the software’s environment evolves, and changes due to enhancements
brought about by changing customer requirements. The support phase reapplies
the steps of the definition and development phases but does so in the context of
existing software.
3) Enhancement: The user will recognize additional functions that will provide
benefit. Perfective Maintenance extends the software beyond its original functional
requirements.
The essence of all past programming experiences and innovations for writing good quality program
in cost-effective and efficient ways have systematically organized into body of knowledge. This
knowledge from the foundation of the software engineering principles.
Important issues/reasons why it is Software engineering neither a form of science nor art?
1) Maintainability
The software should not make wasteful use of computing devices such as
memory, processor cycles, etc.
3) Correctness
4) Reusability
A software product has good reusability if the different modules of the product can
easily be reused to develop new products.
5) Testability
Here software facilitates both the establishment of test criteria and the evaluation
of the software with respect to those criteria.
6) Portability
In this case, the software can be transferred from one computer system or
environment to another.
6) Better Security: By following the software development life cycle (SDLC) and
performing security testing, software engineering can help to prevent security breaches
and protect sensitive data.
●Both projects and process are important for running and improving a business. It’s
depending on the end result trying to be achieved, one may be more suited than
the other.
● The actual process is what is actually done in the project. Note that the
actual process can be different from the planned process.
●A software process is the set of activities and associated outcome that produce a
software product. These are four key process activities, which are common to all
software processes. These activities are:
4) Software evolution: The software must evolve to meet changing client needs.
►software development process model defines the following:
■ A set of tasks that need to be performed.
■ The input to and output from each task.
The processes that deal with the technical and management issues of software
development are collectively called the software process.
What is SDLC?
● Once the requirement analysis is done the next step is to clearly define and document
the product requirements and get them approved from the customer or the market
analysts.
● SRS is the reference for product architects to come out with the best architecture
for the product to be developed. Based on the requirements specified in SRS,
usually more than one design approach for the product architecture is proposed and
documented in a DDS - Design Document Specification.
● This DDS is reviewed by all the important stakeholders and based on various
parameters as risk assessment, product robustness, design modularity, budget and
time constraints, the best design approach is selected for the product.
● A design approach clearly defines all the architectural modules of the product along
with its communication and data flow representation with the external and third- party
modules (if any). The internal design of all the modules of the proposed architecture
should be clearly defined with the minutest of the details in DDS.
Stage 4: Building or Developing the Product
● In this stage of SDLC the actual development starts and the product is built. The
programming code is generated as per DDS during this stage. If the design is
performed in a detailed and organized manner, code generation can be
accomplished without much hassle.
● Developers must follow the coding guidelines defined by their organization and
programming tools like compilers, interpreters, debuggers, etc. are used to generate
the code. Different high-level programming languages such as C, C++, Pascal,
Java and PHP are used for coding. The programming language is chosen with
respect to the type of software being developed.
Stage 5: Testing the Product
● This stage is usually a subset of all the stages as in the modern SDLC models,
the testing activities are mostly involved in all the stages of SDLC. However, this
stage refers to the testing only stage of the product where product defects are
reported, tracked, fixed and retested, until the product reaches the quality
standards defined in the SRS.
● Once the product is tested and ready to be deployed it is released formally in the
appropriate market. Sometimes product deployment happens in stages as per the
business strategy of that organization.
● The product may first be released in a limited segment and tested in the real
business environment (UAT- User acceptance testing).
SDLC MODELS
1) WATERFALL MODEL
● Sometimes called the classic life cycle or the waterfall model, the linear sequential
model.
● The aim of this phase is to understand the exact requirements of the customer
and to document them properly.
● Both the customer and the software developer work together so as to document
all the functions, performance, and interfacing requirement of the software “In this
phase, a large document called Software Requirement Specification
2. Design Phase:
● This phase aims to transform the requirements gathered in the SRS into a
suitable form which permits further coding in a programming language.
● It defines the overall software architecture together with high level and
detailed design. All this work is documented as a Software Design Document
(SDD).
19
3. Implementation and unit testing:
● During testing, the code is examined and modified. Small modules are tested.
After that these modules are tested by writing some code to check the interaction
between these modules and the flow of output.
● This phase is highly crucial as the quality of the end product is determined by the
effectiveness of the testing carried out. The better output will lead to satisfied
customers, lower maintenance costs, and accurate results.
• In this model phases are processed and completed one at a time. Phases do not
overlap.
• waterfall model works well for smaller projects where requirements are very
well understood.
20
• Poor model for long and ongoing projects.
2) PROTOTYPING MODEL
● It is an iterative, trial, and error method which take place between the
developer and the client.
Code Test
Requirements Analysis 15
● A prototyping model starts with requirement analysis. In this phase, the requirements
of the system are defined in detail. During the process, the users of the system are
interviewed to know what is their expectation from the system.
● In this stage, a simple design of the system is created. However, it is not a complete
design. It gives a brief idea of the system to the user. The quick design helps in
21
developing the prototype.
● In this stage, the proposed system is presented to the client for an initial
evaluation. It helps to find out the strength and weakness of the working model.
Comment and suggestion are collected from the customer and provided to the
developer.
● If the user is not happy with the current prototype, you need to refine the prototype
according to the user's feedback and suggestions. This phase will not over until all the
requirements specified by the user are met.
● Once the user is satisfied with the developed prototype, a final system is
developed based on the approved final prototype.
● Once the final system is developed based on the final prototype, it is tested and
deployed to production. The system undergoes routine maintenance for minimizing
downtime and prevent large-scale failures.
Customer satisfaction exists because the customer can feel the product at a
very early stage.
Quicker user feedback helps you to achieve better software development
solutions.
It also identifies the complex or difficult functions.
It is a straightforward model, so it is easy to understand.
The prototype helps to gain a better understanding of the customer's needs.
22
Prototypes can be changed and even discarded.
Prototypes may offer early training for future users of the software system.
Sometimes customers may not be willing to participate in the iteration cycle for
the longer time duration.
The client may lose interest in the final product when he or she is not happy
with the initial prototype.
3) ITERATIVE DEVELOPMENT MODEL
● In this Model, you can start with some of the software specifications and develop
the first version of the software. After the first version if there is a need to change
the software, then a new version of the software is created with a new iteration.
Every release of the Iterative Model finishes in an exact and fixed period that is
called iteration.
● The Iterative Model allows the accessing earlier phases, in which the variations
made respectively. The final output of the project renewed at the end of the Software
Development Life Cycle (SDLC) process.
23
1. Planning Phase:
● This is the first stage of the iterative model, where proper planning is done by the
team, which helps them in mapping out the specification’s documents, establish
software or hardware requirements and generally prepare for the upcoming stages
of the cycle.
● Once the planning is complete for the cycle, an analysis is performed to point out the
appropriate business logic, database models and to know any other requirements of
this particular stage.
● The design stage also occurs in this phase of iterative model, where the technical
requirements are established that will be utilized in order to meet the need of analysis
stage.
3. Implementation Phase:
● This is the third and the most important phase of the iterative model. Here, the actual
implementation and coding process is executed. All planning, specification, and design
documents up to this point are coded and implemented into this initial iteration of the
project.
24
4. Testing Phase:
● After the current build iteration is coded and implemented, testing is initiated in
the cycle to identify and locate any potential bugs or issues that may have been
in the software.
5. Evaluation Phase:
● The final phase of the Iterative life cycle is the evaluation phase, where the entire
team along with the client, examine the status of the project and validate whether
it is as per the suggested requirements.
5) Risks are identified and resolved during iteration; and each iteration is an easily
managed.
RUP Stands for "Rational Unified Process." RUP is a software development process
from Rational, a division of IBM. It divides the development process into four distinct
phases that each involve business modelling, analysis and design, implementation,
testing, and deployment. The four phases are:
1. Inception - The idea for the project is stated. The development team determines
if the project is worth pursuing and what resources will be needed.
25
associated with the development.
26
4) Good online support is available in the form of tutorials and training.
Disadvantages of Rational Unified Process Model:
● The Timeboxing method is the best way to increase productivity and split
projects into fixed periods.
● This time management technique offers the opportunity to limit the amount of
time one wants to spend on a certain activity in advance.
● The final goal is to define and limit the amount of time allotted for a specific
activity.
● Timeboxing is the cure for preventing exceeding time limits. This technique
ensures a timely delivery and offers a progressive insight by allotting maximum time
units. These time units are also called ‘periods ‘, ‘time boxes ‘or ‘iterations ‘.
Step 1: Evaluation of the amount of time that every sub-activity will take.
Step 2: Allot a set amount of time to every sub-activity; this is a time box.
Step 3: Include breaks in the schedule of the different time boxes.
27
Step 4: In the schedule of all-time boxes together, also consider unforeseen
circumstances, such as interruptions and unexpected visits.
Step 5: Get to work and use a timer to closely monitor the separate time boxes.
Step 6: Evaluate every time box; for the instances when a sub-activity was
interrupted or did not fit in a time box, it shall need to be considered what the
reason(s) was/were for this.
This evaluation is important in order not to lose sight of the end goal. The progress
of the entire project can be monitored through analyzing.
Benefits of timeboxing
● Employees will also be able to focus better and to concentrate on their activities.
● It even ensures that the perfectionist, who takes a long time to finish an activity, is
forced’ to complete their task within the time box.
● People tend to occupy themselves with multiple tasks at the same time. This
usually means that they will not be able to complete everything in time.
● Timeboxing can especially help with this, because only a single activity will need
to be completed per period.
● Project management is one of the critical processes of any project. This is due
to the fact that project management is the core process that connects all other
project activities and processes together.
● When it comes to the activities of project management, there are plenty. However,
these plenty of project management activities can be categorized into five main
processes.
28
1. Project Initiation
● Project initiation is the starting point of any project. In this process, all the activities
related to winning a project takes place. Usually, the main activity of this phase is the
pre-sale.
● During the pre-sale period, the service provider proves the eligibility and ability of
completing the project to the client and eventually wins the business. Then, it is the
detailed requirements gathering which comes next.
● During the requirements gathering activity, all the client requirements are
gathered and analyzed for implementation. In this activity, negotiations may take
place to change certain requirements or remove certain requirements altogether.
2. Project Planning
● Project planning is one of the main project management processes. If the project
management team gets this step wrong, there could be heavy negative effect during
the next phases of the project. Therefore, the project management team will have
to pay detailed attention to this process of the project.
● In this process, the project plan is derived in order to address the project
requirements such as, requirements scope, budget and timelines. Once the project
plan is derived, then the project schedule is developed.
● Depending on the budget and the schedule, the resources are then allocated to
the project. This phase is the most important phase when it comes to project cost
and effort.
29
3. Project Execution
● After all paperwork is done, in this phase, the project management executes the
project in order to achieve project objectives.
● When it comes to execution, each member of the team carries out their own
assignments within the given deadline for each activity. The detailed project
schedule will be used for tracking the project progress.
● During the project execution, there are many reporting activities to be done. The
senior management of the company will require daily or weekly status updates on
the project progress.
● During the project execution, it is a must to track the effort and cost of the
project in order to determine whether the project is progressing in the right
direction or not.
4. Control and Validation
● During the project life cycle, the project activities should be thoroughly controlled
and validated. The controlling can be mainly done by adhering to the initial protocols
such as project plan, quality assurance test plan and communication plan for the
project.
● Sometimes, there can be instances that are not covered by such protocols. In
such cases, the project manager should use adequate and necessary
measurements in order to control such situations.
● Validation is a supporting activity that runs from first day to the last day of a project.
Each and every activity and delivery should have its own validation criteria in order to
verify the successful outcome or the successful completion.
● Once all the project requirements are achieved, it is time to hand over the
implemented system and closeout the project. If the project deliveries are in par
with
30
the acceptance criteria defined by the client, the project will be duly accepted and
paid by the customer.
● Once the project closeout takes place, it is time to evaluate the entire project.
In this evaluation, the mistakes made by the project team will be identified and will
take necessary steps to avoid them in the future projects.
● During the project evaluation process, the service provider may notice that they
haven't gained the expected margins for the project and may have exceeded
the timelines planned at the beginning.
31