Beruflich Dokumente
Kultur Dokumente
Name of Tutor
Roll Number
BI503842
of
Computer
Science,
Allama
Iqbal
Open
Software Engineering
Course Code
3575
Assignment Number
Semester
Spring 2016
30-09-2016
1 (One)
Submitted Date
District
Islamabad
Date of Receiving
Q.No.
Obtain
ed
Marks
10
11
12
13
14
15
Obtain
ed
Marks
Total
Marks
Tutors Suggestions
Signature
Returning Date
Q.1 a) Explain why Professional Software is not just the programs that are developed
for a customer?
Answer:
Software Engineering
According to IEEE [IEE93] software engineering is defined as Software
Engineering: (1) The application of a systematic, disciplined, quantifiable approach
to the development, operation, and maintenance of software; that is, the application
of engineering to software. (2) The study of approaches as in (1).
Any professional software that is developed according to the processes and
methods provided by software engineering is not only a software developed for
customer.
Software
According to Roger S. Pressman a software is (1) instructions (computer
programs) that when executed provide desired function and performance, (2) data
structures that enable the programs to adequately manipulate information, and (3)
documents that describe the operation and use of the programs. There is no
question that other, more complete definitions could be offered. But we need more
than a formal definition.
Characteristics of Software
As software is a logical entity rather than a physical entity, the characteristics
of software are somewhat different than physical entities. We can describe them as
under.
Conclusion
With the help of above discussion, we can see that software is a product and
has different characteristics than a physical entity. While developing software if
professionally developed through software engineering process, as the quality is the
bedrock of software engineering, professional software will serve its purpose
efficiently rather than the software that is developed for a customer and no services
and maintenance, the problems will occur and solution will not be available.
Professional software on other hand are engineered through a process in which
maintenance is a part of the software engineering process and it continues until the
customer is fully satisfied with the results.
Q.1 b) What is the most important difference between generic software product
development and custom software development? What might this mean in practice
for users of generic software products?
Answer:
Firstly, in defining the differences between generic and custom software it is
important to define what generic and custom software actually is;
Generic Software
Generic software is software that can perform many different tasks and is not
limited to one particular application. For example, a spreadsheet application is
generic because it is useful for multiple purposes without modification, such as a
calculating tool for engineers or a finance tool for accountants.
Generic software is readily available to the public. Developers design bespoke
software, also known as custom software, on the other hand, for specific
applications. Developers create this kind of software to suit one particular clients
needs instead of the general public. Unlike generic software, it is not usually widely
available for sale on the public market.
Custom Software
Customized software is a computer program or web application that is
specifically designed for a particular purpose, department or company. The software
is owned by the customer and can incorporate features from other software
programs. Customized software is written and designed to meet the clients specific
business processes.
With customized software, the customer owns the rights and the license to
the product. The client can resell the software to other interested parties.
Customized software can combine features from other existing software with
features that a company needs. Many companies choose customized software in
order to eliminate repetitive tasks, enhance the maintenance of precise data,
improve sharing of information and get real-time results.
as it will have a very wide use base, and will need to provide functionality and
usability to that wider range of users. However, because of the wide use base of
generic software it also needs to be quite concise with the functions that are
included; as having too many functions available to users, who may not be the best
experts on computers, would probably affect the ease of use of the software.
Generic software also has to be developed to be very reusable and have
components that can be easily modified or added to at a later date, making the
software as upgradable as possible so it can have a longer useful lifetime.
Q. 2 Explain the following process models with diagrams. Also elaborate the
strength and weaknesses of each model:
a)
a)
b)
Conception
Initiation
Analysis
Design
Construction
Testing
Production/Implementation
Maintenance
Using the software development life cycles (SDLC) common steps, the
waterfall model enforces moving to the next phase only after completion of the
previous phase. Returning to a previous phase is frowned upon unless there is a
clear need to do so.
Conception
Initiation
Analysis
Design
Construction
Testing
Production/
Implementati
on
Maintenance
As its name implies, the phases in the waterfall model consistently progress
downward. These phases should be followed in sequence to be effective, and in
some industries such as construction and manufacturing the process must be
followed.
In theory, the waterfall model sounds like a good practice, but it has been
criticized by many in the software development industry. First, an SDLC phase
cannot be perfected before moving to the following phase. Also, in its literal form
this model lacks flexibility for requirement and design adjustments, which makes it
highly difficult for programmers and developers to integrate design adjustments.
However, there are some sound principles from the waterfall model that can
be applied to successful software development. This is a partial list of these
principles:
Problems can be solved more easily if they are more clearly defined.
Large amounts of code are more traceable if they are structured.
Human work should always be verified.
A good project life-cycle plan improves the development process.
System documentation is a byproduct of the development process, and is not
done later, as an afterthought.
The waterfall model was an early attempt to provide structure, metrics and
control to the development of large and complex application systems, usually
mainframe systems.
b)
Communication
Planning
Risk Analysis
Customer Evaluation
Engineering
A spiral model is divided into number of framework activities, also called task
regions. Every framework activity represents one section of the spiral path. As the
development process starts, the software team perform activities that are indirect
by a path around the spiral model in a clockwise direction. It begins at the center of
spiral model.
Typically, there are between three and six task regions. The above figure
depicts a spiral model that contains 6 task regions.
Applications
The spiral model is mostly used in large projects. The military had adopted
the spiral model for its Future Combat Systems program.
The spiral model thus may suit small software applications and not a
complicated distributed, inter operable, system of systems.
It is also reasonable to use the spiral model in projects where business goals
are unstable but the architecture must be realized well enough to provide high
loading and stress ability.
For example, the Spiral Architecture Driven Development is the spiral based
Software Development Life Cycle (SDLC) which shows one possible way how to
reduce the risk of non-effective architecture with the help of an in conjunction with
the best practices from other models.
Software system
A software system is a system of intercommunicating components based on
software forming part of a computer system (a combination of hardware and
software). It consists of a number of separate programs, configuration files, which
are used to set up these programs, system documentation, which describes the
structure of the system, and user documentation, which explains how to use the
system.
While a computer program is a set of instructions (source, or object code) a
software system has many more components such as specification, test results,
end-user documentation, maintenance records, etc.
The term software system should be distinguished from the terms
computer program and software. The term computer program generally refers
to a set of instructions (source, or object code) that perform a specific task.
However, a software system generally refers to a more encompassing concept with
many more components such as specification, test results, end-user documentation,
maintenance records, etc.
The use of the term software system is at times related to the application of
systems theory approaches in the context of software engineering. A software
system consists of several separate computer programs and associated
configuration files, documentation, etc., that operate together. The concept is used
in the study of large and complex software, because it focuses on the major
components of software and their interactions. It is also related to the field of
software architecture.
Software systems are an active area of research for groups interested in
software engineering in particular and systems engineering in general. Academic
journals like the Journal of Systems and Software (published by Elsevier) are
dedicated to the subject.
The ACM Software System Award is an annual award that honors people or an
organization for developing a software system that has had a lasting influence,
reflected in contributions to concepts, in commercial acceptance, or both. It has
been awarded by the Association for Computing Machinery (ACM) since 1983, with a
cash prize sponsored by IBM.
Categories
Major categories of software systems include those based on application
software, programming software and system software, although the distinction can
sometimes be difficult. Examples of software systems include operating systems,
computer reservations systems, air traffic control systems, military command and
control systems, telecommunication networks, content management systems,
database management systems, expert systems, embedded systems etc.
Software Engineering
In order to build software that is ready to meet the challenges of the twentyfirst century, you must recognize a few simple realities:
Software has become deeply embedded in virtually every aspect of our
lives, and as a consequence, the number of people who have an interest
in the features and functions provided by a specific application8 has
grown dramatically. When a new application or embedded system is to be
built, many voices must be heard. And it sometimes seems that each of
them has a slightly different idea of what software features and functions
should be delivered. It follows that a concerted effort should be made to
understand the problem before a software solution is developed.
The information technology requirements demanded by individuals,
businesses, and governments grow increasing complex with each passing
year. Large teams of people now create computer programs that were
once built by a single individual. Sophisticated software that was once
implemented in a predictable, self-contained, computing environment is
now embedded inside everything from consumer electronics to medical
devices to weapons systems. The complexity of these new computerbased systems and products demands careful attention to the interactions
of all system elements. It follows that design becomes a pivotal activity.
Individuals, businesses, and governments increasingly rely on software
for strategic and tactical decision making as well as day-to-day operations
and control. If the software fails, people and major enterprises can
experience anything from minor inconvenience to catastrophic failures. It
follows that software should exhibit high quality.
As the perceived value of a specific application grows, the likelihood is
that its user base and longevity will also grow. As its user base and timein-use increase, demands for adaptation and enhancement will also grow.
It follows that software should be maintainable.
These simple realities lead to one conclusion: software in all of its forms and
across all of its application domains should be engineered. And that leads us to the
software engineering.
Software Engineering: (1) The application of a systematic, disciplined,
quantifiable approach to the development, operation, and maintenance of software;
that is, the application of engineering to software. (2) The study of approaches as in
(1).
dont know something, at which point you can research the answer. When clear
thought has gone into a system, value comes out. Applying the first six principles
requires intense thought, for which the potential rewards are enormous. If every
software engineer and every software team simply followed Hookers seven
principles, many of the difficulties we experience in building complex computer
based systems would be eliminated.
to the changing needs of business and industry. The truth however is, software
engineering is adaptive and is, therefore, relevant for anyone building a software
product.
product. The process layer is essentially the harness into which we place the
technology for building the software product.
The process layer:
Enables the project manager to plan for the successful execution of the
project
Provides practitioners the context of their work
We can view all the activities, including the technical activities, as being part
of the process. In addition, any resources, including tools, used for building the
software also fit in the process. The process layer is, therefore, the foundation of
software engineering and supports the methods and tools layers.
Importance of a process
A process is helpful because it provides clarity on how the work has to be
performed. Any complex set of human activities can become chaotic if there is no
guidance for the people performing the activities. A defined process answers the
following questions:
A process:
A defined process
Some people view software development with a perspective that it requires
artistic skill and craftsmanship and is inherently chaotic. They resist the idea of
using a defined process because they view it as being cumbersome and
bureaucratic, and therefore hindering creativity.
While there is no doubt that software development requires creativity, most
of the quality software in the industry is produced by the coordinated effort of more
than one person. For any team effort, coordinated control is a better alternative
than anarchy. The road-map provided by a process is useful for people who build
software products or manage projects.
All approaches to building software have a process, but in many cases, it is
ad hoc, invisible, and chaotic. Good software engineering makes the software
process more visible, predictable, and useful to those who build software.
graphical or text-based representation, and the related guidelines for assessing the
quality of the information represented. Let us look at an example.
Consider the activity understand and describe a problem that may be
present in the process layer. For this, we need to define the technical methods for
attributes such as:
We may decide that the technical method we will use for analysis will be
object-oriented analysis and that the specifications will be documented using the
standard template of the organization.
Selecting a method
To define a methods layer, we need to select suitable methods from the wide
range of available methods.
Consider the analysis and design activities. There is a wide variety of
methods available for these, with exhaustive books written for each. The software
project team should select the method that is most appropriate to the problem, the
development environment, and the knowledge and background of the team
members.
For example, analysis and design methods are used to produce models that
represent the problem and the design. These models are depicted using text and
graphics. Both the technical team and the customer should be able to understand
and use the depiction. The models should also be usable as input for subsequent
engineering activities. The methods selected, therefore, must provide a clear and
concise engineering description of how the models will be created and depicted.
Automation helps remove the tedium from the work, reduces the chances of
mistakes, and makes it easier to use good software engineering practices. When
tools are used, documentation becomes an integral part of the work done instead of
These tools support the process and methods layer in various activities.
Integrated tools
We have seen a list of the tools that are a part of the tools layer. The tools
layer can also use integrated tools, that is, tools that function as an integrated set
and use a common repository.
Integrated tools help to provide comprehensive support for development.
They use a repository for storing all the software engineering work products, and
this repository can be used by all the tools.
We can look at software engineering as a set of activities performed in a
workshop called integrated project support environment (IPSE) with the tools
supporting it collectively called computer-aided software engineering (CASE). CASE
can be a single tool supporting a specific activity or an integrated set of tools
Q. 4 Giving reasons for you answer based on the type of system being developed,
suggest the most appropriate generic software process model that might be
used as a basis for managing the development of the following systems:
a)
b)
c)
d)
a)
People Aspect
What is the most essential requirement without which software development
per se will not take place at all? This essential requirement refers to the people
involved in software development, or, in other words, the developers. It is absolutely
essential to have highly skilled and motivated developers to execute the project at
hand. The People factor makes a crucial difference to the quality of the project.
Besides the project team the People factor also refers to the stake holders who
participate in the software process. The people management maturity model
defines key practice areas for software people like recruitment, selection,
performance management, training, compensation, career development,
organization, team development etc.
The following categories of people are involved in the software process.
Senior Managers
Project Managers
Practitioners
Customers
End Users
Senior Managers define the business issue. Project Managers plan, motivate,
Organize and control the practitioners who do the Software work. Practitioners
deliver the technical skills that are necessary to engineer a product or application.
Customer specifies the requirements for the software to be developed. End Users
interact with the software once it is released.
Product Aspect
Before planning a project, the objectives and scope of the product has to be
established. One should also consider the alternative solutions and the technical
and management constraints. It is for the developer to understand the wants and
the requirements of the clients / customers and then organize the gathered data
and create the end product based on this. It is also essential for the two to meet in
order to decide what the product must include, its objective and scope. Once the
objective and scope of product is established, alternative solutions can be
considered.
Process Aspect
The process aspect of software development provides a framework which
helps in establishing a comprehensive plan for developing the software. Framework
for any project will have to be made for the sake of convenience irrespective of the
size of the project. One cannot say that one project is too small to have a framework
dedicated to it. The generic phases that characterize the software process are
definition, development and support. This is applicable to all kinds of software. It is
the responsibility of the project manager to decide the process model that is most
appropriate for the customers, and the work team, the characteristics of the product
and the project environment.
Project Aspect
Everything at the end of the day depends upon how successful the project
finally becomes. The project is the entirety of software development. To make the
software project successful one must not wait till the problems show up, but
determine what problems may arise, beforehand. Some of the common signs by
which problems in the project can be determined are poorly defined product scope,
the software people not understanding customer needs, unrealistic deadlines,
resistant users etc.