0% found this document useful (0 votes)
17 views7 pages

Ch 1 Software Engineering and Models

The document outlines the evolution of software engineering through four eras, highlighting the 'software crisis' of the 1960s due to inadequate practices and the need for better processes. It emphasizes the importance of software engineering principles for developing large-scale software, the role of standards like those from IEEE, and various development models including Waterfall, Spiral, and RAD. Each model has its advantages and disadvantages, illustrating the complexities and challenges in software development.

Uploaded by

punyavathi k
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
17 views7 pages

Ch 1 Software Engineering and Models

The document outlines the evolution of software engineering through four eras, highlighting the 'software crisis' of the 1960s due to inadequate practices and the need for better processes. It emphasizes the importance of software engineering principles for developing large-scale software, the role of standards like those from IEEE, and various development models including Waterfall, Spiral, and RAD. Each model has its advantages and disadvantages, illustrating the complexities and challenges in software development.

Uploaded by

punyavathi k
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Evolution of Software Engineering

The Software Industry has evolved through Four Era’s:


1] 50’s – 60’s
2] Mid 60’s – late 70’s
3] Mid 70’s – mid 80’s
4] Mid 80’s – Present
Many Industry Observers have defined problems associated with software development as a
‘crisis’.
The Software Crisis Dates back to 1960’s when the primary reasons for these situations were less
than acceptable software Engineering practices. In the Early Stages of Software there was a lot of
Interest in the Computers, a lot of Code written but no established standards.
Then in the early 70’s a lot of computer programs started failing and people started losing
confidence and thus an industry crisis was declared. Various reasons for this crisis included:
1] Hardware advances outpacing the capability to build software, for this hardware.
2] The ability to build Pace with the Demand.
3] Increasing Dependency on software.
4] Struggle to build reliable and high quality software.
5] Poor design and insufficient resources.
To avoid these failures and thus improve the record , what is needed is a better understanding of
the process , better estimation techniques for cost - time and quality measures .
Process transforms an Input to an Output i.e. a Product. A software process is a set of activities,
methods and practices relating to the development and maintenance software.
At present a large number of software problems exits due to a chaotic software process and the
occasional success depend on the individual’s efforts. Therefore to be able to deliver successful
software projects, a focus on the process is essential, since a focus on the product alone is likely
to miss the scalability issues, and improvements in the existing system .This focus would help in
the predictability of outcomes, project trends, and project characteristics.
Form this we conclude that a set of defined processes can possibly save us from software project
failures. But none-the-less it is important to note that the process alone cannot help us avoid all
the problems , because with changing conditions the need varies , and the process has to be
adaptive to these varying needs . Importance needs to be given, to the human aspect of software
development, since only that can have a huge impact on the results. Effective price and Time
estimations may go totally scrap if the human resources are not planned and managed efficiently.
Importance of Software Engineering

Software is playing an increasingly important and central role in all aspects of daily life , e.g. :
Government , Teaching , Transportation ,Entertainment , Medication , Farming , Law , Banking
and Finance .
Software Engineering is defined by Fritz Bauer as: The establishment and use of sound
Engineering Principles in order to obtain economically developed software that is reliable and
works efficiently on real machines.
Software Engineering is an engineering approach for the software development. We can
alternatively view it as a systematic collection of past experience. This experience is arranged in
the form of methodologies and guidelines. It is possible to write small programs without using
software engineering principles. But if one wants to develop a huge Software Product, then
software engineering principles are crucial , to achieve a excellent quality of software , that is cost-
effective .
For example, if a friend asked you to build a small wall, you would be able to do that using your
common sense. You will use materials like Bricks, Cement, etc. And build the wall. But what would
happen if that same friend asked you to build a large Multi-Storeyed Building. It would be Very
difficult to extend your Knowledge about, small wall construction, in to constructing a large
building.
Similarly, without the Principles of Software Engineering it would be difficult to develop large
programs. In Industry, Software engineering is used to accommodate multiple functions, during the
development of Large Programs. The Difficulty with developing such huge Business-related
Programs is that, the difficulty level of such programs increases exponentially with their size. For
example, a program of 1,000 lines of code has some complexity, but a program with 10,000 lines
of code maybe 10 times or even 100 times more difficult, unless Software Engineering Principles
are used. Software Engineering helps to reduce programming Complexity by using two main
techniques:
1] Abstraction
2] Decomposition
1] Abstraction: To Hide Complex details with easy to understand Information, about the Process.
2] Decomposition: To break something into its basic elements. And then understand the elements
one-by-one.

Software Engineering Standards


What is IEEE?
It is short for Institute of Electrical and Electronics Engineers, also pronounced as I triple E. It was
formed in 1963 from the amalgamation of the American Institute of Electrical Engineers and the
Institute of Radio Engineers. It has its corporate office in New York City. It is the World’s largest
association of Technical Professionals with more than 4, 20,000 members in over 160 countries all
over the world. Its objectives are, the Educational and Technical advancement of Electrical and
Electronic Engineering, Telecommunications and Computer Engineering.

What are Standards?


Standards are published documents that establish specifications and procedures, designed to
ensure the reliability of Products, Methods, Services that people use every day. Standards
address a range of issues, including but not limited to – Protocols, that help ensure product
functionality and compatibility, Facilitate interoperability and Support consumer Safety and Health.

Why are Standards Important?


Standards form the fundamental building blocks of Product Development by establishing
consistent protocols that can be universally adopted and understood. This helps fuel Compatibility
and Interoperability, and simplifies product development. Standards also make it easier, to
understand and compare competing products. As Standards are globally adopted and applied in
many markets, they also fuel International Trade.

So what about IEEE?


IEEE is a Standard Association, which brings together a broad range of individuals and
organization from different Technical and Geographic point of origin to facilitate Standards
Development.

Examples of IEEE Standards:

1] 730: Standard for Software quality assurance plans


2] 828: Standard for Software Configuration Management Plans
3] 829: Standard for Software and System Test Documentation
4] 830: Recommended Practice for Software Requirements Specification
5] 1008: Standard for Software Unit Testing
6] 1219: Standard for Software Maintenance

Waterfall Model
Requirement Gathering and analysis − All possible requirements of the system to be developed
are captured in this phase and documented in a requirement specification document.
System Design − The requirement specifications from first phase are studied in this phase and
the system design is prepared. This system design helps in specifying hardware and system
requirements and helps in defining the overall system architecture.
Implementation − With inputs from the system design, the system is first developed in small
programs called units, which are integrated in the next phase. Each unit is developed and tested
for its functionality, which is referred to as Unit Testing.
Integration and Testing − All the units developed in the implementation phase are integrated into
a system after testing of each unit. Post integration the entire system is tested for any faults and
failures.
Deployment of system − Once the functional and non-functional testing is done , the product is
deployed in the customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To fix those
issues, patches are released. Also to enhance the product some better versions are released.
Maintenance is done to deliver these changes in the customer environment.

Advantages:
1] Simple and Easy to understand
2] Easy to manage
3] Phases do not overlap
4] Best for small Projects
Disadvantages:
1] Difficult to go back and Change Something
2] No working Software until late stages of SDLC
3] Risks and Uncertainty
4] Not suitable for complex and object oriented projects
Ref: [Click for Video Info ]

Spiral Model

The Spiral Model is Software Development Process joining elements of both design and
prototyping, in an effort to combine the advantages of top-down and bottom-up concepts . This
model of development combines the features of the prototyping model and the waterfall model.
The spiral model intended for large, expensive and complicated projects.
The spiral model is divided into a number of framework activities, also known as task regions.
Each of the regions is populated with a series of work tasks that are adapted according to the
characteristics of the project undertaken. Typically there are six task regions as shown in the
figure:
1] Customer communication: This requires to set-up effective communication between
developer and customer.
2] Planning: This task requires defining resources, timelines and additional project related
information.
3] Risk Analysis: Requirements are studied, risks are identified and risk mitigation strategy is
planned and finalized.
4] Engineering: Task requires building one or more representations of the application.
5] Construction and Release: Involves the construction, testing, installation and providing user
support (e.g.: documentation and training).
6] Customer Evaluation: This task requires obtaining customer feedback based on the ratings, of
software representations created during engineering stage and the software implemented during
installation stage.

Advantages:
1] High amount of Risk Analysis
2] Good for large and mission-critical Projects
3] Software is produced early in the software life cycle
Disadvantages:
1] A costly model
2] Risk analysis requires High Expertise
3] Project’s Success is dependent on Risk Analysis Phase
4] Will not work for smaller projects

RAD-Rapid Application Development

Rapid Application Development Model or RAD for short, is a “try before you buy” approach to
software development. The theory is that end users can produce better feedback when examining
a live system, as opposed to working strictly with documentation. RAD-based development cycles
have resulted in a lower level of rejection when the application is placed into production, but this
success most often comes at the expense of a dramatic overruns in project costs and schedule.
The down side to RAD is the propensity of the end user to force scope creep into the development
effort. Since it seems so easy for the developer to produce the basic screen, it must be just as
easy to add a widget or two. In most RAD lifecycle failures, the end users and developers were
caught in an unending cycle of enhancements, with the users asking for more and more and the
developers trying to satisfy them. The participants lost sight of the goal of producing a basic,
useful system, in favour of the siren song of glittering perfection.

Advantages of RAD:
1] RAD reduces the development time and reusability of components help
to speed up development
2] All functions are modularized so it is easy to work with
3] For large projects RAD require highly skilled engineers in the team

Disadvantages of RAD:
1] Both end customer and developer should be committed to complete the System in a much
abbreviated time frame
2] If commitment is lacking, RAD will fail
3] RAD is based on Object Oriented approach and if it is difficult to Modularize the project, and
then RAD may not work well

You might also like