Unit - 1
Introduction to Software Engineering and Software Process Models
Q. 1) Describe the nature of software and also write the properties?
Sol: For systems engineering (SE) of software-intensive systems, the essence of the software medium has many implications. It is distinguished from other types of engineering objects by four software properties, taken together.
Brooks states:
“Software entities are more complex for their size than perhaps any other human construct because no two parts are alike (at least above the statement level). If they are, we make the two similar parts into a subroutine — open or closed. In this respect, software systems differ profoundly from computers, buildings, or automobiles, where repeated elements abound.”
Such four properties are the following:
Complexity :
The complexity of software emerges from the large number of specific components in a software system that communicate with each other.
The sections are special because they are encapsulated instead of being repeated as functions, subroutines, or objects, and invoked as necessary. There are many different types of interactions with software modules, including serial and concurrent invocations, state transformations, data couplings, and database and external device interfaces.
To illustrate the various static structures, dynamic couplings, and modes of interaction that occur in computer software, the depiction of a software object also involves many different design representations. Complexity within the components and in the relations between components requires significant design rigour and regression testing for modifications. For modules that are embedded, distributed and data based, software provides functionality.
As well as complicated algorithms and heuristics, software can implement simple control loops.
Complexity can cover defects that can not be easily detected, requiring considerable additional and unplanned rework.
Changeability :
Software coordinates the operation of physical components and, in software-intensive systems, provides much of the features. Because software in a software-intensive system is the most malleable (easily changed) element, it is the most frequently changed element.
During the late stages of a development project and during system maintenance, this is particularly true. This does not mean, however, that software is easy to modify. Complexity and the need for conformity will make it an incredibly difficult task to update software.
In other parts of the system, modifying one aspect of a software system often results in undesired side effects, requiring further adjustments before the software can work at maximum performance.
Conformity :
Unlike a physical product, software has no fundamental natural rules that it must adhere to, such as the laws of motion of Newton. However, in the representation of and of its components, in the interfaces to other internal parts and in the connections to the world in which it works, the programme must comply with exacting requirements.
A compiler may detect a missing semicolon or other syntactic error, but it may be difficult to detect a defect in the programme logic or a timing error until it is encountered during operation.
Lack of conformity will trigger problems when it is not feasible to reuse an existing software feature as designed because it does not meet the needs of the product under development. This needs (usually) an unplanned allocation of resources which can delay completion of the project.
Invisibility :
Software, since it has no physical properties, is said to be invisible. Although the results of software execution on a digital device are measurable, it is not possible to see, taste, smell, touch, or hear the software itself. Software is an intangible entity because it is unable to be sensed directly by our five human senses.
Job products such as descriptions of specifications, design documents, source code and object code are software representations, but they are not software.
Software remains in the magnetization and current flow at the most elementary stage in an enormous amount of electronic elements inside a digital system. Since software has no physical presence, in an effort to image the essentially intangible object, software engineers must use various representations at different levels of abstraction.
Uniqueness :
The uniqueness of software is another point about the existence of software that Brooks alludes to but does not specifically call out. For the following reasons, software and software projects are unique:
● There are no physical properties for software;
● The product of intellect-intensive team work is software;
● Software developers' productivity varies more broadly than other engineering disciplines' productivity.
● Software project risk management is primarily process-oriented;
● Software alone, as it is often a part of a larger scheme, is useless, and
● The most frequently updated aspect in software intensive systems is software.
Q. 2) Define software and what are the features of software ?
Sol: Software is a program that when executed provides desired functions, features and performance.
A data structure that allows information to be manipulated correctly by the software.
Documentation that explains the program's process and use.
Features of software:
● Functionality: Refers to the degree of performance of the software against its intended purpose.
● Reliability: Refers to the ability of software to perform a required function under given conditions for a specified period.
● Usability: Refers the degree to which software is easy to use.
● Efficiency: Refers to the ability of software to use system resource in the most effective and efficient manner. • Maintainability: Refers to the ease with which a software system can be modified to add capabilities, improve system performance, or correct errors.
● Portability: Refers to the ease with which software developers can transfer software from one platform to another, without (or with minimum) changes Robustness: it is the ability of a software to handle an unexpected errors and faults with ease.
● Integrity: integrity in software is the better quality of software’s source code.
Q. 3) What do you mean by Identifying the task set ?
Sol: - The actual work to be done to achieve the goals of a software engineering operation is specified by a task set. For example, elicitation is an essential action in software engineering that occurs during the activity of communication.
The purpose of the requirement set is to understand what the software that is to be developed needs from different stakeholders.
The task set for the collection of requirements could look like this for a small, relatively simple project :
A different task set will be needed for a larger, more complex software project. The following job assignment must include it
Both of these task sets accomplish " requirements gathering" but in their depth and formality, they are very different. The software team selects the set of tasks that will allow it to achieve each action's goal and yet retain quality and agility.
Q. 4) What is software engineering practice ?
Sol :- It contains a set of ideas, principles, processes, and tools that are called upon on a daily basis by a software engineer.
Equipping managers to handle software projects and software engineers to construct computer programmes offers the necessary strategies and management to do the job.
Understand the problem (communication and analysis)
● Who has a stake in the problem's solution?
● What unknowns are there? And what is needed (data, function, behaviour) to solve the problem properly?
● Can the problem be graphically represented? Can a model be developed for analysis?
● Is it possible to compartmentalise the problem? It is possible to portray smaller topics that might be simpler to learn.
Plan a solution (planning, modeling and software design)
● Have you seen issues close to this before?
● Has a similar question been resolved? If not, are the solution's components reusable?
● Is it possible to identify sub-issues and are solutions available for the sub-issues?
Carry out the plan(construction, code generation)
● Does the solution comply with the plan? Can the source code be traced back to the design?
● Is each part of the solution accurate? Was the layout and code tested, or better?
Examine the results for accuracy (testing and quality assurance)
● Can each part of the solution be tested? Has a sound plan for testing been implemented?
● Does the solution produce results that correspond to the data, function and behaviour that are required?
● Was the programme validated against the demands of all stakeholders?
Q. 5) What do you mean by Waterfall model?
Sol :- Winston Royce introduced the Waterfall Model in 1970. This model has five
phases: needs analysis and specification, construction, implementation, and
evaluation of units, integration and system evaluation, and implementation and
maintenance. The steps always follow this way and are not consistent. The
developer must complete all stages before the start of the next phase. This model
is called the “Waterfall Model”;, because its graphic representation is similar to the
fall of a waterfall.
1. Requirements analysis and specification phase: The aim of this phase is
to understand the exact requirements of the customer and to document them
properly. It describes the "what" of the system to be produced and not “how. “In this phase, a large document called Software Requirement Specification
(SRS) document is created which contained a detailed description of what the
system will do in the common language.
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).
3. Implementation and unit testing: During this phase, design is implemented.
If the SDD is complete, the implementation or coding phase proceeds smoothly,
because all the information needed by software developers is contained in the
SDD.
4. Integration and System Testing: This phase is highly crucial as the quality
the end product is determined by the effectiveness of the testing carried out.
However, in this phase, the modules are tested for their interactions with each other
and with the system.
5. Operation and maintenance phase: Maintenance is the task performed by
every user once the software has been delivered to the customer, installed, and
operational.
Fig : waterfall model
Q. 6) What are the advantages and disadvantages of the Waterfall model ?
Sol: Advantages of Waterfall model
● All phases are clearly defined.
● One of the most systematic methods for software development.
● Being oldest, this is one of the time tested models.
● It is simple and easy to use.
Disadvantages of Waterfall Model
● Real Projects rarely follow sequential model .
● It is often difficult for the customer to state all requirements explicitly.
● Poor model for complex and object oriented projects.
● Poor model for long and ongoing projects.
● High amount of risk and uncertainty.
● Poor model where requirements are at a moderate to high risk of changing.
● This model is suited to automate the existing manual system for which all requirements are known before the design starts. But for new system, having such unchanging requirements is not possible.
Q. 7) What do you mean by evolutionary process model ? write some advantages and disadvantages?
Sol :- Evolutionary process model resembles the iterative enhancement model. The
same phases are defined for the waterfall model occurs here in a cyclical fashion.
This model differs from the iterative enhancement model in the sense that this
does not require a useful product at the end of each cycle. In evolutionary
development, requirements are implemented by category rather than by priority.
SDLC Evolutionary model builds the required product in several successive versions and hence is also known as successive version model or incremental model
● In this model the requirement is broken down into different functional units
● These functional units are known as modules
● The functionality improvements are done in these modules until the desired system is realized.
● Each successive version is capable of performing more functions than the previous versions
Release of different evolutionary versions in SDLC
Fig : Evolutionary development of a software product
● Each of the version will be released with some new functionalities added to the older one
● Here B will have more functionality than A, but will exhibit less capability than C
● As the system is viewed to be developed in incremental way so it is also termed as incremental model of development
Fig : Evolutionary model of software development
Advantages:
● In this model the user gets a chance to experiment partially developed system
● It reduces the error because the core modules get tested thoroughly
Disadvantages:
● Sometimes it becomes hard to divide the problem into several versions that would be acceptable to the customer which can be incrementally implemented and delivered
Q. 8) Explain Evolutionary process ?
Sol : Evolutionary process -
I have already noticed that modern software for computers is marked by constant change, very tight timelines, and an urgent need for customer satisfaction.
In certain situations, the most significant management criterion is time-to-market. The software project itself will be useless if a business window is missed. To solve these problems, evolutionary process models were conceived, and yet, as a general class of process models, they still have limitations.
We have some doubts, considering the unquestionable advantages of evolutionary software processes.
The first issue is that, because of the unknown number of cycles needed to construct the product, prototyping [and other more complex evolutionary processes] presents a challenge for project planning. Most methods of project management and estimation are based on linear activity layouts, but they do not suit perfectly.
Second, the optimum speed of evolution is not determined by evolutionary software processes. Without a time of rest, if changes happen too soon, it is certain that the process will collapse into chaos. On the other hand, if the pace is too slow, then it could impact efficiency.
Third, rather than high efficiency, software processes should be based on versatility and extensibility. This statement sounds frightening. We can, however, prioritise the speed of growth over zero defects.
Q. 9) What do you mean by agile software development?
Sol :- Agile methods
The Iterative Waterfall model was very common in earlier days to complete a project. But today, when using it to create a programme, developers face different problems. During project growth, the key challenges included managing change requests from clients and the high cost and time needed to implement these changes. To counter these limitations of the Waterfall model, the Agile Software Development model was proposed in the mid-1990s
The Agile model was primarily designed to help a project to adapt to change requests quickly. So the main aim of the Agile model is to facilitate quick project completion. Agility is necessary to achieve this mission. Agility is accomplished by adapting the approach to the project, eliminating behaviours that may not be important for a particular project. Something that is a waste of time and money is also stopped.
The Agile model actually applies to a community of production processes. Such procedures share certain fundamental features, but there are some subtle variations between them. Below are a few Agile SDLC models -
● Crystal
● Atern
● Feature-driven development
● Scrum
● Extreme programming (XP)
● Lean development
● Unified process
The specifications are decomposed into several small parts in the Agile model that can be built gradually. Iterative production is embraced by the Agile model. Over an iteration, each incremental component is created. Each iteration is intended to be small and simple to handle, and can only be completed in a few weeks. One version is scheduled, produced and deployed to the clients at a time. They do not make long-term plans.
The fusion of iterative and incremental process models is the Agile model. In agile SDLC models, the steps involved are:
● Requirement gathering
● Requirement Analysis
● Design
● Coding
● Unit testing
● Acceptance testing
The time for an iteration to be completed is known as a Time Box. The time-box refers to the maximum amount of time available for clients to deliver an iteration. So, it does not change the end date for an iteration. But, if required to produce it on time, the development team may decide to decrease the supplied functionality during a Time-box.
Q. 10) Define generic process model ?
Sol:- The method is defined as a set of tasks, activities and tasks performed when a work product is to be produced. The acts and tasks of each of these activities are based on a structure or model that determines their relationship with the process and with each other.
A process model (also termed as software life cycle model ) is a pictorial and
diagrammatic representation of the software life cycle. A life cycle model represents
all the methods required to make a software product transit through its life cycle
stages. It also captures the structure in which these methods are to be undertaken.
The software process is depicted schematically, with a collection of software engineering activities populating each framework activity.
A task set that defines the work tasks to be completed is defined by each software engineering activity.
The working products to be made, the points of quality assurance that will be needed, and the milestones to be used to demonstrate progress.
A generic system of process work for software engineering framework tasks -
Five application activities for communication, planning, modelling, construction, and deployment describe a common process framework for software engineering. In addition, a range of umbrella practises are implemented throughout the process: project monitoring and tracking, risk management, quality assurance, configuration management, technical reviews, and others.( called process flow)