Software Engineering


About this page

I consider this page a “living document” which I expect to grow, revise and refine over time.

Definitions
Software engineering is likened to the construction of a skyscraper

Characterization

Software engineering is rationale-driven and may be characterized by the following three activities:

  • Knowledge aquisition
  • Modeling
  • Problem solving 3

Some high-level software engineering distinctions

Hardware oriented systems

In hardware oriented systems, software engineers need to know about electronics and specific electronic components and test equipment. Here are just a few examples:

Software oriented systems

Software oriented systems focus on the business enterprise, web technology and information technology.

Hybrid systems

Hybrid systems are those which are hardware and software oriented.

Software Development Life Cycle (SDLC)

Recalling the earlier section regarding the rationale and characteristics of software engineering, the SDLC may be described as a set of processes which guide the development of software through the activities of:

  • Requirements gathering, analysis and refinement
  • Estimating
  • Technical design
  • Implementation
  • Documentation
  • Testing
  • Deployment
  • Maintenance/Support

Methodologies & Philosophies

Formal methods are a particular kind of mathematically based technique for the specification, development and verification of software and hardware systems. The use of formal methods for software and hardware design is motivated by the expectation that, as in other engineering disciplines, performing appropriate mathematical analysis can contribute to the reliability and robustness of a design. They form an important theoretical underpinning for software engineering, especially where safety or security is involved.4

Methodologies that specify SDLC processes have developed and matured over the years. Many methodologies exist and adoption of an optimal SDLC methodology for a specific project or business domain can have a large impact on a project’s cost, completion-time and product quality.

3 separate paradigms in computer science

A number of computer scientists have argued for the distinction of three separate paradigms in computer science.5

  • Peter Wegner6 argued that those paradigms are
    • Science
    • Technology
    • Mathematics
  • Peter Denning’s working group7 argued that they are
    • Theory
    • Abstraction (modeling)
    • Design
  • Amnon H. Eden8 described them as
    • The rationalist paradigm (which treats computer science as a branch of mathematics, which is prevalent in theoretical computer science, and mainly employs deductive reasoning)
    • The technocratic paradigm (which might be found in engineering approaches, most prominently in software engineering)
    • The scientific paradigm (which approaches computer-related artifacts from the empirical perspective of natural sciences, identifiable in some branches of artificial intelligence)

Object-Oriented Analysis and Design (OOAD)

Within the myriad methodologies which exist, most software engineering solutions in the business domain employ OOAD and agile methodologies suitable for a SDLC which is based upon OOAD.

Design Patterns

See this post.


Footnotes

  1. Geneva G. Belford, computer science, Encyclopædia Britannica, Encyclopædia Britannica inc, January 27, 2011, https://www.britannica.com/topic/computer-science (accessed February 7, 2017) 
  2. Bernd Bruegge and Allen H. Dutoit. Object-Oriented Software Engineering Using Uml, Patterns, and Java (3rd ed.). Prentice Hall Press, Upper Saddle River (NJ, USA), 2010, 10 
  3. Bernd Bruegge and Allen H. Dutoit. Object-Oriented Software Engineering Using Uml, Patterns, and Java (3rd ed.). Prentice Hall Press, Upper Saddle River (NJ, USA), 2010, 5-6 
  4. R. W. Butler (2001-08-06). What is Formal Methods?. (accessed March 1, 2017). 
  5. Wikipedia (link), Computer Science (accessed March 1, 2017) 
  6. Wegner, P. (October 13–15, 1976). Research paradigms in computer science—Proceedings of the 2nd international Conference on Software Engineering. San Francisco, California, United States: IEEE Computer Society Press, Los Alamitos, CA. 
  7. Denning, P. J.; Comer, D. E.; Gries, D.; Mulder, M. C.; Tucker, A.; Turner, A. J.; Young, P. R. (Jan 1989). “Computing as a discipline”. Communications of the ACM. 32: 9–23. doi:10.1145/63238.63239
  8. Eden, A. H. (2007). “Three Paradigms of Computer Science” (PDF). Minds and Machines. 17 (2): 135–167. doi:10.1007/s11023-007-9060-8
 

Posts

Microsoft .NET Links

HOME .NET Framework Universal Windows Platform (UWP) Windows desktop applications ASP.NET .NET Core Getting Started Direct DL MSDN Developer Centers Library MSDN Magazine TechNet Library Virtual Academy C# LEARN .NET Languages C# Getting Started Beginner Fundamentals (video) Programming Guide VB VB Fundamentials for Absolute Beginners (Tutorial) Walkthroughs F# Getting Started Advanced Programming Data Visualization & […]

0 comments

MVC/MVVM is not an either/or choice

source: stackoverflow.com - Aug 22 ‘10 The two patterns crop up, in different ways, in both ASP.Net and Silverlight/WPF development. For ASP.Net, MVVM is used to two-way bind data within views. This is usually a client-side implementation (e.g. using Knockout.js). MVC on the other hand is a way of separating concerns on the server-side. For […]

0 comments

SDLC Methodologies

DRAFT SDLC: Software Development Lifecycle Base64 images for use in context.   Rational Unified Process Agile Processes

0 comments

Design Patterns

Design Patterns Wikipedia notes that, “In software engineering, a software design pattern is a general reusable solution to a commonly occurring problem within a given context in software design.” Links Design Patterns: Originally specified by the Gang of Four (GoF) Enterprise Integration Patterns: As specified in the book by the same name, coauthored by Gregor […]

0 comments