adapting engineering principles of software designing

Upload: michael-norman-gayle

Post on 26-Feb-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Adapting Engineering Principles of Software Designing

    1/5

    Adapting Engineering Principles of Software Designing

    In todays world the need for Computer Engineers and Software Engineers are growing

    constantly. Engineering is the application of mathematics, empirical evidence and scientific,

    economic, social, and practical nowledge in order to invent, design, !uild, maintain, research,

    and improve structures, machines, tools, systems, components, materials, and processes. "here

    are numerous reasons why Engineering Principles should !e incorporated in Software Design. In

    this essay only five reasons will !e e#pounded on.

    "he first principle which one should incorporate in Software Designing is called

    Separation of Concerns $SoC%. Separation of concerns is a recognition of the need for human

    !eings to wor within a limited conte#t. "he human mind is limited to dealing with

    appro#imately seven units of data at a time. A unit is something that a person has learned to deal

    with as a whole & a single a!straction or concept $'or e#ample, concentrating on a single part of a

    software(program%. Although human capacity for forming a!stractions(ideas appears to !e

    infinite, it taes time and repetitive use for an a!straction to !ecome a useful tool) that is, to serve

    as a unit. Separation of concerns is important in simplifying development and maintenance of

    computer programs. *hen concerns are well&separated, individual sections can !e reused, as

    well as developed and updated independently. In addition to that it gives the engineer the a!ility

    to later improve or modify one section of code without having to now the details of other

    sections, and without having to mae corresponding changes to those sections.

    Another principle which one should adapt is +odularity. "he principle of modularity is a

    specialiation of the principle of separation of concerns. In software engineering, as the name

    suggests, modularity refers to the e#tent to which a software(application may !e divided into

  • 7/25/2019 Adapting Engineering Principles of Software Designing

    2/5

    smaller modules. Software modularity indicates that the num!er of application modules are

    capa!le of serving a specified !usiness domain. +odularity is successful !ecause

    developers(engineers use prewritten code, which saves resources. +odularity provides greater

    software development managea!ility.

    "he principle of a!straction is another specialiation of the principle of separation of

    concerns. "he principle of a!straction implies separating the !ehavior of software components

    from their implementation. It re-uires learning to loo at software and software components

    from two points of view what it does, and how it does it. 'urthermore, A!straction is an

    identical application, where the implementation of a particular interface is separated from its

    design. "he interface can !e a data structure or a framewor. An API, for e#ample, is literally an

    application programming interface, providing a /deeper discussion of the relations among types,

    data a!straction, and polymorphism $occurring in different forms%0. A!straction in computer

    programming is an evolution that resulted out of the necessity of reducing comple#ity for users

    as well as software engineers and to -uantify and to simplify new applications of e#isting

    paradigms. "he iteration to this new style provides a techni-ue for programming and a way to

    write /good0 programs to solve a given pro!lem in an organied, porta!le, and reusa!le way.

    In addition to A!straction, one should always !e Consistent. "he principle of Consistency

    is a recognition of the fact that it is easier to do things in a familiar conte#t. 'or e#ample, coding

    style is a consistent manner of laying out code te#t. "his serves two purposes. 'irst, it maes

    reading the code easier. Second, it allows programmers to automate part of the sills re-uired in

    code entry, freeing the programmer1s mind to deal with more important issues.

    Also, the anticipation of change should !e incorporated in Software Engineering. *hen

    there are changes, additional costs will !e incurred. A design goal in software development is to

  • 7/25/2019 Adapting Engineering Principles of Software Designing

    3/5

    ensure cost is ept to a minimum. 2ne approach is to anticipate where changes are liely to

    occur and mae provisions for the changes during the design stage. 2ne need to provide tools for

    storing and retrieving documents, and for managing source code and o!3ect code. "hese tools

    must also !e wored into the overall configuration management of a system.

    In concluding, engineering techni-ues should !e incorporated in software engineering as

    they prove to mae software designing easier, efficient and afforda!le.

  • 7/25/2019 Adapting Engineering Principles of Software Designing

    4/5

    4i!liography

    *or Cited

    /Principles of Software Engineering.0 d.umn.edu. *e!.

    https((www.d.umn.edu(5gshute(softeng(principles.html

    /Seven Strategies for Successful Software Engineering Part 60BrightHub.com *e!. 78 9uly

    :88;.

    http((www.!righthu!.com(computing(windows&platform(articles(787of>concerns

    https://www.d.umn.edu/~gshute/softeng/principles.htmlhttp://www.brighthub.com/computing/windows-platform/articles/10178.aspxhttps://en.wikipedia.org/wiki/Separation_of_concernshttp://www.brighthub.com/computing/windows-platform/articles/10178.aspxhttps://en.wikipedia.org/wiki/Separation_of_concernshttps://www.d.umn.edu/~gshute/softeng/principles.html
  • 7/25/2019 Adapting Engineering Principles of Software Designing

    5/5