What Do You Mean by Software?
What Do You Mean by Software?
What Do You Mean by Software?
Software is nothing but a collection of computer programs and related documents that are intended to
provide desired features, functionalities and better performance.
Custom – That means developed for a single customer according to their specification.
Or,
Discipline: for finding the solution to the problem an engineer applies appropriate theories, methods
and tools.
Product: The software product gets developed after following systematic theories, methods and tools
along with the appropriate management activities.
Or,
State and explain some qualities that are used to assess software
Satisfying the user requirement is not the only goal of good software. There are some essential
attributes of good software and those are
Maintainability: Sometimes there is a need to make some modification in the existing software. A good
software is a software which can be easily modified in order to meet the changing needs of the
customer.
Usability: It is the ability of the software being useful. For making the software useful it is necessary that
is necessary that it should have proper GUI and documentation.
Dependability: The dependability is a property that includes reliability, security and safety of software.
In other words the developed software product should be reliable and safe to use; it should not cause
any damage or destruction.
Efficiency: The software should be efficient in its performance and it should not waste the memory.
State and Explain the generic activities followed in all the software process.
A set of activities whose goal is the development or evolution of software is called Generic software
process. Generic activities in all software processes are:
1. Initialization
2. Requirement gathering and analysis
3. Design
4. Coding or implementation
5. Maintenance
Initialization: This is the first stage in SDLC in which it is checked whether or not the system will be
within the given budget and whether or not the system will be developed in specific time. Sometime
preliminary survey is made to find the alternative solution. This is the phase of software development in
which the development process is planned out.
Requirement gathering and analysis: Once it is decided to develop the system, the first essential thing is
to gather and analyze the requirements of the system. The information domain, function, behavioral
requirements of the system are understood.
Design: After collecting and analyzing all the necessary requirements, the design architecture for the
system is prepared. Sometimes this system design can be discussed with the customer for ensuring his
needs and demands.
Coding: after getting approved system design, one can develop the code for the system using sme
suitable programming language. During coding the design is translated into machine readable form.
Testing: Testing is a phase that begins after the coding or the implementation phase. The purpose of
testing is to uncover errors, fix bugs and meet the customer requirements.
Maintenance: When the system is installed and put in practical use then errors may get introduced,
correcting such errors and putting it in use is the major purpose of the phase
Explain waterfall model with merits and demerits.
The waterfall model is also called linear-sequential model or classic life cycle model. It is the oldest
software paradigm. This model suggests a systematic, sequential approach to software development.
The software development starts with requirements gathering phase. Then progresses through analysis,
design, coding, testing and maintenance.
Requirement Gathering and Analysis: In this phase the basic requiremets of the system must be
understood by software engineer called software analyst. The information domain, function, behavioral
requirements of the system are understood. All these requirements are then well documented and
discussed further with the customer, for reviewing.
Data structure
Software architecture
Interface representation
Algorithm details.
The requirements are translated in some easy to represent form using which coding can be done
effectively, and efficiently.
Coding: Coding is a step which design is translated into machine readable form.
Testing: Testing begins when coding is done. While performing testing the major focus is one logical
terminals of the software. The testing ensures execution of all paths, functional behaviors. The purpose
of testing is to uncover errors, fix, the bugs and meet the customer requirements.
Maintenance: Maintenance is the longest life cycle phase. When the system is installed and put in
practical use, then errors may get introduced, correcting such errors and putting it in use is the major
purpose. Similarly enhancing system’s service as new requirements are discovered is again.
Once an application is in the testing stage, it is very difficult to go back and change something
that was not well-thought out in the concept stage.
No working software is produced until late during the life cycle.
High amounts of risk and uncertainty.
Not a good model for complex and object-oriented projects.
Poor model for long and ongoing projects.
Not suitable for the projects where requirements are at a moderate to high risk of changing.
Copying with legacy: Old, valuable systems must be maintained and updated. Hardware is
evolved faster than software. Of original developer have moved on managing maintaining or
integrating of software becomes a critical issue.
Heterogeneity challenge: Sometimes systems are distributed and include a mix of hardware and
software systems must cleanly integrate with other different software systems, built by
different organizations and teams using different hardware and software platforms.
Delivery time challenge: There is increasing pressure for faster delivery of software. As the
complexity of systems that we develop increases, this challenge becomes harder.
Describe rational Unified process (RUP) model including core disciplines and
phases.
The Unified process is a framework for object oriented models. This model is also called rational Unified
process (RUP). There are 5 phases of unified process model and those are
Inception
Elaboration
Construction
Transition
Production
Inception: In this phase there are two major activities that are conducted: communication and planning.
By having customer communication business requirements can be identified. Then a rough architecture
of the system is proposed. Using this rough architecture t then becomes easy to make a plan for the
project.
Elaboration: Elaboration cane be done using two activities: planning and modeling. In this phase using
case model, analysis model, design model, implementation model and development model an
architectural model has represented and a plan is created.
Construction: The main activity in this phase is to make the use cases operational. The analysis and
design activities that are started in elaboration phase are completed and a source code is developed.
Transition: In this phase all the activities that are required at the time of deployment of the software
product are carried out. Beta testing, user feedback report is used to remove defects. This makes the
software more usable at the time of release.
Production: This is the final phase of this model. In this mainly maintenance activities are conducted in
order to support the user in operational environment.
1. Analysis
2. Design
3. Code
4. Test
The incremental model delivers series of releases to the customer. These releases are called increments.
More and more functionality is associated with each increment. The first increment is called core
product. In this release the basic requirements are implemented and then in subsequent increments,
new requirements are added.
Generates working software quickly and early during the software life cycle.
This model is more flexible – less costly to change scope and requirements.
It is easier to test and debug during a smaller iteration.
In this model customer can respond to each built.
Lowers initial delivery cost.
Easier to manage risk because risky pieces are identified and handled during it’d iteration.
Chapter – 2
Brief the process activities of requirements elicitation and analysis with figure.
The requirement elicitation means requirements discovery. This involves technical staff working with
customers to find out about the application domain, the services that the system should provide and the
system’s operational constraints. Process activities of requirement elicitation and analysis are as
following:
Requirements discovery: Interacting with stakeholders to discover their requirements. Domain
requirements are also discovered at this stage.
Requirements classification and organization: Groups related requirements and organizes them
into some class.
Prioritization and negotiation: Prioritizing requirements and resolving requirements conflicts.
Requirements documentation: Requirements are documented and input into the next round of
the spiral.
Or,
Non-functional requirement: The non-functional requirements define system properties and constraints.
Various properties of a system can be: Reliability, response time, storage requirements. And constraints
of the system can be Input and output device capability, system representations. Non-functional
requirements are three of types.
Product requirement: These requirements specify how a delivered product should behave in a particular
way.
Organizational requirements: The requirements which are consequences of organizational policies and
procedures come under this category.
External requirements: These requirements arise due to the factors that are external to the system and
its development process.
Functional requirement: Functional requirement should describe all the required functionality system
services. Functional requirements are heavily dependent upon the type of software expected users and
the type of system where the software is used. This may be high-level statements of what the system
should do but functional system requirements should describe the system services in detail.
There are 5 levels in SEIs capability maturity model (CMM) to measure quality. These are:
Initial
Repeatable
Defined
Managed
Optimizing
Initial: Few processes are defined and individual efforts are taken.
Repeatable: To track cost schedule and functionality basic project management processes are
established. Depending on earlier successes of projects with similar applications, necessary discipline
can be repeated.
Defined: The process is standardized, documented and followed in developing and supporting software.
Managed: Both the software process and product are quantitatively understood and controlled using
detailed measures.
Validity: Does the system provide the functions which best support the customer’s needs?
Consistency: Are there any requirements conflicts?
Realism: Can the requirements be implemented according to budget technology?
Verifiability: Can the requirements be checked?
Explain different types of design principles of software.
Software design principles represent a set of guidelines that helps us to avoid having a bad design.
General design principles are
Affiliation
Address
Date
Document Version
A basis for communication: Software architecture is a sort of plan of the system for the
understanding and the communication between all the stakeholders. In fact, it makes it easier to
understand the whole system and therefore makes the decisions process more efficient.
The earliest decisions: The first decisions taken are at this stage. Those early decisions have a huge
importance on the rest of the project and become very difficult to change the more we advance in the
process
Transferability of the model: Software architecture defines the model of the software and how it will
function. Having it makes it possible to reuse this model for other softwares; code can be reused as well
as the requirements. All the experience we get while doing that architecture is also transferred. This
mean that we know and can reuse the consequences of the early decisions we took on the first place.
In other words, the architecture will define the problems you might encounter when it comes to
implementation. It also shows the organizational structure and makes it much easier to take decisions
and manage all sort of change.
Process layer: Process layer is a foundation of software engineering. Basically, process defines the
framework for timely delivery of software.
Method layer: In Method layer the actual method of implementation is carried out with the help of
requirement analysis, designing, coding using desired programming constructs and testing.
Tools: Software tools are used to bring automation in software development process.
What do you mean by CASE? Show with diagram the basic building blocks of
CASE.
CASE: The Computer Aided Software Engineering (CASE) tools automate the project management
activities, manage all the work products. The CASE tools assist to perform various activities such as
analysis, design, coding and testing.
CASE
Integration
Framework
Probability Services
Operating System
Hardware Platform
Environment Architecture
There are six blocks in building structure of CASE. Each building blocks forms a foundation for the next,
with tools sitting at the top of the heap. Each blocks are described below:
Environment Architecture & Hardware Platform: The environment architecture composed of the
hardware platform and system support. It lays the ground work for CASE.
Operating System: Operating system supports database and object management services.
Probability Services: This allows CASE tools and their integration framework to migrate across different
operating systems and hardware platforms without significant adoptive maintenance.
Integration framework: This is specialized programs allowing CASE tools to communicate with one
another.
The CASE tools are classified using three approaches. Fuggetta has suggested a classification of CASE
tools as
1. Tools
2. Workbenches
3. Environments
The tools may be general purpose tools for checking the consistency in the design, compiling
the program or result.
The CASE tools for workbenches are for supporting various activities of software
development life cycle
The CASE tools for environments support the substantial part of the software process. It
generally includes the integrated environment.