Software Engineering

From CompSciWiki
Revision as of 20:37, 3 December 2010 by SheriffA (Talk | contribs)

Jump to: navigation, search

COMP 1010 Home > Software Engineering


Introduction

Software Engineering is the practice of designing, implementing and creating software by applying the ideologies and principles of software development. Designing the software is usually done in groups (pair programming) and a common programming language (C++, java) is selected for development. Software is designed to meet certain criteria’s such as; it been reliable, efficient, affordable and effective and built to last. It has a systematic approach to the design, test and maintenance of the software by applying engineering toward the software.

 

SE1.jpg

Types of Software Engineering Practice

Photo credit: original photo from Flickr user lucathegalga at http://commons.wikimedia.org

Agile Software Development

is a group of software practice based on iterative development. It’s one of the most commonly used methodologies. The reason is that it allows for flexibility, quick adjustments to new ideas and is often a flat structure. The agile methodology has a couple of sub practice which are as follow;

Extreme Programming (XP)

Is an agile methodology that requires frequent releases in short period of time following the development cycles. It tends to improve the quality and productivity of customers request and introduces checkpoints for quick adaptation (change or add customers request on the fly).

The concerts of extreme programming methodology are as follows;

Coding – Is truly an important factor (backbone) when developing software. It’s a set of instructions that the computer can interpret to develop something meaningful. Coding is done in pairs (pair programming), where two people sit on one station (computer) to tackle one task. Without coding there is no software or working product.

Testing – Is a required concept in XP, because one cannot be sure if the functions work. During software development there are known to be bugs and design errors. An acceptance test is to verify if the developers’ functions meets the customers’ requirements, while a unit test checks a given function functionality if it works as intended.

Listening – Could also stand for understanding, because developers need to listen to the customers needs and what the system needs to do. Developers need to be able to understand the requirements in order to be able to provide feedback to the customers.

Designing – One cannot start developing software without designing what it should look like and how the functions should behave. You might think it’s possible but along the line you will get to a dead end and have no clue on the next step to take. Well designed software will avoid system dependencies, giving you the options to manipulate parts in the system and not affect other parts.


Scrum

Waterfall

Software Engineering vs. Computer Science

Future Career Options

According to Job Canada's salary wizard, a typical Software Engineer I working in Canada earns a median base salary of $57,902, according to our analysis of data reported by corporate HR departments. Half of the people in this job earn between $48,417 and $67,064.

Some kind of conclusion

Specialization in Software Engineering

References and Useful Links

http://www.cs.concordia.ca/prospectivestudents/softwareengineeringvscomputerscience/

http://blog.mountaingoatsoftware.com/differences-between-scrum-and-extreme-programming

http://ieeexplore.ieee.org.proxy2.lib.umanitoba.ca/stamp/stamp.jsp?tp=&arnumber=841783

http://www.payscale.com/research/CA/Industry=Software_Development/Salary

Previous Page: Networks Next Page: AI