Contact Me

John Therrell

Call me now!

What is Software Engineering?

Posted on Thursday, 28th January, 2010

Over the last several decades, software has become increasingly complex. As software has grown to be such a complex monster, the practices of informal software development quickly failed to demonstrate their value. Projects that were developing software informally were often years late, over budget, unreliable, and difficult to maintain.  It is only natural that a new engineering discipline was created to provide order to the process of developing software and to work toward providing a solution to the problems software development were facing.

Software Engineering: a Definition

Software engineering is an engineering discipline that is involved in all aspects of software production, from start to finish (Sommerville, 2004). From the beginning phase of gathering requirements for a software product to the final phase of maintaining software after it’s been released, software engineering is ever present. As an engineering disciple, theories, methodologies, tools, and techniques are defined and used to provide organization and efficiency toward software production. Ultimately, developing software using a software engineer’s approach is done in an effort to meet the goals that today’s technological environment demands.

The Goals of Software Engineering

Software engineering is deeply concerned with providing a means to help development teams meet the expectations of their customers. Today’s companies and customers expect the following (Pressman, 2010):

Software is to be of high quality.

Customers expect that software they use will be reliable and will perform as expected.

Software is produced cost-effectively.

Software development teams are expected to produce software that will meet the expectations of the customer while at the same time staying within their set budget. In the real world, this is easier said than done. Nonetheless, software engineering helps to provide a systematic approach that will allow for better estimation of project costs.

Software is easily maintainable.

Most of us have heard of the term “spaghetti code.” It is definitely possibly to write a program that functions and performs what is required and still be written poorly. Through proper planning and design, development teams can ensure that their software is developed in ways to ensure it’s easily maintainable.

Software is developed in a timely fashion.

The world of technology is changing every day at a rapid pace. Companies rely on utilizing new technologies to enhance productivity and gain a competitive advantage. If software cannot be developed and delivered in a timely fashion, development teams run the risk of their products becoming outdated or cooled down.

The Practice of Software Engineering

Underneath all of the processes, methodologies, and tools within software engineering lies an underlying set of practices that really are at the heart of what the philosophy is behind an engineered approach to software development (Pressman, 2010). Think of the software development process as a problem solving process. The problem is that you have a software product to develop that needs to fulfill a list of requirements specified by your customer. The solution is a completed software product that meets the customer’s requirements. Software engineers use the following four engineering practices to solve the problem: understand the problem, plan a solution, carry out the plan, and examine the result for accuracy. These practices are present in various activities through software engineering process activities.

The Software Process Framework

Through review of all the various software processes that have been developed over the relatively young discipline of software engineering, a generic software process framework has been observed time and time again (Pressman, 2010). Within this framework is a set of framework activities and umbrella activities:

Framework Activities

Communication

It is absolutely essential to communicate and collaborate effectively in any software process. Requirements gathering, a major communication activity, is required to understand what functionality the software requires.

Planning

Planning allows for teams to look at the software project’s present and future paths in an organized manner. Without planning, any development team is destined to be ridden with inefficiency, stress, and an excess of complications.

Modeling

Allows development teams to look at the big picture when designing and developing the software product. Modeling helps in understanding the complexities of today’s modern software.

Construction

Consists of the actual code generation and testing activities. These two activities are generally found in all software development projects, even informal ones.

Deployment

The delivery of software to the customer. Can be either a release version or a partially completed, increment of the software product.

Umbrella Activities

Software project tracking and control

Monitors the progress of the project compared to planned progression. Allows teams to know if they are falling behind schedule so they have opportunities to take action to get caught up.

Risk Management

Allows teams to assess the risks a project faces that may affect the quality or outcome of the project.

Software Quality Assurance

Involves designing a test plan to ensure software meets quality requirements.

Technical reviews

Reviews the work done thus far in a project. The goal of this activity is to ensure that work products are complete before moving on to the next set of work activities.

Measurement

Also known as metrics. Provides information to assist in delivering software that meets the customers needs.

Software Configuration Management

Manages and monitors the effects of changes to through the software process

Reusability Management

Explores the potential for reuse of assets, such as existing code, to help reduce the costs and time of a software project.

Work Product Preparation and Production

Contains a collection of activities used in the development of work products such as models and documentation.

Software Engineering is a Layered Technology

As with all other engineering disciplines, software engineering is committed to delivering quality to the production of a product. A focus on quality is what drives software engineers to improving software engineering processes. This is the reason that a quality focus is the bedrock of software engineering (Pressman 2010).

In an effort to provide quality to a product’s development, processes are the foundation of software engineering. Processes exist as a collection of activities, actions, and tasks that are carried out during the development of a software product. Essentially all of the high-level management and strategies live in this realm.

Software engineering processes make use of methods to carry out the activities of the software development process. Think of methods as the technical know-how to actually carry out the work required to develop software. Communication, testing, requirements gathering, and design modeling are just a few examples of methods that processes use.

Methods in software engineering make use of tools to help with the execution of methods. Many of the tools used by software engineers are, in fact, software based! Communication makes heavy use of email and instant-messaging application. Programmers make use of text editors or integrated development environments. These tools help to provide automation and/or assist the methods with completion of work.

List of Works Cited

Sommerville, Ian. Software Engineering, 7th ed. Pearson Education Limited, Edinburgh Gate 2004.

Pressman, Roger S. Software Engineering: A Practitioner’s Approach, 7th ed. McGraw Hill, New York 2010.

 

avatar

Your name

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

latest news

Testimonials

Crossing the Chasm: Still An Effective Marketing Strategy For Today

Posted on Monday, 1st February, 2010

Through an examination of the companies that failed and succeeded when using the Chasm Model, it is arguable that the Chasm Model is an effective marketing strategy for a startup company offering a high tech, discontinuous product.

follow me

twitter technorati

John Therrell - Copyright © 2010