You are on page 1of 10

CS-6209 Software Engineering 1

1
Week 2: Software Engineering Principles

Module 002: Software Engineering Principles

Course Learning Outcomes:


1. Ability to identify, formulate, and solve complex engineering problems by
applying principles of engineering, science, and mathematics
2. Understand the importance of the stages in the software life cycle,
including a range of software development methodologies.
3. Understand the principles of Software Engineering

Introduction
Software engineering is concerned with all aspects of software production from the early
stages of system specification through to maintaining the system after it has been used.

As a discipline, software engineering has progressed very far in a very short period of time,
particularly when compared to classical engineering field (like civil or electrical
engineering). In the early days of computing, not more than 50 years ago, computerized
systems were quite small. Most of the programming was done by scientists trying to solve
specific, relatively small mathematical problems. Errors in those systems generally had
only “annoying” consequences to the mathematician who was trying to find “the answer.”
Today we often build monstrous systems, in terms of size and complexity.

Principles of Software Engineering


The need of software engineering arises because of higher rate of change in user
requirements and environment on which the software is working.

Separation of Concerns
When specifying the behavior of a data structure component, there are often two
concerns that need to be dealt with: basic functionality and support for data
integrity. A data structure component is often easier to use if these two concerns are
divided as much as possible into separate sets of client functions. It is certainly
helpful to clients if the client documentation treats the two concerns separately.

Modularity
The principle of modularity is a specialization of the principle of separation of
concerns. Following the principle of modularity implies separating software into
components according to functionality and responsibility. It describes a
responsibility-driven methodology for modularization in an object-oriented context.

Course Module
CS-6209 Software Engineering 1
2
Week 2: Software Engineering Principles

Abstraction
The principle of abstraction is another specialization of the principle of separation
of concerns. Following the principle of abstraction implies separating the behavior
of software components from their implementation. It requires learning to look at
software and software components from two points of view: what it does, and how
it does it.

Failure to separate behavior from implementation is a common cause of


unnecessary coupling. For example, it is common in recursive algorithms to
introduce extra parameters to make the recursion work. When this is done, the
recursion should be called through a non-recursive shell that provides the proper
initial values for the extra parameters. Otherwise, the caller must deal with a more
complex behavior that requires specifying the extra parameters. If the
implementation is later converted to a non-recursive algorithm, then the client code
will also need to be changed.

Anticipation of Change
Computer software is an automated solution to a problem. The problem arises in
some context or domain that is familiar to the users of the software. The domain
defines the types of data that the users need to work with and relationships
between the types of data.

Software developers, on the other hand, are familiar with a technology that deals
with data in an abstract way. They deal with structures and algorithms without
regard for the meaning or importance of the data that is involved. A software
developer can think in terms of graphs and graph algorithms without attaching
concrete meaning to vertices and edges.

Working out an automated solution to a problem is a learning experience for both


the software developers and their clients. Software developers are learning the
domain that the clients work in. They are also learning the values of the client: what
form of data presentation is most useful to the client, what kinds of data are crucial
and require special protective measures.

The clients are learning to see the range of possible solutions that software
technology can provide. They are also learning to evaluate the possible solutions
with regard to their effectiveness in meeting the client’s needs.

Cohesiveness has a positive effect on ease of change. Cohesive components are


easier to reuse when requirements change. If a component has several tasks rolled
up into one package, it is likely that it needs to be split up when changes are made.
CS-6209 Software Engineering 1
3
Week 2: Software Engineering Principles

Generality
The principle of generality is closely related to the principle of anticipation of
change. It is important in designing software that is free from unnatural
restrictions and limitations. One excellent example of an unnatural restriction or
limitation is the use of two digit year numbers, which has led to the "year 2000"
problem: software that will garble record keeping at the turn of the century.
Although the two-digit limitation appeared reasonable at the time, good software
frequently survives beyond its expected lifetime.

Incremental Development
An incremental software development process simplifies verification. If you develop
software by adding small increments of functionality, then, for verification, you only
need to deal with the added portion. If there are any errors detected, they are
already partly isolated so they are much easier to correct.

A carefully planned incremental development process can also ease the handling of
changes in requirements. To do this, the planning must identify use cases that are
most likely to be changed and put them towards the end of the development
process.

Consistency
The principle of consistency is a recognition of the fact that it is easier to do things
in a familiar context. For example, coding style is a consistent manner of laying out
code text. This serves two purposes. First, it makes reading the code easier. Second,
it allows programmers to automate part of the skills required in code entry, freeing
the programmer's mind to deal with more important issues.

Consistency serves two purposes in designing graphical user interfaces. First, a


consistent look and feel makes it easier for users to learn to use software. Once the
basic elements of dealing with an interface are learned, they do not have to be
relearned for a different software application. Second, a consistent user interface
promotes reuse of the interface components. Graphical user interface systems have
a collection of frames, panes, and other view components that support the common
look. They also have a collection of controllers for responding to user input,
supporting the common feel. Often, both look and feel are combined, as in pop-up
menus.

Is Software Development an Engineering Discipline?


Engineering involves the systematic application of scientific knowledge to the
solution of problems. The complexity of problems that are tackled today are not

Course Module
CS-6209 Software Engineering 1
4
Week 2: Software Engineering Principles

that different from those tackled by an electric engineer in creating a circuit or a


chemical engineer in devising a manufacturing process or a mechanical engineer
in the creation of a device.

The fact that there is also a hands-on approach of applying existing plans
(development in this case) is simply similar to the fact that in other fields,
somebody else executes those plans (e.g., the construction worker).

It is true that most developers also carry software engineering tasks, and that our
education is often not in programming but rather in software engineering. So we get
our hands dirty whereas a civil engineer would not.

Information System
An Information System (IS) is a system composed of people and computers that
processes or interprets information. The term is also sometimes used in more
restricted senses, referring only to the software used to run a computerized
database or a computer system only.

Information systems is an academic study of systems with a specific reference to


information and the complementary networks of hardware and software that
people and organizations use to collect, filter, process, create and also distribute
data. An emphasis is placed on an Information System having a definitive
Boundary, Users, Processors, Stores, Inputs, Outputs and the aforementioned
communication networks.

Any specific information system aims to support operations, management and


decision making. An information system is the information and communication
technology (ICT) that an organization uses, and also the way in which people
interact with this technology in support of business processes.

The 6 components that must come together to produce an information system are:
Hardware
The term hardware refers to machinery. This category includes the computer itself,
which is often referred to as the central processing unit (CPU), and all of its support
equipment. Among the support equipment are input and output devices, storage
devices and communication devices.

Software
CS-6209 Software Engineering 1
5
Week 2: Software Engineering Principles

The term software refers to computer programs and the manuals (if any) that
support them. Computer programs are machine-readable instructions that direct
the circuitry within the hardware parts of the system to function in ways that
produce useful information from data.

Data
Data are facts that are used by programs to produce useful information. Like
programs, data are generally stored in machine-readable form on disk or tape until
the computer needs them.

Procedures
Procedures are the policies that govern the operation of a computer system.
"Procedures are to people what software is to hardware" is a common analogy that
is used to illustrate the role of procedures in a system.

People
Every system needs people if it is to be useful. Often, the most over-looked element
of the system is the people when in fact it is probably the component that
influences the success or failure of information systems the most. This includes not
only the users, but those who operate and service the computers, those who
maintain the data, and those who support the network of computers.

Feedback
It is another component of the IS, that defines that an IS may be provided with a
feedback.

Data is the bridge between Hardware and People. This means that the data we
collect is only data, until we involve people. At that point, data will be information.

Course Module
CS-6209 Software Engineering 1
6
Week 2: Software Engineering Principles

Types of information system

The image above is a four level pyramid model of different types of information
systems based on the different levels of hierarchy in an organization.

The "classic" view of Information systems found in the textbooks in the 1980s was
of a pyramid of systems that reflected the hierarchy of the organization. Usually,
transaction processing systems is at the bottom of the pyramid, followed by
management information systems, decision support systems, and ending with
executive information systems at the top. Although the pyramid model remains
useful, since it was first formulated a number of new technologies have been
developed and new categories of information systems have emerged, some of
which no longer fit easily into the original pyramid model.

Some examples of such systems are:


 data warehouses
 enterprise resource planning enterprise systems
 expert systems search engines
 geographic information system
global information system
 office automation

A computer (-based) information system is essentially an IS using computer


technology to carry out some or all of its planned tasks. The basic components of
computer based information system are:
CS-6209 Software Engineering 1
7
Week 2: Software Engineering Principles

Hardware- these are the devices like the monitor, processor, printer and
keyboard, all of which work together to accept, process, show data and
information.

Software- are the programs that allow the hardware to process the data.

Databases- are the gathering of associated files or tables containing


related data.

Networks- are a connecting system that allows diverse computers to distribute


resources.

Procedures- are the commands for combining the components above to process
information and produce the preferred output.

The first four components (hardware, software, database, and network) make up
what is known as the information technology platform. Information technology
workers could use these components to create information systems that watch over
safety measures, risk and the management of data. These actions are known as
information technology services.

Information System Development


Information technology departments in larger organizations tend to strongly
influence the development, use, and application of information technology in the
organizations. A series of methodologies and processes can be used to develop and
use an information system. Many developers now use an engineering approach
such as the system development life cycle (SDLC), which is a systematic procedure of
developing an information system through stages that occur in sequence. An
information system can be developed in house (within the organization) or
outsourced. This can be accomplished by outsourcing certain components or the
entire system. A specific case is the geographical distribution of the development
team (offshoring, global information system).

Geographic information systems, land information systems, and disaster


information systems are examples of emerging information systems, but they
can be broadly considered as spatial information systems. System development
is done in stages which include:

 Problem recognition and specification


Course Module
CS-6209 Software Engineering 1
8
Week 2: Software Engineering Principles

 Information gathering
 Requirements specification for the new system
 System design
 System construction
 System implementation
 Review and maintenance

The academic discipline


The field of study called information systems encompasses a variety of topics
including systems analysis and design, computer networking, information security,
database management and decision support systems. Information management
deals with the practical and theoretical problems of collecting and analyzing
information in a business function area including business productivity tools,
applications programming and implementation, electronic commerce, digital media
production, data mining, and decision support. Communications and networking
deal with the telecommunication technologies. Information system bridges
business and computer science using the theoretical foundations of information
and computation to study various business models and related algorithmic
processes within a computer science discipline.

Computer information system(s) (CIS) is a field studying computers and


algorithmic processes, including their principles, their software and hardware
designs, their applications, and their impact on society, whereas IS emphasizes
functionality over design.

Several IS scholars have debated the nature and foundations of Information


Systems which has its roots in other reference disciplines such as Computer
Science, Engineering, Mathematics, Management Science, Cybernetics, and others.
Information systems can also be defined as a collection of hardware, software,
data, people and procedures that work together to produce quality information.

Information Systems have a number of different areas of work:


 IS strategy
 IS management
 IS development IS iteration
 IS organization

There is a wide variety of career paths in the information systems discipline.


"Workers with specialized technical knowledge and strong communications skills
will have the best prospects. Workers with management skills and an
understanding of business practices and principles will have excellent
CS-6209 Software Engineering 1
9
Week 2: Software Engineering Principles

opportunities, as companies are increasingly looking to technology to drive their


revenue."

Information technology is important in the operation of contemporary businesses


for it offers many employment opportunities. The information systems field
includes the people in organizations who design and build information systems, the
people who use those systems, and the people responsible for managing those
systems. The demand for traditional IT staff such as programmers, business
analysts, systems analysts, and designer is significant. Many well-paid jobs exist in
areas of Information technology. At the top of the list is the chief information officer
(CIO).

The CIO is the executive who is in charge of the IS function. In most organizations,
the CIO works with the chief executive officer (CEO), the chief financial officer
(CFO), and other senior executives. Therefore, he or she actively participates in the
organization's strategic planning process.

Information systems research


Information systems research is generally interdisciplinary, concerned with the
study of the effects of information systems on the behavior of individuals, groups,
and organizations.

Salvatore March and Gerald Smith proposed a framework for researching different
aspects of Information Technology including outputs of the research (research
outputs) and activities to carry out this research (research activities). They
identified research outputs as follows:

1. Constructs are concepts that form the vocabulary of a domain. They


constitute a conceptualization used to describe problems within the domain
and to specify their solutions.

2. A model is a set of propositions or statements expressing relationships


among constructs.
3. A method is a set of steps (an algorithm or guideline) used to perform a
task. Methods are based on a set of underlying constructs and a
representation (model) of the solution space.

4. An instantiation is the realization of an artifact in its environment.

Course Module
CS-6209 Software Engineering 1
10
Week 2: Software Engineering Principles

Furthermore, research activities include:


1. Building an artifact to perform a specific task.

2. Evaluating the artifact to determine if any progress has been achieved.

3. Given an artifact whose performance has been evaluated, it is important to


determine why and how the artifact worked or did not work within its
environment. Therefore, another research activity is the theorizing and
justifying of theories about IT artifacts.

References and Supplementary Materials


Books and Journals

Online Supplementary Reading Materials


1. Principles of Software Engineering;
https://www.d.umn.edu/~gshute/softeng/principles.html; October 15, 2019

2. Seven Basic Principles of Software Engineering;


3. https://csse.usc.edu/TECHRPTS/1983/usccse83-500/usccse83-500.pdf; October 15,
2019

Online Instructional Videos

You might also like